@rnmapbox/maps 10.0.0-rc.0 → 10.0.0-rc.10

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.
Files changed (67) hide show
  1. package/README.md +2 -2
  2. package/android/rctmgl/build.gradle +1 -1
  3. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/AbstractEventEmitter.kt +75 -0
  4. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerViewManager.kt +1 -1
  5. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCamera.kt +92 -9
  6. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/images/RCTMGLImagesManager.kt +2 -2
  7. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/LocationComponentManager.kt +3 -2
  8. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.kt +23 -0
  9. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.kt +86 -17
  10. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.kt +24 -8
  11. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSourceManager.kt +1 -1
  12. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSourceManager.kt +1 -1
  13. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSourceManager.kt +1 -1
  14. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/AbstractEvent.kt +49 -0
  15. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/IEvent.kt +17 -0
  16. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/LocationEvent.kt +11 -16
  17. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/MapUserTrackingModeEvent.kt +10 -10
  18. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/constants/EventTypes.kt +44 -0
  19. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLLocationModule.kt +36 -1
  20. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLModule.kt +4 -3
  21. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLOfflineModule.kt +474 -405
  22. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/FeatureCollection.kt +10 -0
  23. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/Geometry.kt +22 -0
  24. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/JSONObject.kt +78 -0
  25. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/ReadableArray.kt +1 -1
  26. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/Value.kt +9 -0
  27. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/writeableMapArrayOf.kt +41 -0
  28. package/ios/RCTMGL-v10/RCTMGLCamera.swift +1 -6
  29. package/ios/RCTMGL-v10/RCTMGLImages.swift +0 -1
  30. package/ios/RCTMGL-v10/RCTMGLLocationModule.m +2 -2
  31. package/ios/RCTMGL-v10/RCTMGLMapView.swift +7 -1
  32. package/ios/RCTMGL-v10/RCTMGLOfflineModule.swift +283 -307
  33. package/ios/install.md +7 -0
  34. package/lib/commonjs/components/MapView.js +12 -2
  35. package/lib/commonjs/components/MapView.js.map +1 -1
  36. package/lib/commonjs/components/NativeUserLocation.js.map +1 -1
  37. package/lib/commonjs/components/Terrain.js +1 -2
  38. package/lib/commonjs/components/Terrain.js.map +1 -1
  39. package/lib/commonjs/components/VectorSource.js +2 -0
  40. package/lib/commonjs/components/VectorSource.js.map +1 -1
  41. package/lib/commonjs/modules/location/locationManager.js +4 -0
  42. package/lib/commonjs/modules/location/locationManager.js.map +1 -1
  43. package/lib/module/components/MapView.js +12 -2
  44. package/lib/module/components/MapView.js.map +1 -1
  45. package/lib/module/components/NativeUserLocation.js.map +1 -1
  46. package/lib/module/components/Terrain.js +1 -2
  47. package/lib/module/components/Terrain.js.map +1 -1
  48. package/lib/module/components/VectorSource.js +3 -0
  49. package/lib/module/components/VectorSource.js.map +1 -1
  50. package/lib/module/modules/location/locationManager.js +4 -0
  51. package/lib/module/modules/location/locationManager.js.map +1 -1
  52. package/lib/typescript/components/MapView.d.ts +7 -1
  53. package/lib/typescript/components/MapView.d.ts.map +1 -1
  54. package/lib/typescript/components/NativeUserLocation.d.ts.map +1 -1
  55. package/lib/typescript/components/Terrain.d.ts.map +1 -1
  56. package/package.json +1 -1
  57. package/plugin/install.md +17 -0
  58. package/rnmapbox-maps.podspec +1 -1
  59. package/src/components/MapView.tsx +11 -3
  60. package/src/components/NativeUserLocation.tsx +5 -3
  61. package/src/components/Terrain.tsx +3 -5
  62. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/AbstractEventEmitter.java +0 -82
  63. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapView.java +0 -16
  64. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.java +0 -31
  65. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/AbstractEvent.java +0 -62
  66. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/IEvent.java +0 -18
  67. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/constants/EventTypes.java +0 -51
