@rnmapbox/maps 10.0.0-beta.70 → 10.0.0-beta.71

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 (228) hide show
  1. package/android/rctmgl/build.gradle +1 -1
  2. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCamera.kt +68 -29
  3. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.kt +16 -13
  4. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/UserTrackingMode.kt +42 -0
  5. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.kt +49 -13
  6. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/helpers/CameraChangeTracker.kt +23 -0
  7. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/MapUserTrackingModeEvent.kt +21 -0
  8. package/index.d.ts +14 -62
  9. package/ios/RCTMGL-v10/RCTMGLCamera.swift +52 -26
  10. package/ios/RCTMGL-v10/RCTMGLCameraManager.m +5 -2
  11. package/ios/RCTMGL-v10/RCTMGLImages.swift +54 -8
  12. package/ios/install.md +1 -1
  13. package/javascript/components/Camera.tsx +7 -3
  14. package/javascript/components/Images.tsx +133 -0
  15. package/javascript/modules/location/{locationManager.js → locationManager.ts} +91 -18
  16. package/javascript/utils/MapboxStyles.d.ts +3 -3
  17. package/javascript/utils/styleMap.ts +2 -2
  18. package/lib/commonjs/classes/AnimatedCoordinatesArray.js.map +1 -1
  19. package/lib/commonjs/classes/AnimatedExtractCoordinateFromArray.js +2 -5
  20. package/lib/commonjs/classes/AnimatedExtractCoordinateFromArray.js.map +1 -1
  21. package/lib/commonjs/classes/AnimatedPoint.js.map +1 -1
  22. package/lib/commonjs/classes/AnimatedRouteCoordinatesArray.js.map +1 -1
  23. package/lib/commonjs/classes/AnimatedShape.js.map +1 -1
  24. package/lib/commonjs/classes/index.d.js.map +1 -1
  25. package/lib/commonjs/classes/index.js.map +1 -1
  26. package/lib/commonjs/components/AbstractLayer.js +6 -10
  27. package/lib/commonjs/components/AbstractLayer.js.map +1 -1
  28. package/lib/commonjs/components/AbstractSource.js +3 -10
  29. package/lib/commonjs/components/AbstractSource.js.map +1 -1
  30. package/lib/commonjs/components/Atmosphere.js.map +1 -1
  31. package/lib/commonjs/components/BackgroundLayer.js +3 -6
  32. package/lib/commonjs/components/BackgroundLayer.js.map +1 -1
  33. package/lib/commonjs/components/Callout.js +27 -30
  34. package/lib/commonjs/components/Callout.js.map +1 -1
  35. package/lib/commonjs/components/Camera.js +3 -1
  36. package/lib/commonjs/components/Camera.js.map +1 -1
  37. package/lib/commonjs/components/CircleLayer.js +3 -6
  38. package/lib/commonjs/components/CircleLayer.js.map +1 -1
  39. package/lib/commonjs/components/FillExtrusionLayer.js +3 -6
  40. package/lib/commonjs/components/FillExtrusionLayer.js.map +1 -1
  41. package/lib/commonjs/components/FillLayer.js +3 -6
  42. package/lib/commonjs/components/FillLayer.js.map +1 -1
  43. package/lib/commonjs/components/HeadingIndicator.js.map +1 -1
  44. package/lib/commonjs/components/HeatmapLayer.js +3 -6
  45. package/lib/commonjs/components/HeatmapLayer.js.map +1 -1
  46. package/lib/commonjs/components/ImageSource.js +16 -19
  47. package/lib/commonjs/components/ImageSource.js.map +1 -1
  48. package/lib/commonjs/components/Images.js +3 -34
  49. package/lib/commonjs/components/Images.js.map +1 -1
  50. package/lib/commonjs/components/Light.js +7 -10
  51. package/lib/commonjs/components/Light.js.map +1 -1
  52. package/lib/commonjs/components/LineLayer.js +3 -6
  53. package/lib/commonjs/components/LineLayer.js.map +1 -1
  54. package/lib/commonjs/components/MapView.js +227 -230
  55. package/lib/commonjs/components/MapView.js.map +1 -1
  56. package/lib/commonjs/components/MarkerView.js +9 -16
  57. package/lib/commonjs/components/MarkerView.js.map +1 -1
  58. package/lib/commonjs/components/NativeBridgeComponent.js +0 -7
  59. package/lib/commonjs/components/NativeBridgeComponent.js.map +1 -1
  60. package/lib/commonjs/components/NativeUserLocation.js.map +1 -1
  61. package/lib/commonjs/components/PointAnnotation.js +8 -11
  62. package/lib/commonjs/components/PointAnnotation.js.map +1 -1
  63. package/lib/commonjs/components/RasterDemSource.js +36 -39
  64. package/lib/commonjs/components/RasterDemSource.js.map +1 -1
  65. package/lib/commonjs/components/RasterLayer.js +3 -6
  66. package/lib/commonjs/components/RasterLayer.js.map +1 -1
  67. package/lib/commonjs/components/RasterSource.js +45 -48
  68. package/lib/commonjs/components/RasterSource.js.map +1 -1
  69. package/lib/commonjs/components/ShapeSource.js +4 -7
  70. package/lib/commonjs/components/ShapeSource.js.map +1 -1
  71. package/lib/commonjs/components/SkyLayer.js +3 -6
  72. package/lib/commonjs/components/SkyLayer.js.map +1 -1
  73. package/lib/commonjs/components/Style.js.map +1 -1
  74. package/lib/commonjs/components/SymbolLayer.js +3 -6
  75. package/lib/commonjs/components/SymbolLayer.js.map +1 -1
  76. package/lib/commonjs/components/Terrain.js.map +1 -1
  77. package/lib/commonjs/components/UserLocation.js +68 -70
  78. package/lib/commonjs/components/UserLocation.js.map +1 -1
  79. package/lib/commonjs/components/VectorSource.js +63 -66
  80. package/lib/commonjs/components/VectorSource.js.map +1 -1
  81. package/lib/commonjs/components/annotations/Annotation.js +16 -19
  82. package/lib/commonjs/components/annotations/Annotation.js.map +1 -1
  83. package/lib/commonjs/modules/location/locationManager.js +21 -10
  84. package/lib/commonjs/modules/location/locationManager.js.map +1 -1
  85. package/lib/commonjs/modules/offline/OfflineCreatePackOptions.js.map +1 -1
  86. package/lib/commonjs/modules/offline/OfflinePack.js.map +1 -1
  87. package/lib/commonjs/modules/offline/offlineManager.js.map +1 -1
  88. package/lib/commonjs/modules/snapshot/SnapshotOptions.js.map +1 -1
  89. package/lib/commonjs/modules/snapshot/snapshotManager.js.map +1 -1
  90. package/lib/commonjs/types/index.js.map +1 -1
  91. package/lib/commonjs/utils/BridgeValue.js +0 -4
  92. package/lib/commonjs/utils/BridgeValue.js.map +1 -1
  93. package/lib/commonjs/utils/Logger.js +1 -4
  94. package/lib/commonjs/utils/Logger.js.map +1 -1
  95. package/lib/commonjs/utils/MapboxStyles.d.js.map +1 -1
  96. package/lib/commonjs/utils/StyleValue.js.map +1 -1
  97. package/lib/commonjs/utils/animated/Animated.js.map +1 -1
  98. package/lib/commonjs/utils/deprecation.js.map +1 -1
  99. package/lib/commonjs/utils/filterUtils.js.map +1 -1
  100. package/lib/commonjs/utils/geoUtils.d.js.map +1 -1
  101. package/lib/commonjs/utils/geoUtils.js.map +1 -1
  102. package/lib/commonjs/utils/getAnnotationsLayerID.js.map +1 -1
  103. package/lib/commonjs/utils/index.d.js.map +1 -1
  104. package/lib/commonjs/utils/index.js.map +1 -1
  105. package/lib/commonjs/utils/styleMap.js +2 -2
  106. package/lib/commonjs/utils/styleMap.js.map +1 -1
  107. package/lib/commonjs/web/MapContext.js.map +1 -1
  108. package/lib/commonjs/web/MapboxModule.js.map +1 -1
  109. package/lib/commonjs/web/UnimplementedComponent.js.map +1 -1
  110. package/lib/commonjs/web/components/Camera.js +2 -9
  111. package/lib/commonjs/web/components/Camera.js.map +1 -1
  112. package/lib/commonjs/web/components/MapView.js +5 -11
  113. package/lib/commonjs/web/components/MapView.js.map +1 -1
  114. package/lib/commonjs/web/index.js.map +1 -1
  115. package/lib/commonjs/web/utils/Logger.js +3 -7
  116. package/lib/commonjs/web/utils/Logger.js.map +1 -1
  117. package/lib/module/classes/AnimatedCoordinatesArray.js.map +1 -1
  118. package/lib/module/classes/AnimatedExtractCoordinateFromArray.js +2 -5
  119. package/lib/module/classes/AnimatedExtractCoordinateFromArray.js.map +1 -1
  120. package/lib/module/classes/AnimatedPoint.js.map +1 -1
  121. package/lib/module/classes/AnimatedRouteCoordinatesArray.js.map +1 -1
  122. package/lib/module/classes/AnimatedShape.js.map +1 -1
  123. package/lib/module/classes/index.d.js.map +1 -1
  124. package/lib/module/classes/index.js.map +1 -1
  125. package/lib/module/components/AbstractLayer.js +4 -10
  126. package/lib/module/components/AbstractLayer.js.map +1 -1
  127. package/lib/module/components/AbstractSource.js +3 -10
  128. package/lib/module/components/AbstractSource.js.map +1 -1
  129. package/lib/module/components/Atmosphere.js.map +1 -1
  130. package/lib/module/components/BackgroundLayer.js +3 -6
  131. package/lib/module/components/BackgroundLayer.js.map +1 -1
  132. package/lib/module/components/Callout.js +27 -30
  133. package/lib/module/components/Callout.js.map +1 -1
  134. package/lib/module/components/Camera.js +3 -1
  135. package/lib/module/components/Camera.js.map +1 -1
  136. package/lib/module/components/CircleLayer.js +3 -6
  137. package/lib/module/components/CircleLayer.js.map +1 -1
  138. package/lib/module/components/FillExtrusionLayer.js +3 -6
  139. package/lib/module/components/FillExtrusionLayer.js.map +1 -1
  140. package/lib/module/components/FillLayer.js +3 -6
  141. package/lib/module/components/FillLayer.js.map +1 -1
  142. package/lib/module/components/HeadingIndicator.js.map +1 -1
  143. package/lib/module/components/HeatmapLayer.js +3 -6
  144. package/lib/module/components/HeatmapLayer.js.map +1 -1
  145. package/lib/module/components/ImageSource.js +16 -19
  146. package/lib/module/components/ImageSource.js.map +1 -1
  147. package/lib/module/components/Images.js +3 -34
  148. package/lib/module/components/Images.js.map +1 -1
  149. package/lib/module/components/Light.js +7 -10
  150. package/lib/module/components/Light.js.map +1 -1
  151. package/lib/module/components/LineLayer.js +3 -6
  152. package/lib/module/components/LineLayer.js.map +1 -1
  153. package/lib/module/components/MapView.js +227 -230
  154. package/lib/module/components/MapView.js.map +1 -1
  155. package/lib/module/components/MarkerView.js +9 -16
  156. package/lib/module/components/MarkerView.js.map +1 -1
  157. package/lib/module/components/NativeBridgeComponent.js +0 -7
  158. package/lib/module/components/NativeBridgeComponent.js.map +1 -1
  159. package/lib/module/components/NativeUserLocation.js.map +1 -1
  160. package/lib/module/components/PointAnnotation.js +8 -11
  161. package/lib/module/components/PointAnnotation.js.map +1 -1
  162. package/lib/module/components/RasterDemSource.js +36 -39
  163. package/lib/module/components/RasterDemSource.js.map +1 -1
  164. package/lib/module/components/RasterLayer.js +3 -6
  165. package/lib/module/components/RasterLayer.js.map +1 -1
  166. package/lib/module/components/RasterSource.js +45 -48
  167. package/lib/module/components/RasterSource.js.map +1 -1
  168. package/lib/module/components/ShapeSource.js +4 -7
  169. package/lib/module/components/ShapeSource.js.map +1 -1
  170. package/lib/module/components/SkyLayer.js +3 -6
  171. package/lib/module/components/SkyLayer.js.map +1 -1
  172. package/lib/module/components/Style.js.map +1 -1
  173. package/lib/module/components/SymbolLayer.js +3 -6
  174. package/lib/module/components/SymbolLayer.js.map +1 -1
  175. package/lib/module/components/Terrain.js.map +1 -1
  176. package/lib/module/components/UserLocation.js +68 -70
  177. package/lib/module/components/UserLocation.js.map +1 -1
  178. package/lib/module/components/VectorSource.js +63 -66
  179. package/lib/module/components/VectorSource.js.map +1 -1
  180. package/lib/module/components/annotations/Annotation.js +16 -19
  181. package/lib/module/components/annotations/Annotation.js.map +1 -1
  182. package/lib/module/modules/location/locationManager.js +22 -10
  183. package/lib/module/modules/location/locationManager.js.map +1 -1
  184. package/lib/module/modules/offline/OfflineCreatePackOptions.js.map +1 -1
  185. package/lib/module/modules/offline/OfflinePack.js.map +1 -1
  186. package/lib/module/modules/offline/offlineManager.js.map +1 -1
  187. package/lib/module/modules/snapshot/SnapshotOptions.js.map +1 -1
  188. package/lib/module/modules/snapshot/snapshotManager.js.map +1 -1
  189. package/lib/module/types/index.js.map +1 -1
  190. package/lib/module/utils/BridgeValue.js +0 -4
  191. package/lib/module/utils/BridgeValue.js.map +1 -1
  192. package/lib/module/utils/Logger.js +1 -4
  193. package/lib/module/utils/Logger.js.map +1 -1
  194. package/lib/module/utils/MapboxStyles.d.js.map +1 -1
  195. package/lib/module/utils/StyleValue.js.map +1 -1
  196. package/lib/module/utils/animated/Animated.js.map +1 -1
  197. package/lib/module/utils/deprecation.js.map +1 -1
  198. package/lib/module/utils/filterUtils.js.map +1 -1
  199. package/lib/module/utils/geoUtils.d.js.map +1 -1
  200. package/lib/module/utils/geoUtils.js.map +1 -1
  201. package/lib/module/utils/getAnnotationsLayerID.js.map +1 -1
  202. package/lib/module/utils/index.d.js.map +1 -1
  203. package/lib/module/utils/index.js.map +1 -1
  204. package/lib/module/utils/styleMap.js +2 -2
  205. package/lib/module/utils/styleMap.js.map +1 -1
  206. package/lib/module/web/MapContext.js.map +1 -1
  207. package/lib/module/web/MapboxModule.js.map +1 -1
  208. package/lib/module/web/UnimplementedComponent.js.map +1 -1
  209. package/lib/module/web/components/Camera.js +2 -9
  210. package/lib/module/web/components/Camera.js.map +1 -1
  211. package/lib/module/web/components/MapView.js +5 -11
  212. package/lib/module/web/components/MapView.js.map +1 -1
  213. package/lib/module/web/index.js.map +1 -1
  214. package/lib/module/web/utils/Logger.js +3 -7
  215. package/lib/module/web/utils/Logger.js.map +1 -1
  216. package/lib/typescript/components/Camera.d.ts +4 -2
  217. package/lib/typescript/components/Camera.d.ts.map +1 -1
  218. package/lib/typescript/components/Images.d.ts +57 -0
  219. package/lib/typescript/components/Images.d.ts.map +1 -0
  220. package/lib/typescript/modules/location/locationManager.d.ts +87 -0
  221. package/lib/typescript/modules/location/locationManager.d.ts.map +1 -0
  222. package/lib/typescript/utils/styleMap.d.ts +2 -2
  223. package/package.json +1 -1
  224. package/rnmapbox-maps.podspec +1 -1
  225. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/UserTrackingMode.java +0 -54
  226. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/helpers/CameraChangeTracker.java +0 -37
  227. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/location/UserLocationVerticalAlignment.java +0 -7
  228. package/javascript/components/Images.js +0 -118
