@maplibre/maplibre-react-native 8.6.0-beta.0

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 (381) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc.js +158 -0
  3. package/.gitattributes +1 -0
  4. package/.nvmrc +1 -0
  5. package/.prettierrc.js +7 -0
  6. package/.sonarcloud.properties +15 -0
  7. package/CHANGELOG.md +367 -0
  8. package/CODE_OF_CONDUCT.md +2 -0
  9. package/CONTRIBUTING.md +34 -0
  10. package/LICENSE.md +9 -0
  11. package/README.md +224 -0
  12. package/RELEASE.md +30 -0
  13. package/android/build.gradle +34 -0
  14. package/android/install.md +16 -0
  15. package/android/rctmgl/.settings/org.eclipse.buildship.core.prefs +2 -0
  16. package/android/rctmgl/build.gradle +61 -0
  17. package/android/rctmgl/proguard-rules.pro +25 -0
  18. package/android/rctmgl/src/main/AndroidManifest.xml +4 -0
  19. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/RCTMGLPackage.java +99 -0
  20. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/AbstractEvent.java +35 -0
  21. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/AbstractEventEmitter.java +80 -0
  22. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/AbstractMapFeature.java +19 -0
  23. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/MarkerView.java +23 -0
  24. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/MarkerViewManager.java +67 -0
  25. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLCallout.java +15 -0
  26. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLCalloutManager.java +22 -0
  27. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerView.java +112 -0
  28. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerViewManager.java +45 -0
  29. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotation.java +360 -0
  30. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotationManager.java +88 -0
  31. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/CameraStop.java +249 -0
  32. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/CameraUpdateItem.java +125 -0
  33. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/CameraUpdateQueue.java +73 -0
  34. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/RCTMGLCamera.java +530 -0
  35. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.java +101 -0
  36. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/constants/CameraMode.java +22 -0
  37. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/images/RCTMGLImages.java +234 -0
  38. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/images/RCTMGLImagesManager.java +103 -0
  39. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/location/LocationComponentManager.java +149 -0
  40. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocation.java +66 -0
  41. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocationManager.java +35 -0
  42. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/LayerSourceInfo.java +59 -0
  43. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapView.java +16 -0
  44. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.java +31 -0
  45. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.java +1527 -0
  46. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.java +353 -0
  47. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/helpers/CameraChangeTracker.java +41 -0
  48. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyle.java +83 -0
  49. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyleFactory.java +2242 -0
  50. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyleFunctionParser.java +108 -0
  51. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyleValue.java +212 -0
  52. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTLayer.java +287 -0
  53. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayer.java +27 -0
  54. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayerManager.java +64 -0
  55. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayer.java +55 -0
  56. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayerManager.java +77 -0
  57. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayer.java +55 -0
  58. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayerManager.java +80 -0
  59. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayer.java +55 -0
  60. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayerManager.java +80 -0
  61. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayer.java +55 -0
  62. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayerManager.java +77 -0
  63. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayer.java +55 -0
  64. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayerManager.java +79 -0
  65. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayer.java +27 -0
  66. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayerManager.java +64 -0
  67. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayer.java +55 -0
  68. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayerManager.java +75 -0
  69. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/light/RCTMGLLight.java +65 -0
  70. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/light/RCTMGLLightManager.java +29 -0
  71. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSource.java +81 -0
  72. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSourceManager.java +72 -0
  73. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSource.java +45 -0
  74. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSourceManager.java +44 -0
  75. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSource.java +302 -0
  76. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSourceManager.java +227 -0
  77. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSource.java +97 -0
  78. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSourceManager.java +80 -0
  79. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSource.java +64 -0
  80. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSourceManager.java +84 -0
  81. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTSource.java +244 -0
  82. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/AbstractEvent.java +66 -0
  83. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/AndroidCallbackEvent.java +38 -0
  84. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/EventEmitter.java +45 -0
  85. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/FeatureClickEvent.java +79 -0
  86. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/IEvent.java +18 -0
  87. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/ImageMissingEvent.java +42 -0
  88. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/LocationEvent.java +100 -0
  89. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/MapChangeEvent.java +47 -0
  90. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/MapClickEvent.java +51 -0
  91. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/MapUserTrackingModeEvent.java +36 -0
  92. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/OfflineEvent.java +29 -0
  93. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/PointAnnotationClickEvent.java +46 -0
  94. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/PointAnnotationDragEvent.java +51 -0
  95. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/constants/EventKeys.java +39 -0
  96. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/constants/EventTypes.java +51 -0
  97. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/http/CustomHeadersInterceptor.java +38 -0
  98. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/LocationManager.java +168 -0
  99. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserLocation.java +63 -0
  100. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserLocationVerticalAlignment.java +11 -0
  101. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserTrackingMode.java +63 -0
  102. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserTrackingState.java +19 -0
  103. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLLocationModule.java +158 -0
  104. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLLogging.java +140 -0
  105. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLModule.java +348 -0
  106. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLOfflineModule.java +597 -0
  107. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLSnapshotModule.java +139 -0
  108. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/BitmapUtils.java +129 -0
  109. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ConvertUtils.java +257 -0
  110. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/DownloadMapImageTask.java +159 -0
  111. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ExpressionParser.java +74 -0
  112. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/GeoJSONUtils.java +209 -0
  113. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/GeoViewport.java +38 -0
  114. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ImageEntry.java +25 -0
  115. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ResourceUtils.java +30 -0
  116. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/SimpleEventCallback.java +30 -0
  117. package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/SphericalMercator.java +69 -0
  118. package/android/rctmgl/src/main/res/drawable/empty.xml +5 -0
  119. package/android/rctmgl/src/main/res/drawable/empty_drawable.png +0 -0
  120. package/android/rctmgl/src/main/res/drawable-xxhdpi/red_marker.png +0 -0
  121. package/android/rctmgl/src/main/res/layout/annotation.xml +17 -0
  122. package/android/rctmgl/src/main/res/values/strings.xml +3 -0
  123. package/android/settings.gradle +1 -0
  124. package/app.plugin.js +1 -0
  125. package/assets/heading.png +0 -0
  126. package/assets/heading@2x.png +0 -0
  127. package/assets/heading@3x.png +0 -0
  128. package/assets/indoor_building_map_android.png +0 -0
  129. package/assets/indoor_building_map_ios.png +0 -0
  130. package/assets/mapbox_logo.png +0 -0
  131. package/babel.config.js +9 -0
  132. package/docs/Annotation.md +39 -0
  133. package/docs/Annotations.md +17 -0
  134. package/docs/BackgroundLayer.md +166 -0
  135. package/docs/Callout.md +15 -0
  136. package/docs/Camera.md +162 -0
  137. package/docs/CircleLayer.md +453 -0
  138. package/docs/CustomHttpHeaders.md +87 -0
  139. package/docs/FillExtrusionLayer.md +327 -0
  140. package/docs/FillLayer.md +293 -0
  141. package/docs/GettingStarted.md +72 -0
  142. package/docs/HeadingIndicator.md +10 -0
  143. package/docs/HeatmapLayer.md +215 -0
  144. package/docs/ImageSource.md +12 -0
  145. package/docs/Images.md +12 -0
  146. package/docs/Light.md +159 -0
  147. package/docs/LineLayer.md +567 -0
  148. package/docs/Logger.md +23 -0
  149. package/docs/MapView.md +211 -0
  150. package/docs/MapboxGL.md +65 -0
  151. package/docs/MarkerView.md +14 -0
  152. package/docs/NativeUserLocation.md +11 -0
  153. package/docs/OfflineManager.md +246 -0
  154. package/docs/PointAnnotation.md +34 -0
  155. package/docs/RasterLayer.md +357 -0
  156. package/docs/RasterSource.md +17 -0
  157. package/docs/ShapeSource.md +100 -0
  158. package/docs/Style.md +10 -0
  159. package/docs/StyleSheet.md +430 -0
  160. package/docs/SymbolLayer.md +1658 -0
  161. package/docs/UserLocation.md +39 -0
  162. package/docs/VectorSource.md +48 -0
  163. package/docs/docs.json +6093 -0
  164. package/docs/snapshotManager.md +53 -0
  165. package/index.d.ts +953 -0
  166. package/ios/RCTMGL/CameraMode.h +18 -0
  167. package/ios/RCTMGL/CameraMode.m +18 -0
  168. package/ios/RCTMGL/CameraStop.h +26 -0
  169. package/ios/RCTMGL/CameraStop.m +83 -0
  170. package/ios/RCTMGL/CameraUpdateItem.h +18 -0
  171. package/ios/RCTMGL/CameraUpdateItem.m +178 -0
  172. package/ios/RCTMGL/CameraUpdateQueue.h +21 -0
  173. package/ios/RCTMGL/CameraUpdateQueue.m +74 -0
  174. package/ios/RCTMGL/FilterParser.h +14 -0
  175. package/ios/RCTMGL/FilterParser.m +22 -0
  176. package/ios/RCTMGL/MGLCustomHeaders.h +20 -0
  177. package/ios/RCTMGL/MGLCustomHeaders.m +98 -0
  178. package/ios/RCTMGL/MGLFaux3DUserLocationAnnotationView.h +23 -0
  179. package/ios/RCTMGL/MGLFaux3DUserLocationAnnotationView.m +474 -0
  180. package/ios/RCTMGL/MGLModule.h +13 -0
  181. package/ios/RCTMGL/MGLModule.m +269 -0
  182. package/ios/RCTMGL/MGLOfflineModule.h +19 -0
  183. package/ios/RCTMGL/MGLOfflineModule.m +516 -0
  184. package/ios/RCTMGL/MGLSnapshotModule.h +13 -0
  185. package/ios/RCTMGL/MGLSnapshotModule.m +80 -0
  186. package/ios/RCTMGL/MGLUserLocationHeadingArrowLayer.h +11 -0
  187. package/ios/RCTMGL/MGLUserLocationHeadingArrowLayer.m +57 -0
  188. package/ios/RCTMGL/MGLUserLocationHeadingBeamLayer.h +11 -0
  189. package/ios/RCTMGL/MGLUserLocationHeadingBeamLayer.m +102 -0
  190. package/ios/RCTMGL/MGLUserLocationHeadingIndicator.h +10 -0
  191. package/ios/RCTMGL/RCTConvert+Mapbox.h +16 -0
  192. package/ios/RCTMGL/RCTConvert+Mapbox.m +32 -0
  193. package/ios/RCTMGL/RCTMGL.h +13 -0
  194. package/ios/RCTMGL/RCTMGL.m +13 -0
  195. package/ios/RCTMGL/RCTMGLBackgroundLayer.h +14 -0
  196. package/ios/RCTMGL/RCTMGLBackgroundLayer.m +27 -0
  197. package/ios/RCTMGL/RCTMGLBackgroundLayerManager.h +13 -0
  198. package/ios/RCTMGL/RCTMGLBackgroundLayerManager.m +35 -0
  199. package/ios/RCTMGL/RCTMGLCallout.h +15 -0
  200. package/ios/RCTMGL/RCTMGLCallout.m +74 -0
  201. package/ios/RCTMGL/RCTMGLCalloutManager.h +13 -0
  202. package/ios/RCTMGL/RCTMGLCalloutManager.m +21 -0
  203. package/ios/RCTMGL/RCTMGLCamera.h +39 -0
  204. package/ios/RCTMGL/RCTMGLCamera.m +258 -0
  205. package/ios/RCTMGL/RCTMGLCameraManager.h +13 -0
  206. package/ios/RCTMGL/RCTMGLCameraManager.m +52 -0
  207. package/ios/RCTMGL/RCTMGLCircleLayer.h +13 -0
  208. package/ios/RCTMGL/RCTMGLCircleLayer.m +34 -0
  209. package/ios/RCTMGL/RCTMGLCircleLayerManager.h +13 -0
  210. package/ios/RCTMGL/RCTMGLCircleLayerManager.m +39 -0
  211. package/ios/RCTMGL/RCTMGLEvent.h +21 -0
  212. package/ios/RCTMGL/RCTMGLEvent.m +47 -0
  213. package/ios/RCTMGL/RCTMGLEventProtocol.h +16 -0
  214. package/ios/RCTMGL/RCTMGLEventTypes.h +50 -0
  215. package/ios/RCTMGL/RCTMGLEventTypes.m +49 -0
  216. package/ios/RCTMGL/RCTMGLFillExtrusionLayer.h +14 -0
  217. package/ios/RCTMGL/RCTMGLFillExtrusionLayer.m +32 -0
  218. package/ios/RCTMGL/RCTMGLFillExtrusionLayerManager.h +13 -0
  219. package/ios/RCTMGL/RCTMGLFillExtrusionLayerManager.m +39 -0
  220. package/ios/RCTMGL/RCTMGLFillLayer.h +14 -0
  221. package/ios/RCTMGL/RCTMGLFillLayer.m +33 -0
  222. package/ios/RCTMGL/RCTMGLFillLayerManager.h +13 -0
  223. package/ios/RCTMGL/RCTMGLFillLayerManager.m +37 -0
  224. package/ios/RCTMGL/RCTMGLHeatmapLayer.h +12 -0
  225. package/ios/RCTMGL/RCTMGLHeatmapLayer.m +30 -0
  226. package/ios/RCTMGL/RCTMGLHeatmapLayerManager.h +12 -0
  227. package/ios/RCTMGL/RCTMGLHeatmapLayerManager.m +38 -0
  228. package/ios/RCTMGL/RCTMGLImageQueue.h +19 -0
  229. package/ios/RCTMGL/RCTMGLImageQueue.m +57 -0
  230. package/ios/RCTMGL/RCTMGLImageQueueOperation.h +17 -0
  231. package/ios/RCTMGL/RCTMGLImageQueueOperation.m +138 -0
  232. package/ios/RCTMGL/RCTMGLImageSource.h +16 -0
  233. package/ios/RCTMGL/RCTMGLImageSource.m +60 -0
  234. package/ios/RCTMGL/RCTMGLImageSourceManager.h +13 -0
  235. package/ios/RCTMGL/RCTMGLImageSourceManager.m +25 -0
  236. package/ios/RCTMGL/RCTMGLImages.h +25 -0
  237. package/ios/RCTMGL/RCTMGLImages.m +126 -0
  238. package/ios/RCTMGL/RCTMGLImagesManager.h +5 -0
  239. package/ios/RCTMGL/RCTMGLImagesManager.m +21 -0
  240. package/ios/RCTMGL/RCTMGLLayer.h +52 -0
  241. package/ios/RCTMGL/RCTMGLLayer.m +236 -0
  242. package/ios/RCTMGL/RCTMGLLight.h +17 -0
  243. package/ios/RCTMGL/RCTMGLLight.m +46 -0
  244. package/ios/RCTMGL/RCTMGLLightManager.h +13 -0
  245. package/ios/RCTMGL/RCTMGLLightManager.m +23 -0
  246. package/ios/RCTMGL/RCTMGLLineLayer.h +14 -0
  247. package/ios/RCTMGL/RCTMGLLineLayer.m +33 -0
  248. package/ios/RCTMGL/RCTMGLLineLayerManager.h +13 -0
  249. package/ios/RCTMGL/RCTMGLLineLayerManager.m +40 -0
  250. package/ios/RCTMGL/RCTMGLLocation.h +19 -0
  251. package/ios/RCTMGL/RCTMGLLocation.m +32 -0
  252. package/ios/RCTMGL/RCTMGLLocationManager.h +30 -0
  253. package/ios/RCTMGL/RCTMGLLocationManager.m +180 -0
  254. package/ios/RCTMGL/RCTMGLLocationManagerDelegate.h +20 -0
  255. package/ios/RCTMGL/RCTMGLLocationModule.h +15 -0
  256. package/ios/RCTMGL/RCTMGLLocationModule.m +99 -0
  257. package/ios/RCTMGL/RCTMGLLogging.h +18 -0
  258. package/ios/RCTMGL/RCTMGLLogging.m +132 -0
  259. package/ios/RCTMGL/RCTMGLMapTouchEvent.h +25 -0
  260. package/ios/RCTMGL/RCTMGLMapTouchEvent.m +77 -0
  261. package/ios/RCTMGL/RCTMGLMapView.h +91 -0
  262. package/ios/RCTMGL/RCTMGLMapView.m +536 -0
  263. package/ios/RCTMGL/RCTMGLMapViewManager.h +17 -0
  264. package/ios/RCTMGL/RCTMGLMapViewManager.m +625 -0
  265. package/ios/RCTMGL/RCTMGLNativeUserLocation.h +18 -0
  266. package/ios/RCTMGL/RCTMGLNativeUserLocation.m +49 -0
  267. package/ios/RCTMGL/RCTMGLNativeUserLocationManager.h +5 -0
  268. package/ios/RCTMGL/RCTMGLNativeUserLocationManager.m +25 -0
  269. package/ios/RCTMGL/RCTMGLPointAnnotation.h +41 -0
  270. package/ios/RCTMGL/RCTMGLPointAnnotation.m +251 -0
  271. package/ios/RCTMGL/RCTMGLPointAnnotationManager.h +13 -0
  272. package/ios/RCTMGL/RCTMGLPointAnnotationManager.m +36 -0
  273. package/ios/RCTMGL/RCTMGLRasterLayer.h +14 -0
  274. package/ios/RCTMGL/RCTMGLRasterLayer.m +30 -0
  275. package/ios/RCTMGL/RCTMGLRasterLayerManager.h +13 -0
  276. package/ios/RCTMGL/RCTMGLRasterLayerManager.m +35 -0
  277. package/ios/RCTMGL/RCTMGLRasterSource.h +16 -0
  278. package/ios/RCTMGL/RCTMGLRasterSource.m +35 -0
  279. package/ios/RCTMGL/RCTMGLRasterSourceManager.h +13 -0
  280. package/ios/RCTMGL/RCTMGLRasterSourceManager.m +32 -0
  281. package/ios/RCTMGL/RCTMGLShapeSource.h +52 -0
  282. package/ios/RCTMGL/RCTMGLShapeSource.m +180 -0
  283. package/ios/RCTMGL/RCTMGLShapeSourceManager.h +14 -0
  284. package/ios/RCTMGL/RCTMGLShapeSourceManager.m +205 -0
  285. package/ios/RCTMGL/RCTMGLSource.h +35 -0
  286. package/ios/RCTMGL/RCTMGLSource.m +143 -0
  287. package/ios/RCTMGL/RCTMGLStyle.h +219 -0
  288. package/ios/RCTMGL/RCTMGLStyle.m +1654 -0
  289. package/ios/RCTMGL/RCTMGLStyleValue.h +27 -0
  290. package/ios/RCTMGL/RCTMGLStyleValue.m +167 -0
  291. package/ios/RCTMGL/RCTMGLSymbolLayer.h +19 -0
  292. package/ios/RCTMGL/RCTMGLSymbolLayer.m +121 -0
  293. package/ios/RCTMGL/RCTMGLSymbolLayerManager.h +13 -0
  294. package/ios/RCTMGL/RCTMGLSymbolLayerManager.m +40 -0
  295. package/ios/RCTMGL/RCTMGLTileSource.h +22 -0
  296. package/ios/RCTMGL/RCTMGLTileSource.m +31 -0
  297. package/ios/RCTMGL/RCTMGLUserLocation.h +15 -0
  298. package/ios/RCTMGL/RCTMGLUserLocation.m +38 -0
  299. package/ios/RCTMGL/RCTMGLUtils.h +31 -0
  300. package/ios/RCTMGL/RCTMGLUtils.m +218 -0
  301. package/ios/RCTMGL/RCTMGLVectorLayer.h +15 -0
  302. package/ios/RCTMGL/RCTMGLVectorLayer.m +59 -0
  303. package/ios/RCTMGL/RCTMGLVectorSource.h +16 -0
  304. package/ios/RCTMGL/RCTMGLVectorSource.m +28 -0
  305. package/ios/RCTMGL/RCTMGLVectorSourceManager.h +14 -0
  306. package/ios/RCTMGL/RCTMGLVectorSourceManager.m +79 -0
  307. package/ios/RCTMGL/RNMBImageUtils.h +17 -0
  308. package/ios/RCTMGL/RNMBImageUtils.m +31 -0
  309. package/ios/RCTMGL/ViewManager.h +16 -0
  310. package/ios/RCTMGL/ViewManager.m +63 -0
  311. package/ios/RCTMGL/index.d.ts +1164 -0
  312. package/ios/RCTMGL.xcodeproj/project.pbxproj +774 -0
  313. package/ios/install.md +44 -0
  314. package/javascript/components/AbstractLayer.js +75 -0
  315. package/javascript/components/AbstractSource.js +15 -0
  316. package/javascript/components/BackgroundLayer.js +97 -0
  317. package/javascript/components/Callout.js +139 -0
  318. package/javascript/components/Camera.js +665 -0
  319. package/javascript/components/CircleLayer.js +101 -0
  320. package/javascript/components/FillExtrusionLayer.js +98 -0
  321. package/javascript/components/FillLayer.js +94 -0
  322. package/javascript/components/HeadingIndicator.js +31 -0
  323. package/javascript/components/HeatmapLayer.js +99 -0
  324. package/javascript/components/ImageSource.js +82 -0
  325. package/javascript/components/Images.js +119 -0
  326. package/javascript/components/Light.js +47 -0
  327. package/javascript/components/LineLayer.js +94 -0
  328. package/javascript/components/MapView.js +817 -0
  329. package/javascript/components/MarkerView.js +87 -0
  330. package/javascript/components/NativeBridgeComponent.js +86 -0
  331. package/javascript/components/NativeUserLocation.js +41 -0
  332. package/javascript/components/PointAnnotation.js +216 -0
  333. package/javascript/components/RasterLayer.js +95 -0
  334. package/javascript/components/RasterSource.js +124 -0
  335. package/javascript/components/ShapeSource.js +357 -0
  336. package/javascript/components/Style.js +264 -0
  337. package/javascript/components/SymbolLayer.js +120 -0
  338. package/javascript/components/UserLocation.js +273 -0
  339. package/javascript/components/VectorSource.js +200 -0
  340. package/javascript/components/annotations/Annotation.js +122 -0
  341. package/javascript/index.js +153 -0
  342. package/javascript/modules/location/locationManager.js +101 -0
  343. package/javascript/modules/offline/OfflineCreatePackOptions.js +46 -0
  344. package/javascript/modules/offline/OfflinePack.js +40 -0
  345. package/javascript/modules/offline/offlineManager.js +378 -0
  346. package/javascript/modules/snapshot/SnapshotOptions.js +67 -0
  347. package/javascript/modules/snapshot/snapshotManager.js +62 -0
  348. package/javascript/utils/BridgeValue.js +81 -0
  349. package/javascript/utils/Logger.js +114 -0
  350. package/javascript/utils/animated/Animated.js +39 -0
  351. package/javascript/utils/animated/AnimatedCoordinatesArray.js +191 -0
  352. package/javascript/utils/animated/AnimatedExtractCoordinateFromArray.js +43 -0
  353. package/javascript/utils/animated/AnimatedPoint.js +126 -0
  354. package/javascript/utils/animated/AnimatedRouteCoordinatesArray.js +124 -0
  355. package/javascript/utils/animated/AnimatedShape.js +72 -0
  356. package/javascript/utils/deprecation.js +25 -0
  357. package/javascript/utils/filterUtils.js +7 -0
  358. package/javascript/utils/geoUtils.js +73 -0
  359. package/javascript/utils/index.js +113 -0
  360. package/javascript/utils/styleMap.js +1901 -0
  361. package/maplibre-react-native.podspec +79 -0
  362. package/package.json +120 -0
  363. package/plugin/build/withMapbox.d.ts +12 -0
  364. package/plugin/build/withMapbox.js +119 -0
  365. package/plugin/install.md +32 -0
  366. package/react-native.config.js +10 -0
  367. package/scripts/autogenHelpers/DocJSONBuilder.js +458 -0
  368. package/scripts/autogenHelpers/JSDocNodeTree.js +131 -0
  369. package/scripts/autogenHelpers/MarkdownBuilder.js +29 -0
  370. package/scripts/autogenHelpers/globals.js +507 -0
  371. package/scripts/autogenerate.js +374 -0
  372. package/scripts/download-style-spec.sh +15 -0
  373. package/scripts/templates/RCTMGLStyle.h.ejs +33 -0
  374. package/scripts/templates/RCTMGLStyle.m.ejs +97 -0
  375. package/scripts/templates/RCTMGLStyleFactory.java.ejs +107 -0
  376. package/scripts/templates/component.md.ejs +122 -0
  377. package/scripts/templates/index.d.ts.ejs +56 -0
  378. package/scripts/templates/styleMap.js.ejs +115 -0
  379. package/setup-jest.js +121 -0
  380. package/style-spec/v8.json +5798 -0
  381. package/tsconfig.json +65 -0
