@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,234 @@
1
+ package com.mapbox.rctmgl.components.images;
2
+
3
+ import android.content.Context;
4
+ import android.graphics.Bitmap;
5
+ import android.graphics.drawable.BitmapDrawable;
6
+
7
+ import androidx.annotation.NonNull;
8
+ import androidx.annotation.Nullable;
9
+ import androidx.core.content.res.ResourcesCompat;
10
+
11
+ import com.mapbox.mapboxsdk.maps.MapboxMap;
12
+ import com.mapbox.mapboxsdk.maps.Style;
13
+ import com.mapbox.mapboxsdk.utils.BitmapUtils;
14
+ import com.mapbox.rctmgl.R;
15
+ import com.mapbox.rctmgl.components.AbstractMapFeature;
16
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
17
+ import com.mapbox.rctmgl.events.ImageMissingEvent;
18
+ import com.mapbox.rctmgl.utils.DownloadMapImageTask;
19
+ import com.mapbox.rctmgl.utils.ImageEntry;
20
+
21
+ import java.util.AbstractMap;
22
+ import java.util.ArrayList;
23
+ import java.util.Collections;
24
+ import java.util.HashMap;
25
+ import java.util.HashSet;
26
+ import java.util.List;
27
+ import java.util.Map;
28
+ import java.util.Set;
29
+ import java.util.stream.Collectors;
30
+
31
+ public class RCTMGLImages extends AbstractMapFeature {
32
+ private static Bitmap mImagePlaceholder;
33
+ Set<String> mCurrentImages;
34
+ private Map<String, ImageEntry> mImages;
35
+ private Map<String, BitmapDrawable> mNativeImages;
36
+ private RCTMGLImagesManager mManager;
37
+ private boolean mSendMissingImageEvents = false;
38
+ private MapboxMap mMap;
39
+
40
+ protected String mID;
41
+
42
+ public String getID() {
43
+ return mID;
44
+ }
45
+
46
+ public void setID(String id) {
47
+ mID = id;
48
+ }
49
+
50
+ public RCTMGLImages(Context context, RCTMGLImagesManager manager) {
51
+ super(context);
52
+ mManager = manager;
53
+ mCurrentImages = new HashSet<>();
54
+ mImages = new HashMap<>();
55
+ mNativeImages = new HashMap();
56
+ if (mImagePlaceholder == null) {
57
+ mImagePlaceholder = BitmapUtils.getBitmapFromDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.empty_drawable, null));
58
+ }
59
+ }
60
+
61
+ public void setImages(List<Map.Entry<String, ImageEntry>> images) {
62
+ Map<String, ImageEntry> newImages = new HashMap<>();
63
+ for (Map.Entry<String, ImageEntry> entry : images) {
64
+ String key = entry.getKey();
65
+ ImageEntry value = entry.getValue();
66
+ ImageEntry oldValue = mImages.put(key, value);
67
+ if (oldValue == null) {
68
+ newImages.put(key, value);
69
+ }
70
+ }
71
+ if (mMap != null && mMap.getStyle() != null) {
72
+ addImagesToStyle(newImages, mMap);
73
+ }
74
+ }
75
+
76
+ public void setNativeImages(List<Map.Entry<String, BitmapDrawable>> nativeImages) {
77
+ Map<String, BitmapDrawable> newImages = new HashMap<>();
78
+ for (Map.Entry<String, BitmapDrawable> entry : nativeImages) {
79
+ String key = entry.getKey();
80
+ BitmapDrawable value = entry.getValue();
81
+ BitmapDrawable oldValue = mNativeImages.put(key, value);
82
+ if (oldValue == null) {
83
+ newImages.put(key, value);
84
+ }
85
+ }
86
+ if (mMap != null && mMap.getStyle() != null) {
87
+ addNativeImagesToStyle(newImages, mMap);
88
+ }
89
+ }
90
+
91
+ public void setHasOnImageMissing(boolean value) {
92
+ mSendMissingImageEvents = value;
93
+ }
94
+
95
+ @Override
96
+ public void removeFromMap(RCTMGLMapView mapView) {
97
+ removeImages(mapView);
98
+ mMap = null;
99
+ mNativeImages = new HashMap<>();
100
+ mImages = new HashMap<>();
101
+ mCurrentImages = new HashSet<>();
102
+ }
103
+
104
+ private void removeImages(RCTMGLMapView mapView) {
105
+ mapView.getStyle(new Style.OnStyleLoaded() {
106
+ @Override
107
+ public void onStyleLoaded(@NonNull Style style) {
108
+ if (hasImages()) {
109
+ for (Map.Entry<String, ImageEntry> image : mImages.entrySet()) {
110
+ style.removeImage(image.getKey());
111
+ }
112
+ }
113
+
114
+ if (hasNativeImages()) {
115
+ for (Map.Entry<String, BitmapDrawable> image : mNativeImages.entrySet()) {
116
+ style.removeImage(image.getKey());
117
+ }
118
+ }
119
+ }});
120
+ }
121
+
122
+ private boolean hasImages() {
123
+ return mImages != null && mImages.size() > 0;
124
+ }
125
+
126
+ private boolean hasNativeImages() {
127
+ return mNativeImages != null && mNativeImages.size() > 0;
128
+ }
129
+
130
+
131
+ static <K, V> List<Map.Entry<K,V>> entry(K k, V v) {
132
+ return Collections.singletonList((Map.Entry<K,V>)new AbstractMap.SimpleEntry<K, V>(k, v));
133
+ }
134
+
135
+ public boolean addMissingImageToStyle(@NonNull String id, @NonNull MapboxMap map) {
136
+ if (mNativeImages != null) {
137
+ BitmapDrawable drawable = mNativeImages.get(id);
138
+ if (drawable != null) {
139
+ addNativeImages(RCTMGLImages.entry(id, drawable), map);
140
+ return true;
141
+ }
142
+ }
143
+ if (mImages != null) {
144
+ ImageEntry entry = mImages.get(id);
145
+ if (entry != null) {
146
+ addRemoteImages(RCTMGLImages.entry(id, entry), map);
147
+ return true;
148
+ }
149
+ }
150
+
151
+ return false;
152
+ }
153
+
154
+ public void addImagesToStyle(Map<String, ImageEntry> images, @NonNull MapboxMap map) {
155
+ if (images != null) {
156
+ addRemoteImages(new ArrayList<>(images.entrySet()), map);
157
+ }
158
+ }
159
+
160
+ public void addNativeImagesToStyle(Map<String, BitmapDrawable> images, @NonNull MapboxMap map) {
161
+ if (images != null) {
162
+ addNativeImages(new ArrayList<>(images.entrySet()), map);
163
+ }
164
+ }
165
+
166
+ public void sendImageMissingEvent(@NonNull String id, @NonNull MapboxMap map) {
167
+ if (mSendMissingImageEvents) {
168
+ mManager.handleEvent(ImageMissingEvent.makeImageMissingEvent(this, id));
169
+ }
170
+ }
171
+
172
+ private boolean hasImage(String imageId, @NonNull MapboxMap map) {
173
+ Style style = map.getStyle();
174
+ return style != null && style.getImage(imageId) != null;
175
+ }
176
+
177
+ @Override
178
+ public void addToMap(final RCTMGLMapView mapView) {
179
+ // Wait for style before adding the source to the map
180
+ // only then we can pre-load required images / placeholders into the style
181
+ // before we add the ShapeSource to the map
182
+ mapView.getStyle(new Style.OnStyleLoaded() {
183
+ @Override
184
+ public void onStyleLoaded(@NonNull Style style) {
185
+ MapboxMap map = mapView.getMapboxMap();
186
+ mMap = map;
187
+ addNativeImagesToStyle(mNativeImages, map);
188
+ addImagesToStyle(mImages, map);
189
+ // super.addToMap(mapView);
190
+ }
191
+ });
192
+ }
193
+
194
+ private void addNativeImages(@Nullable List<Map.Entry<String, BitmapDrawable>> imageEntries, @NonNull MapboxMap map) {
195
+ Style style = map.getStyle();
196
+ if (style == null || imageEntries == null) return;
197
+
198
+ for (Map.Entry<String, BitmapDrawable> imageEntry : imageEntries) {
199
+ if (!hasImage(imageEntry.getKey(), map)) {
200
+ style.addImage(imageEntry.getKey(), imageEntry.getValue());
201
+ mCurrentImages.add(imageEntry.getKey());
202
+ }
203
+ }
204
+ }
205
+
206
+ private void addRemoteImages(@Nullable List<Map.Entry<String, ImageEntry>> imageEntries, @NonNull MapboxMap map) {
207
+ Style style = map.getStyle();
208
+ if (style == null || imageEntries == null) return;
209
+
210
+ List<Map.Entry<String, ImageEntry>> missingImages = new ArrayList<>();
211
+
212
+ // Add image placeholder for images that are not yet available in the style. This way
213
+ // we can load the images asynchronously and add the ShapeSource to the map without delay.
214
+ // The same is required when this ShapeSource is updated with new/added images and the
215
+ // data references them. In which case addMissingImageToStyle will take care of loading
216
+ // them in a similar way.
217
+ //
218
+ // See also: https://github.com/mapbox/mapbox-gl-native/pull/14253#issuecomment-478827792
219
+ for (Map.Entry<String, ImageEntry> imageEntry : imageEntries) {
220
+ if (!hasImage(imageEntry.getKey(), map)) {
221
+ style.addImage(imageEntry.getKey(), mImagePlaceholder);
222
+ missingImages.add(imageEntry);
223
+ mCurrentImages.add(imageEntry.getKey());
224
+ }
225
+ }
226
+
227
+ if (missingImages.size() > 0) {
228
+ DownloadMapImageTask task = new DownloadMapImageTask(getContext(), map, null);
229
+ Map.Entry[] params = missingImages.toArray(new Map.Entry[missingImages.size()]);
230
+ //noinspection unchecked
231
+ task.execute(params);
232
+ }
233
+ }
234
+ }
@@ -0,0 +1,103 @@
1
+ package com.mapbox.rctmgl.components.images;
2
+
3
+ import android.graphics.drawable.BitmapDrawable;
4
+
5
+ import com.facebook.react.bridge.ReactApplicationContext;
6
+ import com.facebook.react.bridge.ReadableArray;
7
+ import com.facebook.react.bridge.ReadableMap;
8
+ import com.facebook.react.bridge.ReadableMapKeySetIterator;
9
+ import com.facebook.react.bridge.ReadableType;
10
+ import com.facebook.react.common.MapBuilder;
11
+ import com.facebook.react.uimanager.ThemedReactContext;
12
+ import com.facebook.react.uimanager.ViewGroupManager;
13
+ import com.facebook.react.uimanager.annotations.ReactProp;
14
+ import com.mapbox.rctmgl.components.AbstractEventEmitter;
15
+ import com.mapbox.rctmgl.components.AbstractMapFeature;
16
+ import com.mapbox.rctmgl.components.styles.sources.RCTMGLShapeSource;
17
+ import com.mapbox.rctmgl.events.constants.EventKeys;
18
+ import com.mapbox.rctmgl.utils.ImageEntry;
19
+ import com.mapbox.rctmgl.utils.ResourceUtils;
20
+
21
+ import java.util.AbstractMap;
22
+ import java.util.ArrayList;
23
+ import java.util.List;
24
+ import java.util.Map;
25
+
26
+
27
+ public class RCTMGLImagesManager extends AbstractEventEmitter<RCTMGLImages> {
28
+ public static final String REACT_CLASS = "RCTMGLImages";
29
+
30
+ private ReactApplicationContext mContext;
31
+
32
+ @Override
33
+ public String getName() {
34
+ return "RCTMGLImages";
35
+ }
36
+
37
+
38
+ public RCTMGLImagesManager(ReactApplicationContext context) {
39
+ super(context);
40
+ mContext = context;
41
+ }
42
+
43
+ @Override
44
+ public RCTMGLImages createViewInstance(ThemedReactContext context) {
45
+ return new RCTMGLImages(context, this);
46
+ }
47
+
48
+ @ReactProp(name = "id")
49
+ public void setId(RCTMGLImages source, String id) {
50
+ source.setID(id);
51
+ }
52
+
53
+ @ReactProp(name = "images")
54
+ public void setImages(RCTMGLImages images, ReadableMap map) {
55
+ List<Map.Entry<String, ImageEntry>> imagesList = new ArrayList<>();
56
+
57
+ ReadableMapKeySetIterator iterator = map.keySetIterator();
58
+ while (iterator.hasNextKey()) {
59
+ String imageName = iterator.nextKey();
60
+ ImageEntry imageEntry = null;
61
+ if (map.getType(imageName) == ReadableType.Map) {
62
+ ReadableMap imageMap = map.getMap(imageName);
63
+ String uri = imageMap.getString("uri");
64
+ boolean hasScale = imageMap.hasKey("scale") && imageMap.getType("scale") == ReadableType.Number;
65
+ double scale = hasScale ? imageMap.getDouble("scale") : ImageEntry.defaultScale;
66
+ imageEntry = new ImageEntry(uri, scale);
67
+ } else {
68
+ imageEntry = new ImageEntry(map.getString(imageName));
69
+ }
70
+ imagesList.add(new AbstractMap.SimpleEntry<String, ImageEntry>(imageName, imageEntry));
71
+ }
72
+
73
+ images.setImages(imagesList);
74
+ }
75
+
76
+ @ReactProp(name = "hasOnImageMissing")
77
+ public void setHasOnImageMissing(RCTMGLImages images, Boolean value) {
78
+ images.setHasOnImageMissing(value);
79
+ }
80
+
81
+ @ReactProp(name = "nativeImages")
82
+ public void setNativeImages(RCTMGLImages images, ReadableArray arr) {
83
+ List<Map.Entry<String, BitmapDrawable>> resources = new ArrayList<>();
84
+
85
+ for (int i = 0; i < arr.size(); i++) {
86
+ String resourceName = arr.getString(i);
87
+ BitmapDrawable drawable = (BitmapDrawable) ResourceUtils.getDrawableByName(mContext, resourceName);
88
+
89
+ if (drawable != null) {
90
+ resources.add(new AbstractMap.SimpleEntry<String, BitmapDrawable>(resourceName, drawable));
91
+ }
92
+ }
93
+
94
+ images.setNativeImages(resources);
95
+ }
96
+
97
+ @Override
98
+ public Map<String, String> customEvents() {
99
+ return MapBuilder.<String, String>builder()
100
+ .put(EventKeys.IMAGES_MISSING, "onImageMissing")
101
+ .build();
102
+ }
103
+ }
@@ -0,0 +1,149 @@
1
+ package com.mapbox.rctmgl.components.location;
2
+
3
+ import android.annotation.SuppressLint;
4
+ import android.content.Context;
5
+
6
+ import com.mapbox.mapboxsdk.location.LocationComponent;
7
+ import com.mapbox.mapboxsdk.location.LocationComponentActivationOptions;
8
+ import com.mapbox.mapboxsdk.location.LocationComponentOptions;
9
+ import com.mapbox.mapboxsdk.location.OnCameraTrackingChangedListener;
10
+ import com.mapbox.mapboxsdk.location.modes.CameraMode;
11
+ import com.mapbox.mapboxsdk.location.modes.RenderMode;
12
+ import com.mapbox.mapboxsdk.maps.MapboxMap;
13
+ import com.mapbox.mapboxsdk.maps.Style;
14
+ import com.mapbox.rctmgl.R;
15
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
16
+ import com.mapbox.rctmgl.location.LocationManager;
17
+
18
+ import androidx.annotation.NonNull;
19
+
20
+ /**
21
+ * The LocationComponent on android implements both location tracking and display of user's current location.
22
+ * LocationComponentManager attempts to separate that, so that Camera can ask for location tracking independent of display of user current location.
23
+ * And NativeUserLocation can ask for display of user's current location - independent of Camera's user tracking.
24
+ */
25
+ public class LocationComponentManager {
26
+ private RCTMGLMapView mMapView = null;
27
+ private MapboxMap mMap = null;
28
+
29
+ private LocationManager mLocationManager = null;
30
+ private LocationComponent mLocationComponent = null;
31
+ private Context mContext = null;
32
+
33
+ private @RenderMode.Mode int mRenderMode = RenderMode.COMPASS;
34
+
35
+ public LocationComponentManager(RCTMGLMapView rctmglMapView, Context context) {
36
+ mMapView = rctmglMapView;
37
+ mMap = mMapView.getMapboxMap();
38
+ mContext = context;
39
+
40
+ mLocationManager = LocationManager.getInstance(context);
41
+ }
42
+
43
+ private boolean mShowUserLocation = false;
44
+
45
+ private boolean mFollowUserLocation = false;
46
+
47
+ private boolean mShowingUserLocation = false;
48
+
49
+ public void showUserLocation(boolean showUserLocation) {
50
+ mShowUserLocation = showUserLocation;
51
+ stateChanged();
52
+ }
53
+
54
+ public void setFollowUserLocation(boolean followUserLocation) {
55
+ mFollowUserLocation = followUserLocation;
56
+ stateChanged();
57
+ }
58
+
59
+ public void setCameraMode(@CameraMode.Mode int cameraMode) {
60
+ mLocationComponent.setCameraMode(cameraMode);
61
+ }
62
+
63
+ public void setRenderMode(@RenderMode.Mode int renderMode) {
64
+ mRenderMode = renderMode;
65
+ if (mShowingUserLocation) {
66
+ mLocationComponent.setRenderMode(renderMode);
67
+ }
68
+ }
69
+
70
+ public void addOnCameraTrackingChangedListener(OnCameraTrackingChangedListener onCameraTrackingChangedListener) {
71
+ mLocationComponent.addOnCameraTrackingChangedListener(onCameraTrackingChangedListener);
72
+ }
73
+
74
+ @SuppressLint("MissingPermission")
75
+ private void stateChanged() {
76
+ mLocationComponent.setLocationComponentEnabled((mFollowUserLocation || mShowUserLocation));
77
+
78
+ if (mShowingUserLocation != mShowUserLocation) {
79
+ updateShowUserLocation(mShowUserLocation);
80
+ }
81
+
82
+ if (mFollowUserLocation) {
83
+ if (!mShowUserLocation) {
84
+ mLocationComponent.setRenderMode(RenderMode.GPS);
85
+ } else {
86
+ mLocationComponent.setRenderMode(mRenderMode);
87
+ }
88
+ mLocationComponent.onStart();
89
+ } else {
90
+ mLocationComponent.setCameraMode(CameraMode.NONE);
91
+ }
92
+ }
93
+
94
+ public boolean hasLocationComponent() {
95
+ return (mLocationComponent != null);
96
+ }
97
+
98
+ public void update(@NonNull Style style) {
99
+ update(mShowUserLocation, style);
100
+ }
101
+
102
+ public void update(boolean displayUserLocation, @NonNull Style style) {
103
+ Integer tintColor = mMapView.getTintColor();
104
+
105
+ if (mLocationComponent == null || tintColor != null ) {
106
+ mLocationComponent = mMap.getLocationComponent();
107
+
108
+ LocationComponentActivationOptions locationComponentActivationOptions = LocationComponentActivationOptions
109
+ .builder(mContext, style)
110
+ .locationComponentOptions(options(displayUserLocation))
111
+ .build();
112
+ mLocationComponent.activateLocationComponent(locationComponentActivationOptions);
113
+ mLocationComponent.setLocationEngine(mLocationManager.getEngine());
114
+ mShowingUserLocation = displayUserLocation;
115
+ }
116
+
117
+ updateShowUserLocation(displayUserLocation);
118
+ }
119
+
120
+ private void updateShowUserLocation(boolean displayUserLocation) {
121
+ if (mShowingUserLocation != displayUserLocation) {
122
+ mLocationComponent.applyStyle(options(displayUserLocation));
123
+ mShowingUserLocation = displayUserLocation;
124
+ }
125
+ }
126
+
127
+ LocationComponentOptions options(boolean displayUserLocation) {
128
+ LocationComponentOptions.Builder builder = LocationComponentOptions.builder(mContext);
129
+ Integer tintColor = mMapView.getTintColor();
130
+ if (!displayUserLocation) {
131
+ builder = builder
132
+ .padding(mMap.getPadding())
133
+ .backgroundDrawable(R.drawable.empty)
134
+ .backgroundDrawableStale(R.drawable.empty)
135
+ .bearingDrawable(R.drawable.empty)
136
+ .foregroundDrawable(R.drawable.empty)
137
+ .foregroundDrawableStale(R.drawable.empty)
138
+ .gpsDrawable(R.drawable.empty)
139
+ .accuracyAlpha(0.0f);
140
+ } else if (tintColor != null) {
141
+ builder = builder
142
+ .enableStaleState(false)
143
+ .bearingTintColor(tintColor)
144
+ .foregroundTintColor(tintColor)
145
+ .accuracyColor(tintColor);
146
+ }
147
+ return builder.build();
148
+ }
149
+ }
@@ -0,0 +1,66 @@
1
+ package com.mapbox.rctmgl.components.location;
2
+
3
+ import android.annotation.SuppressLint;
4
+ import android.content.Context;
5
+ import androidx.annotation.NonNull;
6
+
7
+ import com.mapbox.mapboxsdk.location.permissions.PermissionsManager;
8
+ import com.mapbox.mapboxsdk.location.modes.RenderMode;
9
+ import com.mapbox.mapboxsdk.maps.MapboxMap;
10
+ import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
11
+ import com.mapbox.mapboxsdk.maps.Style;
12
+ import com.mapbox.rctmgl.components.AbstractMapFeature;
13
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
14
+
15
+ public class RCTMGLNativeUserLocation extends AbstractMapFeature implements OnMapReadyCallback, Style.OnStyleLoaded {
16
+ private boolean mEnabled = true;
17
+ private MapboxMap mMap;
18
+ private RCTMGLMapView mMapView;
19
+ private @RenderMode.Mode int mRenderMode = RenderMode.COMPASS;
20
+
21
+ public RCTMGLNativeUserLocation(Context context) {
22
+ super(context);
23
+ }
24
+
25
+ @Override
26
+ public void addToMap(RCTMGLMapView mapView) {
27
+ mEnabled = true;
28
+ mMapView = mapView;
29
+ mapView.getMapAsync(this);
30
+ setRenderMode(mRenderMode);
31
+ }
32
+
33
+ @Override
34
+ public void removeFromMap(RCTMGLMapView mapView) {
35
+ mEnabled = false;
36
+ if (mMap != null) mMap.getStyle(this);
37
+ }
38
+
39
+ @SuppressLint("MissingPermission")
40
+ @Override
41
+ public void onMapReady(@NonNull MapboxMap mapboxMap) {
42
+ mMap = mapboxMap;
43
+ mapboxMap.getStyle(this);
44
+ }
45
+
46
+ @SuppressLint("MissingPermission")
47
+ @Override
48
+ public void onStyleLoaded(@NonNull Style style) {
49
+ Context context = getContext();
50
+ if (!PermissionsManager.areLocationPermissionsGranted(context)) {
51
+ return;
52
+ }
53
+
54
+ LocationComponentManager locationComponent = mMapView.getLocationComponentManager();
55
+ locationComponent.update(style);
56
+ locationComponent.showUserLocation(mEnabled);
57
+ }
58
+
59
+ public void setRenderMode(@RenderMode.Mode int renderMode) {
60
+ mRenderMode = renderMode;
61
+ if (mMapView != null) {
62
+ LocationComponentManager locationComponent = mMapView.getLocationComponentManager();
63
+ locationComponent.setRenderMode(renderMode);
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,35 @@
1
+ package com.mapbox.rctmgl.components.location;
2
+
3
+ import com.facebook.react.uimanager.ThemedReactContext;
4
+ import com.facebook.react.uimanager.ViewGroupManager;
5
+ import com.facebook.react.uimanager.annotations.ReactProp;
6
+ import com.mapbox.mapboxsdk.location.modes.RenderMode;
7
+
8
+ import javax.annotation.Nonnull;
9
+
10
+ public class RCTMGLNativeUserLocationManager extends ViewGroupManager<RCTMGLNativeUserLocation> {
11
+ public static final String REACT_CLASS = "RCTMGLNativeUserLocation";
12
+
13
+ @Nonnull
14
+ @Override
15
+ public String getName() {
16
+ return REACT_CLASS;
17
+ }
18
+
19
+ @ReactProp(name="androidRenderMode")
20
+ public void setAndroidRenderMode(RCTMGLNativeUserLocation userLocation, String mode) {
21
+ if ("compass".equalsIgnoreCase(mode)) {
22
+ userLocation.setRenderMode(RenderMode.COMPASS);
23
+ } else if ("gps".equalsIgnoreCase(mode)) {
24
+ userLocation.setRenderMode(RenderMode.GPS);
25
+ } else {
26
+ userLocation.setRenderMode(RenderMode.NORMAL);
27
+ }
28
+ }
29
+
30
+ @Nonnull
31
+ @Override
32
+ protected RCTMGLNativeUserLocation createViewInstance(@Nonnull ThemedReactContext reactContext) {
33
+ return new RCTMGLNativeUserLocation(reactContext);
34
+ }
35
+ }
@@ -0,0 +1,59 @@
1
+ package com.mapbox.rctmgl.components.mapview;
2
+
3
+ import com.mapbox.mapboxsdk.style.layers.CircleLayer;
4
+ import com.mapbox.mapboxsdk.style.layers.FillExtrusionLayer;
5
+ import com.mapbox.mapboxsdk.style.layers.FillLayer;
6
+ import com.mapbox.mapboxsdk.style.layers.HeatmapLayer;
7
+ import com.mapbox.mapboxsdk.style.layers.HillshadeLayer;
8
+ import com.mapbox.mapboxsdk.style.layers.Layer;
9
+ import com.mapbox.mapboxsdk.style.layers.LineLayer;
10
+ import com.mapbox.mapboxsdk.style.layers.RasterLayer;
11
+ import com.mapbox.mapboxsdk.style.layers.SymbolLayer;
12
+
13
+ import javax.annotation.Nullable;
14
+
15
+ class LayerSourceInfo {
16
+ final String sourceId;
17
+
18
+ @Nullable
19
+ final String sourceLayerId;
20
+
21
+ LayerSourceInfo(Layer layer) {
22
+ if (layer instanceof CircleLayer) {
23
+ CircleLayer symbolLayer = (CircleLayer) layer;
24
+ sourceId = symbolLayer.getSourceId();
25
+ sourceLayerId = symbolLayer.getSourceLayer();
26
+ } else if (layer instanceof FillExtrusionLayer) {
27
+ FillExtrusionLayer fillExtrusionLayer = (FillExtrusionLayer)layer;
28
+ sourceId = fillExtrusionLayer.getSourceId();
29
+ sourceLayerId = fillExtrusionLayer.getSourceLayer();
30
+ } else if (layer instanceof FillLayer) {
31
+ FillLayer fillLayer = (FillLayer)layer;
32
+ sourceId = fillLayer.getSourceId();
33
+ sourceLayerId = fillLayer.getSourceLayer();
34
+ } else if (layer instanceof HeatmapLayer) {
35
+ HeatmapLayer heatmapLayer = (HeatmapLayer)layer;
36
+ sourceId = heatmapLayer.getSourceId();
37
+ sourceLayerId = heatmapLayer.getSourceLayer();
38
+ } else if (layer instanceof HillshadeLayer) {
39
+ HillshadeLayer hillshadeLayer = (HillshadeLayer)layer;
40
+ sourceId = hillshadeLayer.getSourceId();
41
+ sourceLayerId = null;
42
+ } else if (layer instanceof LineLayer) {
43
+ LineLayer lineLayer = (LineLayer)layer;
44
+ sourceId = lineLayer.getSourceId();
45
+ sourceLayerId = lineLayer.getSourceLayer();
46
+ } else if (layer instanceof RasterLayer) {
47
+ RasterLayer rasterLayer = (RasterLayer) layer;
48
+ sourceId = rasterLayer.getSourceId();
49
+ sourceLayerId = null;
50
+ } else if (layer instanceof SymbolLayer) {
51
+ SymbolLayer symbolLayer = (SymbolLayer)layer;
52
+ sourceId = symbolLayer.getSourceId();
53
+ sourceLayerId = symbolLayer.getSourceLayer();
54
+ } else {
55
+ sourceId = "";
56
+ sourceLayerId = null;
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,16 @@
1
+ package com.mapbox.rctmgl.components.mapview;
2
+
3
+ import android.content.Context;
4
+ import com.mapbox.mapboxsdk.maps.MapboxMapOptions;
5
+ /**
6
+ * Created by hernanmateo on 12/11/18.
7
+ */
8
+
9
+ @SuppressWarnings({"MissingPermission"})
10
+ public class RCTMGLAndroidTextureMapView extends RCTMGLMapView {
11
+ public static final String LOG_TAG = "RCTMGLAndroidTextureMapView";
12
+
13
+ public RCTMGLAndroidTextureMapView(Context context, RCTMGLAndroidTextureMapViewManager manager, MapboxMapOptions options) {
14
+ super(context, manager, options);
15
+ }
16
+ }