@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,88 @@
1
+ package com.mapbox.rctmgl.components.annotation;
2
+
3
+ import androidx.annotation.Nullable;
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.common.MapBuilder;
9
+ import com.facebook.react.uimanager.ThemedReactContext;
10
+ import com.facebook.react.uimanager.annotations.ReactProp;
11
+ import com.mapbox.rctmgl.components.AbstractEventEmitter;
12
+ import com.mapbox.rctmgl.events.constants.EventKeys;
13
+ import com.mapbox.rctmgl.utils.GeoJSONUtils;
14
+
15
+ import java.util.Map;
16
+
17
+ /**
18
+ * Created by nickitaliano on 9/27/17.
19
+ */
20
+
21
+ public class RCTMGLPointAnnotationManager extends AbstractEventEmitter<RCTMGLPointAnnotation> {
22
+ public static final String REACT_CLASS = "RCTMGLPointAnnotation";
23
+
24
+ public RCTMGLPointAnnotationManager(ReactApplicationContext reactApplicationContext) {
25
+ super(reactApplicationContext);
26
+ }
27
+
28
+ @Override
29
+ public Map<String, String> customEvents() {
30
+ return MapBuilder.<String, String>builder()
31
+ .put(EventKeys.POINT_ANNOTATION_SELECTED, "onMapboxPointAnnotationSelected")
32
+ .put(EventKeys.POINT_ANNOTATION_DESELECTED, "onMapboxPointAnnotationDeselected")
33
+ .put(EventKeys.POINT_ANNOTATION_DRAG_START, "onMapboxPointAnnotationDragStart")
34
+ .put(EventKeys.POINT_ANNOTATION_DRAG, "onMapboxPointAnnotationDrag")
35
+ .put(EventKeys.POINT_ANNOTATION_DRAG_END, "onMapboxPointAnnotationDragEnd")
36
+ .build();
37
+ }
38
+
39
+ //region React Methods
40
+ public static final int METHOD_REFRESH = 2;
41
+
42
+ @Nullable
43
+ @Override
44
+ public Map<String, Integer> getCommandsMap() {
45
+ return MapBuilder.<String, Integer>builder()
46
+ .put("refresh", METHOD_REFRESH)
47
+ .build();
48
+ }
49
+
50
+ @Override
51
+ public String getName() {
52
+ return REACT_CLASS;
53
+ }
54
+
55
+ @Override
56
+ protected RCTMGLPointAnnotation createViewInstance(ThemedReactContext reactContext) {
57
+ return new RCTMGLPointAnnotation(reactContext, this);
58
+ }
59
+
60
+ @ReactProp(name="id")
61
+ public void setId(RCTMGLPointAnnotation annotation, String id) {
62
+ annotation.setID(id);
63
+ }
64
+
65
+ @ReactProp(name="coordinate")
66
+ public void setCoordinate(RCTMGLPointAnnotation annotation, String geoJSONStr) {
67
+ annotation.setCoordinate(GeoJSONUtils.toPointGeometry(geoJSONStr));
68
+ }
69
+
70
+ @ReactProp(name="anchor")
71
+ public void setAnchor(RCTMGLPointAnnotation annotation, ReadableMap map) {
72
+ annotation.setAnchor((float) map.getDouble("x"), (float) map.getDouble("y"));
73
+ }
74
+
75
+ @ReactProp(name="draggable")
76
+ public void setDraggable(RCTMGLPointAnnotation annotation, Boolean draggable) {
77
+ annotation.setDraggable(draggable);
78
+ }
79
+
80
+ @Override
81
+ public void receiveCommand(RCTMGLPointAnnotation annotation, int commandID, @Nullable ReadableArray args) {
82
+ switch (commandID) {
83
+ case METHOD_REFRESH:
84
+ annotation.refresh();
85
+ break;
86
+ }
87
+ }
88
+ }
@@ -0,0 +1,249 @@
1
+ package com.mapbox.rctmgl.components.camera;
2
+
3
+ import android.content.Context;
4
+ import androidx.annotation.NonNull;
5
+ import android.util.DisplayMetrics;
6
+
7
+ import com.facebook.react.bridge.ReadableMap;
8
+ import com.mapbox.geojson.FeatureCollection;
9
+ import com.mapbox.geojson.Point;
10
+ import com.mapbox.mapboxsdk.camera.CameraPosition;
11
+ import com.mapbox.mapboxsdk.camera.CameraUpdate;
12
+ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory;
13
+ import com.mapbox.mapboxsdk.geometry.LatLng;
14
+ import com.mapbox.mapboxsdk.geometry.LatLngBounds;
15
+ import com.mapbox.mapboxsdk.maps.MapboxMap;
16
+ import com.mapbox.rctmgl.components.camera.constants.CameraMode;
17
+ import com.mapbox.rctmgl.utils.GeoJSONUtils;
18
+
19
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
20
+
21
+ /**
22
+ * Created by nickitaliano on 9/5/17.
23
+ */
24
+
25
+ public class CameraStop {
26
+ private Double mBearing;
27
+ private Double mTilt;
28
+ private Double mZoom;
29
+ private LatLng mLatLng;
30
+
31
+ private LatLngBounds mBounds;
32
+ private int mPaddingLeft = 0;
33
+ private int mPaddingRight = 0;
34
+ private int mPaddingBottom = 0;
35
+ private int mPaddingTop = 0;
36
+
37
+ private int mMode = CameraMode.EASE;
38
+ private int mDuration = 2000;
39
+ private MapboxMap.CancelableCallback mCallback;
40
+
41
+ public CameraStop() {
42
+ }
43
+
44
+ public void setBearing(double bearing) {
45
+ mBearing = bearing;
46
+ }
47
+
48
+ public void setTilt(double tilt) {
49
+ mTilt = tilt;
50
+ }
51
+
52
+ public void setZoom(double zoom) {
53
+ mZoom = zoom;
54
+ }
55
+
56
+ public void setLatLng(LatLng latLng) {
57
+ mLatLng = latLng;
58
+ }
59
+
60
+ public void setDuration(int duration) {
61
+ mDuration = duration;
62
+ }
63
+
64
+ public void setCallback(MapboxMap.CancelableCallback callback) {
65
+ mCallback = callback;
66
+ }
67
+
68
+ public void setBounds(LatLngBounds bounds) {
69
+ mBounds = bounds;
70
+ }
71
+
72
+ public void setPadding(int paddingLeft, int paddingRight, int paddingTop, int paddingBottom) {
73
+ mPaddingLeft = paddingLeft;
74
+ mPaddingRight = paddingRight;
75
+ mPaddingTop = paddingTop;
76
+ mPaddingBottom = paddingBottom;
77
+ }
78
+
79
+ public void setMode(@CameraMode.Mode int mode) {
80
+ mMode = mode;
81
+ }
82
+
83
+ public CameraUpdateItem toCameraUpdate(RCTMGLMapView mapView) {
84
+ MapboxMap map = mapView.getMapboxMap();
85
+ CameraPosition currentCamera = map.getCameraPosition();
86
+ CameraPosition.Builder builder = new CameraPosition.Builder(currentCamera);
87
+
88
+ // Adding map padding to the camera padding which is the same behavior as
89
+ // mapbox native does on iOS
90
+ double[] contentInset = mapView.getContentInset();
91
+
92
+ int paddingLeft = Double.valueOf(contentInset[0] + mPaddingLeft).intValue();
93
+ int paddingTop = Double.valueOf(contentInset[1] + mPaddingTop).intValue();
94
+ int paddingRight = Double.valueOf(contentInset[2] + mPaddingRight).intValue();
95
+ int paddingBottom = Double.valueOf(contentInset[3] + mPaddingBottom).intValue();
96
+
97
+ int[] cameraPadding = {paddingLeft, paddingTop, paddingRight, paddingBottom};
98
+ int[] cameraPaddingClipped = clippedPadding(cameraPadding, mapView);
99
+
100
+ boolean hasSetZoom = false;
101
+
102
+ if (mLatLng != null) {
103
+ builder.target(mLatLng);
104
+ builder.padding(
105
+ cameraPaddingClipped[0],
106
+ cameraPaddingClipped[1],
107
+ cameraPaddingClipped[2],
108
+ cameraPaddingClipped[3]
109
+ );
110
+ } else if (mBounds != null) {
111
+ double tilt = mTilt != null ? mTilt : currentCamera.tilt;
112
+ double bearing = mBearing != null ? mBearing : currentCamera.bearing;
113
+
114
+ CameraPosition boundsCamera = map.getCameraForLatLngBounds(mBounds, cameraPaddingClipped, bearing, tilt);
115
+ if (boundsCamera != null) {
116
+ builder.target(boundsCamera.target);
117
+ builder.zoom(boundsCamera.zoom);
118
+ builder.padding(boundsCamera.padding);
119
+ } else {
120
+ CameraUpdate update = CameraUpdateFactory.newLatLngBounds(
121
+ mBounds,
122
+ cameraPaddingClipped[0],
123
+ cameraPaddingClipped[1],
124
+ cameraPaddingClipped[2],
125
+ cameraPaddingClipped[3]
126
+ );
127
+ return new CameraUpdateItem(map, update, mDuration, mCallback, mMode);
128
+ }
129
+ hasSetZoom = true;
130
+ }
131
+
132
+ if (mBearing != null) {
133
+ builder.bearing(mBearing);
134
+ }
135
+
136
+ if (mTilt != null) {
137
+ builder.tilt(mTilt);
138
+ }
139
+
140
+ if (mZoom != null && !hasSetZoom) {
141
+ builder.zoom(mZoom);
142
+ }
143
+
144
+ return new CameraUpdateItem(map, CameraUpdateFactory.newCameraPosition(builder.build()), mDuration, mCallback, mMode);
145
+ }
146
+
147
+ public static CameraStop fromReadableMap(Context context, @NonNull ReadableMap readableMap, MapboxMap.CancelableCallback callback) {
148
+ CameraStop stop = new CameraStop();
149
+
150
+ if (readableMap.hasKey("pitch")) {
151
+ stop.setTilt(readableMap.getDouble("pitch"));
152
+ }
153
+
154
+ if (readableMap.hasKey("heading")) {
155
+ stop.setBearing(readableMap.getDouble("heading"));
156
+ }
157
+
158
+ int paddingTop = getPaddingByKey(readableMap, "paddingTop");
159
+ int paddingRight = getPaddingByKey(readableMap, "paddingRight");
160
+ int paddingBottom = getPaddingByKey(readableMap, "paddingBottom");
161
+ int paddingLeft = getPaddingByKey(readableMap, "paddingLeft");
162
+
163
+ // scale padding by pixel ratio
164
+ DisplayMetrics metrics = context.getResources().getDisplayMetrics();
165
+ paddingTop = Float.valueOf(paddingTop * metrics.scaledDensity).intValue();
166
+ paddingRight = Float.valueOf(paddingRight * metrics.scaledDensity).intValue();
167
+ paddingBottom = Float.valueOf(paddingBottom * metrics.scaledDensity).intValue();
168
+ paddingLeft = Float.valueOf(paddingLeft * metrics.scaledDensity).intValue();
169
+
170
+ stop.setPadding(
171
+ paddingLeft,
172
+ paddingRight,
173
+ paddingTop,
174
+ paddingBottom
175
+ );
176
+
177
+ if (readableMap.hasKey("centerCoordinate")) {
178
+ Point target = GeoJSONUtils.toPointGeometry(readableMap.getString("centerCoordinate"));
179
+ stop.setLatLng(GeoJSONUtils.toLatLng(target));
180
+ }
181
+
182
+ if (readableMap.hasKey("zoom")) {
183
+ stop.setZoom(readableMap.getDouble("zoom"));
184
+ }
185
+
186
+ if (readableMap.hasKey("duration")) {
187
+ stop.setDuration(readableMap.getInt("duration"));
188
+ }
189
+
190
+ if (readableMap.hasKey("bounds")) {
191
+ FeatureCollection collection = FeatureCollection.fromJson(readableMap.getString("bounds"));
192
+ stop.setBounds(GeoJSONUtils.toLatLngBounds(collection));
193
+ }
194
+
195
+ if (readableMap.hasKey("mode")) {
196
+ switch (readableMap.getInt("mode")) {
197
+ case CameraMode.FLIGHT:
198
+ stop.setMode(CameraMode.FLIGHT);
199
+ break;
200
+ case CameraMode.LINEAR:
201
+ stop.setMode(CameraMode.LINEAR);
202
+ break;
203
+ case CameraMode.NONE:
204
+ stop.setMode(CameraMode.NONE);
205
+ break;
206
+ default:
207
+ stop.setMode(CameraMode.EASE);
208
+ }
209
+ }
210
+
211
+ stop.setCallback(callback);
212
+ return stop;
213
+ }
214
+
215
+ private static int[] clippedPadding(int[] padding, RCTMGLMapView mapView) {
216
+ int mapHeight = mapView.getHeight();
217
+ int mapWidth = mapView.getWidth();
218
+
219
+ int left = padding[0];
220
+ int top = padding[1];
221
+ int right = padding[2];
222
+ int bottom = padding[3];
223
+
224
+ int resultLeft = left;
225
+ int resultTop = top;
226
+ int resultRight = right;
227
+ int resultBottom = bottom;
228
+
229
+ if (top + bottom >= mapHeight) {
230
+ double totalPadding = top + bottom;
231
+ double extra = totalPadding - mapHeight + 1.0; // add 1 to compensate for floating point math
232
+ resultTop -= (top * extra) / totalPadding;
233
+ resultBottom -= (bottom * extra) / totalPadding;
234
+ }
235
+
236
+ if (left + right >= mapWidth) {
237
+ double totalPadding = left + right;
238
+ double extra = totalPadding - mapWidth + 1.0; // add 1 to compensate for floating point math
239
+ resultLeft -= (left * extra) / totalPadding;
240
+ resultRight -= (right * extra) / totalPadding;
241
+ }
242
+
243
+ return new int[] {resultLeft, resultTop, resultRight, resultBottom};
244
+ }
245
+
246
+ private static int getPaddingByKey(ReadableMap map, String key) {
247
+ return map.hasKey(key) ? map.getInt(key) : 0;
248
+ }
249
+ }
@@ -0,0 +1,125 @@
1
+ package com.mapbox.rctmgl.components.camera;
2
+
3
+ import androidx.annotation.NonNull;
4
+
5
+ import com.mapbox.mapboxsdk.camera.CameraUpdate;
6
+ import com.mapbox.mapboxsdk.constants.MapboxConstants;
7
+ import com.mapbox.mapboxsdk.maps.MapboxMap;
8
+ import com.mapbox.rctmgl.components.camera.constants.CameraMode;
9
+
10
+ import java.lang.ref.WeakReference;
11
+ import java.util.concurrent.Callable;
12
+ import java.util.concurrent.ExecutionException;
13
+ import java.util.concurrent.ExecutorService;
14
+ import java.util.concurrent.Future;
15
+ import java.util.concurrent.FutureTask;
16
+ import java.util.concurrent.RunnableFuture;
17
+ import java.util.concurrent.TimeUnit;
18
+ import java.util.concurrent.TimeoutException;
19
+
20
+ /**
21
+ * Created by nickitaliano on 9/5/17.
22
+ */
23
+
24
+ public class CameraUpdateItem implements RunnableFuture<Void> {
25
+ private int mDuration;
26
+ private MapboxMap.CancelableCallback mCallback;
27
+ private CameraUpdate mCameraUpdate;
28
+ private int mCameraMode;
29
+
30
+ private boolean isCameraActionFinished;
31
+ private boolean isCameraActionCancelled;
32
+
33
+ private WeakReference<MapboxMap> mMap;
34
+
35
+ public CameraUpdateItem(MapboxMap map, CameraUpdate update, int duration, MapboxMap.CancelableCallback callback, @CameraMode.Mode int cameraMode) {
36
+ mCameraUpdate = update;
37
+ mDuration = duration;
38
+ mCallback = callback;
39
+ mCameraMode = cameraMode;
40
+ mMap = new WeakReference<>(map);
41
+ }
42
+
43
+ public int getDuration() {
44
+ return mDuration;
45
+ }
46
+
47
+ @Override
48
+ public void run() {
49
+ final MapboxMap.CancelableCallback callback = new MapboxMap.CancelableCallback() {
50
+ @Override
51
+ public void onCancel() {
52
+ handleCallbackResponse(true);
53
+ }
54
+
55
+ @Override
56
+ public void onFinish() {
57
+ handleCallbackResponse(false);
58
+ }
59
+ };
60
+
61
+ MapboxMap map = mMap.get();
62
+ if (map == null) {
63
+ isCameraActionCancelled = true;
64
+ return;
65
+ }
66
+
67
+ // animateCamera / easeCamera only allows positive duration
68
+ if (mDuration == 0 || mCameraMode == CameraMode.NONE) {
69
+ map.moveCamera(mCameraUpdate, callback);
70
+ return;
71
+ }
72
+
73
+ // On iOS a duration of -1 means default or dynamic duration (based on flight-path length)
74
+ // On Android we can fallback to Mapbox's default duration as there is no such API
75
+ int duration = mDuration < 0 ? MapboxConstants.ANIMATION_DURATION : mDuration;
76
+
77
+ if (mCameraMode == CameraMode.FLIGHT) {
78
+ map.animateCamera(mCameraUpdate, duration, callback);
79
+ } else if (mCameraMode == CameraMode.LINEAR) {
80
+ map.easeCamera(mCameraUpdate, duration, false, callback);
81
+ } else if (mCameraMode == CameraMode.EASE) {
82
+ map.easeCamera(mCameraUpdate, duration, true, callback);
83
+ }
84
+ }
85
+
86
+ @Override
87
+ public boolean cancel(boolean mayInterruptIfRunning) {
88
+ return false;
89
+ }
90
+
91
+ @Override
92
+ public boolean isCancelled() {
93
+ return isCameraActionCancelled;
94
+ }
95
+
96
+ @Override
97
+ public boolean isDone() {
98
+ return isCameraActionFinished;
99
+ }
100
+
101
+ @Override
102
+ public Void get() throws InterruptedException, ExecutionException {
103
+ return null;
104
+ }
105
+
106
+ @Override
107
+ public Void get(long timeout, @NonNull TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
108
+ return null;
109
+ }
110
+
111
+ private void handleCallbackResponse(boolean isCancel) {
112
+ if (mCallback == null) {
113
+ return;
114
+ }
115
+
116
+ isCameraActionCancelled = isCancel;
117
+ isCameraActionFinished = !isCancel;
118
+
119
+ if (isCancel) {
120
+ mCallback.onCancel();
121
+ } else {
122
+ mCallback.onFinish();
123
+ }
124
+ }
125
+ }
@@ -0,0 +1,73 @@
1
+ package com.mapbox.rctmgl.components.camera;
2
+
3
+ import com.mapbox.mapboxsdk.maps.MapboxMap;
4
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
5
+
6
+ import java.util.ArrayList;
7
+ import java.util.Iterator;
8
+ import java.util.LinkedList;
9
+ import java.util.List;
10
+ import java.util.Queue;
11
+ import java.util.concurrent.ExecutorService;
12
+ import java.util.concurrent.Executors;
13
+ import java.util.concurrent.FutureTask;
14
+
15
+
16
+ /**
17
+ * Created by nickitaliano on 9/5/17.
18
+ */
19
+
20
+ public class CameraUpdateQueue {
21
+ private Queue<CameraStop> mQueue;
22
+
23
+ private OnCompleteAllListener mCompleteListener;
24
+
25
+ public interface OnCompleteAllListener {
26
+ void onCompleteAll();
27
+ }
28
+
29
+ public CameraUpdateQueue() {
30
+ mQueue = new LinkedList<>();
31
+ }
32
+
33
+ public void offer(CameraStop item) {
34
+ mQueue.offer(item);
35
+ }
36
+
37
+ public int size() {
38
+ return mQueue.size();
39
+ }
40
+
41
+ public boolean isEmpty() {
42
+ return mQueue.isEmpty();
43
+ }
44
+
45
+ public void flush() {
46
+ while (mQueue.size() > 0) {
47
+ mQueue.remove();
48
+ }
49
+ mQueue = new LinkedList<>();
50
+ }
51
+
52
+ public void setOnCompleteAllListener(OnCompleteAllListener listener) {
53
+ mCompleteListener = listener;
54
+ }
55
+
56
+ public void execute(RCTMGLMapView map) {
57
+ if (mQueue.isEmpty()) {
58
+ if (mCompleteListener != null) {
59
+ mCompleteListener.onCompleteAll();
60
+ }
61
+ return;
62
+ }
63
+
64
+ final CameraStop stop = mQueue.poll();
65
+ if (stop == null) {
66
+ return;
67
+ }
68
+
69
+ CameraUpdateItem item = stop.toCameraUpdate(map);
70
+ item.run();
71
+ execute(map);
72
+ }
73
+ }