@@ -0,0 +1,10 @@
1
+ package com.mapbox.rctmgl.utils.extensions
2
+
3
+ import com.mapbox.geojson.FeatureCollection
4
+ import com.mapbox.geojson.GeometryCollection
5
+
6
+ fun FeatureCollection.toGeometryCollection(): GeometryCollection {
7
+ return GeometryCollection.fromGeometries(
8
+ this.features()!!.map { it.geometry() !! }
9
+ )
10
+ }
@@ -0,0 +1,22 @@
1
+ package com.mapbox.rctmgl.utils.extensions
2
+
3
+ import com.mapbox.geojson.BoundingBox
4
+ import com.mapbox.geojson.Geometry
5
+ import com.mapbox.geojson.Polygon
6
+ import com.mapbox.turf.TurfMeasurement
7
+ import org.json.JSONObject
8
+
9
+ fun Geometry.toJSONObject(): JSONObject? {
10
+ return JSONObject(this.toJson())
11
+ }
12
+
13
+ fun Geometry.calculateBoundingBox(): BoundingBox {
14
+ val storedBBox = bbox()
15
+ if (storedBBox != null) {
16
+ return storedBBox
17
+ }
18
+ val bbox = TurfMeasurement.bbox(this)
19
+ return BoundingBox.fromLngLats(
20
+ bbox[0], bbox[1], bbox[2], bbox[3]
21
+ )
22
+ }
@@ -0,0 +1,78 @@
1
+ package com.mapbox.rctmgl.utils.extensions
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+ import com.facebook.react.bridge.ReadableArray
5
+ import com.facebook.react.bridge.ReadableMap
6
+ import com.facebook.react.bridge.WritableMap
7
+ import com.mapbox.bindgen.Value
8
+ import com.mapbox.geojson.Geometry
9
+ import com.mapbox.geojson.Polygon
10
+ import com.mapbox.rctmgl.utils.Logger
11
+ import org.json.JSONArray
12
+ import org.json.JSONObject
13
+
14
+ fun JSONObject.toGeometry(): Geometry? {
15
+ when (this.optString("type")) {
16
+ "polygon" -> return Polygon.fromJson(this.toString())
17
+ else -> {
18
+ Logger.w("JSONObject", "Unexpected geometry: ${this.toString()}")
19
+ return null
20
+ }
21
+ }
22
+ }
23
+
24
+ fun JSONObject.toMapboxValue(): Value {
25
+ return Value.fromJson(this.toString()).value!!
26
+ }
27
+
28
+ fun JSONObject.toWritableMap(): WritableMap? {
29
+ val result = Arguments.createMap()
30
+ val iterator = keys()
31
+ while (iterator.hasNext()) {
32
+ val key = iterator.next()
33
+ val value = get(key)
34
+ if (value is JSONObject) {
35
+ result.putMap(key, value.toReadableMap());
36
+ } else if (value is JSONArray) {
37
+ result.putArray(key, value.toReadableArray());
38
+ } else if (value is Boolean) {
39
+ result.putBoolean(key, value);
40
+ } else if (value is Int) {
41
+ result.putInt(key, value);
42
+ } else if (value is Double) {
43
+ result.putDouble(key, value);
44
+ } else if (value is String) {
45
+ result.putString(key, value);
46
+ } else {
47
+ result.putString(key, value.toString());
48
+ }
49
+ }
50
+ return result
51
+ }
52
+
53
+ fun JSONObject.toReadableMap(): ReadableMap? {
54
+ return toWritableMap()
55
+ }
56
+
57
+ fun JSONArray.toReadableArray(): ReadableArray? {
58
+ val result = Arguments.createArray()
59
+ for (i in 0 until length()) {
60
+ val value: Any = get(i)
61
+ if (value is JSONObject) {
62
+ result.pushMap(value.toReadableMap())
63
+ } else if (value is JSONArray) {
64
+ result.pushArray(value.toReadableArray())
65
+ } else if (value is Boolean) {
66
+ result.pushBoolean(value)
67
+ } else if (value is Int) {
68
+ result.pushInt(value)
69
+ } else if (value is Double) {
70
+ result.pushDouble(value)
71
+ } else if (value is String) {
72
+ result.pushString(value)
73
+ } else {
74
+ result.pushString(value.toString())
75
+ }
76
+ }
77
+ return result
78
+ }
@@ -20,4 +20,4 @@ fun ReadableArray.toScreenCoordinate() : ScreenCoordinate {
20
20
  Logger.e("ReadableArray.toCoordinate","Cannot convert $this to point, 2 coordinates are required")
21
21
  }
22
22
  return ScreenCoordinate(getDouble(0), getDouble(1))
