@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,817 @@
1
+ import {makePoint, makeLatLngBounds} from '../utils/geoUtils';
2
+ import {
3
+ isFunction,
4
+ isNumber,
5
+ toJSONString,
6
+ isAndroid,
7
+ viewPropTypes,
8
+ } from '../utils';
9
+ import {getFilter} from '../utils/filterUtils';
10
+ import Logger from '../utils/Logger';
11
+
12
+ import NativeBridgeComponent from './NativeBridgeComponent';
13
+
14
+ import PropTypes from 'prop-types';
15
+ import React from 'react';
16
+ import {
17
+ View,
18
+ StyleSheet,
19
+ NativeModules,
20
+ requireNativeComponent,
21
+ } from 'react-native';
22
+ import {debounce} from 'debounce';
23
+
24
+ const MapboxGL = NativeModules.MGLModule;
25
+ if (MapboxGL == null) {
26
+ console.error(
27
+ 'Native part of Mapbox React Native libraries were not registered properly, double check our native installation guides.',
28
+ );
29
+ }
30
+
31
+ export const NATIVE_MODULE_NAME = 'RCTMGLMapView';
32
+
33
+ export const ANDROID_TEXTURE_NATIVE_MODULE_NAME = 'RCTMGLAndroidTextureMapView';
34
+
35
+ const styles = StyleSheet.create({
36
+ matchParent: {flex: 1},
37
+ });
38
+
39
+ const defaultStyleURL = MapboxGL.StyleURL.Street;
40
+
41
+ /**
42
+ * MapView backed by Mapbox Native GL
43
+ */
44
+ class MapView extends NativeBridgeComponent(React.Component) {
45
+ static propTypes = {
46
+ ...viewPropTypes,
47
+
48
+ /**
49
+ * The distance from the edges of the map view’s frame to the edges of the map view’s logical viewport.
50
+ */
51
+ contentInset: PropTypes.oneOfType([
52
+ PropTypes.arrayOf(PropTypes.number),
53
+ PropTypes.number,
54
+ ]),
55
+
56
+ /**
57
+ * Style for wrapping React Native View
58
+ */
59
+ style: PropTypes.any,
60
+
61
+ /**
62
+ * Style URL for map - notice, if non is set it _will_ default to `MapboxGL.StyleURL.Street`
63
+ */
64
+ styleURL: PropTypes.string,
65
+
66
+ /**
67
+ * StyleJSON for map - according to TileJSON specs: https://github.com/mapbox/tilejson-spec
68
+ */
69
+ styleJSON: PropTypes.string,
70
+
71
+ /**
72
+ * iOS: The preferred frame rate at which the map view is rendered.
73
+ * The default value for this property is MGLMapViewPreferredFramesPerSecondDefault,
74
+ * which will adaptively set the preferred frame rate based on the capability of
75
+ * the user’s device to maintain a smooth experience. This property can be set to arbitrary integer values.
76
+ *
77
+ * Android: The maximum frame rate at which the map view is rendered, but it can't excess the ability of device hardware.
78
+ * This property can be set to arbitrary integer values.
79
+ */
80
+ preferredFramesPerSecond: PropTypes.number,
81
+
82
+ /**
83
+ * Automatically change the language of the map labels to the system’s preferred language,
84
+ * this is not something that can be toggled on/off
85
+ */
86
+ localizeLabels: PropTypes.bool,
87
+
88
+ /**
89
+ * Enable/Disable zoom on the map
90
+ */
91
+ zoomEnabled: PropTypes.bool,
92
+
93
+ /**
94
+ * Enable/Disable scroll on the map
95
+ */
96
+ scrollEnabled: PropTypes.bool,
97
+
98
+ /**
99
+ * Enable/Disable pitch on map
100
+ */
101
+ pitchEnabled: PropTypes.bool,
102
+
103
+ /**
104
+ * Enable/Disable rotation on map
105
+ */
106
+ rotateEnabled: PropTypes.bool,
107
+
108
+ /**
109
+ * The Mapbox terms of service, which governs the use of Mapbox-hosted vector tiles and styles,
110
+ * [requires](https://www.mapbox.com/help/how-attribution-works/) these copyright notices to accompany any map that features Mapbox-designed styles, OpenStreetMap data, or other Mapbox data such as satellite or terrain data.
111
+ * If that applies to this map view, do not hide this view or remove any notices from it.
112
+ *
113
+ * If this view is hidden, you must implement this setting elsewhere in your app. See our website for [Android](https://www.mapbox.com/android-docs/map-sdk/overview/#telemetry-opt-out) and [iOS](https://www.mapbox.com/ios-sdk/#telemetry_opt_out) for implementation details.
114
+ *
115
+ * Enable/Disable attribution on map.
116
+ */
117
+ attributionEnabled: PropTypes.bool,
118
+
119
+ /**
120
+ * Adds attribution offset, e.g. `{top: 8, left: 8}` will put attribution button in top-left corner of the map
121
+ */
122
+ attributionPosition: PropTypes.oneOfType([
123
+ PropTypes.shape({top: PropTypes.number, left: PropTypes.number}),
124
+ PropTypes.shape({top: PropTypes.number, right: PropTypes.number}),
125
+ PropTypes.shape({bottom: PropTypes.number, left: PropTypes.number}),
126
+ PropTypes.shape({bottom: PropTypes.number, right: PropTypes.number}),
127
+ ]),
128
+
129
+ /**
130
+ * MapView's tintColor
131
+ */
132
+ tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
133
+
134
+ /**
135
+ * Enable/Disable the logo on the map.
136
+ */
137
+ logoEnabled: PropTypes.bool,
138
+
139
+ /**
140
+ * Adds logo offset, e.g. `{top: 8, left: 8}` will put the logo in top-left corner of the map
141
+ */
142
+ logoPosition: PropTypes.oneOfType([
143
+ PropTypes.shape({top: PropTypes.number, left: PropTypes.number}),
144
+ PropTypes.shape({top: PropTypes.number, right: PropTypes.number}),
145
+ PropTypes.shape({bottom: PropTypes.number, left: PropTypes.number}),
146
+ PropTypes.shape({bottom: PropTypes.number, right: PropTypes.number}),
147
+ ]),
148
+
149
+ /**
150
+ * Enable/Disable the compass from appearing on the map
151
+ */
152
+ compassEnabled: PropTypes.bool,
153
+
154
+ /**
155
+ * Change corner of map the compass starts at. 0: TopLeft, 1: TopRight, 2: BottomLeft, 3: BottomRight
156
+ */
157
+ compassViewPosition: PropTypes.number,
158
+
159
+ /**
160
+ * Add margins to the compass with x and y values
161
+ */
162
+ compassViewMargins: PropTypes.object,
163
+
164
+ /**
165
+ * [Android only] Enable/Disable use of GLSurfaceView insted of TextureView.
166
+ */
167
+ surfaceView: PropTypes.bool,
168
+
169
+ /**
170
+ * Map press listener, gets called when a user presses the map
171
+ */
172
+ onPress: PropTypes.func,
173
+
174
+ /**
175
+ * Map long press listener, gets called when a user long presses the map
176
+ */
177
+ onLongPress: PropTypes.func,
178
+
179
+ /**
180
+ * This event is triggered whenever the currently displayed map region is about to change.
181
+ *
182
+ * @param {PointFeature} feature - The geojson point feature at the camera center, properties contains zoomLevel, visibleBounds
183
+ */
184
+ onRegionWillChange: PropTypes.func,
185
+
186
+ /**
187
+ * This event is triggered whenever the currently displayed map region is changing.
188
+ *
189
+ * @param {PointFeature} feature - The geojson point feature at the camera center, properties contains zoomLevel, visibleBounds
190
+ */
191
+ onRegionIsChanging: PropTypes.func,
192
+
193
+ /**
194
+ * This event is triggered whenever the currently displayed map region finished changing
195
+ *
196
+ * @param {PointFeature} feature - The geojson point feature at the camera center, properties contains zoomLevel, visibleBounds
197
+ */
198
+ onRegionDidChange: PropTypes.func,
199
+
200
+ /**
201
+ * This event is triggered when the map is about to start loading a new map style.
202
+ */
203
+ onWillStartLoadingMap: PropTypes.func,
204
+
205
+ /**
206
+ * This is triggered when the map has successfully loaded a new map style.
207
+ */
208
+ onDidFinishLoadingMap: PropTypes.func,
209
+
210
+ /**
211
+ * This event is triggered when the map has failed to load a new map style.
212
+ */
213
+ onDidFailLoadingMap: PropTypes.func,
214
+
215
+ /**
216
+ * This event is triggered when the map will start rendering a frame.
217
+ */
218
+ onWillStartRenderingFrame: PropTypes.func,
219
+
220
+ /**
221
+ * This event is triggered when the map finished rendering a frame.
222
+ */
223
+ onDidFinishRenderingFrame: PropTypes.func,
224
+
225
+ /**
226
+ * This event is triggered when the map fully finished rendering a frame.
227
+ */
228
+ onDidFinishRenderingFrameFully: PropTypes.func,
229
+
230
+ /**
231
+ * This event is triggered when the map will start rendering the map.
232
+ */
233
+ onWillStartRenderingMap: PropTypes.func,
234
+
235
+ /**
236
+ * This event is triggered when the map finished rendering the map.
237
+ */
238
+ onDidFinishRenderingMap: PropTypes.func,
239
+
240
+ /**
241
+ * This event is triggered when the map fully finished rendering the map.
242
+ */
243
+ onDidFinishRenderingMapFully: PropTypes.func,
244
+
245
+ /**
246
+ * This event is triggered when the user location is updated.
247
+ */
248
+ onUserLocationUpdate: PropTypes.func,
249
+
250
+ /**
251
+ * This event is triggered when a style has finished loading.
252
+ */
253
+ onDidFinishLoadingStyle: PropTypes.func,
254
+
255
+ /**
256
+ * The emitted frequency of regionwillchange events
257
+ */
258
+ regionWillChangeDebounceTime: PropTypes.number,
259
+
260
+ /**
261
+ * The emitted frequency of regiondidchange events
262
+ */
263
+ regionDidChangeDebounceTime: PropTypes.number,
264
+ };
265
+
266
+ static defaultProps = {
267
+ localizeLabels: false,
268
+ scrollEnabled: true,
269
+ pitchEnabled: true,
270
+ rotateEnabled: true,
271
+ attributionEnabled: true,
272
+ logoEnabled: true,
273
+ surfaceView: false,
274
+ regionWillChangeDebounceTime: 10,
275
+ regionDidChangeDebounceTime: 500,
276
+ };
277
+
278
+ constructor(props) {
279
+ super(props, NATIVE_MODULE_NAME);
280
+
281
+ this.logger = Logger.sharedInstance();
282
+ this.logger.start();
283
+
284
+ this.state = {
285
+ isReady: null,
286
+ region: null,
287
+ width: 0,
288
+ height: 0,
289
+ isUserInteraction: false,
290
+ };
291
+
292
+ this._onPress = this._onPress.bind(this);
293
+ this._onLongPress = this._onLongPress.bind(this);
294
+ this._onChange = this._onChange.bind(this);
295
+ this._onLayout = this._onLayout.bind(this);
296
+
297
+ // debounced map change methods
298
+ this._onDebouncedRegionWillChange = debounce(
299
+ this._onRegionWillChange.bind(this),
300
+ props.regionWillChangeDebounceTime,
301
+ true,
302
+ );
303
+
304
+ this._onDebouncedRegionDidChange = debounce(
305
+ this._onRegionDidChange.bind(this),
306
+ props.regionDidChangeDebounceTime,
307
+ );
308
+ }
309
+
310
+ componentDidMount() {
311
+ this._setHandledMapChangedEvents(this.props);
312
+ }
313
+
314
+ componentWillUnmount() {
315
+ this._onDebouncedRegionWillChange.clear();
316
+ this._onDebouncedRegionDidChange.clear();
317
+ this.logger.stop();
318
+ }
319
+
320
+ UNSAFE_componentWillReceiveProps(nextProps) {
321
+ this._setHandledMapChangedEvents(nextProps);
322
+ }
323
+
324
+ _setHandledMapChangedEvents(props) {
325
+ if (isAndroid()) {
326
+ const events = [];
327
+
328
+ if (props.onRegionWillChange) {
329
+ events.push(MapboxGL.EventTypes.RegionWillChange);
330
+ }
331
+ if (props.onRegionIsChanging) {
332
+ events.push(MapboxGL.EventTypes.RegionIsChanging);
333
+ }
334
+ if (props.onRegionDidChange) {
335
+ events.push(MapboxGL.EventTypes.RegionDidChange);
336
+ }
337
+ if (props.onUserLocationUpdate) {
338
+ events.push(MapboxGL.EventTypes.UserLocationUpdated);
339
+ }
340
+ if (props.onWillStartLoadingMap) {
341
+ events.push(MapboxGL.EventTypes.WillStartLoadingMap);
342
+ }
343
+ if (props.onDidFinishLoadingMap) {
344
+ events.push(MapboxGL.EventTypes.DidFinishLoadingMap);
345
+ }
346
+ if (props.onDidFailLoadingMap) {
347
+ events.push(MapboxGL.EventTypes.DidFailLoadingMap);
348
+ }
349
+ if (props.onWillStartRenderingFrame) {
350
+ events.push(MapboxGL.EventTypes.WillStartRenderingFrame);
351
+ }
352
+ if (props.onDidFinishRenderingFrame) {
353
+ events.push(MapboxGL.EventTypes.DidFinishRenderingFrame);
354
+ }
355
+ if (props.onDidFinishRenderingFrameFully) {
356
+ events.push(MapboxGL.EventTypes.DidFinishRenderingFrameFully);
357
+ }
358
+ if (props.onWillStartRenderingMap) {
359
+ events.push(MapboxGL.EventTypes.WillStartRenderingMap);
360
+ }
361
+ if (props.onDidFinishRenderingMap) {
362
+ events.push(MapboxGL.EventTypes.DidFinishRenderingMap);
363
+ }
364
+ if (props.onDidFinishRenderingMapFully) {
365
+ events.push(MapboxGL.EventTypes.DidFinishRenderingMapFully);
366
+ }
367
+ if (props.onDidFinishLoadingStyle) {
368
+ events.push(MapboxGL.EventTypes.DidFinishLoadingStyle);
369
+ }
370
+
371
+ this._runNativeCommand(
372
+ 'setHandledMapChangedEvents',
373
+ this._nativeRef,
374
+ events,
375
+ );
376
+ }
377
+ }
378
+
379
+ /**
380
+ * Converts a geographic coordinate to a point in the given view’s coordinate system.
381
+ *
382
+ * @example
383
+ * const pointInView = await this._map.getPointInView([-37.817070, 144.949901]);
384
+ *
385
+ * @param {Array<Number>} coordinate - A point expressed in the map view's coordinate system.
386
+ * @return {Array}
387
+ */
388
+ async getPointInView(coordinate) {
389
+ const res = await this._runNativeCommand(
390
+ 'getPointInView',
391
+ this._nativeRef,
392
+ [coordinate],
393
+ );
394
+ return res.pointInView;
395
+ }
396
+
397
+ /**
398
+ * Converts a point in the given view’s coordinate system to a geographic coordinate.
399
+ *
400
+ * @example
401
+ * const coordinate = await this._map.getCoordinateFromView([100, 100]);
402
+ *
403
+ * @param {Array<Number>} point - A point expressed in the given view’s coordinate system.
404
+ * @return {Array}
405
+ */
406
+ async getCoordinateFromView(point) {
407
+ const res = await this._runNativeCommand(
408
+ 'getCoordinateFromView',
409
+ this._nativeRef,
410
+ [point],
411
+ );
412
+ return res.coordinateFromView;
413
+ }
414
+
415
+ /**
416
+ * The coordinate bounds(ne, sw) visible in the users’s viewport.
417
+ *
418
+ * @example
419
+ * const visibleBounds = await this._map.getVisibleBounds();
420
+ *
421
+ * @return {Array}
422
+ */
423
+ async getVisibleBounds() {
424
+ const res = await this._runNativeCommand(
425
+ 'getVisibleBounds',
426
+ this._nativeRef,
427
+ );
428
+ return res.visibleBounds;
429
+ }
430
+
431
+ /**
432
+ * Returns an array of rendered map features that intersect with a given point.
433
+ *
434
+ * @example
435
+ * this._map.queryRenderedFeaturesAtPoint([30, 40], ['==', 'type', 'Point'], ['id1', 'id2'])
436
+ *
437
+ * @param {Array<Number>} coordinate - A point expressed in the map view’s coordinate system.
438
+ * @param {Array=} filter - A set of strings that correspond to the names of layers defined in the current style. Only the features contained in these layers are included in the returned array.
439
+ * @param {Array=} layerIDs - A array of layer id's to filter the features by
440
+ * @return {FeatureCollection}
441
+ */
442
+ async queryRenderedFeaturesAtPoint(coordinate, filter = [], layerIDs = []) {
443
+ if (!coordinate || coordinate.length < 2) {
444
+ throw new Error('Must pass in valid coordinate[lng, lat]');
445
+ }
446
+
447
+ const res = await this._runNativeCommand(
448
+ 'queryRenderedFeaturesAtPoint',
449
+ this._nativeRef,
450
+ [coordinate, getFilter(filter), layerIDs],
451
+ );
452
+
453
+ if (isAndroid()) {
454
+ return JSON.parse(res.data);
455
+ }
456
+
457
+ return res.data;
458
+ }
459
+
460
+ /**
461
+ * Returns an array of rendered map features that intersect with the given rectangle,
462
+ * restricted to the given style layers and filtered by the given predicate.
463
+ *
464
+ * @example
465
+ * this._map.queryRenderedFeaturesInRect([30, 40, 20, 10], ['==', 'type', 'Point'], ['id1', 'id2'])
466
+ *
467
+ * @param {Array<Number>} bbox - A rectangle expressed in the map view’s coordinate system.
468
+ * @param {Array=} filter - A set of strings that correspond to the names of layers defined in the current style. Only the features contained in these layers are included in the returned array.
469
+ * @param {Array=} layerIDs - A array of layer id's to filter the features by
470
+ * @return {FeatureCollection}
471
+ */
472
+ async queryRenderedFeaturesInRect(bbox, filter = [], layerIDs = []) {
473
+ if (!bbox || bbox.length !== 4) {
474
+ throw new Error(
475
+ 'Must pass in a valid bounding box[top, right, bottom, left]',
476
+ );
477
+ }
478
+ const res = await this._runNativeCommand(
479
+ 'queryRenderedFeaturesInRect',
480
+ this._nativeRef,
481
+ [bbox, getFilter(filter), layerIDs],
482
+ );
483
+
484
+ if (isAndroid()) {
485
+ return JSON.parse(res.data);
486
+ }
487
+
488
+ return res.data;
489
+ }
490
+
491
+ /**
492
+ * Map camera will perform updates based on provided config. Deprecated use Camera#setCamera.
493
+ */
494
+ setCamera() {
495
+ console.warn(
496
+ 'MapView.setCamera is deprecated - please use Camera#setCamera',
497
+ );
498
+ }
499
+
500
+ /**
501
+ * Takes snapshot of map with current tiles and returns a URI to the image
502
+ * @param {Boolean} writeToDisk If true will create a temp file, otherwise it is in base64
503
+ * @return {String}
504
+ */
505
+ async takeSnap(writeToDisk = false) {
506
+ const res = await this._runNativeCommand('takeSnap', this._nativeRef, [
507
+ writeToDisk,
508
+ ]);
509
+ return res.uri;
510
+ }
511
+
512
+ /**
513
+ * Returns the current zoom of the map view.
514
+ *
515
+ * @example
516
+ * const zoom = await this._map.getZoom();
517
+ *
518
+ * @return {Number}
519
+ */
520
+
521
+ async getZoom() {
522
+ const res = await this._runNativeCommand('getZoom', this._nativeRef);
523
+ return res.zoom;
524
+ }
525
+
526
+ /**
527
+ * Returns the map's geographical centerpoint
528
+ *
529
+ * @example
530
+ * const center = await this._map.getCenter();
531
+ *
532
+ * @return {Array<Number>} Coordinates
533
+ */
534
+ async getCenter() {
535
+ const res = await this._runNativeCommand('getCenter', this._nativeRef);
536
+ return res.center;
537
+ }
538
+
539
+ /**
540
+ * Sets the visibility of all the layers referencing the specified `sourceLayerId` and/or `sourceId`
541
+ *
542
+ * @example
543
+ * await this._map.setSourceVisibility(false, 'composite', 'building')
544
+ *
545
+ * @param {boolean} visible - Visibility of the layers
546
+ * @param {String} sourceId - Identifier of the target source (e.g. 'composite')
547
+ * @param {String=} sourceLayerId - Identifier of the target source-layer (e.g. 'building')
548
+ */
549
+ setSourceVisibility(visible, sourceId, sourceLayerId = undefined) {
550
+ this._runNativeCommand('setSourceVisibility', this._nativeRef, [
551
+ visible,
552
+ sourceId,
553
+ sourceLayerId,
554
+ ]);
555
+ }
556
+
557
+ /**
558
+ * Show the attribution and telemetry action sheet.
559
+ * If you implement a custom attribution button, you should add this action to the button.
560
+ */
561
+ showAttribution() {
562
+ return this._runNativeCommand('showAttribution', this._nativeRef);
563
+ }
564
+
565
+ _createStopConfig(config = {}) {
566
+ const stopConfig = {
567
+ mode: isNumber(config.mode) ? config.mode : MapboxGL.CameraModes.Ease,
568
+ pitch: config.pitch,
569
+ heading: config.heading,
570
+ duration: config.duration || 2000,
571
+ zoom: config.zoom,
572
+ };
573
+
574
+ if (config.centerCoordinate) {
575
+ stopConfig.centerCoordinate = toJSONString(
576
+ makePoint(config.centerCoordinate),
577
+ );
578
+ }
579
+
580
+ if (config.bounds && config.bounds.ne && config.bounds.sw) {
581
+ const {ne, sw, paddingLeft, paddingRight, paddingTop, paddingBottom} =
582
+ config.bounds;
583
+ stopConfig.bounds = toJSONString(makeLatLngBounds(ne, sw));
584
+ stopConfig.boundsPaddingTop = paddingTop || 0;
585
+ stopConfig.boundsPaddingRight = paddingRight || 0;
586
+ stopConfig.boundsPaddingBottom = paddingBottom || 0;
587
+ stopConfig.boundsPaddingLeft = paddingLeft || 0;
588
+ }
589
+
590
+ return stopConfig;
591
+ }
592
+
593
+ _onPress(e) {
594
+ if (isFunction(this.props.onPress)) {
595
+ this.props.onPress(e.nativeEvent.payload);
596
+ }
597
+ }
598
+
599
+ _onLongPress(e) {
600
+ if (isFunction(this.props.onLongPress)) {
601
+ this.props.onLongPress(e.nativeEvent.payload);
602
+ }
603
+ }
604
+
605
+ _onRegionWillChange(payload) {
606
+ if (isFunction(this.props.onRegionWillChange)) {
607
+ this.props.onRegionWillChange(payload);
608
+ }
609
+ this.setState({isUserInteraction: payload.properties.isUserInteraction});
610
+ }
611
+
612
+ _onRegionDidChange(payload) {
613
+ if (isFunction(this.props.onRegionDidChange)) {
614
+ this.props.onRegionDidChange(payload);
615
+ }
616
+ this.setState({region: payload});
617
+ }
618
+
619
+ _onChange(e) {
620
+ const {regionWillChangeDebounceTime, regionDidChangeDebounceTime} =
621
+ this.props;
622
+ const {type, payload} = e.nativeEvent;
623
+ let propName = '';
624
+
625
+ switch (type) {
626
+ case MapboxGL.EventTypes.RegionWillChange:
627
+ if (regionWillChangeDebounceTime > 0) {
628
+ this._onDebouncedRegionWillChange(payload);
629
+ } else {
630
+ propName = 'onRegionWillChange';
631
+ }
632
+ break;
633
+ case MapboxGL.EventTypes.RegionIsChanging:
634
+ propName = 'onRegionIsChanging';
635
+ break;
636
+ case MapboxGL.EventTypes.RegionDidChange:
637
+ if (regionDidChangeDebounceTime > 0) {
638
+ this._onDebouncedRegionDidChange(payload);
639
+ } else {
640
+ propName = 'onRegionDidChange';
641
+ }
642
+ break;
643
+ case MapboxGL.EventTypes.UserLocationUpdated:
644
+ propName = 'onUserLocationUpdate';
645
+ break;
646
+ case MapboxGL.EventTypes.WillStartLoadingMap:
647
+ propName = 'onWillStartLoadingMap';
648
+ break;
649
+ case MapboxGL.EventTypes.DidFinishLoadingMap:
650
+ propName = 'onDidFinishLoadingMap';
651
+ break;
652
+ case MapboxGL.EventTypes.DidFailLoadingMap:
653
+ propName = 'onDidFailLoadingMap';
654
+ break;
655
+ case MapboxGL.EventTypes.WillStartRenderingFrame:
656
+ propName = 'onWillStartRenderingFrame';
657
+ break;
658
+ case MapboxGL.EventTypes.DidFinishRenderingFrame:
659
+ propName = 'onDidFinishRenderingFrame';
660
+ break;
661
+ case MapboxGL.EventTypes.DidFinishRenderingFrameFully:
662
+ propName = 'onDidFinishRenderingFrameFully';
663
+ break;
664
+ case MapboxGL.EventTypes.WillStartRenderingMap:
665
+ propName = 'onWillStartRenderingMap';
666
+ break;
667
+ case MapboxGL.EventTypes.DidFinishRenderingMap:
668
+ propName = 'onDidFinishRenderingMap';
669
+ break;
670
+ case MapboxGL.EventTypes.DidFinishRenderingMapFully:
671
+ propName = 'onDidFinishRenderingMapFully';
672
+ break;
673
+ case MapboxGL.EventTypes.DidFinishLoadingStyle:
674
+ propName = 'onDidFinishLoadingStyle';
675
+ break;
676
+ default:
677
+ console.warn('Unhandled event callback type', type);
678
+ }
679
+
680
+ if (propName.length) {
681
+ this._handleOnChange(propName, payload);
682
+ }
683
+ }
684
+
685
+ _onLayout(e) {
686
+ this.setState({
687
+ isReady: true,
688
+ width: e.nativeEvent.layout.width,
689
+ height: e.nativeEvent.layout.height,
690
+ });
691
+ }
692
+
693
+ _handleOnChange(propName, payload) {
694
+ if (isFunction(this.props[propName])) {
695
+ this.props[propName](payload);
696
+ }
697
+ }
698
+
699
+ _getCenterCoordinate() {
700
+ if (!this.props.centerCoordinate) {
701
+ return;
702
+ }
703
+ return toJSONString(makePoint(this.props.centerCoordinate));
704
+ }
705
+
706
+ _getVisibleCoordinateBounds() {
707
+ if (!this.props.visibleCoordinateBounds) {
708
+ return;
709
+ }
710
+ return toJSONString(
711
+ makeLatLngBounds(
712
+ this.props.visibleCoordinateBounds[0],
713
+ this.props.visibleCoordinateBounds[1],
714
+ ),
715
+ );
716
+ }
717
+
718
+ _getContentInset() {
719
+ if (!this.props.contentInset) {
720
+ return;
721
+ }
722
+
723
+ if (!Array.isArray(this.props.contentInset)) {
724
+ return [this.props.contentInset];
725
+ }
726
+
727
+ return this.props.contentInset;
728
+ }
729
+
730
+ _setNativeRef(nativeRef) {
731
+ this._nativeRef = nativeRef;
732
+ super._runPendingNativeCommands(nativeRef);
733
+ }
734
+
735
+ setNativeProps(props) {
736
+ if (this._nativeRef) {
737
+ this._nativeRef.setNativeProps(props);
738
+ }
739
+ }
740
+
741
+ _setStyleURL(props) {
742
+ // user set a styleURL, no need to alter props
743
+ if (props.styleURL) {
744
+ return;
745
+ }
746
+
747
+ // user set styleJSON pass it to styleURL
748
+ if (props.styleJSON && !props.styleURL) {
749
+ props.styleURL = props.styleJSON;
750
+ }
751
+
752
+ // user neither set styleJSON nor styleURL
753
+ // set defaultStyleUrl
754
+ if (!props.styleJSON || !props.styleURL) {
755
+ props.styleURL = defaultStyleURL;
756
+ }
757
+ }
758
+
759
+ render() {
760
+ const props = {
761
+ ...this.props,
762
+ contentInset: this._getContentInset(),
763
+ style: styles.matchParent,
764
+ };
765
+
766
+ this._setStyleURL(props);
767
+
768
+ const callbacks = {
769
+ ref: nativeRef => this._setNativeRef(nativeRef),
770
+ onPress: this._onPress,
771
+ onLongPress: this._onLongPress,
772
+ onMapChange: this._onChange,
773
+ onAndroidCallback: isAndroid() ? this._onAndroidCallback : undefined,
774
+ };
775
+
776
+ let mapView = null;
777
+ if (isAndroid() && !this.props.surfaceView && this.state.isReady) {
778
+ mapView = (
779
+ <RCTMGLAndroidTextureMapView {...props} {...callbacks}>
780
+ {this.props.children}
781
+ </RCTMGLAndroidTextureMapView>
782
+ );
783
+ } else if (this.state.isReady) {
784
+ mapView = (
785
+ <RCTMGLMapView {...props} {...callbacks}>
786
+ {this.props.children}
787
+ </RCTMGLMapView>
788
+ );
789
+ }
790
+
791
+ return (
792
+ <View
793
+ onLayout={this._onLayout}
794
+ style={this.props.style}
795
+ testID={mapView ? null : this.props.testID}>
796
+ {mapView}
797
+ </View>
798
+ );
799
+ }
800
+ }
801
+
802
+ const RCTMGLMapView = requireNativeComponent(NATIVE_MODULE_NAME, MapView, {
803
+ nativeOnly: {onMapChange: true, onAndroidCallback: true},
804
+ });
805
+
806
+ let RCTMGLAndroidTextureMapView;
807
+ if (isAndroid()) {
808
+ RCTMGLAndroidTextureMapView = requireNativeComponent(
809
+ ANDROID_TEXTURE_NATIVE_MODULE_NAME,
810
+ MapView,
811
+ {
812
+ nativeOnly: {onMapChange: true, onAndroidCallback: true},
813
+ },
814
+ );
815
+ }
816
+
817
+ export default MapView;