@rnmapbox/maps 10.1.0-beta.23 → 10.1.0-beta.25
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/src/main/java/com/rnmapbox/rnmbx/RNMBXPackage.kt +4 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXViewport.kt +69 -2
- package/android/src/main/java/com/rnmapbox/rnmbx/components/images/RNMBXImagesManager.kt +27 -3
- package/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXNativeUserLocation.kt +51 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXNativeUserLocationManager.kt +8 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/NativeMapViewModule.kt +1 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleFactory.kt +1184 -109
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/layers/RNMBXModelLayer.kt +33 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/layers/RNMBXModelLayerManager.kt +85 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/model/RNMBXModels.kt +33 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/model/RNMBXModelsManager.kt +59 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/ReadableMap.kt +37 -5
- package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/v11compat/StyleFactory.kt +395 -0
- package/android/src/main/mapbox-v11-compat/v11/com/rnmapbox/rnmbx/v11compat/StyleFactory.kt +8 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXModelLayerManagerDelegate.java +65 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXModelLayerManagerInterface.java +28 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXModelsManagerDelegate.java +32 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXModelsManagerInterface.java +17 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXNativeUserLocationManagerDelegate.java +3 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXNativeUserLocationManagerInterface.java +1 -0
- package/ios/RNMBX/RNMBXFabricPropConvert.h +11 -5
- package/ios/RNMBX/RNMBXFabricPropConvert.mm +5 -0
- package/ios/RNMBX/RNMBXInteractiveElement.swift +1 -1
- package/ios/RNMBX/RNMBXModelLayer.swift +59 -0
- package/ios/RNMBX/RNMBXModelLayerComponentView.h +15 -0
- package/ios/RNMBX/RNMBXModelLayerComponentView.mm +70 -0
- package/ios/RNMBX/RNMBXModelLayerViewManager.m +12 -0
- package/ios/RNMBX/RNMBXModelLayerViewManager.swift +13 -0
- package/ios/RNMBX/RNMBXModels.swift +63 -0
- package/ios/RNMBX/RNMBXModelsComponentView.h +17 -0
- package/ios/RNMBX/RNMBXModelsComponentView.mm +67 -0
- package/ios/RNMBX/RNMBXModelsManager.mm +9 -0
- package/ios/RNMBX/RNMBXModelsManager.swift +13 -0
- package/ios/RNMBX/RNMBXNativeUserLocation.swift +47 -16
- package/ios/RNMBX/RNMBXNativeUserLocationComponentView.mm +8 -7
- package/ios/RNMBX/RNMBXNativeUserLocationViewManager.m +1 -0
- package/ios/RNMBX/RNMBXStyle.swift +786 -1
- package/ios/RNMBX/RNMBXStyleValue.swift +34 -3
- package/ios/RNMBX/RNMBXViewport.swift +59 -3
- package/lib/commonjs/Mapbox.js +16 -0
- package/lib/commonjs/Mapbox.js.map +1 -1
- package/lib/commonjs/components/AbstractLayer.js +1 -1
- package/lib/commonjs/components/AbstractLayer.js.map +1 -1
- package/lib/commonjs/components/ModelLayer.js +37 -0
- package/lib/commonjs/components/ModelLayer.js.map +1 -0
- package/lib/commonjs/components/Models.js +43 -0
- package/lib/commonjs/components/Models.js.map +1 -0
- package/lib/commonjs/components/NativeUserLocation.js +25 -1
- package/lib/commonjs/components/NativeUserLocation.js.map +1 -1
- package/lib/commonjs/components/Viewport.js.map +1 -1
- package/lib/commonjs/specs/RNMBXCircleLayerNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/RNMBXFillLayerNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/RNMBXHeatmapLayerNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/RNMBXLineLayerNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/RNMBXModelLayerNativeComponent.js +13 -0
- package/lib/commonjs/specs/RNMBXModelLayerNativeComponent.js.map +1 -0
- package/lib/commonjs/specs/RNMBXModelsNativeComponent.js +10 -0
- package/lib/commonjs/specs/RNMBXModelsNativeComponent.js.map +1 -0
- package/lib/commonjs/specs/RNMBXNativeUserLocationNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/RNMBXRasterLayerNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/RNMBXSymbolLayerNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/codeparts/CommonLayerNativeComponentsProps.codepart-ts +11 -10
- package/lib/commonjs/utils/MapboxStyles.d.js +5 -0
- package/lib/commonjs/utils/MapboxStyles.d.js.map +1 -1
- package/lib/commonjs/utils/styleMap.js +67 -2
- package/lib/commonjs/utils/styleMap.js.map +1 -1
- package/lib/module/Mapbox.js +2 -0
- package/lib/module/Mapbox.js.map +1 -1
- package/lib/module/components/AbstractLayer.js +1 -1
- package/lib/module/components/AbstractLayer.js.map +1 -1
- package/lib/module/components/ModelLayer.js +30 -0
- package/lib/module/components/ModelLayer.js.map +1 -0
- package/lib/module/components/Models.js +36 -0
- package/lib/module/components/Models.js.map +1 -0
- package/lib/module/components/NativeUserLocation.js +25 -1
- package/lib/module/components/NativeUserLocation.js.map +1 -1
- package/lib/module/components/Viewport.js.map +1 -1
- package/lib/module/specs/RNMBXCircleLayerNativeComponent.js +2 -0
- package/lib/module/specs/RNMBXCircleLayerNativeComponent.js.map +1 -1
- package/lib/module/specs/RNMBXFillLayerNativeComponent.js +2 -0
- package/lib/module/specs/RNMBXFillLayerNativeComponent.js.map +1 -1
- package/lib/module/specs/RNMBXHeatmapLayerNativeComponent.js +2 -0
- package/lib/module/specs/RNMBXHeatmapLayerNativeComponent.js.map +1 -1
- package/lib/module/specs/RNMBXLineLayerNativeComponent.js +2 -0
- package/lib/module/specs/RNMBXLineLayerNativeComponent.js.map +1 -1
- package/lib/module/specs/RNMBXModelLayerNativeComponent.js +9 -0
- package/lib/module/specs/RNMBXModelLayerNativeComponent.js.map +1 -0
- package/lib/module/specs/RNMBXModelsNativeComponent.js +3 -0
- package/lib/module/specs/RNMBXModelsNativeComponent.js.map +1 -0
- package/lib/module/specs/RNMBXNativeUserLocationNativeComponent.js.map +1 -1
- package/lib/module/specs/RNMBXRasterLayerNativeComponent.js +2 -0
- package/lib/module/specs/RNMBXRasterLayerNativeComponent.js.map +1 -1
- package/lib/module/specs/RNMBXSymbolLayerNativeComponent.js +2 -0
- package/lib/module/specs/RNMBXSymbolLayerNativeComponent.js.map +1 -1
- package/lib/module/specs/RNMBXViewportNativeComponent.js +2 -0
- package/lib/module/specs/RNMBXViewportNativeComponent.js.map +1 -1
- package/lib/module/specs/codeparts/CommonLayerNativeComponentsProps.codepart-ts +11 -10
- package/lib/module/utils/MapboxStyles.d.js +5 -0
- package/lib/module/utils/MapboxStyles.d.js.map +1 -1
- package/lib/module/utils/styleMap.js +67 -2
- package/lib/module/utils/styleMap.js.map +1 -1
- package/lib/typescript/src/Mapbox.d.ts +3 -1
- package/lib/typescript/src/Mapbox.d.ts.map +1 -1
- package/lib/typescript/src/components/AbstractLayer.d.ts +9 -4
- package/lib/typescript/src/components/AbstractLayer.d.ts.map +1 -1
- package/lib/typescript/src/components/MapView.d.ts +1 -5
- package/lib/typescript/src/components/MapView.d.ts.map +1 -1
- package/lib/typescript/src/components/ModelLayer.d.ts +77 -0
- package/lib/typescript/src/components/ModelLayer.d.ts.map +1 -0
- package/lib/typescript/src/components/Models.d.ts +15 -0
- package/lib/typescript/src/components/Models.d.ts.map +1 -0
- package/lib/typescript/src/components/NativeUserLocation.d.ts +20 -0
- package/lib/typescript/src/components/NativeUserLocation.d.ts.map +1 -1
- package/lib/typescript/src/components/Viewport.d.ts +32 -1
- package/lib/typescript/src/components/Viewport.d.ts.map +1 -1
- package/lib/typescript/src/specs/RNMBXCircleLayerNativeComponent.d.ts +12 -10
- package/lib/typescript/src/specs/RNMBXCircleLayerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/specs/RNMBXFillLayerNativeComponent.d.ts +12 -10
- package/lib/typescript/src/specs/RNMBXFillLayerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/specs/RNMBXHeatmapLayerNativeComponent.d.ts +12 -10
- package/lib/typescript/src/specs/RNMBXHeatmapLayerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/specs/RNMBXLineLayerNativeComponent.d.ts +12 -10
- package/lib/typescript/src/specs/RNMBXLineLayerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/specs/RNMBXModelLayerNativeComponent.d.ts +28 -0
- package/lib/typescript/src/specs/RNMBXModelLayerNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/specs/RNMBXModelsNativeComponent.d.ts +15 -0
- package/lib/typescript/src/specs/RNMBXModelsNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/specs/RNMBXNativeUserLocationNativeComponent.d.ts +9 -1
- package/lib/typescript/src/specs/RNMBXNativeUserLocationNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/specs/RNMBXRasterLayerNativeComponent.d.ts +12 -10
- package/lib/typescript/src/specs/RNMBXRasterLayerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/specs/RNMBXSymbolLayerNativeComponent.d.ts +12 -10
- package/lib/typescript/src/specs/RNMBXSymbolLayerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/utils/styleMap.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Mapbox.ts +3 -0
- package/src/components/AbstractLayer.tsx +11 -5
- package/src/components/ModelLayer.tsx +107 -0
- package/src/components/Models.tsx +44 -0
- package/src/components/NativeUserLocation.tsx +46 -2
- package/src/components/Viewport.tsx +37 -0
- package/src/specs/RNMBXCircleLayerNativeComponent.ts +15 -12
- package/src/specs/RNMBXFillLayerNativeComponent.ts +15 -12
- package/src/specs/RNMBXHeatmapLayerNativeComponent.ts +15 -12
- package/src/specs/RNMBXLineLayerNativeComponent.ts +15 -12
- package/src/specs/RNMBXModelLayerNativeComponent.ts +38 -0
- package/src/specs/RNMBXModelsNativeComponent.ts +18 -0
- package/src/specs/RNMBXNativeUserLocationNativeComponent.ts +14 -1
- package/src/specs/RNMBXRasterLayerNativeComponent.ts +15 -12
- package/src/specs/RNMBXSymbolLayerNativeComponent.ts +15 -12
- package/src/specs/codeparts/CommonLayerNativeComponentsProps.codepart-ts +11 -10
- package/src/utils/MapboxStyles.d.ts +526 -63
- package/src/utils/styleMap.ts +69 -2
|
@@ -30,10 +30,12 @@ import com.rnmapbox.rnmbx.components.styles.layers.RNMBXFillExtrusionLayerManage
|
|
|
30
30
|
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXFillLayerManager
|
|
31
31
|
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXHeatmapLayerManager
|
|
32
32
|
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXLineLayerManager
|
|
33
|
+
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXModelLayerManager
|
|
33
34
|
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXRasterLayerManager
|
|
34
35
|
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXSkyLayerManager
|
|
35
36
|
import com.rnmapbox.rnmbx.components.styles.layers.RNMBXSymbolLayerManager
|
|
36
37
|
import com.rnmapbox.rnmbx.components.styles.light.RNMBXLightManager
|
|
38
|
+
import com.rnmapbox.rnmbx.components.styles.model.RNMBXModelsManager
|
|
37
39
|
import com.rnmapbox.rnmbx.components.styles.sources.RNMBXImageSourceManager
|
|
38
40
|
import com.rnmapbox.rnmbx.components.styles.sources.RNMBXRasterDemSourceManager
|
|
39
41
|
import com.rnmapbox.rnmbx.components.styles.sources.RNMBXRasterSourceManager
|
|
@@ -111,6 +113,7 @@ class RNMBXPackage : TurboReactPackage() {
|
|
|
111
113
|
managers.add(RNMBXViewportManager(reactApplicationContext))
|
|
112
114
|
managers.add(RNMBXMapViewManager(reactApplicationContext, getViewTagResolver(reactApplicationContext, "RNMBXMapViewManager")))
|
|
113
115
|
managers.add(RNMBXStyleImportManager(reactApplicationContext))
|
|
116
|
+
managers.add(RNMBXModelsManager(reactApplicationContext))
|
|
114
117
|
|
|
115
118
|
// annotations
|
|
116
119
|
managers.add(RNMBXMarkerViewManager(reactApplicationContext))
|
|
@@ -146,6 +149,7 @@ class RNMBXPackage : TurboReactPackage() {
|
|
|
146
149
|
managers.add(RNMBXAtmosphereManager())
|
|
147
150
|
managers.add(RNMBXBackgroundLayerManager())
|
|
148
151
|
managers.add(RNMBXLightManager())
|
|
152
|
+
managers.add(RNMBXModelLayerManager())
|
|
149
153
|
return managers
|
|
150
154
|
}
|
|
151
155
|
|
|
@@ -32,9 +32,11 @@ import com.rnmapbox.rnmbx.utils.extensions.*
|
|
|
32
32
|
import com.rnmapbox.rnmbx.utils.writableMapOf
|
|
33
33
|
|
|
34
34
|
import com.facebook.react.uimanager.events.Event
|
|
35
|
+
import com.mapbox.geojson.Geometry
|
|
35
36
|
import com.mapbox.maps.EdgeInsets
|
|
36
37
|
import com.mapbox.maps.plugin.viewport.data.FollowPuckViewportStateBearing
|
|
37
38
|
import com.mapbox.maps.plugin.viewport.data.FollowPuckViewportStateOptions
|
|
39
|
+
import com.mapbox.maps.plugin.viewport.data.OverviewViewportStateOptions
|
|
38
40
|
import com.rnmapbox.rnmbx.events.constants.EventKeys
|
|
39
41
|
|
|
40
42
|
class BaseEvent(
|
|
@@ -123,7 +125,9 @@ mContext
|
|
|
123
125
|
"followPuck" -> viewport.makeFollowPuckViewportState(
|
|
124
126
|
parseFollowViewportOptions(state)
|
|
125
127
|
)
|
|
126
|
-
|
|
128
|
+
"overview" -> return viewport.makeOverviewViewportState(
|
|
129
|
+
parseOverviewViewportOption(state)
|
|
130
|
+
)
|
|
127
131
|
else -> {
|
|
128
132
|
Logger.e(LOG_TAG, "toState: unexpected state: $kind")
|
|
129
133
|
null
|
|
@@ -191,14 +195,73 @@ mContext
|
|
|
191
195
|
builder.padding(null)
|
|
192
196
|
} else {
|
|
193
197
|
options.getAndLogIfNotMap("padding", LOG_TAG)?.let { paddingMap ->
|
|
194
|
-
paddingMap?.toPadding(LOG_TAG)?.let { padding ->
|
|
198
|
+
paddingMap?.toPadding(LOG_TAG, resources.displayMetrics.density)?.let { padding ->
|
|
195
199
|
builder.padding(padding)
|
|
196
200
|
}
|
|
197
201
|
}
|
|
198
202
|
}
|
|
199
203
|
}
|
|
204
|
+
}
|
|
205
|
+
return builder.build()
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
private fun parseOverviewViewportOption(state: ReadableMap): OverviewViewportStateOptions {
|
|
209
|
+
val builder = OverviewViewportStateOptions.Builder()
|
|
200
210
|
|
|
211
|
+
state.getAndLogIfNotMap("options", LOG_TAG)?.let { options ->
|
|
212
|
+
if (options.hasKey("padding")) {
|
|
213
|
+
if (!options.isNull("padding")) {
|
|
214
|
+
options.getAndLogIfNotMap("padding", LOG_TAG)?.let { paddingMap ->
|
|
215
|
+
paddingMap?.toPadding(LOG_TAG, resources.displayMetrics.density)?.let { padding ->
|
|
216
|
+
builder.padding(padding)
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
if (options.hasKey("bearing")) {
|
|
223
|
+
when (options.getType("bearing")) {
|
|
224
|
+
ReadableType.Number ->
|
|
225
|
+
builder.bearing(options.getDouble("bearing"))
|
|
226
|
+
ReadableType.Null ->
|
|
227
|
+
builder.bearing(null)
|
|
228
|
+
else -> {
|
|
229
|
+
Logger.e(
|
|
230
|
+
LOG_TAG,
|
|
231
|
+
"bearing in viewport options should be either constant number or null"
|
|
232
|
+
)
|
|
233
|
+
null
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (options.hasKey("pitch")) {
|
|
239
|
+
if (options.isNull("pitch")) {
|
|
240
|
+
builder.pitch(null)
|
|
241
|
+
} else {
|
|
242
|
+
options.getAndLogIfNotDouble("pitch", LOG_TAG)?.let {pitch ->
|
|
243
|
+
builder.pitch(pitch)
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
if (options.hasKey("animationDuration")) {
|
|
249
|
+
if (!options.isNull("animationDuration")) {
|
|
250
|
+
options.getAndLogIfNotDouble("zoom", LOG_TAG)?.let { duration ->
|
|
251
|
+
builder.animationDurationMs((duration * 1000.0).toLong())
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
if (options.hasKey("geometry")) {
|
|
257
|
+
options.getAndLogIfNotMap("geometry")?.let {map ->
|
|
258
|
+
map.toGeometry()?.let { geometry ->
|
|
259
|
+
builder.geometry(geometry)
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
201
263
|
}
|
|
264
|
+
|
|
202
265
|
return builder.build()
|
|
203
266
|
}
|
|
204
267
|
|
|
@@ -215,6 +278,10 @@ mContext
|
|
|
215
278
|
return builder.build()
|
|
216
279
|
}
|
|
217
280
|
|
|
281
|
+
private fun toGeometry(geometry: ReadableMap): Geometry? {
|
|
282
|
+
return geometry.toGeometry()
|
|
283
|
+
}
|
|
284
|
+
|
|
218
285
|
private fun toTransition(viewport: ViewportPlugin, state: ReadableMap?): ViewportTransition? {
|
|
219
286
|
viewport.idle()
|
|
220
287
|
return when (val kind = state?.getAndLogIfNotString("kind", LOG_TAG)) {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
package com.rnmapbox.rnmbx.components.images
|
|
2
2
|
|
|
3
|
+
import android.graphics.Bitmap
|
|
4
|
+
import android.graphics.Canvas
|
|
3
5
|
import android.graphics.drawable.BitmapDrawable
|
|
6
|
+
import android.graphics.drawable.Drawable
|
|
4
7
|
import android.view.View
|
|
5
8
|
import com.facebook.react.bridge.*
|
|
6
9
|
import com.facebook.react.common.MapBuilder
|
|
@@ -134,12 +137,33 @@ class RNMBXImagesManager(private val mContext: ReactApplicationContext) :
|
|
|
134
137
|
images.setHasOnImageMissing(value.asBoolean())
|
|
135
138
|
}
|
|
136
139
|
|
|
140
|
+
private fun convertDrawableToBitmap(sourceDrawable: Drawable?): BitmapDrawable? {
|
|
141
|
+
if (sourceDrawable == null) {
|
|
142
|
+
return null
|
|
143
|
+
}
|
|
144
|
+
return if (sourceDrawable is BitmapDrawable) {
|
|
145
|
+
sourceDrawable
|
|
146
|
+
} else {
|
|
147
|
+
// copying drawable object to not manipulate on the same reference
|
|
148
|
+
val constantState = sourceDrawable.constantState ?: return null
|
|
149
|
+
val drawable = constantState.newDrawable().mutate()
|
|
150
|
+
val bitmap: Bitmap = Bitmap.createBitmap(
|
|
151
|
+
drawable.intrinsicWidth, drawable.intrinsicHeight,
|
|
152
|
+
Bitmap.Config.ARGB_8888
|
|
153
|
+
)
|
|
154
|
+
val canvas = Canvas(bitmap)
|
|
155
|
+
drawable.setBounds(0, 0, canvas.width, canvas.height)
|
|
156
|
+
drawable.draw(canvas)
|
|
157
|
+
BitmapDrawable(mContext.resources, bitmap)
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
137
161
|
fun toNativeImage(dynamic: Dynamic): NativeImage? {
|
|
138
162
|
when (dynamic.type) {
|
|
139
163
|
ReadableType.String -> {
|
|
140
164
|
val resourceName = dynamic.asString();
|
|
141
165
|
val drawable =
|
|
142
|
-
ResourceUtils.getDrawableByName(mContext, resourceName)
|
|
166
|
+
convertDrawableToBitmap(ResourceUtils.getDrawableByName(mContext, resourceName))
|
|
143
167
|
if (drawable != null) {
|
|
144
168
|
return NativeImage(ImageInfo(name=resourceName), drawable)
|
|
145
169
|
} else {
|
|
@@ -151,7 +175,7 @@ class RNMBXImagesManager(private val mContext: ReactApplicationContext) :
|
|
|
151
175
|
val map = dynamic.asMap()
|
|
152
176
|
val resourceName = map.getString("name")
|
|
153
177
|
val drawable =
|
|
154
|
-
ResourceUtils.getDrawableByName(mContext, resourceName)
|
|
178
|
+
convertDrawableToBitmap(ResourceUtils.getDrawableByName(mContext, resourceName))
|
|
155
179
|
if (drawable != null && resourceName != null) {
|
|
156
180
|
return NativeImage(imageInfo(resourceName, map), drawable)
|
|
157
181
|
} else {
|
|
@@ -267,4 +291,4 @@ class RNMBXImagesManager(private val mContext: ReactApplicationContext) :
|
|
|
267
291
|
return ImageContent(result[0].toFloat(), result[1].toFloat() ,result[2].toFloat(), result[3].toFloat())
|
|
268
292
|
}
|
|
269
293
|
}
|
|
270
|
-
}
|
|
294
|
+
}
|
package/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXNativeUserLocation.kt
CHANGED
|
@@ -7,6 +7,9 @@ import android.graphics.Bitmap
|
|
|
7
7
|
import android.graphics.BitmapFactory
|
|
8
8
|
import android.graphics.drawable.BitmapDrawable
|
|
9
9
|
import android.graphics.drawable.Drawable
|
|
10
|
+
import com.facebook.react.bridge.ColorPropConverter
|
|
11
|
+
import com.facebook.react.bridge.ReadableMap
|
|
12
|
+
import com.facebook.react.bridge.ReadableType
|
|
10
13
|
import com.mapbox.android.core.permissions.PermissionsManager
|
|
11
14
|
import com.mapbox.bindgen.Value
|
|
12
15
|
import com.mapbox.maps.Image
|
|
@@ -14,6 +17,7 @@ import com.mapbox.maps.MapView
|
|
|
14
17
|
import com.mapbox.maps.MapboxMap
|
|
15
18
|
import com.mapbox.maps.Style
|
|
16
19
|
import com.mapbox.maps.plugin.LocationPuck2D
|
|
20
|
+
import com.mapbox.maps.plugin.locationcomponent.LocationComponentConstants
|
|
17
21
|
import com.mapbox.maps.plugin.locationcomponent.location
|
|
18
22
|
import com.mapbox.maps.plugin.locationcomponent.R as LR
|
|
19
23
|
import com.rnmapbox.rnmbx.R
|
|
@@ -26,6 +30,8 @@ import com.rnmapbox.rnmbx.components.mapview.OnMapReadyCallback
|
|
|
26
30
|
import com.rnmapbox.rnmbx.components.mapview.RNMBXMapView
|
|
27
31
|
import com.rnmapbox.rnmbx.utils.BitmapUtils
|
|
28
32
|
import com.rnmapbox.rnmbx.utils.Logger
|
|
33
|
+
import com.rnmapbox.rnmbx.utils.extensions.getAndLogIfNotBoolean
|
|
34
|
+
import com.rnmapbox.rnmbx.utils.extensions.getAndLogIfNotString
|
|
29
35
|
import com.rnmapbox.rnmbx.v11compat.image.AppCompatResourcesV11
|
|
30
36
|
import com.rnmapbox.rnmbx.v11compat.image.ImageHolder
|
|
31
37
|
import com.rnmapbox.rnmbx.v11compat.image.toDrawable
|
|
@@ -85,6 +91,12 @@ class RNMBXNativeUserLocation(context: Context) : AbstractMapFeature(context), O
|
|
|
85
91
|
_apply()
|
|
86
92
|
}
|
|
87
93
|
|
|
94
|
+
var pulsing: ReadableMap? = null
|
|
95
|
+
set(value) {
|
|
96
|
+
field = value
|
|
97
|
+
_apply()
|
|
98
|
+
}
|
|
99
|
+
|
|
88
100
|
private fun imageNameUpdated(image: PuckImagePart, name: String?) {
|
|
89
101
|
if (name != null) {
|
|
90
102
|
imageNames[image] = name
|
|
@@ -153,6 +165,41 @@ class RNMBXNativeUserLocation(context: Context) : AbstractMapFeature(context), O
|
|
|
153
165
|
this.puckBearingEnabled?.let {
|
|
154
166
|
location2.puckBearingEnabled = it
|
|
155
167
|
}
|
|
168
|
+
|
|
169
|
+
pulsing?.let { pulsing ->
|
|
170
|
+
pulsing.getAndLogIfNotString("kind")?.also { kind ->
|
|
171
|
+
if (kind == "default") {
|
|
172
|
+
location2.pulsingEnabled = true
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (pulsing.hasKey("color")) {
|
|
176
|
+
when (pulsing.getType("color")) {
|
|
177
|
+
ReadableType.Map ->
|
|
178
|
+
location2.pulsingColor = ColorPropConverter.getColor(pulsing.getMap("color"), mContext)
|
|
179
|
+
ReadableType.Number ->
|
|
180
|
+
location2.pulsingColor = pulsing.getInt("color")
|
|
181
|
+
else ->
|
|
182
|
+
Logger.e(LOG_TAG, "pusling.color should be either a map or a number, but was ${pulsing.getDynamic("color")}")
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
pulsing.getAndLogIfNotBoolean("isEnabled")?.let { enabled ->
|
|
186
|
+
location2.pulsingEnabled = enabled
|
|
187
|
+
}
|
|
188
|
+
if (pulsing.hasKey("radius")) {
|
|
189
|
+
when (pulsing.getType("radius")) {
|
|
190
|
+
ReadableType.Number ->
|
|
191
|
+
location2.pulsingMaxRadius = pulsing.getDouble("radius").toFloat()
|
|
192
|
+
ReadableType.String ->
|
|
193
|
+
if (pulsing.getString("radius") == "accuracy") {
|
|
194
|
+
location2.pulsingMaxRadius = LocationComponentConstants.PULSING_MAX_RADIUS_FOLLOW_ACCURACY
|
|
195
|
+
} else {
|
|
196
|
+
Logger.e(LOG_TAG, "Expected pulsing/radius to be a number or accuracy but was ${pulsing.getString("radius")}")
|
|
197
|
+
}
|
|
198
|
+
else ->
|
|
199
|
+
Logger.e(LOG_TAG, "Expected pulsing/radius to be a number or accuracy but was ${pulsing.getString("radius")}")
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
156
203
|
}
|
|
157
204
|
|
|
158
205
|
override fun addToMap(mapView: RNMBXMapView) {
|
|
@@ -229,6 +276,10 @@ class RNMBXNativeUserLocation(context: Context) : AbstractMapFeature(context), O
|
|
|
229
276
|
}
|
|
230
277
|
}
|
|
231
278
|
// endregion
|
|
279
|
+
|
|
280
|
+
companion object {
|
|
281
|
+
const val LOG_TAG = "RNMBXNativeUserLocation"
|
|
282
|
+
}
|
|
232
283
|
}
|
|
233
284
|
|
|
234
285
|
fun makeDefaultLocationPuck2D(context: Context, renderMode: RenderMode): LocationPuck2D {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
package com.rnmapbox.rnmbx.components.location
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.Dynamic
|
|
4
|
+
import com.facebook.react.bridge.ReadableMap
|
|
4
5
|
import com.facebook.react.bridge.ReadableType
|
|
5
6
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
6
7
|
import com.facebook.react.uimanager.ViewGroupManager
|
|
@@ -82,6 +83,13 @@ class RNMBXNativeUserLocationManager : ViewGroupManager<RNMBXNativeUserLocation>
|
|
|
82
83
|
view.visible = value
|
|
83
84
|
}
|
|
84
85
|
|
|
86
|
+
@ReactProp(name = "pulsing")
|
|
87
|
+
override fun setPulsing(view: RNMBXNativeUserLocation, value: Dynamic) {
|
|
88
|
+
if (!value.isNull) {
|
|
89
|
+
view.pulsing = value.asMap()
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
85
93
|
@Nonnull
|
|
86
94
|
override fun createViewInstance(@Nonnull reactContext: ThemedReactContext): RNMBXNativeUserLocation {
|
|
87
95
|
return RNMBXNativeUserLocation(reactContext)
|
|
@@ -125,7 +125,7 @@ class NativeMapViewModule(context: ReactApplicationContext, val viewTagResolver:
|
|
|
125
125
|
viewRef: Double?,
|
|
126
126
|
withBBox: ReadableArray,
|
|
127
127
|
withFilter: ReadableArray,
|
|
128
|
-
withLayerIDs: ReadableArray
|
|
128
|
+
withLayerIDs: ReadableArray?,
|
|
129
129
|
promise: Promise
|
|
130
130
|
) {
|
|
131
131
|
withMapViewOnUIThread(viewRef, promise) {
|