23
- }
23
+ }
@@ -0,0 +1,9 @@
1
+ package com.mapbox.rctmgl.utils.extensions
2
+
3
+ import com.mapbox.bindgen.Value
4
+ import org.json.JSONObject
5
+
6
+ fun Value.toJSONObject(): JSONObject? {
7
+ val jsonString = this.toJson()
8
+ return JSONObject(jsonString)
9
+ }
@@ -0,0 +1,41 @@
1
+ package com.mapbox.rctmgl.utils
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+ import com.facebook.react.bridge.WritableArray
5
+ import com.facebook.react.bridge.WritableMap
6
+
7
+ fun writableMapOf(vararg values: Pair<String, *>): WritableMap {
8
+ val map = Arguments.createMap()
9
+ for ((key, value) in values) {
10
+ when (value) {
11
+ null -> map.putNull(key)
12
+ is Boolean -> map.putBoolean(key, value)
13
+ is Double -> map.putDouble(key, value)
14
+ is Int -> map.putInt(key, value)
15
+ is Long -> map.putInt(key, value.toInt())
16
+ is String -> map.putString(key, value)
17
+ is WritableMap -> map.putMap(key, value)
18
+ is WritableArray -> map.putArray(key, value)
19
+ else -> throw IllegalArgumentException("Unsupported value type ${value::class.java.name} for key [$key]")
20
+ }
21
+ }
22
+ return map
23
+ }
24
+
25
+ fun writableArrayOf(vararg values: Any): WritableArray {
26
+ val array = Arguments.createArray()
27
+ for (value in values) {
28
+ when (value) {
29
+ null -> array.pushNull()
30
+ is Boolean -> array.pushBoolean(value)
31
+ is Double -> array.pushDouble(value)
32
+ is Int -> array.pushInt(value)
33
+ is Long -> array.pushInt(value.toInt())
34
+ is String -> array.pushString(value)
35
+ is WritableMap -> array.pushMap(value)
36
+ is WritableArray -> array.pushArray(value)
37
+ else -> throw IllegalArgumentException("Unsupported value type ${value::class.java.name}")
38
+ }
39
+ }
40
+ return array
41
+ }
@@ -290,17 +290,12 @@ class RCTMGLCamera : RCTMGLMapComponentBase {
290
290
  case .none:
291
291
  Logger.assert("RCTMGLCamera, userTrackingModes should not be none here")
292
292
  case .compass:
293
- map.location.options.puckBearingEnabled = true
294
- map.location.options.puckBearingSource = PuckBearingSource.heading
295
293
  followOptions.bearing = FollowPuckViewportStateBearing.heading
296
294
  trackingModeChanged = true
297
295
  case .course:
298
- map.location.options.puckBearingEnabled = true
299
- map.location.options.puckBearingSource = PuckBearingSource.course
300
296
  followOptions.bearing = FollowPuckViewportStateBearing.course
301
297
  trackingModeChanged = true
302
298
  case .normal:
303
- map.location.options.puckBearingEnabled = false
304
299
  followOptions.bearing = nil
305
300
  trackingModeChanged = true
306
301
  }
@@ -576,7 +571,7 @@ extension RCTMGLCamera : ViewportStatusObserver {
576
571
  if reason == .idleRequested {
577
572
  return "idleRequested"
578
573
  } else if reason == .transitionFailed {
579
- return "transitionFailied"
574
+ return "transitionFailed"
580
575
  } else if reason == .transitionStarted {
581
576
  return "transitionStarted"
582
577
  } else if reason == .transitionSucceeded {
@@ -55,7 +55,6 @@ class RCTMGLImages : UIView, RCTMGLMapComponent {
55
55
  func addToMap(_ map: RCTMGLMapView, style: Style) {
56
56
  self.style = style
57
57
  map.images.append(self)
58
- map.setupEvents()
59
58
 
60
59
  self.addNativeImages(style: style, nativeImages: nativeImageInfos)
61
60
  self.addRemoteImages(style: style, remoteImages: images)
@@ -12,9 +12,9 @@ RCT_EXTERN_METHOD(getLastKnownLocation)
12
12
  RCT_EXTERN_METHOD(setMinDisplacement:(CLLocationDistance)minDisplacement)
13
13
  RCT_EXTERN_METHOD(setRequestsAlwaysUse:(BOOL)requestsAlwaysUse)
14
14
 
15
- RCT_EXTERN_METHOD(setLocationEventThrottle:(NSNumber *)throttleValue)
15
+ RCT_EXTERN_METHOD(setLocationEventThrottle:(nonnull NSNumber *)throttleValue)
16
16
 
17
- RCT_EXTERN_METHOD(simulateHeading:(nonnull NSNumber)changesPerSecond increment:(nonnull NSNumber))
17
+ RCT_EXTERN_METHOD(simulateHeading:(nonnull NSNumber*)changesPerSecond increment:(nonnull NSNumber*))
18
18
 
19
19
 
20
20
  @end
@@ -26,6 +26,8 @@ open class RCTMGLMapView : MapView {
26
26
 
27
27
  var handleMapChangedEvents = Set<RCTMGLEvent.EventType>()
28
28
 
29
+ var eventListeners : [Cancelable] = []
30
+
29
31
  private var isPendingInitialLayout = true
30
32
  private var wasGestureActive = false
31
33
  private var isGestureActive = false
@@ -347,11 +349,15 @@ open class RCTMGLMapView : MapView {
347
349
 
348
350
  extension RCTMGLMapView {
349
351
  private func onEvery<Payload>(event: MapEvents.Event<Payload>, handler: @escaping (RCTMGLMapView, MapEvent<Payload>) -> Void) {
350
- self.mapView.mapboxMap.onEvery(event: event) { [weak self](mapEvent) in
352
+ let eventListener = self.mapView.mapboxMap.onEvery(event: event) { [weak self](mapEvent) in
351
353
  guard let self = self else { return }
352
354
 
353
355
  handler(self, mapEvent)
354
356
  }
357
+ eventListeners.append(eventListener)
358
+ if eventListeners.count > 20 {
359
+ Logger.log(level:.warn, message: "RCTMGLMapView.onEvery, too much handler installed");
360
+ }
355
361
  }
356
362
 
357
363
  private func onNext<Payload>(event: MapEvents.Event<Payload>, handler: @escaping (RCTMGLMapView, MapEvent<Payload>) -> Void) {