@rnmapbox/maps 10.2.7 → 10.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +9 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/RNMBXPackage.kt +10 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXCustomLocationProvider.kt +7 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/RNMBXMapView.kt +7 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleFactory.kt +180 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleValue.kt +4 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/events/MapSteadyEvent.kt +50 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/events/RNMBXCameraGestureObserver.kt +296 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/events/RNMBXCameraGestureObserverManager.kt +74 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/modules/RNMBXModule.kt +2 -2
- package/android/src/main/java/com/rnmapbox/rnmbx/modules/RNMBXOfflineModuleLegacy.kt +10 -0
- package/android/src/main/mapbox-v11-compat/v10/com/mapbox/maps/extension/style/layers/generated/RasterParticleLayer.kt +58 -0
- package/android/src/main/mapbox-v11-compat/v10/com/mapbox/maps/extension/style/sources/generated/RasterArraySource.kt +20 -0
- package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/components/styles/layers/RNMBXRasterParticleLayer.kt +22 -0
- package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/components/styles/layers/RNMBXRasterParticleLayerManager.kt +59 -0
- package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/components/styles/sources/RNMBXRasterArraySource.kt +16 -0
- package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/components/styles/sources/RNMBXRasterArraySourceManager.kt +59 -0
- package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/v11compat/StyleFactory.kt +45 -0
- package/android/src/main/mapbox-v11-compat/v11/com/rnmapbox/rnmbx/components/styles/layers/RNMBXRasterParticleLayer.kt +38 -0
- package/android/src/main/mapbox-v11-compat/v11/com/rnmapbox/rnmbx/components/styles/layers/RNMBXRasterParticleLayerManager.kt +85 -0
- package/android/src/main/mapbox-v11-compat/v11/com/rnmapbox/rnmbx/components/styles/sources/RNMBXRasterArraySource.kt +41 -0
- package/android/src/main/mapbox-v11-compat/v11/com/rnmapbox/rnmbx/components/styles/sources/RNMBXRasterArraySourceManager.kt +76 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXCameraGestureObserverManagerDelegate.java +39 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXCameraGestureObserverManagerInterface.java +18 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXRasterArraySourceManagerDelegate.java +54 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXRasterArraySourceManagerInterface.java +23 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXRasterParticleLayerManagerDelegate.java +66 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXRasterParticleLayerManagerInterface.java +27 -0
- package/ios/RNMBX/Offline/RNMBXOfflineModuleLegacy.m +2 -0
- package/ios/RNMBX/Offline/RNMBXOfflineModuleLegacy.swift +5 -0
- package/ios/RNMBX/RNMBXCamera.swift +88 -17
- package/ios/RNMBX/RNMBXCameraGestureObserver.swift +218 -0
- package/ios/RNMBX/RNMBXCameraGestureObserverComponentView.h +15 -0
- package/ios/RNMBX/RNMBXCameraGestureObserverComponentView.mm +119 -0
- package/ios/RNMBX/RNMBXCameraModule.h +3 -2
- package/ios/RNMBX/RNMBXCameraModule.mm +8 -16
- package/ios/RNMBX/RNMBXCustomLocationProvider.swift +22 -24
- package/ios/RNMBX/RNMBXImageModule.h +3 -2
- package/ios/RNMBX/RNMBXImageModule.mm +8 -16
- package/ios/RNMBX/RNMBXImages.swift +1 -4
- package/ios/RNMBX/RNMBXInteractiveElement.swift +22 -15
- package/ios/RNMBX/RNMBXMapView.swift +118 -12
- package/ios/RNMBX/RNMBXNativeUserLocation.swift +6 -6
- package/ios/RNMBX/RNMBXPointAnnotation.swift +6 -8
- package/ios/RNMBX/RNMBXPointAnnotationModule.h +3 -2
- package/ios/RNMBX/RNMBXPointAnnotationModule.mm +8 -16
- package/ios/RNMBX/RNMBXRasterArraySource.swift +47 -0
- package/ios/RNMBX/RNMBXRasterArraySourceComponentView.h +15 -0
- package/ios/RNMBX/RNMBXRasterArraySourceComponentView.mm +161 -0
- package/ios/RNMBX/RNMBXRasterArraySourceViewManager.swift +16 -0
- package/ios/RNMBX/RNMBXRasterParticleLayer.swift +100 -0
- package/ios/RNMBX/RNMBXRasterParticleLayerComponentView.h +15 -0
- package/ios/RNMBX/RNMBXRasterParticleLayerComponentView.mm +110 -0
- package/ios/RNMBX/RNMBXRasterParticleLayerViewManager.swift +17 -0
- package/ios/RNMBX/RNMBXShapeSource.swift +5 -4
- package/ios/RNMBX/RNMBXShapeSourceModule.h +3 -2
- package/ios/RNMBX/RNMBXShapeSourceModule.mm +8 -16
- package/ios/RNMBX/RNMBXSource.swift +51 -21
- package/ios/RNMBX/RNMBXStyle.swift +152 -27
- package/ios/RNMBX/RNMBXStyleValue.swift +27 -0
- package/ios/RNMBX/RNMBXViewport.swift +13 -13
- package/ios/RNMBX/RNMBXViewportModule.h +3 -2
- package/ios/RNMBX/RNMBXViewportModule.mm +8 -16
- package/lib/commonjs/plugin/build/withMapbox.js +1 -1
- package/lib/commonjs/plugin/src/withMapbox.ts +13 -3
- package/lib/module/Mapbox.native.js +4 -0
- package/lib/module/Mapbox.native.js.map +1 -1
- package/lib/module/RNMBXModule.js.map +1 -1
- package/lib/module/components/CameraGestureObserver.js +17 -0
- package/lib/module/components/CameraGestureObserver.js.map +1 -0
- package/lib/module/components/PointAnnotation.js.map +1 -1
- package/lib/module/components/RasterArraySource.js +67 -0
- package/lib/module/components/RasterArraySource.js.map +1 -0
- package/lib/module/components/RasterParticleLayer.js +40 -0
- package/lib/module/components/RasterParticleLayer.js.map +1 -0
- package/lib/module/modules/offline/offlineManagerLegacy.js +14 -0
- package/lib/module/modules/offline/offlineManagerLegacy.js.map +1 -1
- package/lib/module/specs/RNMBXCameraGestureObserverNativeComponent.ts +28 -0
- package/lib/module/specs/RNMBXRasterArraySourceNativeComponent.ts +22 -0
- package/lib/module/specs/RNMBXRasterParticleLayerNativeComponent.ts +39 -0
- package/lib/module/utils/MapboxStyles.js.map +1 -1
- package/lib/module/utils/styleMap.js +9 -0
- package/lib/module/utils/styleMap.js.map +1 -1
- package/lib/typescript/plugin/src/withMapbox.d.ts.map +1 -1
- package/lib/typescript/scripts/autogenHelpers/generateCodeWithEjs.d.mts.map +1 -1
- package/lib/typescript/scripts/autogenHelpers/globals.d.mts +1 -1
- package/lib/typescript/scripts/autogenHelpers/globals.d.mts.map +1 -1
- package/lib/typescript/src/Mapbox.native.d.ts +5 -1
- package/lib/typescript/src/Mapbox.native.d.ts.map +1 -1
- package/lib/typescript/src/RNMBXModule.d.ts.map +1 -1
- package/lib/typescript/src/components/CameraGestureObserver.d.ts +27 -0
- package/lib/typescript/src/components/CameraGestureObserver.d.ts.map +1 -0
- package/lib/typescript/src/components/PointAnnotation.d.ts +1 -1
- package/lib/typescript/src/components/PointAnnotation.d.ts.map +1 -1
- package/lib/typescript/src/components/RasterArraySource.d.ts +72 -0
- package/lib/typescript/src/components/RasterArraySource.d.ts.map +1 -0
- package/lib/typescript/src/components/RasterParticleLayer.d.ts +80 -0
- package/lib/typescript/src/components/RasterParticleLayer.d.ts.map +1 -0
- package/lib/typescript/src/modules/offline/offlineManagerLegacy.d.ts +11 -0
- package/lib/typescript/src/modules/offline/offlineManagerLegacy.d.ts.map +1 -1
- package/lib/typescript/src/specs/RNMBXCameraGestureObserverNativeComponent.d.ts +20 -0
- package/lib/typescript/src/specs/RNMBXCameraGestureObserverNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/specs/RNMBXRasterArraySourceNativeComponent.d.ts +16 -0
- package/lib/typescript/src/specs/RNMBXRasterArraySourceNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/specs/RNMBXRasterParticleLayerNativeComponent.d.ts +25 -0
- package/lib/typescript/src/specs/RNMBXRasterParticleLayerNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/utils/MapboxStyles.d.ts +44 -2
- package/lib/typescript/src/utils/MapboxStyles.d.ts.map +1 -1
- package/lib/typescript/src/utils/styleMap.d.ts.map +1 -1
- package/package.json +19 -2
- package/plugin/build/withMapbox.js +1 -1
- package/plugin/src/withMapbox.ts +13 -3
- package/rnmapbox-maps.podspec +1 -1
- package/src/Mapbox.native.ts +5 -0
- package/src/RNMBXModule.ts +1 -4
- package/src/components/CameraGestureObserver.tsx +37 -0
- package/src/components/PointAnnotation.tsx +2 -2
- package/src/components/RasterArraySource.tsx +134 -0
- package/src/components/RasterParticleLayer.tsx +117 -0
- package/src/modules/offline/offlineManagerLegacy.ts +14 -0
- package/src/specs/RNMBXCameraGestureObserverNativeComponent.ts +28 -0
- package/src/specs/RNMBXRasterArraySourceNativeComponent.ts +22 -0
- package/src/specs/RNMBXRasterParticleLayerNativeComponent.ts +39 -0
- package/src/utils/MapboxStyles.ts +47 -1
- package/src/utils/styleMap.ts +10 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.events
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Dynamic
|
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
+
import com.facebook.react.bridge.ReadableType
|
|
6
|
+
import com.facebook.react.module.annotations.ReactModule
|
|
7
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
8
|
+
import com.facebook.react.uimanager.ViewManagerDelegate
|
|
9
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
10
|
+
import com.facebook.react.viewmanagers.RNMBXCameraGestureObserverManagerDelegate
|
|
11
|
+
import com.facebook.react.viewmanagers.RNMBXCameraGestureObserverManagerInterface
|
|
12
|
+
import com.rnmapbox.rnmbx.components.AbstractEventEmitter
|
|
13
|
+
import com.rnmapbox.rnmbx.rncompat.dynamic.getType
|
|
14
|
+
import com.rnmapbox.rnmbx.utils.Logger
|
|
15
|
+
|
|
16
|
+
@ReactModule(name = RNMBXCameraGestureObserverManager.REACT_CLASS)
|
|
17
|
+
class RNMBXCameraGestureObserverManager(private val mContext: ReactApplicationContext) :
|
|
18
|
+
AbstractEventEmitter<RNMBXCameraGestureObserver>(mContext),
|
|
19
|
+
RNMBXCameraGestureObserverManagerInterface<RNMBXCameraGestureObserver> {
|
|
20
|
+
|
|
21
|
+
private val delegate: RNMBXCameraGestureObserverManagerDelegate<RNMBXCameraGestureObserver, RNMBXCameraGestureObserverManager> =
|
|
22
|
+
RNMBXCameraGestureObserverManagerDelegate(this)
|
|
23
|
+
|
|
24
|
+
override fun getName(): String = REACT_CLASS
|
|
25
|
+
|
|
26
|
+
override fun createViewInstance(reactContext: ThemedReactContext): RNMBXCameraGestureObserver =
|
|
27
|
+
RNMBXCameraGestureObserver(reactContext, this)
|
|
28
|
+
|
|
29
|
+
@ReactProp(name = "quietPeriodMs")
|
|
30
|
+
override fun setQuietPeriodMs(view: RNMBXCameraGestureObserver?, value: Dynamic?) {
|
|
31
|
+
value?.let {
|
|
32
|
+
when (it.getType()) {
|
|
33
|
+
ReadableType.Number -> view?.quietPeriodMs = it.asDouble()
|
|
34
|
+
ReadableType.Null -> view?.quietPeriodMs = null
|
|
35
|
+
else -> Logger.e(REACT_CLASS, "Expected Number or null for quietPeriodMs")
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@ReactProp(name = "maxIntervalMs")
|
|
41
|
+
override fun setMaxIntervalMs(view: RNMBXCameraGestureObserver?, value: Dynamic?) {
|
|
42
|
+
value?.let {
|
|
43
|
+
when (it.getType()) {
|
|
44
|
+
ReadableType.Number -> view?.maxIntervalMs = it.asDouble()
|
|
45
|
+
ReadableType.Null -> view?.maxIntervalMs = null
|
|
46
|
+
else -> Logger.e(REACT_CLASS, "Expected Number or null for maxIntervalMs")
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@ReactProp(name = "hasOnMapSteady")
|
|
52
|
+
override fun setHasOnMapSteady(view: RNMBXCameraGestureObserver?, value: Dynamic?) {
|
|
53
|
+
if (value?.getType()?.name == "Boolean") {
|
|
54
|
+
view?.hasOnMapSteady = value.asBoolean()
|
|
55
|
+
} else {
|
|
56
|
+
if (value == null) {
|
|
57
|
+
Logger.e(REACT_CLASS, "Expected Boolean value for hasOnMapSteady")
|
|
58
|
+
} else {
|
|
59
|
+
Logger.e(REACT_CLASS, "Expected Boolean value for hasOnMapSteady, got ${value.getType()?.name}")
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
override fun getDelegate(): ViewManagerDelegate<RNMBXCameraGestureObserver> = delegate
|
|
65
|
+
|
|
66
|
+
// Map the native event name to the JS registration name for direct events
|
|
67
|
+
override fun customEvents(): Map<String, String> = mapOf(
|
|
68
|
+
"topOnMapSteady" to "onMapSteady"
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
companion object {
|
|
72
|
+
const val REACT_CLASS = "RNMBXCameraGestureObserver"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -12,8 +12,8 @@ import com.rnmapbox.rnmbx.events.constants.EventTypes
|
|
|
12
12
|
import com.rnmapbox.rnmbx.modules.RNMBXOfflineModule
|
|
13
13
|
import com.rnmapbox.rnmbx.modules.RNMBXLocationModule
|
|
14
14
|
import com.facebook.react.bridge.ReactMethod
|
|
15
|
+
import com.facebook.react.bridge.Arguments
|
|
15
16
|
import com.facebook.react.bridge.ReadableMap
|
|
16
|
-
import com.facebook.react.bridge.buildReadableMap
|
|
17
17
|
import com.facebook.react.common.MapBuilder
|
|
18
18
|
import com.mapbox.bindgen.None
|
|
19
19
|
import com.mapbox.common.*
|
|
@@ -173,7 +173,7 @@ class RNMBXModule(private val mReactContext: ReactApplicationContext) : ReactCon
|
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
@ReactMethod
|
|
176
|
-
fun addCustomHeaderWithOptions(headerName: String, headerValue: String, options: ReadableMap? =
|
|
176
|
+
fun addCustomHeaderWithOptions(headerName: String, headerValue: String, options: ReadableMap? = Arguments.createMap()) {
|
|
177
177
|
try {
|
|
178
178
|
val urlRegexp = options?.getString("urlRegexp")?.toRegex()
|
|
179
179
|
CustomHttpHeaders.addCustomHeader(headerName, headerValue, CustomHttpHeadersOptions(urlRegexp = urlRegexp))
|
|
@@ -374,6 +374,16 @@ class RNMBXOfflineModuleLegacy(private val mReactContext: ReactApplicationContex
|
|
|
374
374
|
}
|
|
375
375
|
}
|
|
376
376
|
|
|
377
|
+
@ReactMethod
|
|
378
|
+
fun setTileCountLimit(tileCountLimit: Int) {
|
|
379
|
+
UiThreadUtil.runOnUiThread {
|
|
380
|
+
val offlineRegionManager = getOfflineRegionManager {
|
|
381
|
+
RNMBXModule.getAccessToken(mReactContext)
|
|
382
|
+
}
|
|
383
|
+
offlineRegionManager.setOfflineMapboxTileCountLimit(tileCountLimit.toLong())
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
|
|
377
387
|
@ReactMethod
|
|
378
388
|
fun resetDatabase(promise: Promise) {
|
|
379
389
|
UiThreadUtil.runOnUiThread {
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Dummy RasterParticleLayer for v10 compatibility
|
|
2
|
+
// RasterParticleLayer is only available in Mapbox SDK v11+
|
|
3
|
+
package com.mapbox.maps.extension.style.layers.generated
|
|
4
|
+
|
|
5
|
+
import com.mapbox.maps.extension.style.expressions.generated.Expression
|
|
6
|
+
import com.mapbox.maps.extension.style.layers.properties.generated.Visibility
|
|
7
|
+
import com.mapbox.maps.extension.style.types.StyleTransition
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Dummy implementation of RasterParticleLayer for v10 compatibility.
|
|
11
|
+
* This class should never be instantiated in v10 builds.
|
|
12
|
+
* Note: Does not extend Layer to avoid abstract method issues in v10.
|
|
13
|
+
*/
|
|
14
|
+
class RasterParticleLayer(private val id: String, private val sourceId: String) {
|
|
15
|
+
|
|
16
|
+
val layerId: String
|
|
17
|
+
get() = id
|
|
18
|
+
|
|
19
|
+
var minZoom: Double? = null
|
|
20
|
+
private set
|
|
21
|
+
|
|
22
|
+
var maxZoom: Double? = null
|
|
23
|
+
private set
|
|
24
|
+
|
|
25
|
+
var visibility: Visibility? = null
|
|
26
|
+
private set
|
|
27
|
+
|
|
28
|
+
fun minZoom(minZoom: Double): RasterParticleLayer {
|
|
29
|
+
this.minZoom = minZoom
|
|
30
|
+
return this
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
fun maxZoom(maxZoom: Double): RasterParticleLayer {
|
|
34
|
+
this.maxZoom = maxZoom
|
|
35
|
+
return this
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
fun getType(): String = "raster-particle"
|
|
39
|
+
|
|
40
|
+
fun rasterParticleArrayBand(value: String) {}
|
|
41
|
+
fun rasterParticleArrayBand(expression: Expression) {}
|
|
42
|
+
fun rasterParticleCount(value: Long) {}
|
|
43
|
+
fun rasterParticleCount(expression: Expression) {}
|
|
44
|
+
fun rasterParticleColor(expression: Expression) {}
|
|
45
|
+
fun rasterParticleMaxSpeed(value: Double) {}
|
|
46
|
+
fun rasterParticleMaxSpeed(expression: Expression) {}
|
|
47
|
+
fun rasterParticleSpeedFactor(value: Double) {}
|
|
48
|
+
fun rasterParticleSpeedFactor(expression: Expression) {}
|
|
49
|
+
fun rasterParticleSpeedFactorTransition(transition: StyleTransition) {}
|
|
50
|
+
fun rasterParticleFadeOpacityFactor(value: Double) {}
|
|
51
|
+
fun rasterParticleFadeOpacityFactor(expression: Expression) {}
|
|
52
|
+
fun rasterParticleFadeOpacityFactorTransition(transition: StyleTransition) {}
|
|
53
|
+
fun rasterParticleResetRateFactor(value: Double) {}
|
|
54
|
+
fun rasterParticleResetRateFactor(expression: Expression) {}
|
|
55
|
+
fun visibility(visibility: Visibility) {
|
|
56
|
+
this.visibility = visibility
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Dummy RasterArraySource for v10 compatibility
|
|
2
|
+
// RasterArraySource is only available in Mapbox SDK v11+
|
|
3
|
+
package com.mapbox.maps.extension.style.sources.generated
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Dummy implementation of RasterArraySource for v10 compatibility.
|
|
7
|
+
* This class should never be instantiated in v10 builds.
|
|
8
|
+
* Note: Does not extend Source to avoid abstract method issues in v10.
|
|
9
|
+
*/
|
|
10
|
+
class RasterArraySource private constructor(
|
|
11
|
+
builder: Builder
|
|
12
|
+
) {
|
|
13
|
+
val sourceId: String = builder.sourceId
|
|
14
|
+
|
|
15
|
+
class Builder(val sourceId: String) {
|
|
16
|
+
fun url(url: String): Builder = this
|
|
17
|
+
fun tileSize(tileSize: Long): Builder = this
|
|
18
|
+
fun build(): RasterArraySource = RasterArraySource(this)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.styles.layers
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.view.ViewGroup
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Dummy implementation of RNMBXRasterParticleLayer for v10 compatibility.
|
|
8
|
+
* This class extends ViewGroup directly (instead of RNMBXLayer) to avoid
|
|
9
|
+
* inheriting from Layer which has internal abstract methods in v10.
|
|
10
|
+
* This class should never be instantiated in v10 builds.
|
|
11
|
+
*/
|
|
12
|
+
class RNMBXRasterParticleLayer(context: Context) : ViewGroup(context) {
|
|
13
|
+
var mSourceLayerID: String? = null
|
|
14
|
+
|
|
15
|
+
override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {
|
|
16
|
+
// Stub - never called
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
fun setSourceLayerID(sourceLayer: String?) {
|
|
20
|
+
mSourceLayerID = sourceLayer
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.styles.layers
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Dynamic
|
|
4
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
5
|
+
import com.facebook.react.uimanager.ViewGroupManager
|
|
6
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
7
|
+
import com.facebook.react.viewmanagers.RNMBXRasterParticleLayerManagerInterface
|
|
8
|
+
|
|
9
|
+
class RNMBXRasterParticleLayerManager : ViewGroupManager<RNMBXRasterParticleLayer>(),
|
|
10
|
+
RNMBXRasterParticleLayerManagerInterface<RNMBXRasterParticleLayer> {
|
|
11
|
+
override fun getName(): String {
|
|
12
|
+
return REACT_CLASS
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
override fun createViewInstance(reactContext: ThemedReactContext): RNMBXRasterParticleLayer {
|
|
16
|
+
throw UnsupportedOperationException("RasterParticleLayer is only supported in Mapbox v11+")
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@ReactProp(name = "id")
|
|
20
|
+
override fun setId(layer: RNMBXRasterParticleLayer, id: Dynamic) {}
|
|
21
|
+
|
|
22
|
+
@ReactProp(name = "existing")
|
|
23
|
+
override fun setExisting(layer: RNMBXRasterParticleLayer, existing: Dynamic) {}
|
|
24
|
+
|
|
25
|
+
@ReactProp(name = "sourceID")
|
|
26
|
+
override fun setSourceID(layer: RNMBXRasterParticleLayer, sourceID: Dynamic) {}
|
|
27
|
+
|
|
28
|
+
@ReactProp(name = "aboveLayerID")
|
|
29
|
+
override fun setAboveLayerID(layer: RNMBXRasterParticleLayer, aboveLayerID: Dynamic) {}
|
|
30
|
+
|
|
31
|
+
@ReactProp(name = "belowLayerID")
|
|
32
|
+
override fun setBelowLayerID(layer: RNMBXRasterParticleLayer, belowLayerID: Dynamic) {}
|
|
33
|
+
|
|
34
|
+
@ReactProp(name = "layerIndex")
|
|
35
|
+
override fun setLayerIndex(layer: RNMBXRasterParticleLayer, layerIndex: Dynamic) {}
|
|
36
|
+
|
|
37
|
+
@ReactProp(name = "minZoomLevel")
|
|
38
|
+
override fun setMinZoomLevel(layer: RNMBXRasterParticleLayer, minZoomLevel: Dynamic) {}
|
|
39
|
+
|
|
40
|
+
@ReactProp(name = "maxZoomLevel")
|
|
41
|
+
override fun setMaxZoomLevel(layer: RNMBXRasterParticleLayer, maxZoomLevel: Dynamic) {}
|
|
42
|
+
|
|
43
|
+
@ReactProp(name = "reactStyle")
|
|
44
|
+
override fun setReactStyle(layer: RNMBXRasterParticleLayer, style: Dynamic) {}
|
|
45
|
+
|
|
46
|
+
@ReactProp(name = "sourceLayerID")
|
|
47
|
+
override fun setSourceLayerID(layer: RNMBXRasterParticleLayer, sourceLayerID: Dynamic) {}
|
|
48
|
+
|
|
49
|
+
@ReactProp(name = "filter")
|
|
50
|
+
override fun setFilter(layer: RNMBXRasterParticleLayer, filterList: Dynamic) {}
|
|
51
|
+
|
|
52
|
+
@ReactProp(name = "slot")
|
|
53
|
+
override fun setSlot(layer: RNMBXRasterParticleLayer, slot: Dynamic) {}
|
|
54
|
+
|
|
55
|
+
companion object {
|
|
56
|
+
const val REACT_CLASS = "RNMBXRasterParticleLayer"
|
|
57
|
+
const val isImplemented = false
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.styles.sources
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.view.ViewGroup
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Dummy implementation of RNMBXRasterArraySource for v10 compatibility.
|
|
8
|
+
* This class extends ViewGroup directly (instead of RNMBXTileSource) to avoid
|
|
9
|
+
* inheriting from Source which has internal abstract methods in v10.
|
|
10
|
+
* This class should never be instantiated in v10 builds.
|
|
11
|
+
*/
|
|
12
|
+
class RNMBXRasterArraySource(context: Context) : ViewGroup(context) {
|
|
13
|
+
override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {
|
|
14
|
+
// Stub - never called
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.styles.sources
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Dynamic
|
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
6
|
+
import com.facebook.react.uimanager.ViewGroupManager
|
|
7
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
8
|
+
import com.facebook.react.viewmanagers.RNMBXRasterArraySourceManagerInterface
|
|
9
|
+
import javax.annotation.Nonnull
|
|
10
|
+
|
|
11
|
+
class RNMBXRasterArraySourceManager(reactApplicationContext: ReactApplicationContext) :
|
|
12
|
+
ViewGroupManager<RNMBXRasterArraySource>(),
|
|
13
|
+
RNMBXRasterArraySourceManagerInterface<RNMBXRasterArraySource> {
|
|
14
|
+
@Nonnull
|
|
15
|
+
override fun getName(): String {
|
|
16
|
+
return REACT_CLASS
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@Nonnull
|
|
20
|
+
override fun createViewInstance(@Nonnull reactContext: ThemedReactContext): RNMBXRasterArraySource {
|
|
21
|
+
throw UnsupportedOperationException("RasterArraySource is only supported in Mapbox v11+")
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@ReactProp(name = "id")
|
|
25
|
+
override fun setId(source: RNMBXRasterArraySource, id: Dynamic) {}
|
|
26
|
+
|
|
27
|
+
@ReactProp(name = "url")
|
|
28
|
+
override fun setUrl(source: RNMBXRasterArraySource, url: Dynamic) {}
|
|
29
|
+
|
|
30
|
+
@ReactProp(name = "tileUrlTemplates")
|
|
31
|
+
override fun setTileUrlTemplates(source: RNMBXRasterArraySource, tileUrlTemplates: Dynamic) {}
|
|
32
|
+
|
|
33
|
+
@ReactProp(name = "tileSize")
|
|
34
|
+
override fun setTileSize(source: RNMBXRasterArraySource, tileSize: Dynamic) {}
|
|
35
|
+
|
|
36
|
+
@ReactProp(name = "minZoomLevel")
|
|
37
|
+
override fun setMinZoomLevel(source: RNMBXRasterArraySource, minZoomLevel: Dynamic) {}
|
|
38
|
+
|
|
39
|
+
@ReactProp(name = "maxZoomLevel")
|
|
40
|
+
override fun setMaxZoomLevel(source: RNMBXRasterArraySource, maxZoomLevel: Dynamic) {}
|
|
41
|
+
|
|
42
|
+
@ReactProp(name = "attribution")
|
|
43
|
+
fun setAttribution(source: RNMBXRasterArraySource, attribution: Dynamic) {}
|
|
44
|
+
|
|
45
|
+
fun customEvents(): Map<String, String>? {
|
|
46
|
+
return null
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
companion object {
|
|
50
|
+
const val REACT_CLASS = "RNMBXRasterArraySource"
|
|
51
|
+
const val isImplemented = false
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@ReactProp(name = "existing")
|
|
55
|
+
override fun setExisting(source: RNMBXRasterArraySource, value: Dynamic) {}
|
|
56
|
+
|
|
57
|
+
@ReactProp(name = "sourceBounds")
|
|
58
|
+
override fun setSourceBounds(source: RNMBXRasterArraySource, value: Dynamic) {}
|
|
59
|
+
}
|
|
@@ -762,3 +762,48 @@ fun FillExtrusionLayer.fillExtrusionEmissiveStrengthTransition(
|
|
|
762
762
|
) {
|
|
763
763
|
// V11 only
|
|
764
764
|
}
|
|
765
|
+
|
|
766
|
+
// RasterParticleLayer - v11 only
|
|
767
|
+
internal fun setRasterParticleLayerStyle(layer: Any, style: Any) {
|
|
768
|
+
TODO("RasterParticleLayer is v11 only")
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
internal fun setVisibility(layer: Any, styleValue: Any) {
|
|
772
|
+
TODO("RasterParticleLayer is v11 only")
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
internal fun setRasterParticleArrayBand(layer: Any, styleValue: Any) {
|
|
776
|
+
TODO("RasterParticleLayer is v11 only")
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
internal fun setRasterParticleCount(layer: Any, styleValue: Any) {
|
|
780
|
+
TODO("RasterParticleLayer is v11 only")
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
internal fun setRasterParticleColor(layer: Any, styleValue: Any) {
|
|
784
|
+
TODO("RasterParticleLayer is v11 only")
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
internal fun setRasterParticleMaxSpeed(layer: Any, styleValue: Any) {
|
|
788
|
+
TODO("RasterParticleLayer is v11 only")
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
internal fun setRasterParticleSpeedFactor(layer: Any, styleValue: Any) {
|
|
792
|
+
TODO("RasterParticleLayer is v11 only")
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
internal fun setRasterParticleSpeedFactorTransition(layer: Any, styleValue: Any) {
|
|
796
|
+
TODO("RasterParticleLayer is v11 only")
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
internal fun setRasterParticleFadeOpacityFactor(layer: Any, styleValue: Any) {
|
|
800
|
+
TODO("RasterParticleLayer is v11 only")
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
internal fun setRasterParticleFadeOpacityFactorTransition(layer: Any, styleValue: Any) {
|
|
804
|
+
TODO("RasterParticleLayer is v11 only")
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
internal fun setRasterParticleResetRateFactor(layer: Any, styleValue: Any) {
|
|
808
|
+
TODO("RasterParticleLayer is v11 only")
|
|
809
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.styles.layers
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import com.mapbox.maps.MapboxExperimental
|
|
5
|
+
import com.mapbox.maps.extension.style.layers.generated.RasterParticleLayer
|
|
6
|
+
import com.rnmapbox.rnmbx.components.styles.RNMBXStyle
|
|
7
|
+
import com.rnmapbox.rnmbx.components.styles.RNMBXStyleFactory
|
|
8
|
+
import com.rnmapbox.rnmbx.utils.Logger
|
|
9
|
+
|
|
10
|
+
class RNMBXRasterParticleLayer(context: Context?) : RNMBXLayer<RasterParticleLayer?>(
|
|
11
|
+
context!!
|
|
12
|
+
) {
|
|
13
|
+
var mSourceLayerID: String? = null
|
|
14
|
+
|
|
15
|
+
override fun makeLayer(): RasterParticleLayer {
|
|
16
|
+
val result = RasterParticleLayer(iD!!, mSourceID!!)
|
|
17
|
+
mSourceLayerID?.let {
|
|
18
|
+
result.sourceLayer(it)
|
|
19
|
+
}
|
|
20
|
+
return result
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
override fun addStyles() {
|
|
24
|
+
mLayer?.also {
|
|
25
|
+
RNMBXStyleFactory.setRasterParticleLayerStyle(it, RNMBXStyle(context, mReactStyle, mMap!!))
|
|
26
|
+
} ?: run {
|
|
27
|
+
Logger.e("RNMBXRasterParticleLayer", "mLayer is null")
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@OptIn(MapboxExperimental::class)
|
|
32
|
+
fun setSourceLayerID(sourceLayer: String?) {
|
|
33
|
+
mSourceLayerID = sourceLayer
|
|
34
|
+
mLayer?.let {
|
|
35
|
+
it.sourceLayer(sourceLayer!!)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.styles.layers
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Dynamic
|
|
4
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
5
|
+
import com.facebook.react.uimanager.ViewGroupManager
|
|
6
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
7
|
+
import com.facebook.react.viewmanagers.RNMBXRasterParticleLayerManagerInterface
|
|
8
|
+
|
|
9
|
+
class RNMBXRasterParticleLayerManager : ViewGroupManager<RNMBXRasterParticleLayer>(),
|
|
10
|
+
RNMBXRasterParticleLayerManagerInterface<RNMBXRasterParticleLayer> {
|
|
11
|
+
override fun getName(): String {
|
|
12
|
+
return REACT_CLASS
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
override fun createViewInstance(reactContext: ThemedReactContext): RNMBXRasterParticleLayer {
|
|
16
|
+
return RNMBXRasterParticleLayer(reactContext)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// @{codepart-replace-start(LayerManagerCommonProps.codepart-kt.ejs,{layerType:"RNMBXRasterParticleLayer"})}
|
|
20
|
+
@ReactProp(name = "id")
|
|
21
|
+
override fun setId(layer: RNMBXRasterParticleLayer, id: Dynamic) {
|
|
22
|
+
layer.iD = id.asString()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@ReactProp(name = "existing")
|
|
26
|
+
override fun setExisting(layer: RNMBXRasterParticleLayer, existing: Dynamic) {
|
|
27
|
+
layer.setExisting(existing.asBoolean())
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@ReactProp(name = "sourceID")
|
|
31
|
+
override fun setSourceID(layer: RNMBXRasterParticleLayer, sourceID: Dynamic) {
|
|
32
|
+
layer.setSourceID(sourceID.asString())
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@ReactProp(name = "aboveLayerID")
|
|
36
|
+
override fun setAboveLayerID(layer: RNMBXRasterParticleLayer, aboveLayerID: Dynamic) {
|
|
37
|
+
layer.setAboveLayerID(aboveLayerID.asString())
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@ReactProp(name = "belowLayerID")
|
|
41
|
+
override fun setBelowLayerID(layer: RNMBXRasterParticleLayer, belowLayerID: Dynamic) {
|
|
42
|
+
layer.setBelowLayerID(belowLayerID.asString())
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@ReactProp(name = "layerIndex")
|
|
46
|
+
override fun setLayerIndex(layer: RNMBXRasterParticleLayer, layerIndex: Dynamic) {
|
|
47
|
+
layer.setLayerIndex(layerIndex.asInt())
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@ReactProp(name = "minZoomLevel")
|
|
51
|
+
override fun setMinZoomLevel(layer: RNMBXRasterParticleLayer, minZoomLevel: Dynamic) {
|
|
52
|
+
layer.setMinZoomLevel(minZoomLevel.asDouble())
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@ReactProp(name = "maxZoomLevel")
|
|
56
|
+
override fun setMaxZoomLevel(layer: RNMBXRasterParticleLayer, maxZoomLevel: Dynamic) {
|
|
57
|
+
layer.setMaxZoomLevel(maxZoomLevel.asDouble())
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@ReactProp(name = "reactStyle")
|
|
61
|
+
override fun setReactStyle(layer: RNMBXRasterParticleLayer, style: Dynamic) {
|
|
62
|
+
layer.setReactStyle(style.asMap())
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@ReactProp(name = "sourceLayerID")
|
|
66
|
+
override fun setSourceLayerID(layer: RNMBXRasterParticleLayer, sourceLayerID: Dynamic) {
|
|
67
|
+
layer.setSourceLayerID(sourceLayerID.asString())
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@ReactProp(name = "filter")
|
|
71
|
+
override fun setFilter(layer: RNMBXRasterParticleLayer, filterList: Dynamic) {
|
|
72
|
+
layer.setFilter(filterList.asArray())
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@ReactProp(name = "slot")
|
|
76
|
+
override fun setSlot(layer: RNMBXRasterParticleLayer, slot: Dynamic) {
|
|
77
|
+
layer.setSlot(slot.asString())
|
|
78
|
+
}
|
|
79
|
+
// @{codepart-replace-end}
|
|
80
|
+
|
|
81
|
+
companion object {
|
|
82
|
+
const val REACT_CLASS = "RNMBXRasterParticleLayer"
|
|
83
|
+
const val isImplemented = true
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.styles.sources
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import com.mapbox.maps.extension.style.sources.generated.RasterArraySource
|
|
5
|
+
|
|
6
|
+
class RNMBXRasterArraySource(context: Context?) : RNMBXTileSource<RasterArraySource?>(context) {
|
|
7
|
+
private var mTileSize: Int? = null
|
|
8
|
+
override fun makeSource(): RasterArraySource {
|
|
9
|
+
val id = iD!!
|
|
10
|
+
val configurationUrl = uRL
|
|
11
|
+
val tileSize = if (mTileSize == null) DEFAULT_TILE_SIZE else mTileSize!!
|
|
12
|
+
return if (configurationUrl != null) {
|
|
13
|
+
RasterArraySource.Builder(id).url(configurationUrl).tileSize(tileSize.toLong()).build()
|
|
14
|
+
} else RasterArraySource.Builder(id).tileSet(buildTileset())
|
|
15
|
+
.tileSize(tileSize.toLong()).build()
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
fun setTileSize(tileSize: Int) {
|
|
19
|
+
mTileSize = tileSize
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
override fun hasPressListener(): Boolean {
|
|
23
|
+
return false
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
override fun onPress(feature: OnPressEvent?) {
|
|
27
|
+
// ignore, cannot query raster array layers
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
override fun hasNoDataSoRefersToExisting(): Boolean {
|
|
31
|
+
return uRL == null
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
companion object {
|
|
35
|
+
const val DEFAULT_TILE_SIZE = 512
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
fun setSourceBounds(value: Array<Double>) {
|
|
39
|
+
bounds = value
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.styles.sources
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Dynamic
|
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
6
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
7
|
+
import com.facebook.react.viewmanagers.RNMBXRasterArraySourceManagerInterface
|
|
8
|
+
import com.rnmapbox.rnmbx.events.constants.EventKeys
|
|
9
|
+
import com.rnmapbox.rnmbx.events.constants.eventMapOf
|
|
10
|
+
import javax.annotation.Nonnull
|
|
11
|
+
import com.facebook.react.bridge.ReadableType
|
|
12
|
+
import com.rnmapbox.rnmbx.utils.Logger
|
|
13
|
+
|
|
14
|
+
class RNMBXRasterArraySourceManager(reactApplicationContext: ReactApplicationContext) :
|
|
15
|
+
RNMBXTileSourceManager<RNMBXRasterArraySource>(reactApplicationContext),
|
|
16
|
+
RNMBXRasterArraySourceManagerInterface<RNMBXRasterArraySource> {
|
|
17
|
+
@Nonnull
|
|
18
|
+
override fun getName(): String {
|
|
19
|
+
return REACT_CLASS
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@Nonnull
|
|
23
|
+
override fun createViewInstance(@Nonnull reactContext: ThemedReactContext): RNMBXRasterArraySource {
|
|
24
|
+
return RNMBXRasterArraySource(reactContext)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@ReactProp(name = "tileSize")
|
|
28
|
+
override fun setTileSize(source: RNMBXRasterArraySource, tileSize: Dynamic) {
|
|
29
|
+
source.setTileSize(tileSize.asInt())
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
override fun customEvents(): Map<String, String>? {
|
|
33
|
+
return eventMapOf(
|
|
34
|
+
EventKeys.MAP_ANDROID_CALLBACK to "onAndroidCallback"
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
companion object {
|
|
39
|
+
const val REACT_CLASS = "RNMBXRasterArraySource"
|
|
40
|
+
const val isImplemented = true
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@ReactProp(name = "existing")
|
|
44
|
+
override fun setExisting(source: RNMBXRasterArraySource, value: Dynamic) {
|
|
45
|
+
source.mExisting = value.asBoolean()
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@ReactProp(name = "sourceBounds")
|
|
49
|
+
override fun setSourceBounds(source: RNMBXRasterArraySource, value: Dynamic) {
|
|
50
|
+
val array = value.asArray()
|
|
51
|
+
if (value.type != ReadableType.Array || array == null || array.size() != 4) {
|
|
52
|
+
Logger.e(REACT_CLASS, "source bounds must be an array with left, bottom, top, and right values")
|
|
53
|
+
return
|
|
54
|
+
}
|
|
55
|
+
val bboxArray = Array(4) { i -> array.getDouble(i) }
|
|
56
|
+
|
|
57
|
+
if(!this.validateBbox(bboxArray)){
|
|
58
|
+
Logger.e(REACT_CLASS, "source bounds contain invalid bbox")
|
|
59
|
+
return
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
source.setSourceBounds(bboxArray)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private fun validateBbox(bbox: Array<Double>): Boolean {
|
|
66
|
+
if (bbox.size != 4) return false
|
|
67
|
+
|
|
68
|
+
val (swLng, swLat, neLng, neLat) = bbox
|
|
69
|
+
|
|
70
|
+
val isLngValid = swLng in -180.0..180.0 && neLng in -180.0..180.0
|
|
71
|
+
val isLatValid = swLat in -90.0..90.0 && neLat in -90.0..90.0
|
|
72
|
+
val isSouthWestOfNorthEast = swLng < neLng && swLat < neLat
|
|
73
|
+
|
|
74
|
+
return isLngValid && isLatValid && isSouthWestOfNorthEast
|
|
75
|
+
}
|
|
76
|
+
}
|