@@ -130,7 +130,7 @@ dependencies {
130
130
  implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:5.1.0'
131
131
  }
132
132
  else if (safeExtGet("RNMapboxMapsImpl", defaultMapboxMapsImpl) == "mapbox") {
133
- implementation 'com.mapbox.maps:android:10.11.0'
133
+ implementation 'com.mapbox.maps:android:10.11.1'
134
134
  implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:6.10.0'
135
135
  implementation 'androidx.asynclayoutinflater:asynclayoutinflater:1.0.0'
136
136
  }
@@ -3,6 +3,7 @@ package com.mapbox.rctmgl.components.camera
3
3
  import android.animation.Animator
4
4
  import android.content.Context
5
5
  import android.location.Location
6
+ import com.facebook.react.bridge.ReadableMap
6
7
  import com.mapbox.maps.plugin.gestures.gestures
7
8
  import com.mapbox.rctmgl.location.LocationManager.Companion.getInstance
8
9
  import com.mapbox.maps.plugin.animation.flyTo
@@ -18,16 +19,19 @@ import com.mapbox.maps.*
18
19
  import com.mapbox.maps.plugin.PuckBearingSource
19
20
  import com.mapbox.maps.plugin.locationcomponent.location
20
21
  import com.mapbox.maps.plugin.locationcomponent.location2
