@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,108 @@
1
+ package com.mapbox.rctmgl.components.styles;
2
+
3
+ import android.util.Log;
4
+
5
+ import com.facebook.react.bridge.Dynamic;
6
+ import com.facebook.react.bridge.DynamicFromMap;
7
+ import com.facebook.react.bridge.NoSuchKeyException;
8
+ import com.facebook.react.bridge.ReadableArray;
9
+ import com.facebook.react.bridge.ReadableMap;
10
+ import com.facebook.react.bridge.ReadableMapKeySetIterator;
11
+ import com.facebook.react.bridge.ReadableNativeArray;
12
+ import com.facebook.react.bridge.ReadableType;
13
+ import com.mapbox.mapboxsdk.style.expressions.Expression.Stop;
14
+ import com.mapbox.mapboxsdk.style.layers.PropertyValue;
15
+
16
+ import java.text.NumberFormat;
17
+ import java.text.ParseException;
18
+ import java.util.ArrayList;
19
+ import java.util.Collections;
20
+ import java.util.HashMap;
21
+ import java.util.List;
22
+ import java.util.Map;
23
+
24
+ /**
25
+ * Created by nickitaliano on 9/12/17.
26
+ */
27
+
28
+ public abstract class RCTMGLStyleFunctionParser<T, V> {
29
+ private RCTMGLStyleValue mStyleValue;
30
+
31
+ public RCTMGLStyleFunctionParser(RCTMGLStyleValue styleValue) {
32
+ mStyleValue = styleValue;
33
+ }
34
+
35
+ public List<StopConfig> getRawStops() {
36
+ ReadableArray readableArrayRawStops = mStyleValue.getArray("stops");
37
+
38
+ List<StopConfig> rawStops = new ArrayList<>();
39
+
40
+ for (int i = 0; i < readableArrayRawStops.size(); i++) {
41
+ ReadableArray rawStop = readableArrayRawStops.getArray(i);
42
+
43
+ ReadableMap jsStopKey = rawStop.getMap(0);
44
+ ReadableMap jsStopValue = rawStop.getMap(1);
45
+ RCTMGLStyleValue innerStyleValue = new RCTMGLStyleValue(jsStopValue);
46
+
47
+ Object propertyValue = null;
48
+ try {
49
+ Dynamic dynamicPropertyValue = innerStyleValue.getDynamic("propertyValue");
50
+ ReadableType type = dynamicPropertyValue.getType();
51
+
52
+ if (type.equals(ReadableType.Number)) {
53
+ propertyValue = dynamicPropertyValue.asDouble();
54
+ } else if (type.equals(ReadableType.Boolean)){
55
+ propertyValue = dynamicPropertyValue.asBoolean();
56
+ } else {
57
+ propertyValue = dynamicPropertyValue.asString();
58
+ }
59
+ } catch (NoSuchKeyException e) {
60
+ // not a zoom-property value
61
+ }
62
+
63
+ StopConfig config;
64
+ if (propertyValue != null) {
65
+ config = new StopConfig(getStopKey(jsStopKey), getRawStopValue(innerStyleValue), propertyValue);
66
+ } else {
67
+ config = new StopConfig(getStopKey(jsStopKey), getRawStopValue(innerStyleValue));
68
+ }
69
+
70
+ rawStops.add(config);
71
+ }
72
+
73
+ return rawStops;
74
+ }
75
+
76
+ protected abstract T getRawStopValue (RCTMGLStyleValue styleValue);
77
+ protected abstract PropertyValue<V> getStopValue(T value);
78
+
79
+ private Object getStopKey(ReadableMap jsStopKey) {
80
+ String payloadKey = "value";
81
+ String type = jsStopKey.getString("type");
82
+
83
+ switch (type) {
84
+ case "number":
85
+ return jsStopKey.getDouble(payloadKey);
86
+ case "boolean":
87
+ return jsStopKey.getBoolean(payloadKey);
88
+ default:
89
+ return jsStopKey.getString(payloadKey);
90
+ }
91
+ }
92
+
93
+ private class StopConfig {
94
+ Object propertyValue;
95
+ T value;
96
+ Object key;
97
+
98
+ StopConfig(Object key, T value) {
99
+ this(key, value, null);
100
+ }
101
+
102
+ StopConfig(Object key, T value, Object propertyValue) {
103
+ this.key = key;
104
+ this.value = value;
105
+ this.propertyValue = propertyValue;
106
+ }
107
+ }
108
+ }
@@ -0,0 +1,212 @@
1
+ package com.mapbox.rctmgl.components.styles;
2
+
3
+ import androidx.annotation.NonNull;
4
+
5
+ import com.facebook.react.bridge.Dynamic;
6
+ import com.facebook.react.bridge.ReadableArray;
7
+ import com.facebook.react.bridge.ReadableMap;
8
+ import com.facebook.react.bridge.ReadableType;
9
+ import com.facebook.react.bridge.WritableNativeMap;
10
+ import com.google.gson.JsonArray;
11
+ import com.mapbox.mapboxsdk.style.expressions.Expression;
12
+ import com.mapbox.mapboxsdk.style.layers.TransitionOptions;
13
+ import com.mapbox.rctmgl.utils.ConvertUtils;
14
+ import com.mapbox.rctmgl.utils.ExpressionParser;
15
+ import com.mapbox.rctmgl.utils.ImageEntry;
16
+
17
+ /**
18
+ * Created by nickitaliano on 9/12/17.
19
+ */
20
+
21
+ public class RCTMGLStyleValue {
22
+
23
+ private String mType;
24
+ private boolean isExpression;
25
+ private Expression mExpression;
26
+ private ReadableMap mPayload;
27
+
28
+ private String imageURI = "";
29
+ private boolean isAddImage;
30
+ private Double imageScale = ImageEntry.defaultScale;
31
+
32
+ public static final int InterpolationModeExponential = 100;
33
+ public static final int InterpolationModeInterval = 101;
34
+ public static final int InterpolationModeCategorical = 102;
35
+ public static final int InterpolationModeIdentity = 103;
36
+
37
+ public RCTMGLStyleValue(@NonNull ReadableMap config) {
38
+ mType = config.getString("styletype");
39
+ mPayload = config.getMap("stylevalue");
40
+
41
+ if ("image".equals(mType)) {
42
+ imageScale = ImageEntry.defaultScale;
43
+ if ("hashmap".equals(mPayload.getString("type"))) {
44
+ ReadableMap map = getMap();
45
+ imageURI = map.getMap("uri").getString("value");
46
+ if (map.getMap("scale") != null) {
47
+ imageScale = map.getMap("scale").getDouble("value");
48
+ }
49
+ } else if ("string".equals(mPayload.getString("type"))) {
50
+ String value = mPayload.getString("value");
51
+ if (value.contains("://")) {
52
+ imageURI = value;
53
+ } else {
54
+ imageURI = null;
55
+ isExpression = true;
56
+ mExpression = Expression.literal(value);
57
+ }
58
+ } else {
59
+ imageURI = null;
60
+ }
61
+ isAddImage = imageURI != null;
62
+ if (isAddImage) { return; }
63
+ }
64
+
65
+ Dynamic dynamic = mPayload.getDynamic("value");
66
+ if (dynamic.getType().equals(ReadableType.Array)) {
67
+ ReadableArray array = dynamic.asArray();
68
+ if (array.size() > 0 && mPayload.getString("type").equals("array")) {
69
+ ReadableMap map = array.getMap(0);
70
+ if (map != null && map.getString("type").equals("string")) {
71
+ isExpression = true;
72
+ mExpression = ExpressionParser.fromTyped(mPayload);
73
+ }
74
+ }
75
+ }
76
+ }
77
+
78
+ private boolean isTokenizedValue(String value) {
79
+ return (value.startsWith("{") && value.endsWith("}"));
80
+ }
81
+
82
+ public String getType() {
83
+ return mType;
84
+ }
85
+
86
+ public boolean isFunction() {
87
+ return mType.equals("function");
88
+ }
89
+
90
+ public int getInt(String key) {
91
+ return mPayload.getInt(key);
92
+ }
93
+
94
+ public String getString(String key) {
95
+ return mPayload.getString(key);
96
+ }
97
+
98
+ public Double getDouble(String key) {
99
+ return mPayload.getDouble(key);
100
+ }
101
+
102
+ public Float getFloat(String key) {
103
+ return getDouble(key).floatValue();
104
+ }
105
+
106
+ public Dynamic getDynamic(String key) {
107
+ return mPayload.getDynamic(key);
108
+ }
109
+
110
+ public ReadableArray getArray(String key) {
111
+ return mPayload.getArray(key);
112
+ }
113
+
114
+ public Boolean getBoolean(String key) {
115
+ return mPayload.getBoolean(key);
116
+ }
117
+
118
+ public Float[] getFloatArray(String key) {
119
+ ReadableArray arr = getArray(key);
120
+
121
+ Float[] floatArr = new Float[arr.size()];
122
+ for (int i = 0; i < arr.size(); i++) {
123
+ ReadableMap item = arr.getMap(i);
124
+ floatArr[i] = (float) item.getDouble("value");
125
+ }
126
+
127
+ return floatArr;
128
+ }
129
+
130
+ public String[] getStringArray(String key) {
131
+ ReadableArray arr = getArray(key);
132
+
133
+ String[] stringArr = new String[arr.size()];
134
+ for (int i = 0; i < arr.size(); i++) {
135
+ ReadableMap item = arr.getMap(i);
136
+ stringArr[i] = item.getString("value");
137
+ }
138
+
139
+ return stringArr;
140
+ }
141
+
142
+ public ReadableMap getMap() {
143
+ if ("hashmap".equals(mPayload.getString("type"))) {
144
+ ReadableArray keyValues = mPayload.getArray("value");
145
+ WritableNativeMap result = new WritableNativeMap();
146
+ for (int i = 0; i < keyValues.size(); i++) {
147
+ ReadableArray keyValue = keyValues.getArray(i);
148
+ String stringKey = keyValue.getMap(0).getString("value");
149
+ WritableNativeMap value = new WritableNativeMap();
150
+ value.merge(keyValue.getMap(1));
151
+ result.putMap(stringKey, value);
152
+ }
153
+ return result;
154
+ }
155
+
156
+ return null;
157
+ }
158
+
159
+ public ReadableMap getMap(String _key) {
160
+ return getMap();
161
+ }
162
+
163
+ public Expression getExpression() {
164
+ return mExpression;
165
+ }
166
+
167
+ public boolean isExpression() {
168
+ return isExpression;
169
+ }
170
+
171
+ public boolean shouldAddImage() {
172
+ return isAddImage;
173
+ }
174
+
175
+ public Boolean isImageStringValue() {
176
+ return "string".equals(mPayload.getString("type"));
177
+ }
178
+
179
+ public String getImageStringValue() {
180
+ return mPayload.getString("value");
181
+ }
182
+
183
+ public String getImageURI() {
184
+ return imageURI;
185
+ }
186
+
187
+ public double getImageScale() {
188
+ return imageScale;
189
+ }
190
+
191
+ public TransitionOptions getTransition() {
192
+ if (!mType.equals("transition")) {
193
+ return null;
194
+ }
195
+ ReadableMap config = getMap(RCTMGLStyleFactory.VALUE_KEY);
196
+
197
+ boolean enablePlacementTransitions = true;
198
+ if (config.hasKey("enablePlacementTransitions")) {
199
+ enablePlacementTransitions = config.getMap("enablePlacementTransitions").getBoolean("value");
200
+ }
201
+ int duration = 300;
202
+ int delay = 0;
203
+ if (config.hasKey("duration") && ReadableType.Map.equals(config.getType("duration"))) {
204
+ duration = config.getMap("duration").getInt("value");
205
+ }
206
+ if (config.hasKey("delay") && ReadableType.Map.equals(config.getType("delay"))) {
207
+ delay = config.getMap("delay").getInt("value");
208
+ }
209
+
210
+ return new TransitionOptions(duration, delay, enablePlacementTransitions);
211
+ }
212
+ }
@@ -0,0 +1,287 @@
1
+ package com.mapbox.rctmgl.components.styles.layers;
2
+
3
+ import android.content.Context;
4
+
5
+ import com.facebook.react.bridge.ReadableArray;
6
+ import com.facebook.react.bridge.ReadableMap;
7
+ import com.facebook.common.logging.FLog;
8
+ import com.mapbox.mapboxsdk.location.LocationComponentConstants;
9
+ import com.mapbox.mapboxsdk.maps.MapboxMap;
10
+ import com.mapbox.mapboxsdk.maps.Style;
11
+ import com.mapbox.mapboxsdk.style.expressions.Expression;
12
+ import com.mapbox.mapboxsdk.style.layers.Layer;
13
+ import com.mapbox.mapboxsdk.style.layers.Property;
14
+ import com.mapbox.mapboxsdk.style.layers.PropertyFactory;
15
+ import com.mapbox.rctmgl.components.AbstractMapFeature;
16
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
17
+ import com.mapbox.rctmgl.utils.ExpressionParser;
18
+
19
+ import java.util.Arrays;
20
+ import java.util.HashSet;
21
+ import java.util.Set;
22
+
23
+ /**
24
+ * Created by nickitaliano on 9/7/17.
25
+ */
26
+
27
+ public abstract class RCTLayer<T extends Layer> extends AbstractMapFeature {
28
+ public static final String LOG_TAG = "RCTLayer";
29
+
30
+ protected String mID;
31
+ protected String mSourceID;
32
+ protected String mAboveLayerID;
33
+ protected String mBelowLayerID;
34
+
35
+ protected Integer mLayerIndex;
36
+ protected boolean mVisible;
37
+ protected Double mMinZoomLevel;
38
+ protected Double mMaxZoomLevel;
39
+ protected ReadableMap mReactStyle;
40
+ protected Expression mFilter;
41
+
42
+ protected MapboxMap mMap;
43
+ protected T mLayer;
44
+
45
+ protected Context mContext;
46
+ protected RCTMGLMapView mMapView;
47
+
48
+ protected boolean mHadFilter;
49
+
50
+ public RCTLayer(Context context) {
51
+ super(context);
52
+ mContext = context;
53
+ mHadFilter = false;
54
+ }
55
+
56
+ public String getID() {
57
+ return mID;
58
+ }
59
+
60
+ public void setID(String id) {
61
+ mID = id;
62
+ }
63
+
64
+ public void setSourceID(String sourceID) {
65
+ mSourceID = sourceID;
66
+ }
67
+
68
+ public void setAboveLayerID(String aboveLayerID) {
69
+ if (mAboveLayerID != null && mAboveLayerID.equals(aboveLayerID)) {
70
+ return;
71
+ }
72
+
73
+ mAboveLayerID = aboveLayerID;
74
+ if (mLayer != null) {
75
+ removeFromMap(mMapView);
76
+ addAbove(mAboveLayerID);
77
+ }
78
+ }
79
+
80
+ public void setBelowLayerID(String belowLayerID) {
81
+ if (mBelowLayerID != null && mBelowLayerID.equals(belowLayerID)) {
82
+ return;
83
+ }
84
+
85
+ mBelowLayerID = belowLayerID;
86
+ if (mLayer != null) {
87
+ removeFromMap(mMapView);
88
+ addBelow(mBelowLayerID);
89
+ }
90
+ }
91
+
92
+ public void setLayerIndex(int layerIndex) {
93
+ if (mLayerIndex != null && mLayerIndex == layerIndex) {
94
+ return;
95
+ }
96
+
97
+ mLayerIndex = layerIndex;
98
+ if (mLayer != null) {
99
+ removeFromMap(mMapView);
100
+ addAtIndex(mLayerIndex);
101
+ }
102
+ }
103
+
104
+ public void setVisible(boolean visible) {
105
+ mVisible = visible;
106
+
107
+ if (mLayer != null) {
108
+ String visibility = mVisible ? Property.VISIBLE : Property.NONE;
109
+ mLayer.setProperties(PropertyFactory.visibility(visibility));
110
+ }
111
+ }
112
+
113
+ public void setMinZoomLevel(double minZoomLevel) {
114
+ mMinZoomLevel = minZoomLevel;
115
+
116
+ if (mLayer != null) {
117
+ mLayer.setMinZoom((float) minZoomLevel);
118
+ }
119
+ }
120
+
121
+ public void setMaxZoomLevel(double maxZoomLevel) {
122
+ mMaxZoomLevel = maxZoomLevel;
123
+
124
+ if (mLayer != null) {
125
+ mLayer.setMaxZoom((float) maxZoomLevel);
126
+ }
127
+ }
128
+
129
+ public void setReactStyle(ReadableMap reactStyle) {
130
+ mReactStyle = reactStyle;
131
+
132
+ if (mLayer != null) {
133
+ addStyles();
134
+ }
135
+ }
136
+
137
+ public void setFilter(ReadableArray readableFilterArray) {
138
+ Expression filterExpression = ExpressionParser.from(readableFilterArray);
139
+
140
+ mFilter = filterExpression;
141
+
142
+ if (mLayer != null) {
143
+ if (mFilter != null) {
144
+ mHadFilter = true;
145
+ updateFilter(mFilter);
146
+ } else if (mHadFilter) {
147
+ updateFilter(Expression.literal(true));
148
+ }
149
+ }
150
+ }
151
+
152
+ public void add() {
153
+ if (!hasInitialized()) {
154
+ return;
155
+ }
156
+ if (getStyle() == null) return;
157
+
158
+ String userBackgroundID = LocationComponentConstants.BACKGROUND_LAYER;
159
+ Layer userLocationBackgroundLayer = getStyle().getLayer(userBackgroundID);
160
+
161
+ // place below user location layer
162
+ if (userLocationBackgroundLayer != null) {
163
+ getStyle().addLayerBelow(mLayer, userBackgroundID);
164
+ mMapView.layerAdded(mLayer);
165
+ return;
166
+ }
167
+
168
+ getStyle().addLayer(mLayer);
169
+ mMapView.layerAdded(mLayer);
170
+ }
171
+
172
+ public void addAbove(final String aboveLayerID) {
173
+ mMapView.waitForLayer(aboveLayerID, new RCTMGLMapView.FoundLayerCallback() {
174
+ public void found(Layer layer) {
175
+ if (!hasInitialized()) {
176
+ return;
177
+ }
178
+ if (getStyle() == null) return;
179
+ getStyle().addLayerAbove(mLayer, aboveLayerID);
180
+ mMapView.layerAdded(mLayer);
181
+ }
182
+ });
183
+ }
184
+
185
+ public void addBelow(final String belowLayerID) {
186
+ mMapView.waitForLayer(belowLayerID, new RCTMGLMapView.FoundLayerCallback() {
187
+ public void found(Layer layer) {
188
+ if (!hasInitialized()) {
189
+ return;
190
+ }
191
+ if (getStyle() == null) return;
192
+ getStyle().addLayerBelow(mLayer, belowLayerID);
193
+ mMapView.layerAdded(mLayer);
194
+ }
195
+ });
196
+ }
197
+
198
+ public void addAtIndex(int index) {
199
+ if (!hasInitialized()) {
200
+ return;
201
+ }
202
+ if (getStyle() == null) return;
203
+ int layerSize = getStyle().getLayers().size();
204
+ if (index >= layerSize) {
205
+ FLog.e(LOG_TAG, "Layer index is greater than number of layers on map. Layer inserted at end of layer stack.");
206
+ index = layerSize - 1;
207
+ }
208
+ getStyle().addLayerAt(mLayer, index);
209
+ mMapView.layerAdded(mLayer);
210
+ }
211
+
212
+ protected void insertLayer() {
213
+ if (getStyle() == null) return;
214
+ if (getStyle().getLayer(mID) != null) {
215
+ return; // prevent adding a layer twice
216
+ }
217
+
218
+ if (mAboveLayerID != null) {
219
+ addAbove(mAboveLayerID);
220
+ } else if (mBelowLayerID != null) {
221
+ addBelow(mBelowLayerID);
222
+ } else if (mLayerIndex != null) {
223
+ addAtIndex(mLayerIndex);
224
+ } else {
225
+ add();
226
+ }
227
+
228
+ setZoomBounds();
229
+ }
230
+
231
+ protected void setZoomBounds() {
232
+ if (mMaxZoomLevel != null) {
233
+ mLayer.setMaxZoom(mMaxZoomLevel.floatValue());
234
+ }
235
+
236
+ if (mMinZoomLevel != null) {
237
+ mLayer.setMinZoom(mMinZoomLevel.floatValue());
238
+ }
239
+ }
240
+
241
+ protected void updateFilter(Expression expression) {
242
+ // override if you want to update the filter
243
+ }
244
+
245
+ @Override
246
+ public void addToMap(RCTMGLMapView mapView) {
247
+ mMap = mapView.getMapboxMap();
248
+ mMapView = mapView;
249
+
250
+ if (getStyle() == null) return;
251
+
252
+ T existingLayer = getStyle().<T>getLayerAs(mID);
253
+ if (existingLayer != null) {
254
+ mLayer = existingLayer;
255
+ } else {
256
+ mLayer = makeLayer();
257
+ insertLayer();
258
+ }
259
+
260
+ addStyles();
261
+ if (mFilter != null) {
262
+ mHadFilter = true;
263
+ updateFilter(mFilter);
264
+ }
265
+ }
266
+
267
+ @Override
268
+ public void removeFromMap(RCTMGLMapView mapView) {
269
+ if (getStyle() != null) {
270
+ getStyle().removeLayer(mLayer);
271
+ }
272
+ }
273
+
274
+ private Style getStyle() {
275
+ if (mMap == null) {
276
+ return null;
277
+ }
278
+ return mMap.getStyle();
279
+ }
280
+
281
+ public abstract T makeLayer();
282
+ public abstract void addStyles();
283
+
284
+ private boolean hasInitialized() {
285
+ return mMap != null && mLayer != null;
286
+ }
287
+ }
@@ -0,0 +1,27 @@
1
+ package com.mapbox.rctmgl.components.styles.layers;
2
+
3
+ import android.content.Context;
4
+
5
+ import com.mapbox.mapboxsdk.style.layers.BackgroundLayer;
6
+ import com.mapbox.rctmgl.components.styles.RCTMGLStyle;
7
+ import com.mapbox.rctmgl.components.styles.RCTMGLStyleFactory;
8
+
9
+ /**
10
+ * Created by nickitaliano on 9/25/17.
11
+ */
12
+
13
+ public class RCTMGLBackgroundLayer extends RCTLayer<BackgroundLayer> {
14
+ public RCTMGLBackgroundLayer(Context context) {
15
+ super(context);
16
+ }
17
+
18
+ @Override
19
+ public BackgroundLayer makeLayer() {
20
+ return new BackgroundLayer(mID);
21
+ }
22
+
23
+ @Override
24
+ public void addStyles() {
25
+ RCTMGLStyleFactory.setBackgroundLayerStyle(mLayer, new RCTMGLStyle(getContext(), mReactStyle, mMap));
26
+ }
27
+ }
@@ -0,0 +1,64 @@
1
+ package com.mapbox.rctmgl.components.styles.layers;
2
+
3
+ import com.facebook.react.bridge.ReadableMap;
4
+ import com.facebook.react.uimanager.ThemedReactContext;
5
+ import com.facebook.react.uimanager.ViewGroupManager;
6
+ import com.facebook.react.uimanager.annotations.ReactProp;
7
+
8
+ /**
9
+ * Created by nickitaliano on 9/25/17.
10
+ */
11
+
12
+ public class RCTMGLBackgroundLayerManager extends ViewGroupManager<RCTMGLBackgroundLayer> {
13
+ public static final String REACT_CLASS = "RCTMGLBackgroundLayer";
14
+
15
+ @Override
16
+ public String getName() {
17
+ return REACT_CLASS;
18
+ }
19
+
20
+ @Override
21
+ protected RCTMGLBackgroundLayer createViewInstance(ThemedReactContext reactContext) {
22
+ return new RCTMGLBackgroundLayer(reactContext);
23
+ }
24
+
25
+ @ReactProp(name="id")
26
+ public void setId(RCTMGLBackgroundLayer layer, String id) {
27
+ layer.setID(id);
28
+ }
29
+
30
+ @ReactProp(name="sourceID")
31
+ public void setSourceID(RCTMGLBackgroundLayer layer, String sourceID) {
32
+ layer.setSourceID(sourceID);
33
+ }
34
+
35
+ @ReactProp(name="aboveLayerID")
36
+ public void setAboveLayerID(RCTMGLBackgroundLayer layer, String aboveLayerID) {
37
+ layer.setAboveLayerID(aboveLayerID);
38
+ }
39
+
40
+ @ReactProp(name="belowLayerID")
41
+ public void setBelowLayerID(RCTMGLBackgroundLayer layer, String belowLayerID) {
42
+ layer.setBelowLayerID(belowLayerID);
43
+ }
44
+
45
+ @ReactProp(name="layerIndex")
46
+ public void setLayerIndex(RCTMGLBackgroundLayer layer, int layerIndex){
47
+ layer.setLayerIndex(layerIndex);
48
+ }
49
+
50
+ @ReactProp(name="minZoomLevel")
51
+ public void setMinZoomLevel(RCTMGLBackgroundLayer layer, double minZoomLevel) {
52
+ layer.setMinZoomLevel(minZoomLevel);
53
+ }
54
+
55
+ @ReactProp(name="maxZoomLevel")
56
+ public void setMaxZoomLevel(RCTMGLBackgroundLayer layer, double maxZoomLevel) {
57
+ layer.setMaxZoomLevel(maxZoomLevel);
58
+ }
59
+
60
+ @ReactProp(name="reactStyle")
61
+ public void setReactStyle(RCTMGLBackgroundLayer layer, ReadableMap style) {
62
+ layer.setReactStyle(style);
63
+ }
64
+ }