@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,665 @@
1
+ import {toJSONString, viewPropTypes, existenceChange} from '../utils';
2
+ import * as geoUtils from '../utils/geoUtils';
3
+
4
+ import PropTypes from 'prop-types';
5
+ import {NativeModules, requireNativeComponent} from 'react-native';
6
+ import React from 'react';
7
+
8
+ const MapboxGL = NativeModules.MGLModule;
9
+
10
+ export const NATIVE_MODULE_NAME = 'RCTMGLCamera';
11
+
12
+ const SettingsPropTypes = {
13
+ /**
14
+ * Center coordinate on map [lng, lat]
15
+ */
16
+ centerCoordinate: PropTypes.arrayOf(PropTypes.number),
17
+
18
+ /**
19
+ * Padding around edges of map in points
20
+ */
21
+ padding: PropTypes.shape({
22
+ /**
23
+ * Left padding in points
24
+ */
25
+ paddingLeft: PropTypes.number,
26
+
27
+ /**
28
+ * Right padding in points
29
+ */
30
+ paddingRight: PropTypes.number,
31
+
32
+ /**
33
+ * Top padding in points
34
+ */
35
+ paddingTop: PropTypes.number,
36
+
37
+ /**
38
+ * Bottom padding in points
39
+ */
40
+ paddingBottom: PropTypes.number,
41
+ }),
42
+
43
+ /**
44
+ * Heading on map
45
+ */
46
+ heading: PropTypes.number,
47
+
48
+ /**
49
+ * Pitch on map
50
+ */
51
+ pitch: PropTypes.number,
52
+
53
+ /**
54
+ * Represents a rectangle in geographical coordinates marking the visible area of the map.
55
+ * The `bounds.padding*` properties are deprecated; use root `padding` property instead.
56
+ */
57
+ bounds: PropTypes.shape({
58
+ /**
59
+ * North east coordinate of bound
60
+ */
61
+ ne: PropTypes.arrayOf(PropTypes.number).isRequired,
62
+
63
+ /**
64
+ * South west coordinate of bound
65
+ */
66
+ sw: PropTypes.arrayOf(PropTypes.number).isRequired,
67
+
68
+ /**
69
+ * Left padding in points (deprecated; use root `padding` property instead)
70
+ */
71
+ paddingLeft: PropTypes.number,
72
+
73
+ /**
74
+ * Right padding in points (deprecated; use root `padding` property instead)
75
+ */
76
+ paddingRight: PropTypes.number,
77
+
78
+ /**
79
+ * Top padding in points (deprecated; use root `padding` property instead)
80
+ */
81
+ paddingTop: PropTypes.number,
82
+
83
+ /**
84
+ * Bottom padding in points (deprecated; use root `padding` property instead)
85
+ */
86
+ paddingBottom: PropTypes.number,
87
+ }),
88
+
89
+ /**
90
+ * Callback that is triggered on user tracking mode changes
91
+ */
92
+ onUserTrackingModeChange: PropTypes.func,
93
+
94
+ /**
95
+ * Zoom level of the map
96
+ */
97
+ zoomLevel: PropTypes.number,
98
+ };
99
+
100
+ class Camera extends React.Component {
101
+ static propTypes = {
102
+ ...viewPropTypes,
103
+
104
+ /**
105
+ * If false, the camera will not send any props to the native module. Intended to be used to prevent unnecessary tile fetching and improve performance when the map is not visible. Defaults to true.
106
+ */
107
+ allowUpdates: PropTypes.bool,
108
+
109
+ /**
110
+ * The duration a camera update takes (in ms)
111
+ */
112
+ animationDuration: PropTypes.number,
113
+
114
+ /**
115
+ * The animationstyle when the camara updates. One of: `flyTo`, `easeTo`, `linearTo`, `moveTo`
116
+ */
117
+ animationMode: PropTypes.oneOf(['flyTo', 'easeTo', 'linearTo', 'moveTo']),
118
+
119
+ /**
120
+ * Default view settings applied on camera
121
+ */
122
+ defaultSettings: PropTypes.shape(SettingsPropTypes),
123
+
124
+ // normal - view settings
125
+ ...SettingsPropTypes,
126
+
127
+ /**
128
+ * The minimun zoom level of the map
129
+ */
130
+ minZoomLevel: PropTypes.number,
131
+
132
+ /**
133
+ * The maximun zoom level of the map
134
+ */
135
+ maxZoomLevel: PropTypes.number,
136
+
137
+ /**
138
+ * Restrict map panning so that the center is within these bounds
139
+ */
140
+ maxBounds: PropTypes.shape({
141
+ /**
142
+ * northEastCoordinates - North east coordinate of bound
143
+ */
144
+ ne: PropTypes.arrayOf(PropTypes.number).isRequired,
145
+
146
+ /**
147
+ * southWestCoordinates - South west coordinate of bound
148
+ */
149
+ sw: PropTypes.arrayOf(PropTypes.number).isRequired,
150
+ }),
151
+
152
+ /**
153
+ * Should the map orientation follow the user's.
154
+ */
155
+ followUserLocation: PropTypes.bool,
156
+
157
+ /**
158
+ * The mode used to track the user location on the map. One of; "normal", "compass", "course". Each mode string is also available as a member on the `MapboxGL.UserTrackingModes` object. `Follow` (normal), `FollowWithHeading` (compass), `FollowWithCourse` (course). NOTE: `followUserLocation` must be set to `true` for any of the modes to take effect. [Example](../example/src/examples/SetUserTrackingModes.js)
159
+ */
160
+ followUserMode: PropTypes.oneOf(['normal', 'compass', 'course']),
161
+
162
+ /**
163
+ * The zoomLevel on map while followUserLocation is set to `true`
164
+ */
165
+ followZoomLevel: PropTypes.number,
166
+
167
+ /**
168
+ * The pitch on map while followUserLocation is set to `true`
169
+ */
170
+ followPitch: PropTypes.number,
171
+
172
+ /**
173
+ * The heading on map while followUserLocation is set to `true`
174
+ */
175
+ followHeading: PropTypes.number,
176
+
177
+ /**
178
+ * Manually update the camera - helpful for when props did not update, however you still want the camera to move
179
+ */
180
+ triggerKey: PropTypes.any,
181
+
182
+ // Triggered when the
183
+ onUserTrackingModeChange: PropTypes.func,
184
+ };
185
+
186
+ static defaultProps = {
187
+ allowUpdates: true,
188
+ animationMode: 'easeTo',
189
+ animationDuration: 2000,
190
+ };
191
+
192
+ static Mode = {
193
+ Flight: 'flyTo',
194
+ Move: 'moveTo',
195
+ Ease: 'easeTo',
196
+ Linear: 'linearTo',
197
+ };
198
+
199
+ UNSAFE_componentWillReceiveProps(nextProps) {
200
+ this._handleCameraChange(this.props, nextProps);
201
+ }
202
+
203
+ shouldComponentUpdate() {
204
+ return false;
205
+ }
206
+
207
+ _handleCameraChange(currentCamera, nextCamera) {
208
+ const c = currentCamera;
209
+ const n = nextCamera;
210
+
211
+ if (!n.allowUpdates) {
212
+ return;
213
+ }
214
+
215
+ const hasCameraChanged = this._hasCameraChanged(c, n);
216
+ if (!hasCameraChanged) {
217
+ return;
218
+ }
219
+
220
+ if (c.followUserLocation && !n.followUserLocation) {
221
+ this.refs.camera.setNativeProps({followUserLocation: false});
222
+ return;
223
+ }
224
+ if (!c.followUserLocation && n.followUserLocation) {
225
+ this.refs.camera.setNativeProps({followUserLocation: true});
226
+ }
227
+
228
+ if (n.followUserLocation) {
229
+ this.refs.camera.setNativeProps({
230
+ followUserMode: n.followUserMode,
231
+ followPitch: n.followPitch || n.pitch,
232
+ followHeading: n.followHeading || n.heading,
233
+ followZoomLevel: n.followZoomLevel || n.zoomLevel,
234
+ });
235
+ return;
236
+ }
237
+
238
+ if (n.maxBounds) {
239
+ this.refs.camera.setNativeProps({
240
+ maxBounds: this._getMaxBounds(),
241
+ });
242
+ }
243
+ if (n.minZoomLevel) {
244
+ this.refs.camera.setNativeProps({
245
+ minZoomLevel: this.props.minZoomLevel,
246
+ });
247
+ }
248
+ if (n.maxZoomLevel) {
249
+ this.refs.camera.setNativeProps({
250
+ maxZoomLevel: this.props.maxZoomLevel,
251
+ });
252
+ }
253
+
254
+ const cameraConfig = {
255
+ bounds: undefined,
256
+ centerCoordinate: undefined,
257
+ padding: n.padding,
258
+ zoomLevel: n.zoomLevel,
259
+ pitch: n.pitch,
260
+ heading: n.heading,
261
+ animationMode: n.animationMode,
262
+ animationDuration: n.animationDuration,
263
+ };
264
+
265
+ const boundsChanged = this._hasBoundsChanged(c.bounds, n.bounds);
266
+ const centerCoordinateChanged = this._hasCenterCoordinateChanged(
267
+ c.centerCoordinate,
268
+ n.centerCoordinate,
269
+ );
270
+ const paddingChanged = this._hasPaddingChanged(c.padding, n.padding);
271
+ const zoomChanged = this._hasNumberChanged(c.zoomLevel, n.zoomLevel);
272
+ const pitchChanged = this._hasNumberChanged(c.pitch, n.pitch);
273
+ const headingChanged = this._hasNumberChanged(c.heading, n.heading);
274
+
275
+ let shouldUpdate = false;
276
+
277
+ if (n.bounds && boundsChanged) {
278
+ cameraConfig.bounds = n.bounds;
279
+ shouldUpdate = true;
280
+ } else if (n.centerCoordinate && centerCoordinateChanged) {
281
+ cameraConfig.centerCoordinate = n.centerCoordinate;
282
+ shouldUpdate = true;
283
+ }
284
+
285
+ if (paddingChanged || zoomChanged || pitchChanged || headingChanged) {
286
+ shouldUpdate = true;
287
+ }
288
+
289
+ if (shouldUpdate) {
290
+ this._setCamera(cameraConfig);
291
+ }
292
+ }
293
+
294
+ _hasCameraChanged(currentCamera, nextCamera) {
295
+ const c = currentCamera;
296
+ const n = nextCamera;
297
+
298
+ const hasDefaultPropsChanged =
299
+ c.heading !== n.heading ||
300
+ this._hasCenterCoordinateChanged(
301
+ c.centerCoordinate,
302
+ n.centerCoordinate,
303
+ ) ||
304
+ this._hasBoundsChanged(c.bounds, n.bounds) ||
305
+ this._hasPaddingChanged(c.padding, n.padding) ||
306
+ c.pitch !== n.pitch ||
307
+ c.zoomLevel !== n.zoomLevel ||
308
+ c.triggerKey !== n.triggerKey;
309
+
310
+ const hasFollowPropsChanged =
311
+ c.followUserLocation !== n.followUserLocation ||
312
+ c.followUserMode !== n.followUserMode ||
313
+ c.followZoomLevel !== n.followZoomLevel ||
314
+ c.followHeading !== n.followHeading ||
315
+ c.followPitch !== n.followPitch;
316
+
317
+ const hasAnimationPropsChanged =
318
+ c.animationMode !== n.animationMode ||
319
+ c.animationDuration !== n.animationDuration;
320
+
321
+ const hasNavigationConstraintsPropsChanged =
322
+ this._hasBoundsChanged(c.maxBounds, n.maxBounds) ||
323
+ c.minZoomLevel !== n.minZoomLevel ||
324
+ c.maxZoomLevel !== n.maxZoomLevel;
325
+
326
+ return (
327
+ hasDefaultPropsChanged ||
328
+ hasFollowPropsChanged ||
329
+ hasAnimationPropsChanged ||
330
+ hasNavigationConstraintsPropsChanged
331
+ );
332
+ }
333
+
334
+ _hasCenterCoordinateChanged(cC, nC) {
335
+ if (!cC && !nC) {
336
+ return false;
337
+ }
338
+
339
+ if (existenceChange(cC, nC)) {
340
+ return true;
341
+ }
342
+
343
+ const isLngDiff = cC[0] !== nC[0];
344
+ const isLatDiff = cC[1] !== nC[1];
345
+ return isLngDiff || isLatDiff;
346
+ }
347
+
348
+ _hasBoundsChanged(cB, nB) {
349
+ if (!cB && !nB) {
350
+ return false;
351
+ }
352
+
353
+ if (existenceChange(cB, nB)) {
354
+ return true;
355
+ }
356
+
357
+ return (
358
+ cB.ne[0] !== nB.ne[0] ||
359
+ cB.ne[1] !== nB.ne[1] ||
360
+ cB.sw[0] !== nB.sw[0] ||
361
+ cB.sw[1] !== nB.sw[1] ||
362
+ cB.paddingTop !== nB.paddingTop ||
363
+ cB.paddingLeft !== nB.paddingLeft ||
364
+ cB.paddingRight !== nB.paddingRight ||
365
+ cB.paddingBottom !== nB.paddingBottom
366
+ );
367
+ }
368
+
369
+ _hasPaddingChanged(cP, nP) {
370
+ if (!cP && !nP) {
371
+ return false;
372
+ }
373
+
374
+ if (existenceChange(cP, nP)) {
375
+ return true;
376
+ }
377
+
378
+ return (
379
+ cP.paddingTop !== nP.paddingTop ||
380
+ cP.paddingLeft !== nP.paddingLeft ||
381
+ cP.paddingRight !== nP.paddingRight ||
382
+ cP.paddingBottom !== nP.paddingBottom
383
+ );
384
+ }
385
+
386
+ _hasNumberChanged(prev, next) {
387
+ if (existenceChange(prev, next)) {
388
+ return true;
389
+ }
390
+
391
+ if (!prev && !next) {
392
+ return false;
393
+ }
394
+
395
+ return prev !== next;
396
+ }
397
+
398
+ /**
399
+ * Map camera transitions to fit provided bounds
400
+ *
401
+ * @example
402
+ * this.camera.fitBounds([lng, lat], [lng, lat])
403
+ * this.camera.fitBounds([lng, lat], [lng, lat], 20, 1000) // padding for all sides
404
+ * this.camera.fitBounds([lng, lat], [lng, lat], [verticalPadding, horizontalPadding], 1000)
405
+ * this.camera.fitBounds([lng, lat], [lng, lat], [top, right, bottom, left], 1000)
406
+ *
407
+ * @param {Array<Number>} northEastCoordinates - North east coordinate of bound
408
+ * @param {Array<Number>} southWestCoordinates - South west coordinate of bound
409
+ * @param {Number=} padding - Camera padding for bound
410
+ * @param {Number=} animationDuration - Duration of camera animation
411
+ * @return {void}
412
+ */
413
+ fitBounds(
414
+ northEastCoordinates,
415
+ southWestCoordinates,
416
+ padding = 0,
417
+ animationDuration = 0.0,
418
+ ) {
419
+ const pad = {
420
+ paddingLeft: 0,
421
+ paddingRight: 0,
422
+ paddingTop: 0,
423
+ paddingBottom: 0,
424
+ };
425
+
426
+ if (Array.isArray(padding)) {
427
+ if (padding.length === 2) {
428
+ pad.paddingTop = padding[0];
429
+ pad.paddingBottom = padding[0];
430
+ pad.paddingLeft = padding[1];
431
+ pad.paddingRight = padding[1];
432
+ } else if (padding.length === 4) {
433
+ pad.paddingTop = padding[0];
434
+ pad.paddingRight = padding[1];
435
+ pad.paddingBottom = padding[2];
436
+ pad.paddingLeft = padding[3];
437
+ }
438
+ } else {
439
+ pad.paddingLeft = padding;
440
+ pad.paddingRight = padding;
441
+ pad.paddingTop = padding;
442
+ pad.paddingBottom = padding;
443
+ }
444
+
445
+ return this.setCamera({
446
+ bounds: {
447
+ ne: northEastCoordinates,
448
+ sw: southWestCoordinates,
449
+ },
450
+ padding: pad,
451
+ animationDuration,
452
+ animationMode: Camera.Mode.Ease,
453
+ });
454
+ }
455
+
456
+ /**
457
+ * Map camera will fly to new coordinate
458
+ *
459
+ * @example
460
+ * this.camera.flyTo([lng, lat])
461
+ * this.camera.flyTo([lng, lat], 12000)
462
+ *
463
+ * @param {Array<Number>} coordinates - Coordinates that map camera will jump too
464
+ * @param {Number=} animationDuration - Duration of camera animation
465
+ * @return {void}
466
+ */
467
+ flyTo(coordinates, animationDuration = 2000) {
468
+ return this.setCamera({
469
+ centerCoordinate: coordinates,
470
+ animationDuration,
471
+ animationMode: Camera.Mode.Flight,
472
+ });
473
+ }
474
+
475
+ /**
476
+ * Map camera will move to new coordinate at the same zoom level
477
+ *
478
+ * @example
479
+ * this.camera.moveTo([lng, lat], 200) // eases camera to new location based on duration
480
+ * this.camera.moveTo([lng, lat]) // snaps camera to new location without any easing
481
+ *
482
+ * @param {Array<Number>} coordinates - Coordinates that map camera will move too
483
+ * @param {Number=} animationDuration - Duration of camera animation
484
+ * @return {void}
485
+ */
486
+ moveTo(coordinates, animationDuration = 0) {
487
+ return this.setCamera({
488
+ centerCoordinate: coordinates,
489
+ animationDuration,
490
+ });
491
+ }
492
+
493
+ /**
494
+ * Map camera will zoom to specified level
495
+ *
496
+ * @example
497
+ * this.camera.zoomTo(16)
498
+ * this.camera.zoomTo(16, 100)
499
+ *
500
+ * @param {Number} zoomLevel - Zoom level that the map camera will animate too
501
+ * @param {Number=} animationDuration - Duration of camera animation
502
+ * @return {void}
503
+ */
504
+ zoomTo(zoomLevel, animationDuration = 2000) {
505
+ return this.setCamera({
506
+ zoomLevel,
507
+ animationDuration,
508
+ animationMode: Camera.Mode.Flight,
509
+ });
510
+ }
511
+
512
+ /**
513
+ * Map camera will perform updates based on provided config. Advanced use only!
514
+ *
515
+ * @example
516
+ * this.camera.setCamera({
517
+ * centerCoordinate: [lng, lat],
518
+ * zoomLevel: 16,
519
+ * animationDuration: 2000,
520
+ * })
521
+ *
522
+ * this.camera.setCamera({
523
+ * stops: [
524
+ * { pitch: 45, animationDuration: 200 },
525
+ * { heading: 180, animationDuration: 300 },
526
+ * ]
527
+ * })
528
+ *
529
+ * @param {Object} config - Camera configuration
530
+ */
531
+ setCamera(config = {}) {
532
+ this._setCamera(config);
533
+ }
534
+
535
+ _setCamera(config = {}) {
536
+ let cameraConfig = {};
537
+
538
+ if (config.stops) {
539
+ cameraConfig.stops = [];
540
+
541
+ for (const stop of config.stops) {
542
+ cameraConfig.stops.push(this._createStopConfig(stop));
543
+ }
544
+ } else {
545
+ cameraConfig = this._createStopConfig(config);
546
+ }
547
+
548
+ this.refs.camera.setNativeProps({stop: cameraConfig});
549
+ }
550
+
551
+ _createDefaultCamera() {
552
+ if (this.defaultCamera) {
553
+ return this.defaultCamera;
554
+ }
555
+ if (!this.props.defaultSettings) {
556
+ return null;
557
+ }
558
+
559
+ this.defaultCamera = this._createStopConfig(
560
+ {
561
+ ...this.props.defaultSettings,
562
+ animationMode: Camera.Mode.Move,
563
+ },
564
+ true,
565
+ );
566
+ return this.defaultCamera;
567
+ }
568
+
569
+ _createStopConfig(config = {}, ignoreFollowUserLocation = false) {
570
+ if (this.props.followUserLocation && !ignoreFollowUserLocation) {
571
+ return null;
572
+ }
573
+
574
+ const stopConfig = {
575
+ mode: this._getNativeCameraMode(config),
576
+ pitch: config.pitch,
577
+ heading: config.heading,
578
+ duration: config.animationDuration || 0,
579
+ zoom: config.zoomLevel,
580
+ };
581
+
582
+ if (config.centerCoordinate) {
583
+ stopConfig.centerCoordinate = toJSONString(
584
+ geoUtils.makePoint(config.centerCoordinate),
585
+ );
586
+ }
587
+
588
+ if (config.bounds && config.bounds.ne && config.bounds.sw) {
589
+ const {ne, sw} = config.bounds;
590
+ stopConfig.bounds = toJSONString(geoUtils.makeLatLngBounds(ne, sw));
591
+ }
592
+
593
+ stopConfig.paddingTop =
594
+ config.padding?.paddingTop || config.bounds?.paddingTop || 0;
595
+ stopConfig.paddingRight =
596
+ config.padding?.paddingRight || config.bounds?.paddingRight || 0;
597
+ stopConfig.paddingBottom =
598
+ config.padding?.paddingBottom || config.bounds?.paddingBottom || 0;
599
+ stopConfig.paddingLeft =
600
+ config.padding?.paddingLeft || config.bounds?.paddingLeft || 0;
601
+
602
+ return stopConfig;
603
+ }
604
+
605
+ _getNativeCameraMode(config) {
606
+ switch (config.animationMode) {
607
+ case Camera.Mode.Flight:
608
+ return MapboxGL.CameraModes.Flight;
609
+ case Camera.Mode.Move:
610
+ return MapboxGL.CameraModes.None;
611
+ case Camera.Mode.Linear:
612
+ return MapboxGL.CameraModes.Linear;
613
+ default:
614
+ return MapboxGL.CameraModes.Ease;
615
+ }
616
+ }
617
+
618
+ _getMaxBounds() {
619
+ const bounds = this.props.maxBounds;
620
+ if (!bounds || !bounds.ne || !bounds.sw) {
621
+ return null;
622
+ }
623
+ return toJSONString(geoUtils.makeLatLngBounds(bounds.ne, bounds.sw));
624
+ }
625
+
626
+ render() {
627
+ const props = Object.assign({}, this.props);
628
+
629
+ const callbacks = {
630
+ onUserTrackingModeChange: props.onUserTrackingModeChange,
631
+ };
632
+
633
+ return (
634
+ <RCTMGLCamera
635
+ testID="Camera"
636
+ ref="camera"
637
+ followUserLocation={this.props.followUserLocation}
638
+ followUserMode={this.props.followUserMode}
639
+ followPitch={this.props.followPitch}
640
+ followHeading={this.props.followHeading}
641
+ followZoomLevel={this.props.followZoomLevel}
642
+ stop={this._createStopConfig(props)}
643
+ maxZoomLevel={this.props.maxZoomLevel}
644
+ minZoomLevel={this.props.minZoomLevel}
645
+ maxBounds={this._getMaxBounds()}
646
+ defaultStop={this._createDefaultCamera()}
647
+ {...callbacks}
648
+ />
649
+ );
650
+ }
651
+ }
652
+
653
+ const RCTMGLCamera = requireNativeComponent(NATIVE_MODULE_NAME, Camera, {
654
+ nativeOnly: {
655
+ stop: true,
656
+ },
657
+ });
658
+
659
+ Camera.UserTrackingModes = {
660
+ Follow: 'normal',
661
+ FollowWithHeading: 'compass',
662
+ FollowWithCourse: 'course',
663
+ };
664
+
665
+ export default Camera;