22
+ import com.mapbox.maps.plugin.viewport.ViewportStatus
23
+ import com.mapbox.maps.plugin.viewport.ViewportStatusObserver
21
24
  import com.mapbox.maps.plugin.viewport.data.FollowPuckViewportStateBearing
22
25
  import com.mapbox.maps.plugin.viewport.data.FollowPuckViewportStateOptions
26
+ import com.mapbox.maps.plugin.viewport.data.ViewportStatusChangeReason
23
27
  import com.mapbox.maps.plugin.viewport.viewport
24
28
  import com.mapbox.rctmgl.components.camera.constants.CameraMode
25
29
  import com.mapbox.rctmgl.components.location.*
30
+ import com.mapbox.rctmgl.events.MapUserTrackingModeEvent
26
31
  import com.mapbox.rctmgl.location.*
27
32
  import com.mapbox.rctmgl.utils.Logger
28
33
 
29
34
 
30
-
31
35
  class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCameraManager) :
32
36
  AbstractMapFeature(
33
37
  mContext
@@ -43,21 +47,24 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
43
47
  private var mLocationComponentManager: LocationComponentManager? = null
44
48
  private var mUserTrackingMode = 0
45
49
  private var mUserTrackingState = UserTrackingState.POSSIBLE
46
- private val mUserLocationVerticalAlignment = UserLocationVerticalAlignment.CENTER
47
50
  private val mLocationManager: LocationManager?
48
51
  private val mUserLocation: UserLocation = UserLocation()
49
52
  private val mCenterCoordinate: ScreenCoordinate? = null
50
53
  private val mAnimated = false
51
54
  private val mHeading = 0.0
52
- private var mFollowPitch : Double? = null
55
+
56
+ private var mFollowUserLocation = false
57
+ private var mFollowUserMode: String? = null
53
58
  private var mFollowZoomLevel : Double? = null
59
+ private var mFollowPitch : Double? = null
54
60
  private var mFollowHeading : Double? = null
61
+ private var mFollowPadding : EdgeInsets? = null
62
+
55
63
  private var mZoomLevel = -1.0
56
64
  private var mMinZoomLevel : Double? = null
57
65
  private var mMaxZoomLevel : Double? = null
58
66
  private var mMaxBounds: LatLngBounds? = null
59
- private var mFollowUserLocation = false
60
- private var mFollowUserMode: String? = null
67
+
61
68
 
62
69
  private val mLocationBearingChangedListener = OnIndicatorBearingChangedListener { v ->
63
70
  if (mFollowUserLocation) {
@@ -94,7 +101,8 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
94
101
  setInitialCamera()
95
102
  updateMaxBounds()
96
103
  mCameraStop?.let { updateCamera(it) }
97
- _updateViewportState();
104
+ _observeViewportState(mapView)
105
+ _updateViewportState()
98
106
  }
99
107
 
100
108
  override fun removeFromMap(mapView: RCTMGLMapView) {
@@ -112,9 +120,14 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
112
120
  mDefaultStop = stop
113
121
  }
114
122
 
115
- fun setFollowPitch(pitch: Double) {
116
- mFollowPitch = pitch
117
- _updateViewportState();
123
+ fun setFollowUserMode(mode: String?) {
124
+ mFollowUserMode = mode
125
+ _updateViewportState()
126
+ }
127
+
128
+ fun setFollowUserLocation(value: Boolean) {
129
+ mFollowUserLocation = value
130
+ _updateViewportState()
118
131
  }
119
132
 
120
133
  fun setFollowZoomLevel(zoomLevel: Double) {
@@ -122,11 +135,30 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
122
135
  _updateViewportState();
123
136
  }
124
137
 
138
+ fun setFollowPitch(pitch: Double) {
139
+ mFollowPitch = pitch
140
+ _updateViewportState();
141
+ }
142
+
125
143
  fun setFollowHeading(heading: Double) {
126
144
  mFollowHeading = heading
127
145
  _updateViewportState();
128
146
  }
129
147
 
148
+ fun setFollowPadding(padding: ReadableMap) {
149
+ // scale padding by pixel ratio
150
+ val metrics = context.resources.displayMetrics
151
+ val edgeInsets = EdgeInsets(
152
+ if (padding.hasKey("paddingTop")) padding.getDouble("paddingTop") * metrics.density else 0.0,
153
+ if (padding.hasKey("paddingLeft")) padding.getDouble("paddingLeft") * metrics.density else 0.0,
154
+ if (padding.hasKey("paddingBottom")) padding.getDouble("paddingBottom") * metrics.density else 0.0,
155
+ if (padding.hasKey("paddingRight")) padding.getDouble("paddingRight") * metrics.density else 0.0,
156
+ )
157
+
158
+ mFollowPadding = edgeInsets
159
+ _updateViewportState();
160
+ }
161
+
130
162
  fun setMaxBounds(bounds: LatLngBounds?) {
131
163
  mMaxBounds = bounds
132
164
  updateMaxBounds()
@@ -163,14 +195,6 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
163
195
  mCameraUpdateQueue.execute(mMapView)
164
196
  }
165
197
 
166
- private fun updateUserTrackingMode(userTrackingMode: Int) {
167
- /* v10todo
168
- mUserLocation.setTrackingMode(userTrackingMode);
169
- IEvent event = new MapUserTrackingModeEvent(this, userTrackingMode);
170
- mManager.handleEvent(event);
171
- */
172
- }
173
-
174
198
  private fun updateUserLocation(isAnimated: Boolean) {
175
199
 
176
200
  }
@@ -250,7 +274,7 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
250
274
  fun setUserTrackingMode(userTrackingMode: Int) {
251
275
  val oldTrackingMode = mUserTrackingMode
252
276
  mUserTrackingMode = userTrackingMode
253
- updateUserTrackingMode(userTrackingMode)
277
+ mManager.handleEvent(MapUserTrackingModeEvent(this@RCTMGLCamera, userTrackingMode))
254
278
  when (mUserTrackingMode) {
255
279
  UserTrackingMode.NONE -> mUserTrackingState = UserTrackingState.POSSIBLE
256
280
  UserTrackingMode.FOLLOW, UserTrackingMode.FollowWithCourse, UserTrackingMode.FollowWithHeading -> if (oldTrackingMode == UserTrackingMode.NONE) {
@@ -262,9 +286,22 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
262
286
  }
263
287
  }
264
288
 
265
- fun setFollowUserLocation(value: Boolean) {
266
- mFollowUserLocation = value
267
- _updateViewportState()
289
+ fun _observeViewportState(mapView: MapView) {
290
+ mapView.viewport.addStatusObserver(object: ViewportStatusObserver {
291
+ override fun onViewportStatusChanged(
292
+ from: ViewportStatus,
293
+ to: ViewportStatus,
294
+ reason: ViewportStatusChangeReason
295
+ ) {
296
+ if (to == ViewportStatus.Idle) {
297
+ mManager.handleEvent(MapUserTrackingModeEvent(this@RCTMGLCamera, UserTrackingMode.NONE))
298
+ } else if (to is ViewportStatus.Transition) {
299
+
300
+ } else if (to is ViewportStatus.State){
301
+ //mManager.handleEvent(MapUserTrackingModeEvent(this@RCTMGLCamera, UserTrackingMode.FOLLOW))
302
+ }
303
+ }
304
+ })
268
305
  }
269
306
 
270
307
  fun _updateViewportState() {
@@ -320,15 +357,22 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
320
357
  }
321
358
  }
322
359
 
360
+ when(val it=mFollowZoomLevel) {
361
+ null -> followOptions.zoom(cameraState.zoom)
362
+ else -> followOptions.zoom(it)
363
+ }
364
+
323
365
  when(val it=mFollowPitch) {
324
366
  null -> followOptions.pitch(cameraState.pitch)
325
367
  else -> followOptions.pitch(it)
326
368
  }
327
- when(val it=mFollowZoomLevel) {
328
- null -> followOptions.zoom(cameraState.zoom)
329
- else -> followOptions.zoom(mFollowZoomLevel)
369
+
370
+ when(val it=mFollowPadding) {
371
+ null -> followOptions.padding(cameraState.padding)
372
+ else -> followOptions.padding(it)
330
373
  }
331
374
 
375
+
332
376
  val followState = viewport.makeFollowPuckViewportState(followOptions.build())
333
377
  viewport.transitionTo(followState)
334
378
  }
@@ -339,11 +383,6 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
339
383
  }
340
384
  }
341
385
 
342
- fun setFollowUserMode(mode: String?) {
343
- mFollowUserMode = mode
344
- _updateViewportState()
345
- }
346
-
347
386
  private fun updatedFollowUserMode() {
348
387
  if (mFollowUserLocation) {
349
388
  setUserTrackingMode(UserTrackingMode.fromString(mFollowUserMode))
@@ -1,5 +1,4 @@
1
1
  package com.mapbox.rctmgl.components.camera
2
-
3
2
  import com.facebook.react.bridge.ReactApplicationContext
4
3
  import com.facebook.react.bridge.ReadableMap
5
4
  import com.facebook.react.uimanager.ThemedReactContext
@@ -10,7 +9,6 @@ import com.mapbox.rctmgl.components.camera.CameraStop.Companion.fromReadableMap
10
9
  import com.mapbox.rctmgl.utils.GeoJSONUtils.toLatLngBounds
11
10
 
12
11
 
13
- //import com.mapbox.rctmgl.utils.GeoJSONUtils;
14
12
  class RCTMGLCameraManager(private val mContext: ReactApplicationContext) :
15
13
  AbstractEventEmitter<RCTMGLCamera?>(
16
14
  mContext
@@ -54,6 +52,16 @@ class RCTMGLCameraManager(private val mContext: ReactApplicationContext) :
54
52
  camera.setZoomLevel(zoomLevel)
55
53
  }
56
54
 
55
+ @ReactProp(name = "minZoomLevel")
56
+ fun setMinZoomLevel(camera: RCTMGLCamera, value: Double) {
57
+ camera.setMinZoomLevel(value)
58
+ }
59
+
60
+ @ReactProp(name = "maxZoomLevel")
61
+ fun setMaxZoomLevel(camera: RCTMGLCamera, value: Double) {
62
+ camera.setMaxZoomLevel(value)
63
+ }
64
+
57
65
  @ReactProp(name = "followUserLocation")
58
66
  fun setFollowUserLocation(camera: RCTMGLCamera, value: Boolean) {
59
67
  camera.setFollowUserLocation(value)
@@ -64,14 +72,9 @@ class RCTMGLCameraManager(private val mContext: ReactApplicationContext) :
64
72
  camera.setFollowUserMode(value)
65
73
  }
66
74
 
67
- @ReactProp(name = "minZoomLevel")
68
- fun setMinZoomLevel(camera: RCTMGLCamera, value: Double) {
69
- camera.setMinZoomLevel(value)
70
- }
71
-
72
- @ReactProp(name = "maxZoomLevel")
73
- fun setMaxZoomLevel(camera: RCTMGLCamera, value: Double) {
74
- camera.setMaxZoomLevel(value)
75
+ @ReactProp(name = "followZoomLevel")
76
+ fun setFollowZoomLevel(camera: RCTMGLCamera, value: Double) {
77
+ camera.setFollowZoomLevel(value)
75
78
  }
76
79
 
77
80
  @ReactProp(name = "followPitch")
@@ -84,9 +87,9 @@ class RCTMGLCameraManager(private val mContext: ReactApplicationContext) :
84
87
  camera.setFollowHeading(value)
85
88
  }
86
89
 
87
- @ReactProp(name = "followZoomLevel")
88
- fun setFollowZoomLevel(camera: RCTMGLCamera, value: Double) {
89
- camera.setFollowZoomLevel(value)
90
+ @ReactProp(name = "followPadding")
91
+ fun setFollowPadding(camera: RCTMGLCamera, value: ReadableMap) {
92
+ camera.setFollowPadding(value)
90
93
  }
91
94
 
92
95
  @ReactProp(name = "maxBounds")
@@ -0,0 +1,42 @@
1
+ package com.mapbox.rctmgl.components.location
2
+
3
+ object UserTrackingMode {
4
+ const val NONE = 0
5
+ const val FOLLOW = 1
6
+ const val FollowWithCourse = 2
7
+ const val FollowWithHeading = 3
8
+ @CameraMode.Mode
9
+ fun getCameraMode(mode: Int): Int {
10
+ when (mode) {
11
+ NONE -> return CameraMode.NONE
12
+ FOLLOW -> return CameraMode.TRACKING
13
+ FollowWithCourse -> return CameraMode.TRACKING_GPS
14
+ FollowWithHeading -> return CameraMode.TRACKING_COMPASS
15
+ }
16
+ return CameraMode.NONE
17
+ }
18
+
19
+ fun isUserGesture(reason: Int): Boolean {
20
+ return reason == 1 || reason == 2 // user gesture or animation
21
+ }
22
+
23
+ fun toString(value: Int): String? {
24
+ when (value) {
25
+ FOLLOW -> return "normal"
26
+ FollowWithCourse -> return "course"
27
+ FollowWithHeading -> return "compass"
28
+ }
29
+ return null
30
+ }
31
+
32
+ fun fromString(value: String?): Int {
33
+ var value = value
34
+ if (value == null) value = ""
35
+ return when (value) {
36
+ "course" -> FollowWithCourse
37
+ "normal" -> FOLLOW
38
+ "compass" -> FollowWithHeading
39
+ else -> FOLLOW
40
+ }
41
+ }
42
+ }
@@ -15,6 +15,8 @@ import androidx.lifecycle.LifecycleRegistry
15
15
  import androidx.lifecycle.ViewTreeLifecycleOwner
16
16
  import com.facebook.react.bridge.*
17
17
  import com.mapbox.android.gestures.MoveGestureDetector
18
+ import com.mapbox.android.gestures.RotateGestureDetector
19
+ import com.mapbox.android.gestures.StandardScaleGestureDetector
18
20
  import com.mapbox.geojson.Feature
19
21
  import com.mapbox.geojson.FeatureCollection
20
22
  import com.mapbox.geojson.Point
@@ -28,7 +30,6 @@ import com.mapbox.maps.extension.style.layers.properties.generated.ProjectionNam
28
30
  import com.mapbox.maps.extension.style.layers.properties.generated.Visibility
29
31
  import com.mapbox.maps.extension.style.projection.generated.Projection
30
32
  import com.mapbox.maps.extension.style.projection.generated.setProjection
31
- import com.mapbox.maps.plugin.animation.camera
32
33
  import com.mapbox.maps.plugin.annotation.Annotation
33
34
  import com.mapbox.maps.plugin.annotation.AnnotationConfig
34
35
  import com.mapbox.maps.plugin.annotation.annotations
@@ -39,13 +40,10 @@ import com.mapbox.maps.plugin.compass.compass
39
40
  import com.mapbox.maps.plugin.compass.generated.CompassSettings
40
41
  import com.mapbox.maps.plugin.delegates.listeners.*
41
42
  import com.mapbox.maps.plugin.gestures.*
42
- import com.mapbox.maps.plugin.locationcomponent.location
43
- import com.mapbox.maps.plugin.locationcomponent.location2
44
43
  import com.mapbox.maps.plugin.logo.generated.LogoSettings
45
44
  import com.mapbox.maps.plugin.logo.logo
46
45
  import com.mapbox.maps.plugin.scalebar.generated.ScaleBarSettings
47
46
  import com.mapbox.maps.plugin.scalebar.scalebar
48
- import com.mapbox.maps.plugin.viewport.viewport
49
47
  import com.mapbox.rctmgl.R
50
48
  import com.mapbox.rctmgl.components.AbstractMapFeature
51
49
  import com.mapbox.rctmgl.components.annotation.RCTMGLMarkerView
@@ -55,6 +53,7 @@ import com.mapbox.rctmgl.components.camera.RCTMGLCamera
55
53
  import com.mapbox.rctmgl.components.images.RCTMGLImages
56
54
  import com.mapbox.rctmgl.components.location.LocationComponentManager
57
55
  import com.mapbox.rctmgl.components.location.RCTMGLNativeUserLocation
56
+ import com.mapbox.rctmgl.components.mapview.helpers.CameraChangeReason
58
57
  import com.mapbox.rctmgl.components.mapview.helpers.CameraChangeTracker
59
58
  import com.mapbox.rctmgl.components.styles.layers.RCTLayer
60
59
  import com.mapbox.rctmgl.components.styles.light.RCTMGLLight
@@ -81,6 +80,10 @@ data class OrnamentSettings(
81
80
  var position: Int = -1
82
81
  )
83
82
 
83
+ enum class MapGestureType {
84
+ Move,Scale,Rotate
85
+ }
86
+
84
87
  /***
85
88
  * Mapbox's MapView observers lifecycle events see MapboxLifecyclePluginImpl - (ON_START, ON_STOP, ON_DESTROY)
86
89
  * We need to emulate those.
@@ -258,25 +261,58 @@ open class RCTMGLMapView(private val mContext: Context, var mManager: RCTMGLMapV
258
261
  gesturesPlugin.addOnMapLongClickListener(_this)
259
262
  gesturesPlugin.addOnMapClickListener(_this)
260
263
 
264
+ gesturesPlugin.addOnScaleListener(object: OnScaleListener{
265
+ override fun onScale(detector: StandardScaleGestureDetector) {
266
+ mapGesture(MapGestureType.Scale, detector)
267
+ }
268
+ override fun onScaleBegin(detector: StandardScaleGestureDetector) {
269
+ mapGestureBegin(MapGestureType.Scale, detector)
270
+ }
271
+ override fun onScaleEnd(detector: StandardScaleGestureDetector) {
272
+ mapGestureEnd(MapGestureType.Scale, detector)
273
+ }
274
+ })
275
+
276
+ gesturesPlugin.addOnRotateListener(object: OnRotateListener{
277
+ override fun onRotate(detector: RotateGestureDetector) {
278
+ mapGesture(MapGestureType.Rotate, detector)
279
+ }
280
+ override fun onRotateBegin(detector: RotateGestureDetector) {
281
+ mapGestureBegin(MapGestureType.Rotate, detector)
282
+ }
283
+ override fun onRotateEnd(detector: RotateGestureDetector) {
284
+ mapGestureEnd(MapGestureType.Rotate, detector)
285
+ }
286
+ })
287
+
261
288
  gesturesPlugin.addOnMoveListener(object : OnMoveListener {
262
289
  override fun onMoveBegin(moveGestureDetector: MoveGestureDetector) {
263
- mCameraChangeTracker.setReason(CameraChangeTracker.USER_GESTURE)
264
- handleMapChangedEvent(EventTypes.REGION_WILL_CHANGE)
290
+ mapGestureBegin(MapGestureType.Move, moveGestureDetector)
265
291
  }
266
292
 
267
293
  override fun onMove(moveGestureDetector: MoveGestureDetector): Boolean {
268
- mCameraChangeTracker.setReason(CameraChangeTracker.USER_GESTURE)
269
- handleMapChangedEvent(EventTypes.REGION_IS_CHANGING)
270
- return false
294
+ return mapGesture(MapGestureType.Move, moveGestureDetector)
271
295
  }
272
296
 
273
- override fun onMoveEnd(moveGestureDetector: MoveGestureDetector) {}
297
+ override fun onMoveEnd(moveGestureDetector: MoveGestureDetector) {
298
+ mapGestureEnd(MapGestureType.Move, moveGestureDetector)
299
+ }
274
300
  })
275
301
 
276
-
277
302
  map.subscribe({ event -> Logger.e(LOG_TAG, String.format("Map load failed: %s", event.data.toString())) }, Arrays.asList(MapEvents.MAP_LOADING_ERROR))
278
303
  }
279
304
 
305
+ fun<T> mapGestureBegin(type:MapGestureType, gesture: T) {
306
+ mCameraChangeTracker.setReason(CameraChangeReason.USER_GESTURE)
307
+ handleMapChangedEvent(EventTypes.REGION_WILL_CHANGE)
308
+ }
309
+ fun<T> mapGesture(type: MapGestureType, gesture: T): Boolean {
310
+ mCameraChangeTracker.setReason(CameraChangeReason.USER_GESTURE)
311
+ handleMapChangedEvent(EventTypes.REGION_IS_CHANGING)
312
+ return false
313
+ }
314
+ fun<T> mapGestureEnd(type: MapGestureType, gesture: T) {}
315
+
280
316
  fun init() {
281
317
  // Required for rendering properly in Android Oreo
282
318
  viewTreeObserver.dispatchOnGlobalLayout()
@@ -382,7 +418,7 @@ open class RCTMGLMapView(private val mContext: Context, var mManager: RCTMGLMapV
382
418
  val event: IEvent = MapChangeEvent(this, EventTypes.REGION_DID_CHANGE,
383
419
  makeRegionPayload(isAnimated))
384
420
  mManager.handleEvent(event)
385
- mCameraChangeTracker.setReason(CameraChangeTracker.EMPTY)
421
+ mCameraChangeTracker.setReason(CameraChangeReason.NONE)
386
422
  }
387
423
 
388
424
  private fun removeAllFeaturesFromMap() {
@@ -665,7 +701,7 @@ open class RCTMGLMapView(private val mContext: Context, var mManager: RCTMGLMapV
665
701
 
666
702
  fun sendRegionDidChangeEvent() {
667
703
  handleMapChangedEvent(EventTypes.REGION_DID_CHANGE)
668
- mCameraChangeTracker.setReason(CameraChangeTracker.EMPTY)
704
+ mCameraChangeTracker.setReason(CameraChangeReason.NONE)
669
705
  }
670
706
 
671
707
  private fun handleMapChangedEvent(eventType: String) {
@@ -0,0 +1,23 @@
1
+ package com.mapbox.rctmgl.components.mapview.helpers
2
+
3
+ enum class CameraChangeReason {
4
+ NONE,
5
+ USER_GESTURE,
6
+ DEVELOPER_ANIMATION,
7
+ SDK_ANIMATION
8
+ }
9
+
10
+ class CameraChangeTracker {
11
+ private var reason : CameraChangeReason = CameraChangeReason.NONE
12
+ var isAnimating = false
13
+ fun setReason(reason: CameraChangeReason) {
14
+ this.reason = reason
15
+ }
16
+
17
+ val isUserInteraction: Boolean
18
+ get() = reason == CameraChangeReason.USER_GESTURE || reason == CameraChangeReason.DEVELOPER_ANIMATION
19
+ val isAnimated: Boolean
20
+ get() = reason == CameraChangeReason.DEVELOPER_ANIMATION || reason == CameraChangeReason.SDK_ANIMATION
21
+ val isEmpty: Boolean
22
+ get() = reason == CameraChangeReason.NONE
23
+ }
@@ -0,0 +1,21 @@
1
+ package com.mapbox.rctmgl.events
2
+
3
+ import android.view.View
4
+ import com.facebook.react.bridge.Arguments
5
+ import com.facebook.react.bridge.WritableMap
6
+ import com.mapbox.rctmgl.components.location.UserTrackingMode
7
+ import com.mapbox.rctmgl.events.constants.EventKeys
8
+ import com.mapbox.rctmgl.events.constants.EventTypes
9
+
10
+ class MapUserTrackingModeEvent(view: View?, val userTrackingMode: Int) : AbstractEvent(view, EventTypes.MAP_USER_TRACKING_MODE_CHANGE) {
11
+ override fun getKey(): String {
12
+ return EventKeys.MAP_USER_TRACKING_MODE_CHANGE;
13
+ }
14
+
15
+ override fun getPayload(): WritableMap {
16
+ val payload = Arguments.createMap()
17
+ payload.putBoolean("followUserLocation", userTrackingMode != UserTrackingMode.NONE)
18
+ payload.putString("followUserMode", UserTrackingMode.toString(userTrackingMode))
19
+ return payload
20
+ }
21
+ }
package/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  declare module 'react-native-mapbox-gl__maps';
2
2
 
3
- import { Component, ReactNode } from 'react';
3
+ import { Component, FC, ReactNode } from 'react';
4
4
  import {
5
5
  ViewProps,
6
6
  ViewStyle,
@@ -47,6 +47,7 @@ import {
47
47
  type UserTrackingMode as _UserTrackingMode,
48
48
  type UserTrackingModeChangeCallback as _UserTrackingModeChangeCallback,
49
49
  } from './javascript/components/Camera';
50
+ import { Images as _Images } from './javascript/components/Images';
50
51
  import { MarkerView as _MarkerView } from './javascript/components/MarkerView';
51
52
  import { PointAnnotation as _PointAnnotation } from './javascript/components/PointAnnotation';
52
53
  import { Atmosphere as _Atmosphere } from './javascript/components/Atmosphere';
@@ -74,6 +75,10 @@ import type {
74
75
  AnimatedShape as _AnimatedShape,
75
76
  } from './javascript/types/index';
76
77
  import type { requestAndroidLocationPermissions as _requestAndroidLocationPermissions } from './javascript/requestAndroidLocationPermissions';
78
+ import type {
79
+ Location as _Location,
80
+ LocationManager,
81
+ } from './javascript/locationManager';
77
82
 
78
83
  // prettier-ignore
79
84
  type ExpressionName =
@@ -172,6 +177,7 @@ declare namespace MapboxGL {
172
177
  type MapboxGLEvent = _MapboxGLEvent;
173
178
  type UserTrackingMode = _UserTrackingMode;
174
179
  type UserTrackingModeChangeCallback = _UserTrackingModeChangeCallback;
180
+ type Location = _Location;
175
181
 
176
182
  const offlineManager: OfflineManager;
177
183
  const snapshotManager: SnapshotManager;
@@ -324,56 +330,10 @@ declare namespace MapboxGL {
324
330
 
325
331
  class UserLocation extends Component<UserLocationProps> {}
326
332
 
327
- interface Location {
328
- coords: Coordinates;
329
- timestamp?: number;
330
- }
331
-
332
- interface Coordinates {
333
- /**
334
- * The heading (measured in degrees) relative to true north.
335
- * Heading is used to describe the direction the device is pointing to (the value of the compass).
336
- * Note that on Android this is incorrectly reporting the course value as mentioned in issue https://github.com/rnmapbox/maps/issues/1213
337
- * and will be corrected in a future update.
338
- */
339
- heading?: number;
340
-
341
- /**
342
- * The direction in which the device is traveling, measured in degrees and relative to due north.
343
- * The course refers to the direction the device is actually moving (not the same as heading).
344
- */
345
- course?: number;
346
-
347
- /**
348
- * The instantaneous speed of the device, measured in meters per second.
349
- */
350
- speed?: number;
351
-
352
- /**
353
- * The latitude in degrees.
354
- */
355
- latitude: number;
356
-
357
- /**
358
- * The longitude in degrees.
359
- */
360
- longitude: number;
361
-
362
- /**
363
- * The radius of uncertainty for the location, measured in meters.
364
- */
365
- accuracy?: number;
366
-
367
- /**
368
- * The altitude, measured in meters.
369
- */
370
- altitude?: number;
371
- }
372
-
373
333
  class Light extends Component<LightProps> {}
374
334
 
375
335
  class Callout extends Component<CalloutProps> {}
376
- type Style = React.FC<StyleProps>;
336
+ type Style = FC<StyleProps>;
377
337
 
378
338
  /**
379
339
  * Sources
@@ -392,14 +352,12 @@ declare namespace MapboxGL {
392
352
  class LineLayer extends Component<_LineLayerProps> {}
393
353
  class RasterLayer extends Component<_RasterLayerProps> {}
394
354
  class HeatmapLayer extends Component<_HeatmapLayerProps> {}
395
- class Images extends Component<ImagesProps> {}
396
355
  class ImageSource extends Component<ImageSourceProps> {}
397
356
  class SkyLayer extends Component<_SkyLayerProps> {}
398
357
 
399
- class LocationManager extends Component {
400
- start(displacement?: number): void;
401
- stop(): void;
402
- }
358
+ type Location = _Location;
359
+ type Images = _Images;
360
+ const Images = _Images;
403
361
 
404
362
  /**
405
363
  * Offline
@@ -533,7 +491,6 @@ export interface MapState {
533
491
  export interface MapViewProps extends ViewProps {
534
492
  animated?: boolean;
535
493
  userTrackingMode?: MapboxGL.UserTrackingModes;
536
- userLocationVerticalAlignment?: number;
537
494
  contentInset?: Array<number>;
538
495
  projection?: 'mercator' | 'globe';
539
496
  style?: StyleProp<ViewStyle>;
@@ -575,7 +532,7 @@ export interface MapViewProps extends ViewProps {
575
532
  ) => void;
576
533
  onCameraChanged?: (state: MapState) => void;
577
534
  onMapIdle?: (state: MapState) => void;
578
- onUserLocationUpdate?: (feature: MapboxGL.Location) => void;
535
+ onUserLocationUpdate?: (feature: Location) => void;
579
536
  onWillStartLoadingMap?: () => void;
580
537
  onDidFinishLoadingMap?: () => void;
581
538
  onDidFailLoadingMap?: () => void;
@@ -596,7 +553,7 @@ export interface UserLocationProps {
596
553
  minDisplacement?: number;
597
554
  requestsAlwaysUse?: boolean;
598
555
  onPress?: () => void;
599
- onUpdate?: (location: MapboxGL.Location) => void;
556
+ onUpdate?: (location: Location) => void;
600
557
  renderMode?: 'normal' | 'native';
601
558
  showsUserHeadingIndicator?: boolean;
602
559
  visible?: boolean;
@@ -734,12 +691,6 @@ export interface HeatmapLayerProps extends LayerBaseProps {
734
691
  style?: StyleProp<HeatmapLayerStyle>;
735
692
  }
736
693
 
737
- export interface ImagesProps extends ViewProps {
738
- images?: { assets?: string[] } & { [key: string]: ImageSourcePropType };
739
- nativeAssetImages?: string[];
740
- onImageMissing?: (imageKey: string) => void;
741
- }
742
-
743
694
  export interface ImageSourceProps extends ViewProps {
744
695
  id: string;
745
696
  url?: number | string;
@@ -828,6 +779,7 @@ export import AnimatedPoint = MapboxGL.AnimatedPoint;
828
779
  /** @deprecated This will be removed in a future release. Use `AnimatedPoint` instead. */
829
780
  export import AnimatedMapPoint = MapboxGL.AnimatedPoint;
830
781
  export import AnimatedShape = MapboxGL.AnimatedShape;
782
+ export import Images = MapboxGL.Images;
831
783
 
832
784
  export const { offlineManager } = MapboxGL;
833
785