@@ -0,0 +1,530 @@
1
+ package com.mapbox.rctmgl.components.camera;
2
+
3
+ import android.content.Context;
4
+ import android.location.Location;
5
+
6
+ import com.mapbox.mapboxsdk.camera.CameraPosition;
7
+ import com.mapbox.mapboxsdk.camera.CameraUpdate;
8
+ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory;
9
+ import com.mapbox.mapboxsdk.geometry.LatLng;
10
+ import com.mapbox.mapboxsdk.geometry.LatLngBounds;
11
+ import com.mapbox.mapboxsdk.geometry.VisibleRegion;
12
+ import com.mapbox.mapboxsdk.location.OnCameraTrackingChangedListener;
13
+ import com.mapbox.mapboxsdk.location.modes.CameraMode;
14
+ import com.mapbox.mapboxsdk.location.modes.RenderMode;
15
+ import com.mapbox.mapboxsdk.maps.MapboxMap;
16
+ import com.mapbox.mapboxsdk.maps.Style;
17
+ import com.mapbox.mapboxsdk.location.LocationComponent;
18
+ import com.mapbox.mapboxsdk.location.LocationComponentOptions;
19
+ import com.mapbox.mapboxsdk.location.LocationComponentActivationOptions;
20
+ // import com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerPlugin;
21
+ import com.mapbox.rctmgl.components.AbstractMapFeature;
22
+ import com.mapbox.rctmgl.components.location.LocationComponentManager;
23
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
24
+ import com.mapbox.rctmgl.events.IEvent;
25
+ import com.mapbox.rctmgl.events.MapUserTrackingModeEvent;
26
+ import com.mapbox.rctmgl.events.MapChangeEvent;
27
+ import com.mapbox.rctmgl.location.LocationManager;
28
+ import com.mapbox.rctmgl.location.UserLocation;
29
+ import com.mapbox.rctmgl.location.UserLocationVerticalAlignment;
30
+ import com.mapbox.rctmgl.location.UserTrackingMode;
31
+ import com.mapbox.rctmgl.location.UserTrackingState;
32
+ import com.mapbox.rctmgl.utils.GeoJSONUtils;
33
+
34
+ import com.mapbox.rctmgl.R;
35
+
36
+ import com.mapbox.rctmgl.events.constants.EventTypes;
37
+
38
+ import com.facebook.react.bridge.WritableMap;
39
+ import com.facebook.react.bridge.WritableNativeMap;
40
+
41
+ import com.mapbox.geojson.Point;
42
+
43
+ import com.mapbox.mapboxsdk.location.permissions.PermissionsManager;
44
+
45
+ import androidx.annotation.NonNull;
46
+
47
+ public class RCTMGLCamera extends AbstractMapFeature {
48
+ private RCTMGLCameraManager mManager;
49
+ private RCTMGLMapView mMapView;
50
+
51
+ private boolean hasSentFirstRegion = false;
52
+
53
+ private CameraStop mDefaultStop;
54
+ private CameraStop mCameraStop;
55
+ private CameraUpdateQueue mCameraUpdateQueue;
56
+
57
+ // private LocationComponent mLocationComponent;
58
+ private LocationComponentManager mLocationComponentManager;
59
+
60
+ private int mUserTrackingMode;
61
+ private int mUserTrackingState = UserTrackingState.POSSIBLE;
62
+ private int mUserLocationVerticalAlignment = UserLocationVerticalAlignment.CENTER;
63
+
64
+ public static final int USER_LOCATION_CAMERA_MOVE_DURATION = 1000;
65
+
66
+ private LocationManager mLocationManager;
67
+ private UserLocation mUserLocation;
68
+
69
+ private Point mCenterCoordinate;
70
+
71
+ private boolean mAnimated;
72
+ private double mHeading;
73
+ private double mPitch;
74
+ private double mZoomLevel = -1;
75
+
76
+ private double mMinZoomLevel = -1;
77
+ private double mMaxZoomLevel = -1;
78
+
79
+ private LatLngBounds mMaxBounds;
80
+
81
+ private boolean mFollowUserLocation;
82
+ private String mFollowUserMode;
83
+
84
+ private Context mContext;
85
+
86
+
87
+ private LocationManager.OnUserLocationChange mLocationChangeListener = new LocationManager.OnUserLocationChange() {
88
+ @Override
89
+ public void onLocationChange(Location nextLocation) {
90
+ if (getMapboxMap() == null || mLocationComponentManager == null || !mLocationComponentManager.hasLocationComponent() || (!mFollowUserLocation)) {
91
+ return;
92
+ }
93
+
94
+ mUserLocation.setCurrentLocation(nextLocation);
95
+ sendUserLocationUpdateEvent(nextLocation);
96
+ }
97
+ };
98
+
99
+ private MapboxMap.CancelableCallback mCameraCallback = new MapboxMap.CancelableCallback() {
100
+ @Override
101
+ public void onCancel() {
102
+ if (!hasSentFirstRegion) {
103
+ mMapView.sendRegionChangeEvent(false);
104
+ hasSentFirstRegion = true;
105
+ }
106
+ }
107
+
108
+ @Override
109
+ public void onFinish() {
110
+ if (!hasSentFirstRegion) {
111
+ mMapView.sendRegionChangeEvent(false);
112
+ hasSentFirstRegion = true;
113
+ }
114
+ }
115
+ };
116
+
117
+ public RCTMGLCamera(Context context, RCTMGLCameraManager manager) {
118
+ super(context);
119
+ mContext = context;
120
+ mManager = manager;
121
+ mCameraUpdateQueue = new CameraUpdateQueue();
122
+
123
+ mUserLocation = new UserLocation();
124
+ mLocationManager = LocationManager.getInstance(context);
125
+ }
126
+
127
+ @Override
128
+ public void addToMap(RCTMGLMapView mapView) {
129
+ mMapView = mapView;
130
+
131
+ setInitialCamera();
132
+ updateMaxMinZoomLevel();
133
+ updateMaxBounds();
134
+
135
+ if (mCameraStop != null) {
136
+ updateCamera();
137
+ }
138
+
139
+ if (mFollowUserLocation) {
140
+ enableLocation();
141
+ }
142
+ }
143
+
144
+ @Override
145
+ public void removeFromMap(RCTMGLMapView mapView) {
146
+
147
+ }
148
+
149
+ public void setStop(CameraStop stop) {
150
+ mCameraStop = stop;
151
+ mCameraStop.setCallback(mCameraCallback);
152
+
153
+ if (mMapView != null) {
154
+ updateCamera();
155
+ }
156
+ }
157
+
158
+ public void setDefaultStop(CameraStop stop) {
159
+ mDefaultStop = stop;
160
+ }
161
+
162
+ public void setFollowPitch(double pitch) {
163
+ mPitch = pitch;
164
+ updateCameraPositionIfNeeded(true);
165
+ }
166
+
167
+ public void setMaxBounds(LatLngBounds bounds) {
168
+ mMaxBounds = bounds;
169
+ updateMaxBounds();
170
+ }
171
+
172
+ private void updateMaxBounds() {
173
+ MapboxMap map = getMapboxMap();
174
+ if (map != null && mMaxBounds != null) {
175
+ map.setLatLngBoundsForCameraTarget(mMaxBounds);
176
+ }
177
+ }
178
+
179
+ private void updateMaxMinZoomLevel() {
180
+ MapboxMap map = getMapboxMap();
181
+ if (map != null) {
182
+ if (mMinZoomLevel >= 0.0) {
183
+ map.setMinZoomPreference(mMinZoomLevel);
184
+ }
185
+ if (mMaxZoomLevel >= 0.0) {
186
+ map.setMaxZoomPreference(mMaxZoomLevel);
187
+ }
188
+ }
189
+ }
190
+
191
+ private void setInitialCamera() {
192
+ if (mDefaultStop != null) {
193
+ mDefaultStop.setDuration(0);
194
+ mDefaultStop.setMode(com.mapbox.rctmgl.components.camera.constants.CameraMode.NONE);
195
+ CameraUpdateItem item = mDefaultStop.toCameraUpdate(mMapView);
196
+ item.run();
197
+ }
198
+ }
199
+
200
+ private void updateCamera() {
201
+ mCameraUpdateQueue.offer(mCameraStop);
202
+ mCameraUpdateQueue.execute(mMapView);
203
+ }
204
+
205
+ private void updateUserTrackingMode(int userTrackingMode) {
206
+ mUserLocation.setTrackingMode(userTrackingMode);
207
+ IEvent event = new MapUserTrackingModeEvent(this, userTrackingMode);
208
+ mManager.handleEvent(event);
209
+ }
210
+
211
+ private void updateUserLocation(boolean isAnimated) {
212
+ if ((!mFollowUserLocation) || mUserLocation.getTrackingMode() == UserTrackingMode.NONE) {
213
+ return;
214
+ }
215
+
216
+ if (mUserTrackingState == UserTrackingState.POSSIBLE) {
217
+ updateUserLocationSignificantly(isAnimated);
218
+ } else if (mUserTrackingState == UserTrackingState.CHANGED) {
219
+ updateUserLocationIncrementally(isAnimated);
220
+ }
221
+ }
222
+
223
+ private CameraPosition getUserLocationUpdateCameraPosition(double zoomLevel) {
224
+ LatLng center = mUserLocation.getCoordinate();
225
+
226
+ if (mUserLocationVerticalAlignment != UserLocationVerticalAlignment.CENTER) {
227
+ VisibleRegion region = mMapView.getVisibleRegion(center, zoomLevel);
228
+
229
+ switch (mUserLocationVerticalAlignment) {
230
+ case UserLocationVerticalAlignment.TOP:
231
+ center = new LatLng(region.nearRight.getLatitude(), center.getLongitude());
232
+ break;
233
+ case UserLocationVerticalAlignment.BOTTOM:
234
+ center = new LatLng(region.farLeft.getLatitude(), center.getLongitude());
235
+ break;
236
+ }
237
+ }
238
+
239
+ return new CameraPosition.Builder()
240
+ .target(center)
241
+ .bearing(getDirectionForUserLocationUpdate())
242
+ .tilt(mPitch)
243
+ .zoom(zoomLevel)
244
+ .build();
245
+ }
246
+
247
+ private double getDirectionForUserLocationUpdate() {
248
+ // NOTE: The direction of this is used for map rotation only, not location layer rotation
249
+ CameraPosition currentCamera = mMapView.getCameraPosition();
250
+ double direction = currentCamera.bearing;
251
+
252
+ int userTrackingMode = mUserLocation.getTrackingMode();
253
+ if (userTrackingMode == UserTrackingMode.FollowWithHeading || userTrackingMode == UserTrackingMode.FollowWithCourse) {
254
+ direction = mUserLocation.getBearing();
255
+ } else if (mHeading != 0.0) {
256
+ direction = mHeading;
257
+ }
258
+
259
+ return direction;
260
+ }
261
+
262
+ private void sendUserLocationUpdateEvent(Location location) {
263
+ if(location == null){
264
+ return;
265
+ }
266
+ IEvent event = new MapChangeEvent(this, EventTypes.USER_LOCATION_UPDATED, makeLocationChangePayload(location));
267
+ mManager.handleEvent(event);
268
+ }
269
+
270
+ private boolean hasSetCenterCoordinate() {
271
+ CameraPosition cameraPosition = mMapView.getCameraPosition();
272
+ LatLng center = cameraPosition.target;
273
+ return center.getLatitude() != 0.0 && center.getLongitude() != 0.0;
274
+ }
275
+
276
+ static final double minimumZoomLevelForUserTracking = 10.5;
277
+ static final double defaultZoomLevelForUserTracking = 14.0;
278
+
279
+ private void updateUserLocationSignificantly(boolean isAnimated) {
280
+ mUserTrackingState = UserTrackingState.BEGAN;
281
+
282
+ double zoom = mZoomLevel;
283
+ if (zoom < 0) {
284
+ double camerZoom = mMapView.getMapboxMap().getCameraPosition().zoom;
285
+ if (camerZoom < minimumZoomLevelForUserTracking) {
286
+ zoom = defaultZoomLevelForUserTracking;
287
+ } else {
288
+ zoom = camerZoom;
289
+ }
290
+ }
291
+ CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(getUserLocationUpdateCameraPosition(zoom));
292
+ MapboxMap.CancelableCallback cameraCallback = new MapboxMap.CancelableCallback() {
293
+ @Override
294
+ public void onCancel() {
295
+ mUserTrackingState = UserTrackingState.CHANGED;
296
+ }
297
+
298
+ @Override
299
+ public void onFinish() {
300
+ mUserTrackingState = UserTrackingState.CHANGED;
301
+ }
302
+ };
303
+
304
+ if (isAnimated && hasSetCenterCoordinate()) {
305
+ mMapView.animateCamera(cameraUpdate, cameraCallback);
306
+ } else {
307
+ mMapView.moveCamera(cameraUpdate, cameraCallback);
308
+ }
309
+ }
310
+
311
+ private void updateUserLocationIncrementally(boolean isAnimated) {
312
+ mUserTrackingState = UserTrackingState.BEGAN;
313
+
314
+ CameraPosition cameraPosition = mMapView.getCameraPosition();
315
+ CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(getUserLocationUpdateCameraPosition(cameraPosition.zoom));
316
+
317
+ MapboxMap.CancelableCallback callback = new MapboxMap.CancelableCallback() {
318
+ @Override
319
+ public void onCancel() {
320
+ mUserTrackingState = UserTrackingState.CHANGED;
321
+ }
322
+
323
+ @Override
324
+ public void onFinish() {
325
+ mUserTrackingState = UserTrackingState.CHANGED;
326
+ }
327
+ };
328
+
329
+ if (isAnimated) {
330
+ mMapView.easeCamera(cameraUpdate, USER_LOCATION_CAMERA_MOVE_DURATION, true, callback);
331
+ } else {
332
+ mMapView.moveCamera(cameraUpdate, callback);
333
+ }
334
+ }
335
+
336
+ private void enableLocation() {
337
+ if (!PermissionsManager.areLocationPermissionsGranted(mContext)) {
338
+ return;
339
+ }
340
+
341
+ if (!mLocationManager.isActive()) {
342
+ mLocationManager.enable();
343
+ }
344
+
345
+ mMapView.getMapboxMap().getStyle(new Style.OnStyleLoaded() {
346
+ @Override
347
+ public void onStyleLoaded(@NonNull Style style) {
348
+ enableLocationComponent(style);
349
+ }
350
+ });
351
+ }
352
+
353
+ private void enableLocationComponent(@NonNull Style style) {
354
+ updateUserLocation(false);
355
+ updateLocationLayer(style);
356
+
357
+ Location lastKnownLocation = mLocationManager.getLastKnownLocation();
358
+ mLocationManager.addLocationListener(mLocationChangeListener);
359
+
360
+ if (lastKnownLocation != null) {
361
+ mLocationChangeListener.onLocationChange(lastKnownLocation);
362
+
363
+ postDelayed(new Runnable() {
364
+ @Override
365
+ public void run() {
366
+ mMapView.sendRegionDidChangeEvent();
367
+ }
368
+ }, 200);
369
+ }
370
+
371
+ }
372
+
373
+ private void updateLocationLayer(@NonNull Style style) {
374
+ if (mLocationComponentManager == null) {
375
+ mLocationComponentManager = mMapView.getLocationComponentManager();
376
+ }
377
+
378
+ mLocationComponentManager.update(style);
379
+
380
+ if (mFollowUserLocation) {
381
+ mLocationComponentManager.setCameraMode(UserTrackingMode.getCameraMode(mUserTrackingMode));
382
+ }
383
+ mLocationComponentManager.setFollowUserLocation(mFollowUserLocation);
384
+
385
+ if (mFollowUserLocation) {
386
+ mLocationComponentManager.setCameraMode(UserTrackingMode.getCameraMode(mUserTrackingMode));
387
+ mLocationComponentManager.addOnCameraTrackingChangedListener(new OnCameraTrackingChangedListener() {
388
+ @Override public void onCameraTrackingChanged(int currentMode) {
389
+ int userTrackingMode = UserTrackingMode.NONE;
390
+ switch (currentMode) {
391
+ case CameraMode.NONE:
392
+ userTrackingMode = UserTrackingMode.NONE;
393
+ break;
394
+ case CameraMode.TRACKING:
395
+ userTrackingMode = UserTrackingMode.FOLLOW;
396
+ break;
397
+ case CameraMode.TRACKING_COMPASS:
398
+ userTrackingMode = UserTrackingMode.FollowWithHeading;
399
+ break;
400
+ case CameraMode.TRACKING_GPS:
401
+ userTrackingMode = UserTrackingMode.FollowWithCourse;
402
+ break;
403
+ default:
404
+ userTrackingMode = UserTrackingMode.NONE;
405
+ }
406
+ updateUserTrackingMode(userTrackingMode);
407
+ }
408
+ @Override public void onCameraTrackingDismissed() {
409
+ }
410
+ });
411
+ } else {
412
+ mLocationComponentManager.setCameraMode(CameraMode.NONE);
413
+ }
414
+ }
415
+
416
+ public void setMinZoomLevel(double zoomLevel) {
417
+ mMinZoomLevel = zoomLevel;
418
+ updateMaxMinZoomLevel();
419
+ }
420
+
421
+ public void setMaxZoomLevel(double zoomLevel) {
422
+ mMaxZoomLevel = zoomLevel;
423
+ updateMaxMinZoomLevel();
424
+ }
425
+
426
+ public void setZoomLevel(double zoomLevel) {
427
+ mZoomLevel = zoomLevel;
428
+ updateCameraPositionIfNeeded(false);
429
+ }
430
+
431
+ private CameraPosition buildCamera(CameraPosition previousPosition, boolean shouldUpdateTarget) {
432
+ CameraPosition.Builder builder = new CameraPosition.Builder(previousPosition)
433
+ .bearing(mHeading)
434
+ .tilt(mPitch)
435
+ .zoom(mZoomLevel);
436
+
437
+ if (shouldUpdateTarget) {
438
+ builder.target(GeoJSONUtils.toLatLng(mCenterCoordinate));
439
+ }
440
+
441
+ return builder.build();
442
+ }
443
+
444
+ private void updateCameraPositionIfNeeded(boolean shouldUpdateTarget) {
445
+ if (mMapView != null) {
446
+ CameraPosition prevPosition = mMapView.getCameraPosition();
447
+ CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(buildCamera(prevPosition, shouldUpdateTarget));
448
+
449
+ if (mAnimated) {
450
+ mMapView.easeCamera(cameraUpdate);
451
+ } else {
452
+ mMapView.moveCamera(cameraUpdate);
453
+ }
454
+ }
455
+ }
456
+
457
+ public void setUserTrackingMode(int userTrackingMode) {
458
+ int oldTrackingMode = mUserTrackingMode;
459
+ mUserTrackingMode = userTrackingMode;
460
+ updateUserTrackingMode(userTrackingMode);
461
+
462
+ switch (mUserTrackingMode) {
463
+ case UserTrackingMode.NONE:
464
+ mUserTrackingState = UserTrackingState.POSSIBLE;
465
+ break;
466
+ case UserTrackingMode.FOLLOW:
467
+ case UserTrackingMode.FollowWithCourse:
468
+ case UserTrackingMode.FollowWithHeading:
469
+ if (oldTrackingMode == UserTrackingMode.NONE) {
470
+ mUserTrackingState = UserTrackingState.POSSIBLE;
471
+ }
472
+ break;
473
+
474
+ }
475
+
476
+ if (getMapboxMap() != null) {
477
+ updateLocationLayer(getMapboxMap().getStyle());
478
+ }
479
+ }
480
+
481
+
482
+ public void setFollowUserLocation(boolean value) {
483
+ mFollowUserLocation = value;
484
+ updatedFollowUserMode();
485
+ }
486
+
487
+ public void setFollowUserMode(String mode) {
488
+ mFollowUserMode = mode;
489
+ updatedFollowUserMode();
490
+ }
491
+
492
+ private void updatedFollowUserMode() {
493
+ if (mFollowUserLocation) {
494
+ setUserTrackingMode(UserTrackingMode.fromString(mFollowUserMode));
495
+ } else {
496
+ setUserTrackingMode(UserTrackingMode.NONE);
497
+ }
498
+ }
499
+
500
+ MapboxMap getMapboxMap() {
501
+ if (mMapView == null) {
502
+ return null;
503
+ }
504
+ return mMapView.getMapboxMap();
505
+ }
506
+
507
+ /**
508
+ * Create a payload of the location data per the web api geolocation spec
509
+ * https://dev.w3.org/geo/api/spec-source.html#position
510
+ * @return
511
+ */
512
+ private WritableMap makeLocationChangePayload(Location location) {
513
+ WritableMap positionProperties = new WritableNativeMap();
514
+ WritableMap coords = new WritableNativeMap();
515
+
516
+ coords.putDouble("longitude", location.getLongitude());
517
+ coords.putDouble("latitude", location.getLatitude());
518
+ coords.putDouble("altitude", location.getAltitude());
519
+ coords.putDouble("accuracy", location.getAccuracy());
520
+ // A better solution will be to pull the heading from the compass engine,
521
+ // unfortunately the api is not publicly available in the mapbox sdk
522
+ coords.putDouble("heading", location.getBearing());
523
+ coords.putDouble("course", location.getBearing());
524
+ coords.putDouble("speed", location.getSpeed());
525
+
526
+ positionProperties.putMap("coords", coords);
527
+ positionProperties.putDouble("timestamp", location.getTime());
528
+ return positionProperties;
529
+ }
530
+ }
@@ -0,0 +1,101 @@
1
+ package com.mapbox.rctmgl.components.camera;
2
+
3
+ import com.mapbox.geojson.FeatureCollection;
4
+ import com.facebook.common.logging.FLog;
5
+ import com.facebook.react.bridge.ReactApplicationContext;
6
+ import com.facebook.react.bridge.ReadableMap;
7
+ import com.facebook.react.uimanager.ThemedReactContext;
8
+ import com.facebook.react.uimanager.annotations.ReactProp;
9
+ import com.mapbox.rctmgl.components.AbstractEventEmitter;
10
+ import com.mapbox.rctmgl.utils.GeoJSONUtils;
11
+
12
+ import java.util.HashMap;
13
+ import java.util.Map;
14
+
15
+ public class RCTMGLCameraManager extends AbstractEventEmitter<RCTMGLCamera> {
16
+ public static final String REACT_CLASS = "RCTMGLCamera";
17
+
18
+ private ReactApplicationContext mContext;
19
+
20
+ public RCTMGLCameraManager(ReactApplicationContext context) {
21
+ super(context);
22
+ mContext = context;
23
+ }
24
+
25
+ @Override
26
+ public Map<String, String> customEvents() {
27
+ return new HashMap<>();
28
+ }
29
+
30
+ @Override
31
+ public String getName() {
32
+ return REACT_CLASS;
33
+ }
34
+
35
+ @Override
36
+ protected RCTMGLCamera createViewInstance(ThemedReactContext reactContext) {
37
+ return new RCTMGLCamera(reactContext, this);
38
+ }
39
+
40
+ @ReactProp(name="stop")
41
+ public void setStop(RCTMGLCamera camera, ReadableMap map) {
42
+ if (map != null) {
43
+ CameraStop stop = CameraStop.fromReadableMap(mContext, map, null);
44
+ camera.setStop(stop);
45
+ }
46
+ }
47
+
48
+ @ReactProp(name="defaultStop")
49
+ public void setDefaultStop(RCTMGLCamera camera, ReadableMap map) {
50
+ if (map != null) {
51
+ CameraStop stop = CameraStop.fromReadableMap(mContext, map, null);
52
+ camera.setDefaultStop(stop);
53
+ }
54
+ }
55
+
56
+ @ReactProp(name="maxBounds")
57
+ public void setMaxBounds(RCTMGLCamera camera, String value) {
58
+ if (value != null) {
59
+ FeatureCollection collection = FeatureCollection.fromJson(value);
60
+ camera.setMaxBounds(GeoJSONUtils.toLatLngBounds(collection));
61
+ }
62
+ }
63
+
64
+
65
+ @ReactProp(name="userTrackingMode")
66
+ public void setUserTrackingMode(RCTMGLCamera camera, int userTrackingMode) {
67
+ camera.setUserTrackingMode(userTrackingMode);
68
+ throw new AssertionError("Unused code");
69
+ }
70
+
71
+ @ReactProp(name="followZoomLevel")
72
+ public void setZoomLevel(RCTMGLCamera camera, double zoomLevel) {
73
+ camera.setZoomLevel(zoomLevel);
74
+ }
75
+
76
+ @ReactProp(name="followUserLocation")
77
+ public void setFollowUserLocation(RCTMGLCamera camera, boolean value) {
78
+ camera.setFollowUserLocation(value);
79
+ }
80
+
81
+ @ReactProp(name="followUserMode")
82
+ public void setFollowUserMode(RCTMGLCamera camera, String value) {
83
+ camera.setFollowUserMode(value);
84
+ }
85
+
86
+ @ReactProp(name="minZoomLevel")
87
+ public void setMinZoomLevel(RCTMGLCamera camera, double value) {
88
+ camera.setMinZoomLevel(value);
89
+ }
90
+
91
+ @ReactProp(name="maxZoomLevel")
92
+ public void setMaxZoomLevel(RCTMGLCamera camera, double value) {
93
+ camera.setMaxZoomLevel(value);
94
+ }
95
+
96
+ @ReactProp(name="followPitch")
97
+ public void setFollowPitch(RCTMGLCamera camera, double value) {
98
+ camera.setFollowPitch(value);
99
+ }
100
+
101
+ }
@@ -0,0 +1,22 @@
1
+ package com.mapbox.rctmgl.components.camera.constants;
2
+
3
+ import androidx.annotation.IntDef;
4
+
5
+ import java.lang.annotation.Retention;
6
+ import java.lang.annotation.RetentionPolicy;
7
+
8
+ /**
9
+ * Created by nickitaliano on 9/6/17.
10
+ */
11
+
12
+ public class CameraMode {
13
+
14
+ @IntDef({ FLIGHT, EASE, LINEAR, NONE })
15
+ @Retention(RetentionPolicy.SOURCE)
16
+ public @interface Mode {}
17
+
18
+ public static final int FLIGHT = 1;
19
+ public static final int EASE = 2;
20
+ public static final int LINEAR = 3;
21
+ public static final int NONE = 4;
22
+ }