@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,67 @@
1
+ package com.mapbox.rctmgl.components.annotation;
2
+
3
+ import androidx.annotation.NonNull;
4
+
5
+ import com.mapbox.mapboxsdk.maps.MapView;
6
+ import com.mapbox.mapboxsdk.maps.MapboxMap;
7
+
8
+ import java.util.ArrayList;
9
+ import java.util.List;
10
+
11
+ import java.lang.reflect.InvocationTargetException;
12
+
13
+ /**
14
+ * Subclass of MarkerViewManager implementing removeViews and restoreViews
15
+ */
16
+ public class MarkerViewManager extends com.mapbox.mapboxsdk.plugins.markerview.MarkerViewManager {
17
+ private final List<MarkerView> markers = new ArrayList<>();
18
+ private MapView mapView;
19
+ private java.lang.reflect.Method markerUpdate;
20
+
21
+ public MarkerViewManager(MapView mapView, MapboxMap mapboxMap) {
22
+ super(mapView, mapboxMap);
23
+ this.mapView = mapView;
24
+ // this.mapboxMap = mapboxMap;
25
+
26
+ try {
27
+ markerUpdate = MarkerView.class.getSuperclass().getDeclaredMethod("update");
28
+ markerUpdate.setAccessible(true);
29
+ }
30
+ catch (NoSuchMethodException e) {System.out.println(e.toString());}
31
+ }
32
+
33
+ public void addMarker(@NonNull MarkerView markerView) {
34
+ super.addMarker(markerView);
35
+ markers.add(markerView);
36
+ }
37
+
38
+ public void removeMarker(@NonNull MarkerView markerView) {
39
+ super.removeMarker(markerView);
40
+ markers.remove(markerView);
41
+ }
42
+
43
+ public void removeViews() {
44
+ for (MarkerView marker: markers) {
45
+ mapView.removeView(marker.getView());
46
+ }
47
+ }
48
+
49
+ public void restoreViews() {
50
+ for (MarkerView marker: markers) {
51
+ mapView.addView(marker.getView());
52
+ }
53
+ }
54
+
55
+ public void updateMarkers(){
56
+
57
+ try {
58
+ for( int i = 0; i < markers.size(); i++ ){
59
+ markerUpdate.invoke(markers.get(i));
60
+ }
61
+ }
62
+ catch (IllegalArgumentException e) { System.out.println(e.toString()); }
63
+ catch (IllegalAccessException e) { System.out.println(e.toString()); }
64
+ catch (InvocationTargetException e) { System.out.println(e.toString()); }
65
+ }
66
+
67
+ }
@@ -0,0 +1,15 @@
1
+ package com.mapbox.rctmgl.components.annotation;
2
+
3
+ import android.content.Context;
4
+
5
+ import com.facebook.react.views.view.ReactViewGroup;
6
+
7
+ /**
8
+ * Created by nickitaliano on 10/11/17.
9
+ */
10
+
11
+ public class RCTMGLCallout extends ReactViewGroup {
12
+ public RCTMGLCallout(Context context) {
13
+ super(context);
14
+ }
15
+ }
@@ -0,0 +1,22 @@
1
+ package com.mapbox.rctmgl.components.annotation;
2
+
3
+ import com.facebook.react.uimanager.ThemedReactContext;
4
+ import com.facebook.react.uimanager.ViewGroupManager;
5
+
6
+ /**
7
+ * Created by nickitaliano on 10/11/17.
8
+ */
9
+
10
+ public class RCTMGLCalloutManager extends ViewGroupManager<RCTMGLCallout> {
11
+ public static final String REACT_CLASS = "RCTMGLCallout";
12
+
13
+ @Override
14
+ public String getName() {
15
+ return REACT_CLASS;
16
+ }
17
+
18
+ @Override
19
+ protected RCTMGLCallout createViewInstance(ThemedReactContext reactContext) {
20
+ return new RCTMGLCallout(reactContext);
21
+ }
22
+ }
@@ -0,0 +1,112 @@
1
+ package com.mapbox.rctmgl.components.annotation;
2
+
3
+ import android.content.Context;
4
+ import android.graphics.PointF;
5
+ import android.view.View;
6
+
7
+ import androidx.annotation.NonNull;
8
+
9
+ import com.mapbox.geojson.Point;
10
+ import com.mapbox.mapboxsdk.maps.MapboxMap;
11
+ import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
12
+ import com.mapbox.rctmgl.components.AbstractMapFeature;
13
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
14
+ import com.mapbox.rctmgl.utils.GeoJSONUtils;
15
+
16
+ public class RCTMGLMarkerView extends AbstractMapFeature implements MarkerView.OnPositionUpdateListener, View.OnLayoutChangeListener {
17
+ private RCTMGLMarkerViewManager mManager;
18
+ private RCTMGLMapView mMapView;
19
+
20
+ private View mChildView;
21
+
22
+ private MarkerViewManager mMarkerViewManager;
23
+
24
+ private MarkerView mMarkerView;
25
+ private Point mCoordinate;
26
+ private Float[] mAnchor;
27
+
28
+
29
+ public RCTMGLMarkerView(Context context, RCTMGLMarkerViewManager manager) {
30
+ super(context);
31
+ mManager = manager;
32
+ }
33
+
34
+ @Override
35
+ public void addView(View childView, int childPosition) {
36
+ mChildView = childView;
37
+ }
38
+
39
+ public void setCoordinate(Point point) {
40
+ mCoordinate = point;
41
+
42
+ if (mMarkerView != null) {
43
+ mMarkerView.setLatLng(GeoJSONUtils.toLatLng(point));
44
+ }
45
+ }
46
+
47
+ public void setAnchor(float x, float y) {
48
+ mAnchor = new Float[]{x, y};
49
+ refresh();
50
+ }
51
+
52
+ public void refresh() {
53
+ // this will cause position to be recalculated
54
+ if (mMarkerView != null) {
55
+ mMarkerView.setLatLng(GeoJSONUtils.toLatLng(mCoordinate));
56
+ }
57
+ }
58
+
59
+ @Override
60
+ public void addToMap(RCTMGLMapView mapView) {
61
+ mMapView = mapView;
62
+
63
+ final RCTMGLMarkerView rctmglMarkerView = this;
64
+
65
+ mMapView.getMapAsync(
66
+ new OnMapReadyCallback() {
67
+ @Override
68
+ public void onMapReady(@NonNull MapboxMap mapboxMap) {
69
+ mMarkerViewManager = mMapView.getMarkerViewManager(mapboxMap);
70
+
71
+ if (mChildView != null) {
72
+ mMarkerView = new MarkerView(GeoJSONUtils.toLatLng(mCoordinate), mChildView);
73
+ mMarkerView.setOnPositionUpdateListener(rctmglMarkerView);
74
+ mChildView.addOnLayoutChangeListener(rctmglMarkerView);
75
+ mMarkerViewManager.addMarker(mMarkerView);
76
+ }
77
+ }
78
+ }
79
+ );
80
+ }
81
+
82
+ @Override
83
+ public PointF onUpdate(PointF pointF) {
84
+ if (mAnchor != null) {
85
+ return new PointF(
86
+ pointF.x - mChildView.getWidth() * mAnchor[0],
87
+ pointF.y - mChildView.getHeight() * mAnchor[1]
88
+ );
89
+ }
90
+ return pointF;
91
+ }
92
+
93
+ @Override
94
+ public void removeFromMap(RCTMGLMapView mapView) {
95
+ if (mMarkerView != null) {
96
+ mMarkerViewManager.removeMarker(mMarkerView);
97
+ mChildView.removeOnLayoutChangeListener(this);
98
+ mMarkerView.setOnPositionUpdateListener(null);
99
+ mMarkerView = null;
100
+ mMarkerViewManager = null;
101
+ }
102
+ }
103
+
104
+ @Override
105
+ public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop,
106
+ int oldRight, int oldBottom) {
107
+ if (left != oldLeft || right != oldRight || top != oldTop || bottom != oldBottom) {
108
+ refresh();
109
+ }
110
+ }
111
+ }
112
+
@@ -0,0 +1,45 @@
1
+ package com.mapbox.rctmgl.components.annotation;
2
+
3
+ import com.facebook.react.bridge.ReactApplicationContext;
4
+ import com.facebook.react.bridge.ReadableMap;
5
+ import com.facebook.react.common.MapBuilder;
6
+ import com.facebook.react.uimanager.ThemedReactContext;
7
+ import com.facebook.react.uimanager.annotations.ReactProp;
8
+ import com.mapbox.rctmgl.components.AbstractEventEmitter;
9
+ import com.mapbox.rctmgl.utils.GeoJSONUtils;
10
+
11
+ import java.util.Map;
12
+
13
+ public class RCTMGLMarkerViewManager extends AbstractEventEmitter<RCTMGLMarkerView> {
14
+ public static final String REACT_CLASS = "RCTMGLMarkerView";
15
+
16
+ public RCTMGLMarkerViewManager(ReactApplicationContext reactApplicationContext) {
17
+ super(reactApplicationContext);
18
+ }
19
+
20
+ @Override
21
+ public String getName() {
22
+ return REACT_CLASS;
23
+ }
24
+
25
+ @ReactProp(name="coordinate")
26
+ public void setCoordinate(RCTMGLMarkerView markerView, String geoJSONStr) {
27
+ markerView.setCoordinate(GeoJSONUtils.toPointGeometry(geoJSONStr));
28
+ }
29
+
30
+ @ReactProp(name="anchor")
31
+ public void setAnchor(RCTMGLMarkerView markerView, ReadableMap map) {
32
+ markerView.setAnchor((float) map.getDouble("x"), (float) map.getDouble("y"));
33
+ }
34
+
35
+ @Override
36
+ protected RCTMGLMarkerView createViewInstance(ThemedReactContext reactContext) {
37
+ return new RCTMGLMarkerView(reactContext, this);
38
+ }
39
+
40
+ @Override
41
+ public Map<String, String> customEvents() {
42
+ return MapBuilder.<String, String>builder()
43
+ .build();
44
+ }
45
+ }
@@ -0,0 +1,360 @@
1
+ package com.mapbox.rctmgl.components.annotation;
2
+
3
+ import android.content.Context;
4
+ import android.graphics.PointF;
5
+ import android.graphics.Bitmap;
6
+ import android.view.View;
7
+ import androidx.annotation.NonNull;
8
+
9
+ import com.mapbox.geojson.Point;
10
+ import com.mapbox.mapboxsdk.geometry.LatLng;
11
+ import com.mapbox.mapboxsdk.maps.Style;
12
+ import com.mapbox.mapboxsdk.plugins.annotation.Symbol;
13
+ import com.mapbox.mapboxsdk.plugins.annotation.SymbolManager;
14
+ import com.mapbox.mapboxsdk.plugins.annotation.SymbolOptions;
15
+ import com.mapbox.mapboxsdk.maps.MapboxMap;
16
+ import com.mapbox.rctmgl.components.AbstractMapFeature;
17
+ import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
18
+ import com.mapbox.rctmgl.events.PointAnnotationClickEvent;
19
+ import com.mapbox.rctmgl.events.PointAnnotationDragEvent;
20
+ import com.mapbox.rctmgl.events.constants.EventTypes;
21
+ import com.mapbox.rctmgl.utils.GeoJSONUtils;
22
+ import com.mapbox.rctmgl.utils.BitmapUtils;
23
+
24
+ public class RCTMGLPointAnnotation extends AbstractMapFeature implements View.OnLayoutChangeListener {
25
+ private Context mContext;
26
+ private RCTMGLPointAnnotationManager mManager;
27
+ private Symbol mAnnotation;
28
+ private MapboxMap mMap;
29
+ private RCTMGLMapView mMapView;
30
+
31
+ private boolean mHasChildren;
32
+
33
+ private Point mCoordinate;
34
+
35
+ private String mID;
36
+ private String mTitle;
37
+ private String mSnippet;
38
+
39
+ private Float[] mAnchor;
40
+ private boolean mIsSelected;
41
+ private boolean mDraggable;
42
+
43
+ private View mChildView;
44
+ private Bitmap mChildBitmap;
45
+ private String mChildBitmapId;
46
+
47
+ private View mCalloutView;
48
+ private Symbol mCalloutSymbol;
49
+ private Bitmap mCalloutBitmap;
50
+ private String mCalloutBitmapId;
51
+
52
+ private static final String MARKER_IMAGE_ID = "MARKER_IMAGE_ID";
53
+
54
+ public RCTMGLPointAnnotation(Context context, RCTMGLPointAnnotationManager manager) {
55
+ super(context);
56
+ mContext = context;
57
+ mManager = manager;
58
+ }
59
+
60
+ @Override
61
+ public void addView(View childView, int childPosition) {
62
+ if (childView instanceof RCTMGLCallout) {
63
+ mCalloutView = childView;
64
+ } else {
65
+ mChildView = childView;
66
+ }
67
+ childView.addOnLayoutChangeListener(this);
68
+ if (mMapView != null) {
69
+ mMapView.offscreenAnnotationViewContainer().addView(childView);
70
+ }
71
+ }
72
+
73
+ @Override
74
+ public void removeView(View childView) {
75
+ if (mChildView != null) {
76
+ mMap.getStyle(new Style.OnStyleLoaded() {
77
+ @Override
78
+ public void onStyleLoaded(@NonNull Style style) {
79
+ style.removeImage(mChildBitmapId);
80
+ mChildView = null;
81
+ mCalloutView = null;
82
+ mChildBitmap = null;
83
+ mChildBitmapId = null;
84
+ updateOptions();
85
+ }
86
+ });
87
+ }
88
+ if (mMapView != null) {
89
+ mMapView.offscreenAnnotationViewContainer().removeView(childView);
90
+ }
91
+ }
92
+
93
+ @Override
94
+ public void addToMap(RCTMGLMapView mapView) {
95
+ mMapView = mapView;
96
+ mMap = mapView.getMapboxMap();
97
+ makeMarker();
98
+
99
+ if (mChildView != null) {
100
+ if (!mChildView.isAttachedToWindow()) {
101
+ mMapView.offscreenAnnotationViewContainer().addView(mChildView);
102
+ }
103
+ addBitmapToStyle(mChildBitmap, mChildBitmapId);
104
+ updateOptions();
105
+ }
106
+ if (mCalloutView != null) {
107
+ if (!mCalloutView.isAttachedToWindow()) {
108
+ mMapView.offscreenAnnotationViewContainer().addView(mCalloutView);
109
+ }
110
+ addBitmapToStyle(mCalloutBitmap, mCalloutBitmapId);
111
+ }
112
+ }
113
+
114
+ @Override
115
+ public void removeFromMap(RCTMGLMapView mapView) {
116
+ RCTMGLMapView map = (mMapView != null) ? mMapView : mapView;
117
+ if (map == null) {
118
+ return;
119
+ }
120
+
121
+ if (mAnnotation != null) {
122
+ map.getSymbolManager().delete(mAnnotation);
123
+ }
124
+ if (mChildView != null) {
125
+ map.offscreenAnnotationViewContainer().removeView(mChildView);
126
+ }
127
+ if (mCalloutView != null) {
128
+ map.offscreenAnnotationViewContainer().removeView(mCalloutView);
129
+ }
130
+ }
131
+
132
+ @Override
133
+ public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop,
134
+ int oldRight, int oldBottom) {
135
+ if (left == 0 && top == 0 && right == 0 && bottom == 0) {
136
+ return;
137
+ }
138
+ if (left != oldLeft || right != oldRight || top != oldTop || bottom != oldBottom) {
139
+ refreshBitmap(v, left, top, right, bottom);
140
+ }
141
+ }
142
+
143
+ private void refreshBitmap(View v, int left, int top, int right, int bottom) {
144
+ Bitmap bitmap = BitmapUtils.viewToBitmap(v, left, top, right, bottom);
145
+ String bitmapId = Integer.toString(v.getId());
146
+ addBitmapToStyle(bitmap, bitmapId);
147
+ if (v instanceof RCTMGLCallout) {
148
+ mCalloutBitmap = bitmap;
149
+ mCalloutBitmapId = bitmapId;
150
+ } else {
151
+ if (bitmap != null) {
152
+ mChildBitmap = bitmap;
153
+ mChildBitmapId = bitmapId;
154
+ updateOptions();
155
+ }
156
+ }
157
+ }
158
+
159
+ private void refreshBitmap(View v) {
160
+ refreshBitmap(v, v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
161
+ }
162
+
163
+ public LatLng getLatLng() {
164
+ return GeoJSONUtils.toLatLng(mCoordinate);
165
+ }
166
+
167
+ public long getMapboxID() {
168
+ return mAnnotation == null ? -1 : mAnnotation.getId();
169
+ }
170
+
171
+ public String getID() {
172
+ return mID;
173
+ }
174
+
175
+ public void setID(String id) {
176
+ mID = id;
177
+ }
178
+
179
+ public View getCalloutView() {
180
+ return mCalloutView;
181
+ }
182
+
183
+ public void setCoordinate(Point point) {
184
+ mCoordinate = point;
185
+
186
+ if (mAnnotation != null) {
187
+ mAnnotation.setLatLng(GeoJSONUtils.toLatLng(point));
188
+ mMapView.getSymbolManager().update(mAnnotation);
189
+ }
190
+ if (mCalloutSymbol != null) {
191
+ mCalloutSymbol.setLatLng(GeoJSONUtils.toLatLng(point));
192
+ mMapView.getSymbolManager().update(mCalloutSymbol);
193
+ }
194
+ }
195
+
196
+ public void setAnchor(float x, float y) {
197
+ mAnchor = new Float[]{x, y};
198
+
199
+ if (mAnnotation != null) {
200
+ updateAnchor();
201
+ mMapView.getSymbolManager().update(mAnnotation);
202
+ }
203
+ }
204
+
205
+ public void setDraggable(Boolean draggable) {
206
+ mDraggable = draggable;
207
+ if (mAnnotation != null) {
208
+ mAnnotation.setDraggable(draggable);
209
+ mMapView.getSymbolManager().update(mAnnotation);
210
+ }
211
+ }
212
+
213
+ public Symbol getMarker() {
214
+ return mAnnotation;
215
+ }
216
+
217
+ public void onSelect(boolean shouldSendEvent) {
218
+ if (mCalloutView != null) {
219
+ makeCallout();
220
+ }
221
+ if (shouldSendEvent) {
222
+ mManager.handleEvent(makeEvent(true));
223
+ }
224
+ }
225
+
226
+ public void onDeselect() {
227
+ mManager.handleEvent(makeEvent(false));
228
+ if (mCalloutSymbol != null) {
229
+ mMapView.getSymbolManager().delete(mCalloutSymbol);
230
+ }
231
+ }
232
+
233
+ public void onDragStart() {
234
+ LatLng latLng = mAnnotation.getLatLng();
235
+ mCoordinate = Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude());
236
+ mManager.handleEvent(makeDragEvent(EventTypes.ANNOTATION_DRAG_START));
237
+ }
238
+
239
+ public void onDrag() {
240
+ LatLng latLng = mAnnotation.getLatLng();
241
+ mCoordinate = Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude());
242
+ mManager.handleEvent(makeDragEvent(EventTypes.ANNOTATION_DRAG));
243
+ }
244
+
245
+ public void onDragEnd() {
246
+ LatLng latLng = mAnnotation.getLatLng();
247
+ mCoordinate = Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude());
248
+ mManager.handleEvent(makeDragEvent(EventTypes.ANNOTATION_DRAG_END));
249
+ }
250
+
251
+ public void makeMarker() {
252
+ SymbolOptions options = new SymbolOptions()
253
+ .withLatLng(GeoJSONUtils.toLatLng(mCoordinate))
254
+ .withDraggable(mDraggable)
255
+ .withIconSize(1.0f)
256
+ .withSymbolSortKey(10.0f);
257
+ SymbolManager symbolManager = mMapView.getSymbolManager();
258
+ if (symbolManager != null) {
259
+ mAnnotation = symbolManager.create(options);
260
+ updateOptions();
261
+ }
262
+ }
263
+
264
+ private void updateOptions() {
265
+ if (mAnnotation != null) {
266
+ updateIconImage();
267
+ updateAnchor();
268
+ mMapView.getSymbolManager().update(mAnnotation);
269
+ }
270
+ }
271
+
272
+ private void updateIconImage() {
273
+ if (mChildView != null) {
274
+ if (mChildBitmapId != null) {
275
+ mAnnotation.setIconImage(mChildBitmapId);
276
+ }
277
+ } else {
278
+ mAnnotation.setIconImage(MARKER_IMAGE_ID);
279
+ mAnnotation.setIconAnchor("bottom");
280
+ }
281
+ }
282
+
283
+ private void updateAnchor() {
284
+ if (mAnchor != null && mChildView != null && mChildBitmap != null) {
285
+ int w = mChildBitmap.getWidth();
286
+ int h = mChildBitmap.getHeight();
287
+ final float scale = getResources().getDisplayMetrics().density;
288
+ w = (int) (w / scale);
289
+ h = (int) (h / scale);
290
+ mAnnotation.setIconAnchor("top-left");
291
+ mAnnotation.setIconOffset(new PointF(w * mAnchor[0] * -1, h * mAnchor[1] * -1));
292
+ }
293
+ }
294
+
295
+ private void makeCallout() {
296
+ float yOffset = -28f;
297
+ if (mChildView != null) {
298
+ if (mChildBitmap != null) {
299
+ float scale = getResources().getDisplayMetrics().density;
300
+ int h = (int) mChildBitmap.getHeight() / 2;
301
+ h = (int) (h / scale);
302
+ yOffset = (float) h * -1;
303
+ }
304
+ }
305
+ SymbolOptions options = new SymbolOptions()
306
+ .withLatLng(GeoJSONUtils.toLatLng(mCoordinate))
307
+ .withIconImage(mCalloutBitmapId)
308
+ .withIconSize(1.0f)
309
+ .withIconAnchor("bottom")
310
+ .withIconOffset(new Float[] {0f, yOffset})
311
+ .withSymbolSortKey(11.0f)
312
+ .withDraggable(false);
313
+ SymbolManager symbolManager = mMapView.getSymbolManager();
314
+ if (symbolManager != null) {
315
+ mCalloutSymbol = symbolManager.create(options);
316
+ }
317
+ }
318
+
319
+ private void addBitmapToStyle(final Bitmap bitmap, final String bitmapId) {
320
+ if (mMap != null && bitmapId != null && bitmap != null) {
321
+ mMap.getStyle(new Style.OnStyleLoaded() {
322
+ @Override
323
+ public void onStyleLoaded(@NonNull Style style) {
324
+ style.addImage(bitmapId, bitmap);
325
+ }
326
+ });
327
+ }
328
+ }
329
+
330
+ private PointAnnotationClickEvent makeEvent(boolean isSelect) {
331
+ String type = isSelect ? EventTypes.ANNOTATION_SELECTED : EventTypes.ANNOTATION_DESELECTED;
332
+ LatLng latLng = GeoJSONUtils.toLatLng(mCoordinate);
333
+ PointF screenPos = getScreenPosition(latLng);
334
+ return new PointAnnotationClickEvent(this, latLng, screenPos, type);
335
+ }
336
+
337
+ private PointAnnotationDragEvent makeDragEvent(String type) {
338
+ LatLng latLng = GeoJSONUtils.toLatLng(mCoordinate);
339
+ PointF screenPos = getScreenPosition(latLng);
340
+ return new PointAnnotationDragEvent(this, latLng, screenPos, type);
341
+ }
342
+
343
+ private float getDisplayDensity() {
344
+ return mContext.getResources().getDisplayMetrics().density;
345
+ }
346
+
347
+ private PointF getScreenPosition(LatLng latLng) {
348
+ PointF screenPos = mMap.getProjection().toScreenLocation(latLng);
349
+ float density = getDisplayDensity();
350
+ screenPos.x /= density;
351
+ screenPos.y /= density;
352
+ return screenPos;
353
+ }
354
+
355
+ public void refresh() {
356
+ if (mChildView != null) {
357
+ refreshBitmap(mChildView);
358
+ }
359
+ }
360
+ }