@rnmapbox/maps 10.0.0-beta.28

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 (648) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.js +109 -0
  3. package/.gitattributes +1 -0
  4. package/.github/ISSUE_TEMPLATE/bug_report.md +75 -0
  5. package/.github/ISSUE_TEMPLATE/bug_setup.md +23 -0
  6. package/.github/ISSUE_TEMPLATE/feature.md +15 -0
  7. package/.github/dependabot.yml +42 -0
  8. package/.github/label-actions.yml +26 -0
  9. package/.github/pull_request_template.md +28 -0
  10. package/.github/stale.yml +11 -0
  11. package/.github/workflows/android-actions.yml +56 -0
  12. package/.github/workflows/bump-version.yml +54 -0
  13. package/.github/workflows/ios-actions.yml +81 -0
  14. package/.github/workflows/label-actions.yml +17 -0
  15. package/.github/workflows/on-push.yml +131 -0
  16. package/.github/workflows/publish.yml +29 -0
  17. package/.nvmrc +2 -0
  18. package/.prettierrc.js +4 -0
  19. package/.sonarcloud.properties +15 -0
  20. package/CHANGELOG.md +386 -0
  21. package/CONTRIBUTING.md +30 -0
  22. package/LICENSE.md +5 -0
  23. package/README-v10.md +86 -0
  24. package/README.md +283 -0
  25. package/RELEASE.md +28 -0
  26. package/android/install.md +137 -0
  27. package/android/rctmgl/.classpath +6 -0
  28. package/android/rctmgl/.settings/org.eclipse.buildship.core.prefs +2 -0
  29. package/android/rctmgl/build.gradle +148 -0
  30. package/android/rctmgl/proguard-rules.pro +25 -0
  31. package/android/rctmgl/src/main/AndroidManifest.xml +4 -0
  32. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/RCTMGLPackage.java +99 -0
  33. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/AbstractEvent.java +35 -0
  34. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/AbstractEventEmitter.java +80 -0
  35. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/AbstractMapFeature.java +19 -0
  36. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/MarkerView.java +23 -0
  37. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/MarkerViewManager.java +69 -0
  38. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLCallout.java +15 -0
  39. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLCalloutManager.java +22 -0
  40. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerView.java +112 -0
  41. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerViewManager.java +45 -0
  42. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotation.java +360 -0
  43. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotationManager.java +88 -0
  44. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/CameraStop.java +249 -0
  45. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/CameraUpdateItem.java +125 -0
  46. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/CameraUpdateQueue.java +73 -0
  47. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/RCTMGLCamera.java +530 -0
  48. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.java +101 -0
  49. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/constants/CameraMode.java +22 -0
  50. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/images/RCTMGLImages.java +234 -0
  51. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/images/RCTMGLImagesManager.java +103 -0
  52. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/location/LocationComponentManager.java +149 -0
  53. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocation.java +67 -0
  54. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocationManager.java +35 -0
  55. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/LayerSourceInfo.java +59 -0
  56. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapView.java +16 -0
  57. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.java +31 -0
  58. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.java +1528 -0
  59. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.java +355 -0
  60. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/helpers/CameraChangeTracker.java +41 -0
  61. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/RCTMGLStyle.java +83 -0
  62. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/RCTMGLStyleFactory.java +2275 -0
  63. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/RCTMGLStyleFunctionParser.java +108 -0
  64. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/RCTMGLStyleValue.java +216 -0
  65. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTLayer.java +287 -0
  66. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayer.java +27 -0
  67. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayerManager.java +64 -0
  68. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayer.java +55 -0
  69. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayerManager.java +77 -0
  70. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayer.java +55 -0
  71. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayerManager.java +80 -0
  72. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayer.java +55 -0
  73. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayerManager.java +80 -0
  74. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayer.java +55 -0
  75. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayerManager.java +77 -0
  76. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayer.java +55 -0
  77. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayerManager.java +79 -0
  78. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayer.java +27 -0
  79. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayerManager.java +64 -0
  80. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayer.java +55 -0
  81. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayerManager.java +75 -0
  82. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/light/RCTMGLLight.java +65 -0
  83. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/light/RCTMGLLightManager.java +29 -0
  84. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSource.java +81 -0
  85. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSourceManager.java +72 -0
  86. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSource.java +45 -0
  87. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSourceManager.java +44 -0
  88. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSource.java +316 -0
  89. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSourceManager.java +253 -0
  90. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSource.java +97 -0
  91. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSourceManager.java +80 -0
  92. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSource.java +64 -0
  93. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSourceManager.java +84 -0
  94. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTSource.java +244 -0
  95. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/AbstractEvent.java +66 -0
  96. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/AndroidCallbackEvent.java +38 -0
  97. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/EventEmitter.java +45 -0
  98. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/FeatureClickEvent.java +79 -0
  99. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/IEvent.java +18 -0
  100. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/ImageMissingEvent.java +42 -0
  101. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/LocationEvent.java +100 -0
  102. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/MapChangeEvent.java +47 -0
  103. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/MapClickEvent.java +51 -0
  104. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/MapUserTrackingModeEvent.java +36 -0
  105. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/OfflineEvent.java +29 -0
  106. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/PointAnnotationClickEvent.java +46 -0
  107. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/PointAnnotationDragEvent.java +51 -0
  108. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/constants/EventKeys.java +39 -0
  109. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/constants/EventTypes.java +51 -0
  110. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/http/CustomHeadersInterceptor.java +38 -0
  111. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/location/LocationManager.java +147 -0
  112. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/location/UserLocation.java +63 -0
  113. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/location/UserLocationVerticalAlignment.java +11 -0
  114. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/location/UserTrackingMode.java +63 -0
  115. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/location/UserTrackingState.java +19 -0
  116. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/modules/RCTMGLLocationModule.java +159 -0
  117. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/modules/RCTMGLLogging.java +140 -0
  118. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/modules/RCTMGLModule.java +376 -0
  119. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/modules/RCTMGLOfflineModule.java +597 -0
  120. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/modules/RCTMGLSnapshotModule.java +139 -0
  121. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/BitmapUtils.java +129 -0
  122. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/ClusterPropertyEntry.java +13 -0
  123. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/ConvertUtils.java +257 -0
  124. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/DownloadMapImageTask.java +159 -0
  125. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/ExpressionParser.java +74 -0
  126. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/GeoJSONUtils.java +209 -0
  127. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/GeoViewport.java +38 -0
  128. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/ImageEntry.java +25 -0
  129. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/ResourceUtils.java +30 -0
  130. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/SimpleEventCallback.java +30 -0
  131. package/android/rctmgl/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/SphericalMercator.java +69 -0
  132. package/android/rctmgl/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/InstanceManagerImpl.java +35 -0
  133. package/android/rctmgl/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/LocationEngineCallbackImpl.java +12 -0
  134. package/android/rctmgl/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/LocationEngineResultImpl.java +18 -0
  135. package/android/rctmgl/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/LocationManagerImpl.java +64 -0
  136. package/android/rctmgl/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/PermissionsManagerImpl.java +10 -0
  137. package/android/rctmgl/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/SymbolClickListenerImpl.java +18 -0
  138. package/android/rctmgl/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/TelemetryImpl.java +11 -0
  139. package/android/rctmgl/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/InstanceManagerImpl.java +42 -0
  140. package/android/rctmgl/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/LocationEngineCallbackImpl.java +12 -0
  141. package/android/rctmgl/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/LocationEngineResultImpl.java +18 -0
  142. package/android/rctmgl/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/LocationManagerImpl.java +64 -0
  143. package/android/rctmgl/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/PermissionsManagerImpl.java +10 -0
  144. package/android/rctmgl/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/SymbolClickListenerImpl.java +18 -0
  145. package/android/rctmgl/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/TelemetryImpl.java +7 -0
  146. package/android/rctmgl/src/main/java-v10/README.md +0 -0
  147. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/RCTMGLPackage.java +111 -0
  148. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/AbstractEvent.java +35 -0
  149. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/AbstractEventEmitter.java +82 -0
  150. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/AbstractMapFeature.java +15 -0
  151. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/annotation/RCTMGLCallout.kt +6 -0
  152. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/annotation/RCTMGLCalloutManager.java +18 -0
  153. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerView.kt +76 -0
  154. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerViewManager.java +45 -0
  155. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotation.kt +313 -0
  156. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotationManager.java +84 -0
  157. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraStop.kt +228 -0
  158. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateItem.java +167 -0
  159. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateQueue.java +73 -0
  160. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCamera.java +662 -0
  161. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.java +102 -0
  162. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/constants/CameraMode.java +18 -0
  163. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/images/RCTMGLImages.kt +201 -0
  164. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/images/RCTMGLImagesManager.java +103 -0
  165. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/CameraMode.java +62 -0
  166. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/LocationComponentManager.java +215 -0
  167. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocation.kt +58 -0
  168. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocationManager.java +34 -0
  169. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/RenderMode.java +42 -0
  170. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/UserLocation.java +59 -0
  171. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/UserTrackingMode.java +54 -0
  172. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/OnMapReadyCallback.java +9 -0
  173. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapView.java +16 -0
  174. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.java +31 -0
  175. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.kt +1070 -0
  176. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.kt +327 -0
  177. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/helpers/CameraChangeTracker.java +37 -0
  178. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/RCTMGLStyle.kt +62 -0
  179. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/RCTMGLStyleFactory.java +2638 -0
  180. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/RCTMGLStyleValue.kt +223 -0
  181. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTLayer.kt +274 -0
  182. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayer.java +23 -0
  183. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayerManager.java +60 -0
  184. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayer.java +53 -0
  185. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayerManager.java +73 -0
  186. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayer.java +51 -0
  187. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayerManager.java +76 -0
  188. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayer.java +51 -0
  189. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayerManager.java +77 -0
  190. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayer.java +51 -0
  191. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayerManager.java +73 -0
  192. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayer.java +51 -0
  193. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayerManager.java +75 -0
  194. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayer.java +24 -0
  195. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayerManager.java +60 -0
  196. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLSkyLayer.kt +35 -0
  197. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLSkyLayerManager.java +73 -0
  198. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayer.java +51 -0
  199. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayerManager.java +71 -0
  200. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/light/RCTMGLLight.kt +47 -0
  201. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/light/RCTMGLLightManager.java +25 -0
  202. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/AbstractSourceConsumer.kt +8 -0
  203. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSource.java +76 -0
  204. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSourceManager.java +68 -0
  205. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterDemSource.java +122 -0
  206. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterDemSourceManager.java +64 -0
  207. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSource.java +43 -0
  208. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSourceManager.java +39 -0
  209. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSource.kt +264 -0
  210. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSourceManager.kt +198 -0
  211. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSource.java +103 -0
  212. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSourceManager.java +80 -0
  213. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSource.java +103 -0
  214. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSourceManager.java +80 -0
  215. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTSource.kt +211 -0
  216. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/terrain/RCTMGLTerrain.kt +58 -0
  217. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/terrain/RCTMGLTerrainManager.kt +41 -0
  218. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/AbstractEvent.java +62 -0
  219. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/AndroidCallbackEvent.java +34 -0
  220. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/EventEmitter.java +45 -0
  221. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/FeatureClickEvent.java +79 -0
  222. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/IEvent.java +18 -0
  223. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/ImageMissingEvent.java +42 -0
  224. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/LocationEvent.java +100 -0
  225. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/MapChangeEvent.java +43 -0
  226. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/MapClickEvent.java +51 -0
  227. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/OfflineEvent.java +25 -0
  228. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/PointAnnotationClickEvent.java +42 -0
  229. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/PointAnnotationDragEvent.java +51 -0
  230. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/constants/EventKeys.java +39 -0
  231. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/constants/EventTypes.java +47 -0
  232. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/location/LocationManager.kt +199 -0
  233. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/location/UserLocationVerticalAlignment.java +7 -0
  234. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/location/UserTrackingState.java +15 -0
  235. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLLocationModule.java +160 -0
  236. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLLogging.kt +113 -0
  237. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLModule.kt +134 -0
  238. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLOfflineModule.kt +653 -0
  239. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLSnapshotModule.java +151 -0
  240. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/BitmapUtils.java +183 -0
  241. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/ConvertUtils.java +253 -0
  242. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/DownloadMapImageTask.kt +151 -0
  243. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/ExpressionParser.java +73 -0
  244. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/GeoJSONUtils.kt +217 -0
  245. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/ImageEntry.java +25 -0
  246. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/LatLng.java +51 -0
  247. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/LatLngBounds.java +42 -0
  248. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/LatLngQuad.java +27 -0
  249. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/Logger.kt +120 -0
  250. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/ReadableMapToValue.java +51 -0
  251. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/ResourceUtils.java +26 -0
  252. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/Point.kt +13 -0
  253. package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/ReadableArray.kt +23 -0
  254. package/android/rctmgl/src/main/res/drawable/empty.xml +5 -0
  255. package/android/rctmgl/src/main/res/drawable/empty_drawable.png +0 -0
  256. package/android/rctmgl/src/main/res/drawable-xxhdpi/red_marker.png +0 -0
  257. package/android/rctmgl/src/main/res/layout/annotation.xml +17 -0
  258. package/android/rctmgl/src/main/res/values/strings.xml +3 -0
  259. package/app.plugin.js +1 -0
  260. package/assets/React-icon.svg +9 -0
  261. package/assets/beta-maps-example-point-annotation-960-d280759f6a3d8d75458f399c7a044926.webp +0 -0
  262. package/assets/beta-maps-guides-migrate-3d-terrain-960-48b1080117817ccfd92e434d0df7546f.webp +0 -0
  263. package/assets/heading.png +0 -0
  264. package/assets/heading@2x.png +0 -0
  265. package/assets/heading@3x.png +0 -0
  266. package/assets/indoor_building_map_android.png +0 -0
  267. package/assets/indoor_building_map_ios.png +0 -0
  268. package/assets/intro-examples.png +0 -0
  269. package/assets/mapbox_logo.png +0 -0
  270. package/assets/maps-examples-building-extrusions-960-aaa140cce77da4e8b2dd216032b191b6.webp +0 -0
  271. package/assets/maps-examples-camera-animators-960-a51d57db7243158d19e4fffb8363ac47.webp +0 -0
  272. package/assets/maps-examples-data-driven-symbols-960-2e2061a6b8127ef305c1b6c159f8dc65.webp +0 -0
  273. package/assets/sponsors/sth.png +0 -0
  274. package/assets/sponsors/terrain.dance.png +0 -0
  275. package/babel.config.js +9 -0
  276. package/docs/Annotation.md +39 -0
  277. package/docs/Annotations.md +17 -0
  278. package/docs/Atmosphere.md +265 -0
  279. package/docs/BackgroundLayer.md +166 -0
  280. package/docs/Callout.md +15 -0
  281. package/docs/Camera.md +34 -0
  282. package/docs/CircleLayer.md +470 -0
  283. package/docs/CustomHttpHeaders.md +87 -0
  284. package/docs/FillExtrusionLayer.md +433 -0
  285. package/docs/FillLayer.md +310 -0
  286. package/docs/GettingStarted.md +87 -0
  287. package/docs/HeadingIndicator.md +10 -0
  288. package/docs/HeatmapLayer.md +215 -0
  289. package/docs/ImageSource.md +12 -0
  290. package/docs/Images.md +12 -0
  291. package/docs/Light.md +159 -0
  292. package/docs/LineLayer.md +606 -0
  293. package/docs/Logger.md +23 -0
  294. package/docs/MapView.md +227 -0
  295. package/docs/MapboxGL.md +84 -0
  296. package/docs/MarkerView.md +14 -0
  297. package/docs/NativeUserLocation.md +11 -0
  298. package/docs/OfflineManager.md +262 -0
  299. package/docs/PointAnnotation.md +34 -0
  300. package/docs/RasterDemSource.md +15 -0
  301. package/docs/RasterLayer.md +357 -0
  302. package/docs/RasterSource.md +17 -0
  303. package/docs/ShapeSource.md +101 -0
  304. package/docs/SkyLayer.md +259 -0
  305. package/docs/Style.md +10 -0
  306. package/docs/StyleSheet.md +430 -0
  307. package/docs/SymbolLayer.md +1658 -0
  308. package/docs/Terrain.md +22 -0
  309. package/docs/UserLocation.md +39 -0
  310. package/docs/VectorSource.md +48 -0
  311. package/docs/docs.json +6415 -0
  312. package/docs/snapshotManager.md +53 -0
  313. package/index.d.ts +1050 -0
  314. package/ios/RCTMGL/CameraMode.h +18 -0
  315. package/ios/RCTMGL/CameraMode.m +18 -0
  316. package/ios/RCTMGL/CameraStop.h +26 -0
  317. package/ios/RCTMGL/CameraStop.m +83 -0
  318. package/ios/RCTMGL/CameraUpdateItem.h +18 -0
  319. package/ios/RCTMGL/CameraUpdateItem.m +178 -0
  320. package/ios/RCTMGL/CameraUpdateQueue.h +21 -0
  321. package/ios/RCTMGL/CameraUpdateQueue.m +74 -0
  322. package/ios/RCTMGL/FilterParser.h +14 -0
  323. package/ios/RCTMGL/FilterParser.m +22 -0
  324. package/ios/RCTMGL/MGLCustomHeaders.h +20 -0
  325. package/ios/RCTMGL/MGLCustomHeaders.m +98 -0
  326. package/ios/RCTMGL/MGLFaux3DUserLocationAnnotationView.h +23 -0
  327. package/ios/RCTMGL/MGLFaux3DUserLocationAnnotationView.m +474 -0
  328. package/ios/RCTMGL/MGLModule.h +13 -0
  329. package/ios/RCTMGL/MGLModule.m +335 -0
  330. package/ios/RCTMGL/MGLOfflineModule.h +19 -0
  331. package/ios/RCTMGL/MGLOfflineModule.m +537 -0
  332. package/ios/RCTMGL/MGLSnapshotModule.h +13 -0
  333. package/ios/RCTMGL/MGLSnapshotModule.m +80 -0
  334. package/ios/RCTMGL/MGLUserLocationHeadingArrowLayer.h +11 -0
  335. package/ios/RCTMGL/MGLUserLocationHeadingArrowLayer.m +57 -0
  336. package/ios/RCTMGL/MGLUserLocationHeadingBeamLayer.h +11 -0
  337. package/ios/RCTMGL/MGLUserLocationHeadingBeamLayer.m +102 -0
  338. package/ios/RCTMGL/MGLUserLocationHeadingIndicator.h +10 -0
  339. package/ios/RCTMGL/RCTConvert+Mapbox.h +16 -0
  340. package/ios/RCTMGL/RCTConvert+Mapbox.m +32 -0
  341. package/ios/RCTMGL/RCTMGL.h +13 -0
  342. package/ios/RCTMGL/RCTMGL.m +13 -0
  343. package/ios/RCTMGL/RCTMGLBackgroundLayer.h +14 -0
  344. package/ios/RCTMGL/RCTMGLBackgroundLayer.m +27 -0
  345. package/ios/RCTMGL/RCTMGLBackgroundLayerManager.h +13 -0
  346. package/ios/RCTMGL/RCTMGLBackgroundLayerManager.m +35 -0
  347. package/ios/RCTMGL/RCTMGLCallout.h +15 -0
  348. package/ios/RCTMGL/RCTMGLCallout.m +74 -0
  349. package/ios/RCTMGL/RCTMGLCalloutManager.h +13 -0
  350. package/ios/RCTMGL/RCTMGLCalloutManager.m +21 -0
  351. package/ios/RCTMGL/RCTMGLCamera.h +39 -0
  352. package/ios/RCTMGL/RCTMGLCamera.m +258 -0
  353. package/ios/RCTMGL/RCTMGLCameraManager.h +13 -0
  354. package/ios/RCTMGL/RCTMGLCameraManager.m +52 -0
  355. package/ios/RCTMGL/RCTMGLCircleLayer.h +13 -0
  356. package/ios/RCTMGL/RCTMGLCircleLayer.m +34 -0
  357. package/ios/RCTMGL/RCTMGLCircleLayerManager.h +13 -0
  358. package/ios/RCTMGL/RCTMGLCircleLayerManager.m +39 -0
  359. package/ios/RCTMGL/RCTMGLEvent.h +21 -0
  360. package/ios/RCTMGL/RCTMGLEvent.m +47 -0
  361. package/ios/RCTMGL/RCTMGLEventProtocol.h +16 -0
  362. package/ios/RCTMGL/RCTMGLEventTypes.h +50 -0
  363. package/ios/RCTMGL/RCTMGLEventTypes.m +49 -0
  364. package/ios/RCTMGL/RCTMGLFillExtrusionLayer.h +14 -0
  365. package/ios/RCTMGL/RCTMGLFillExtrusionLayer.m +32 -0
  366. package/ios/RCTMGL/RCTMGLFillExtrusionLayerManager.h +13 -0
  367. package/ios/RCTMGL/RCTMGLFillExtrusionLayerManager.m +39 -0
  368. package/ios/RCTMGL/RCTMGLFillLayer.h +14 -0
  369. package/ios/RCTMGL/RCTMGLFillLayer.m +33 -0
  370. package/ios/RCTMGL/RCTMGLFillLayerManager.h +13 -0
  371. package/ios/RCTMGL/RCTMGLFillLayerManager.m +37 -0
  372. package/ios/RCTMGL/RCTMGLHeatmapLayer.h +12 -0
  373. package/ios/RCTMGL/RCTMGLHeatmapLayer.m +30 -0
  374. package/ios/RCTMGL/RCTMGLHeatmapLayerManager.h +12 -0
  375. package/ios/RCTMGL/RCTMGLHeatmapLayerManager.m +38 -0
  376. package/ios/RCTMGL/RCTMGLImageQueue.h +19 -0
  377. package/ios/RCTMGL/RCTMGLImageQueue.m +57 -0
  378. package/ios/RCTMGL/RCTMGLImageQueueOperation.h +17 -0
  379. package/ios/RCTMGL/RCTMGLImageQueueOperation.m +138 -0
  380. package/ios/RCTMGL/RCTMGLImageSource.h +16 -0
  381. package/ios/RCTMGL/RCTMGLImageSource.m +60 -0
  382. package/ios/RCTMGL/RCTMGLImageSourceManager.h +13 -0
  383. package/ios/RCTMGL/RCTMGLImageSourceManager.m +25 -0
  384. package/ios/RCTMGL/RCTMGLImages.h +25 -0
  385. package/ios/RCTMGL/RCTMGLImages.m +126 -0
  386. package/ios/RCTMGL/RCTMGLImagesManager.h +5 -0
  387. package/ios/RCTMGL/RCTMGLImagesManager.m +21 -0
  388. package/ios/RCTMGL/RCTMGLLayer.h +52 -0
  389. package/ios/RCTMGL/RCTMGLLayer.m +236 -0
  390. package/ios/RCTMGL/RCTMGLLight.h +17 -0
  391. package/ios/RCTMGL/RCTMGLLight.m +46 -0
  392. package/ios/RCTMGL/RCTMGLLightManager.h +13 -0
  393. package/ios/RCTMGL/RCTMGLLightManager.m +23 -0
  394. package/ios/RCTMGL/RCTMGLLineLayer.h +14 -0
  395. package/ios/RCTMGL/RCTMGLLineLayer.m +33 -0
  396. package/ios/RCTMGL/RCTMGLLineLayerManager.h +13 -0
  397. package/ios/RCTMGL/RCTMGLLineLayerManager.m +40 -0
  398. package/ios/RCTMGL/RCTMGLLocation.h +19 -0
  399. package/ios/RCTMGL/RCTMGLLocation.m +32 -0
  400. package/ios/RCTMGL/RCTMGLLocationManager.h +30 -0
  401. package/ios/RCTMGL/RCTMGLLocationManager.m +180 -0
  402. package/ios/RCTMGL/RCTMGLLocationManagerDelegate.h +20 -0
  403. package/ios/RCTMGL/RCTMGLLocationModule.h +15 -0
  404. package/ios/RCTMGL/RCTMGLLocationModule.m +99 -0
  405. package/ios/RCTMGL/RCTMGLLogging.h +18 -0
  406. package/ios/RCTMGL/RCTMGLLogging.m +132 -0
  407. package/ios/RCTMGL/RCTMGLMapTouchEvent.h +25 -0
  408. package/ios/RCTMGL/RCTMGLMapTouchEvent.m +77 -0
  409. package/ios/RCTMGL/RCTMGLMapView.h +91 -0
  410. package/ios/RCTMGL/RCTMGLMapView.m +536 -0
  411. package/ios/RCTMGL/RCTMGLMapViewManager.h +17 -0
  412. package/ios/RCTMGL/RCTMGLMapViewManager.m +625 -0
  413. package/ios/RCTMGL/RCTMGLNativeUserLocation.h +18 -0
  414. package/ios/RCTMGL/RCTMGLNativeUserLocation.m +49 -0
  415. package/ios/RCTMGL/RCTMGLNativeUserLocationManager.h +5 -0
  416. package/ios/RCTMGL/RCTMGLNativeUserLocationManager.m +25 -0
  417. package/ios/RCTMGL/RCTMGLPointAnnotation.h +41 -0
  418. package/ios/RCTMGL/RCTMGLPointAnnotation.m +251 -0
  419. package/ios/RCTMGL/RCTMGLPointAnnotationManager.h +13 -0
  420. package/ios/RCTMGL/RCTMGLPointAnnotationManager.m +36 -0
  421. package/ios/RCTMGL/RCTMGLRasterLayer.h +14 -0
  422. package/ios/RCTMGL/RCTMGLRasterLayer.m +30 -0
  423. package/ios/RCTMGL/RCTMGLRasterLayerManager.h +13 -0
  424. package/ios/RCTMGL/RCTMGLRasterLayerManager.m +35 -0
  425. package/ios/RCTMGL/RCTMGLRasterSource.h +16 -0
  426. package/ios/RCTMGL/RCTMGLRasterSource.m +35 -0
  427. package/ios/RCTMGL/RCTMGLRasterSourceManager.h +13 -0
  428. package/ios/RCTMGL/RCTMGLRasterSourceManager.m +32 -0
  429. package/ios/RCTMGL/RCTMGLShapeSource.h +53 -0
  430. package/ios/RCTMGL/RCTMGLShapeSource.m +194 -0
  431. package/ios/RCTMGL/RCTMGLShapeSourceManager.h +14 -0
  432. package/ios/RCTMGL/RCTMGLShapeSourceManager.m +206 -0
  433. package/ios/RCTMGL/RCTMGLSource.h +35 -0
  434. package/ios/RCTMGL/RCTMGLSource.m +143 -0
  435. package/ios/RCTMGL/RCTMGLStyle.h +222 -0
  436. package/ios/RCTMGL/RCTMGLStyle.m +1675 -0
  437. package/ios/RCTMGL/RCTMGLStyleValue.h +27 -0
  438. package/ios/RCTMGL/RCTMGLStyleValue.m +167 -0
  439. package/ios/RCTMGL/RCTMGLSymbolLayer.h +19 -0
  440. package/ios/RCTMGL/RCTMGLSymbolLayer.m +121 -0
  441. package/ios/RCTMGL/RCTMGLSymbolLayerManager.h +13 -0
  442. package/ios/RCTMGL/RCTMGLSymbolLayerManager.m +40 -0
  443. package/ios/RCTMGL/RCTMGLTileSource.h +22 -0
  444. package/ios/RCTMGL/RCTMGLTileSource.m +31 -0
  445. package/ios/RCTMGL/RCTMGLUserLocation.h +15 -0
  446. package/ios/RCTMGL/RCTMGLUserLocation.m +38 -0
  447. package/ios/RCTMGL/RCTMGLUtils.h +31 -0
  448. package/ios/RCTMGL/RCTMGLUtils.m +218 -0
  449. package/ios/RCTMGL/RCTMGLVectorLayer.h +15 -0
  450. package/ios/RCTMGL/RCTMGLVectorLayer.m +59 -0
  451. package/ios/RCTMGL/RCTMGLVectorSource.h +16 -0
  452. package/ios/RCTMGL/RCTMGLVectorSource.m +28 -0
  453. package/ios/RCTMGL/RCTMGLVectorSourceManager.h +14 -0
  454. package/ios/RCTMGL/RCTMGLVectorSourceManager.m +79 -0
  455. package/ios/RCTMGL/RNMBImageUtils.h +17 -0
  456. package/ios/RCTMGL/RNMBImageUtils.m +31 -0
  457. package/ios/RCTMGL/ViewManager.h +16 -0
  458. package/ios/RCTMGL/ViewManager.m +63 -0
  459. package/ios/RCTMGL-v10/Bridge/RCTMGL.h +7 -0
  460. package/ios/RCTMGL-v10/CommonLayerProperties.H +13 -0
  461. package/ios/RCTMGL-v10/Extensions/Array+asExpressions.swift +14 -0
  462. package/ios/RCTMGL-v10/Extensions/CLLocationCoordinate2D+toArray.swift +7 -0
  463. package/ios/RCTMGL-v10/Extensions/CLLocationCoordinate2D+validate.swift +29 -0
  464. package/ios/RCTMGL-v10/Extensions/CoordinateBounds+toArray.swift +10 -0
  465. package/ios/RCTMGL-v10/Extensions/DefaultStringInterpolation+optional.swift +5 -0
  466. package/ios/RCTMGL-v10/Extensions/Encodable+ToJSON.swift +13 -0
  467. package/ios/RCTMGL-v10/MGLModule.m +7 -0
  468. package/ios/RCTMGL-v10/MGLModule.swift +71 -0
  469. package/ios/RCTMGL-v10/MGLSnapshotModule.m +11 -0
  470. package/ios/RCTMGL-v10/MGLSnapshotModule.swift +106 -0
  471. package/ios/RCTMGL-v10/RCTLog.swift +19 -0
  472. package/ios/RCTMGL-v10/RCTMGLAtmosphere.swift +73 -0
  473. package/ios/RCTMGL-v10/RCTMGLAtmosphereManager.m +8 -0
  474. package/ios/RCTMGL-v10/RCTMGLAtmosphereManager.swift +13 -0
  475. package/ios/RCTMGL-v10/RCTMGLBackgroundLayer.swift +47 -0
  476. package/ios/RCTMGL-v10/RCTMGLBackgroundLayerManager.m +9 -0
  477. package/ios/RCTMGL-v10/RCTMGLBackgroundLayerManager.swift +13 -0
  478. package/ios/RCTMGL-v10/RCTMGLCallout.swift +3 -0
  479. package/ios/RCTMGL-v10/RCTMGLCalloutManager.m +8 -0
  480. package/ios/RCTMGL-v10/RCTMGLCalloutManager.swift +14 -0
  481. package/ios/RCTMGL-v10/RCTMGLCamera.swift +423 -0
  482. package/ios/RCTMGL-v10/RCTMGLCameraManager.m +20 -0
  483. package/ios/RCTMGL-v10/RCTMGLCameraManager.swift +14 -0
  484. package/ios/RCTMGL-v10/RCTMGLCircleLayer.swift +66 -0
  485. package/ios/RCTMGL-v10/RCTMGLCircleLayerManager.m +12 -0
  486. package/ios/RCTMGL-v10/RCTMGLCircleLayerManager.swift +13 -0
  487. package/ios/RCTMGL-v10/RCTMGLEvent.swift +47 -0
  488. package/ios/RCTMGL-v10/RCTMGLFeatureUtils.swift +79 -0
  489. package/ios/RCTMGL-v10/RCTMGLFillExtrusionLayerManager.m +12 -0
  490. package/ios/RCTMGL-v10/RCTMGLFillExtrusionLayerManager.swift +13 -0
  491. package/ios/RCTMGL-v10/RCTMGLFillExtrustionLayer.swift +46 -0
  492. package/ios/RCTMGL-v10/RCTMGLFillLayer.swift +50 -0
  493. package/ios/RCTMGL-v10/RCTMGLFillLayerManager.m +12 -0
  494. package/ios/RCTMGL-v10/RCTMGLFillLayerManager.swift +13 -0
  495. package/ios/RCTMGL-v10/RCTMGLHeatmapLayer.swift +50 -0
  496. package/ios/RCTMGL-v10/RCTMGLHeatmapLayerManager.m +12 -0
  497. package/ios/RCTMGL-v10/RCTMGLHeatmapLayetManager.swift +13 -0
  498. package/ios/RCTMGL-v10/RCTMGLImageQueue.swift +140 -0
  499. package/ios/RCTMGL-v10/RCTMGLImageSource.swift +61 -0
  500. package/ios/RCTMGL-v10/RCTMGLImageSourceManager.m +10 -0
  501. package/ios/RCTMGL-v10/RCTMGLImageSourceManager.swift +11 -0
  502. package/ios/RCTMGL-v10/RCTMGLImages.swift +197 -0
  503. package/ios/RCTMGL-v10/RCTMGLImagesManager.m +11 -0
  504. package/ios/RCTMGL-v10/RCTMGLImagesManager.swift +14 -0
  505. package/ios/RCTMGL-v10/RCTMGLInteractiveElement.swift +57 -0
  506. package/ios/RCTMGL-v10/RCTMGLLayer.swift +304 -0
  507. package/ios/RCTMGL-v10/RCTMGLLight.swift +56 -0
  508. package/ios/RCTMGL-v10/RCTMGLLightManager.m +9 -0
  509. package/ios/RCTMGL-v10/RCTMGLLightManager.swift +13 -0
  510. package/ios/RCTMGL-v10/RCTMGLLineLayer.swift +52 -0
  511. package/ios/RCTMGL-v10/RCTMGLLineLayerManager.m +12 -0
  512. package/ios/RCTMGL-v10/RCTMGLLineLayerManager.swift +13 -0
  513. package/ios/RCTMGL-v10/RCTMGLLocationModule.m +15 -0
  514. package/ios/RCTMGL-v10/RCTMGLLocationModule.swift +272 -0
  515. package/ios/RCTMGL-v10/RCTMGLLogging.m +8 -0
  516. package/ios/RCTMGL-v10/RCTMGLLogging.swift +133 -0
  517. package/ios/RCTMGL-v10/RCTMGLMapView.swift +914 -0
  518. package/ios/RCTMGL-v10/RCTMGLMapViewManager.m +88 -0
  519. package/ios/RCTMGL-v10/RCTMGLMapViewManager.swift +242 -0
  520. package/ios/RCTMGL-v10/RCTMGLMarkerView.swift +138 -0
  521. package/ios/RCTMGL-v10/RCTMGLMarkerViewManager.m +11 -0
  522. package/ios/RCTMGL-v10/RCTMGLMarkerViewManager.swift +14 -0
  523. package/ios/RCTMGL-v10/RCTMGLNativeUserLocation.swift +44 -0
  524. package/ios/RCTMGL-v10/RCTMGLNativeUserLocationManager.m +9 -0
  525. package/ios/RCTMGL-v10/RCTMGLNativeUserLocationManager.swift +11 -0
  526. package/ios/RCTMGL-v10/RCTMGLOfflineModule.m +32 -0
  527. package/ios/RCTMGL-v10/RCTMGLOfflineModule.swift +486 -0
  528. package/ios/RCTMGL-v10/RCTMGLPointAnnotation.swift +230 -0
  529. package/ios/RCTMGL-v10/RCTMGLPointAnnotationManager.m +22 -0
  530. package/ios/RCTMGL-v10/RCTMGLPointAnnotationManager.swift +34 -0
  531. package/ios/RCTMGL-v10/RCTMGLRasterDemSource.swift +57 -0
  532. package/ios/RCTMGL-v10/RCTMGLRasterDemSourceManager.m +20 -0
  533. package/ios/RCTMGL-v10/RCTMGLRasterDemSourceManager.swift +11 -0
  534. package/ios/RCTMGL-v10/RCTMGLRasterLayer.swift +48 -0
  535. package/ios/RCTMGL-v10/RCTMGLRasterLayerManager.m +12 -0
  536. package/ios/RCTMGL-v10/RCTMGLRasterLayerManager.swift +13 -0
  537. package/ios/RCTMGL-v10/RCTMGLRasterSource.swift +51 -0
  538. package/ios/RCTMGL-v10/RCTMGLRasterSourceManager.m +18 -0
  539. package/ios/RCTMGL-v10/RCTMGLRasterSourceManager.swift +14 -0
  540. package/ios/RCTMGL-v10/RCTMGLShapeSource.swift +277 -0
  541. package/ios/RCTMGL-v10/RCTMGLShapeSourceManager.m +44 -0
  542. package/ios/RCTMGL-v10/RCTMGLShapeSourceManager.swift +106 -0
  543. package/ios/RCTMGL-v10/RCTMGLSingletonLayer.swift +41 -0
  544. package/ios/RCTMGL-v10/RCTMGLSkyLayer.swift +52 -0
  545. package/ios/RCTMGL-v10/RCTMGLSkyLayerManager.m +9 -0
  546. package/ios/RCTMGL-v10/RCTMGLSkyLayerManager.swift +13 -0
  547. package/ios/RCTMGL-v10/RCTMGLSource.swift +65 -0
  548. package/ios/RCTMGL-v10/RCTMGLStyle.swift +2509 -0
  549. package/ios/RCTMGL-v10/RCTMGLStyleValue.swift +446 -0
  550. package/ios/RCTMGL-v10/RCTMGLSymbolLayer.swift +51 -0
  551. package/ios/RCTMGL-v10/RCTMGLSymbolLayerManager.m +12 -0
  552. package/ios/RCTMGL-v10/RCTMGLSymbolLayerManager.swift +13 -0
  553. package/ios/RCTMGL-v10/RCTMGLTerrain.swift +97 -0
  554. package/ios/RCTMGL-v10/RCTMGLTerrainManager.m +16 -0
  555. package/ios/RCTMGL-v10/RCTMGLTerrainManager.swift +13 -0
  556. package/ios/RCTMGL-v10/RCTMGLTileSource.swift +5 -0
  557. package/ios/RCTMGL-v10/RCTMGLUtils.swift +53 -0
  558. package/ios/RCTMGL-v10/RCTMGLVectorLayer.m +58 -0
  559. package/ios/RCTMGL-v10/RCTMGLVectorLayer.swift +49 -0
  560. package/ios/RCTMGL-v10/RCTMGLVectorSource.swift +57 -0
  561. package/ios/RCTMGL-v10/RCTMGLVectorSourceManager.m +21 -0
  562. package/ios/RCTMGL-v10/RCTMGLVectorSourceManager.swift +11 -0
  563. package/ios/RCTMGL-v10/RCTSwiftLog.h +11 -0
  564. package/ios/RCTMGL-v10/RCTSwiftLog.m +32 -0
  565. package/ios/RCTMGL-v10/README.md +1 -0
  566. package/ios/RCTMGL-v10/RNMBImageUtils.swift +20 -0
  567. package/ios/install.md +102 -0
  568. package/javascript/components/AbstractLayer.js +49 -0
  569. package/javascript/components/AbstractSource.js +15 -0
  570. package/javascript/components/Atmosphere.tsx +28 -0
  571. package/javascript/components/BackgroundLayer.js +97 -0
  572. package/javascript/components/Callout.js +139 -0
  573. package/javascript/components/Camera.tsx +526 -0
  574. package/javascript/components/CircleLayer.js +101 -0
  575. package/javascript/components/FillExtrusionLayer.js +98 -0
  576. package/javascript/components/FillLayer.js +94 -0
  577. package/javascript/components/HeadingIndicator.js +31 -0
  578. package/javascript/components/HeatmapLayer.js +99 -0
  579. package/javascript/components/ImageSource.js +82 -0
  580. package/javascript/components/Images.js +119 -0
  581. package/javascript/components/Light.js +47 -0
  582. package/javascript/components/LineLayer.js +94 -0
  583. package/javascript/components/MapView.js +883 -0
  584. package/javascript/components/MarkerView.js +91 -0
  585. package/javascript/components/NativeBridgeComponent.js +86 -0
  586. package/javascript/components/NativeUserLocation.js +41 -0
  587. package/javascript/components/PointAnnotation.js +217 -0
  588. package/javascript/components/RasterDemSource.js +106 -0
  589. package/javascript/components/RasterLayer.js +95 -0
  590. package/javascript/components/RasterSource.js +124 -0
  591. package/javascript/components/ShapeSource.js +373 -0
  592. package/javascript/components/SkyLayer.js +80 -0
  593. package/javascript/components/Style.js +265 -0
  594. package/javascript/components/SymbolLayer.js +120 -0
  595. package/javascript/components/Terrain.js +56 -0
  596. package/javascript/components/UserLocation.js +274 -0
  597. package/javascript/components/VectorSource.js +200 -0
  598. package/javascript/components/annotations/Annotation.js +123 -0
  599. package/javascript/index.js +139 -0
  600. package/javascript/modules/location/locationManager.js +101 -0
  601. package/javascript/modules/offline/OfflineCreatePackOptions.js +46 -0
  602. package/javascript/modules/offline/OfflinePack.js +40 -0
  603. package/javascript/modules/offline/offlineManager.js +391 -0
  604. package/javascript/modules/snapshot/SnapshotOptions.js +67 -0
  605. package/javascript/modules/snapshot/snapshotManager.js +62 -0
  606. package/javascript/requestAndroidLocationPermissions.ts +30 -0
  607. package/javascript/types/index.ts +23 -0
  608. package/javascript/utils/BridgeValue.js +81 -0
  609. package/javascript/utils/Logger.js +116 -0
  610. package/javascript/utils/MapboxStyles.ts +1484 -0
  611. package/javascript/utils/StyleValue.ts +44 -0
  612. package/javascript/utils/animated/Animated.js +39 -0
  613. package/javascript/utils/animated/AnimatedCoordinatesArray.js +191 -0
  614. package/javascript/utils/animated/AnimatedExtractCoordinateFromArray.js +43 -0
  615. package/javascript/utils/animated/AnimatedPoint.js +126 -0
  616. package/javascript/utils/animated/AnimatedRouteCoordinatesArray.js +143 -0
  617. package/javascript/utils/animated/AnimatedShape.js +72 -0
  618. package/javascript/utils/deprecation.js +25 -0
  619. package/javascript/utils/filterUtils.js +7 -0
  620. package/javascript/utils/geoUtils.js +73 -0
  621. package/javascript/utils/index.js +124 -0
  622. package/javascript/utils/resolveAssetSource.d.ts +5 -0
  623. package/javascript/utils/styleMap.js +2181 -0
  624. package/package.json +109 -0
  625. package/plugin/build/withMapbox.d.ts +17 -0
  626. package/plugin/build/withMapbox.js +286 -0
  627. package/plugin/install.md +53 -0
  628. package/react-native.config.js +12 -0
  629. package/rnmapbox-maps.podspec +264 -0
  630. package/scripts/.eslintrc.js +12 -0
  631. package/scripts/autogenHelpers/DocJSONBuilder.js +345 -0
  632. package/scripts/autogenHelpers/JSDocNodeTree.js +134 -0
  633. package/scripts/autogenHelpers/MarkdownBuilder.js +38 -0
  634. package/scripts/autogenHelpers/globals.js +507 -0
  635. package/scripts/autogenerate.js +530 -0
  636. package/scripts/download-style-spec.sh +15 -0
  637. package/scripts/templates/MapboxStyles.ts.ejs +92 -0
  638. package/scripts/templates/RCTMGLStyle.h.ejs +34 -0
  639. package/scripts/templates/RCTMGLStyle.m.ejs +106 -0
  640. package/scripts/templates/RCTMGLStyle.swift.ejs +116 -0
  641. package/scripts/templates/RCTMGLStyleFactory.java.ejs +108 -0
  642. package/scripts/templates/RCTMGLStyleFactoryv10.java.ejs +115 -0
  643. package/scripts/templates/component.md.ejs +122 -0
  644. package/scripts/templates/index.d.ts.ejs +56 -0
  645. package/scripts/templates/styleMap.js.ejs +115 -0
  646. package/setup-jest.js +125 -0
  647. package/style-spec/v8.json +6692 -0
  648. package/tsconfig.json +24 -0
@@ -0,0 +1,914 @@
1
+ @_spi(Restricted) import MapboxMaps
2
+ import Turf
3
+ import MapKit
4
+
5
+ @objc(RCTMGLMapView)
6
+ open class RCTMGLMapView : MapView {
7
+ var compassEnabled: Bool = false
8
+ var compassFadeWhenNorth: Bool = false
9
+ var reactOnPress : RCTBubblingEventBlock?
10
+ var reactOnLongPress : RCTBubblingEventBlock?
11
+ var reactOnMapChange : RCTBubblingEventBlock?
12
+
13
+ var styleLoaded: Bool = false
14
+ var styleLoadWaiters : [(MapboxMap)->Void] = []
15
+
16
+ var reactCamera : RCTMGLCamera?
17
+ var images : [RCTMGLImages] = []
18
+ var sources : [RCTMGLInteractiveElement] = []
19
+
20
+ var handleMapChangedEvents = Set<RCTMGLEvent.EventType>()
21
+
22
+ var onStyleLoadedComponents: [RCTMGLMapComponent] = []
23
+
24
+ private var isPendingInitialLayout = true
25
+ private var isGestureActive = false
26
+ private var isAnimatingFromGesture = false
27
+
28
+ var layerWaiters : [String:[(String) -> Void]] = [:]
29
+
30
+ lazy var pointAnnotationManager : PointAnnotationManager = {
31
+ return PointAnnotationManager(annotations: annotations, mapView: mapView)
32
+ }()
33
+
34
+ lazy var calloutAnnotationManager : MapboxMaps.PointAnnotationManager = {
35
+ return annotations.makePointAnnotationManager(id: "rctmlg-callout")
36
+ }()
37
+
38
+ var mapView : MapView {
39
+ get { return self }
40
+ }
41
+
42
+ func addToMap(_ subview: UIView) {
43
+ if let mapComponent = subview as? RCTMGLMapComponent {
44
+ let style = mapView.mapboxMap.style
45
+ if mapComponent.waitForStyleLoad() {
46
+ if (self.styleLoaded) {
47
+ mapComponent.addToMap(self, style: style)
48
+ } else {
49
+ onStyleLoadedComponents.append(mapComponent)
50
+ }
51
+ } else {
52
+ mapComponent.addToMap(self, style: style)
53
+ }
54
+ } else {
55
+ subview.reactSubviews()?.forEach { addToMap($0) }
56
+ }
57
+ if let source = subview as? RCTMGLInteractiveElement {
58
+ sources.append(source)
59
+ }
60
+ }
61
+
62
+ func removeFromMap(_ subview: UIView) {
63
+ if let mapComponent = subview as? RCTMGLMapComponent {
64
+ if mapComponent.waitForStyleLoad() {
65
+ onStyleLoadedComponents.removeAll { $0 === mapComponent }
66
+ }
67
+ mapComponent.removeFromMap(self)
68
+ } else {
69
+ subview.reactSubviews()?.forEach { removeFromMap($0) }
70
+ }
71
+ if let source = subview as? RCTMGLInteractiveElement {
72
+ sources.removeAll { $0 == source }
73
+ }
74
+ }
75
+
76
+ @objc open override func insertReactSubview(_ subview: UIView!, at atIndex: Int) {
77
+ addToMap(subview)
78
+ super.insertReactSubview(subview, at: atIndex)
79
+ }
80
+
81
+ @objc open override func removeReactSubview(_ subview:UIView!) {
82
+ removeFromMap(subview)
83
+ super.removeReactSubview(subview)
84
+ }
85
+
86
+ public required init(frame:CGRect) {
87
+ let resourceOptions = ResourceOptions(accessToken: MGLModule.accessToken!)
88
+ super.init(frame: frame, mapInitOptions: MapInitOptions(resourceOptions: resourceOptions))
89
+
90
+ self.mapView.gestures.delegate = self
91
+
92
+ setupEvents()
93
+ }
94
+
95
+ public required init (coder: NSCoder) {
96
+ fatalError("not implemented")
97
+ }
98
+
99
+ func layerAdded (_ layer: Layer) {
100
+ // TODO
101
+ }
102
+
103
+ func waitForLayerWithID(_ layerId: String, _ callback: @escaping (_ layerId: String) -> Void) {
104
+ let style = mapboxMap.style;
105
+ if style.layerExists(withId: layerId) {
106
+ callback(layerId)
107
+ } else {
108
+ layerWaiters[layerId, default: []].append(callback)
109
+ }
110
+ }
111
+
112
+ @objc public override func layoutSubviews() {
113
+ super.layoutSubviews()
114
+ if let camera = reactCamera {
115
+ if (isPendingInitialLayout) {
116
+ isPendingInitialLayout = false;
117
+
118
+ camera.initialLayout()
119
+ }
120
+ }
121
+ }
122
+
123
+ public override func updateConstraints() {
124
+ super.updateConstraints()
125
+ if let camera = reactCamera {
126
+ if (isPendingInitialLayout) {
127
+ isPendingInitialLayout = false;
128
+
129
+ camera.initialLayout()
130
+ }
131
+ }
132
+ }
133
+
134
+
135
+ // MARK: - React Native properties
136
+
137
+ @objc func setReactAttributionEnabled(_ value: Bool) {
138
+ mapView.ornaments.options.attributionButton.visibility = value ? .visible : .hidden
139
+ }
140
+
141
+ @objc func setReactAttributionPosition(_ position: [String: Int]!) {
142
+ if let ornamentOptions = self.getOrnamentOptionsFromPosition(position) {
143
+ mapView.ornaments.options.attributionButton.position = ornamentOptions.position
144
+ mapView.ornaments.options.attributionButton.margins = ornamentOptions.margins
145
+ }
146
+ }
147
+
148
+ @objc func setReactLogoEnabled(_ value: Bool) {
149
+ mapView.ornaments.options.logo.visibility = value ? .visible : .hidden
150
+ }
151
+
152
+ @objc func setReactLogoPosition(_ position: [String: Int]!) {
153
+ if let ornamentOptions = self.getOrnamentOptionsFromPosition(position) {
154
+ mapView.ornaments.options.logo.position = ornamentOptions.position
155
+ mapView.ornaments.options.logo.margins = ornamentOptions.margins
156
+ }
157
+ }
158
+
159
+ @objc func setReactCompassEnabled(_ value: Bool) {
160
+ compassEnabled = value
161
+ mapView.ornaments.options.compass.visibility = value ? compassFadeWhenNorth ? .adaptive : .visible : .hidden
162
+ }
163
+
164
+ @objc func setReactCompassFadeWhenNorth(_ value: Bool) {
165
+ compassFadeWhenNorth = value
166
+ if (compassEnabled) {
167
+ mapView.ornaments.options.compass.visibility = value ? .adaptive : .visible
168
+ }
169
+ }
170
+
171
+ @objc func setReactCompassPosition(_ position: [String: Int]!) {
172
+ if let ornamentOptions = self.getOrnamentOptionsFromPosition(position) {
173
+ mapView.ornaments.options.compass.position = ornamentOptions.position
174
+ mapView.ornaments.options.compass.margins = ornamentOptions.margins
175
+ }
176
+ }
177
+
178
+ func toOrnamentPositon(_ position: Int) -> OrnamentPosition {
179
+ enum MapboxGLPosition : Int {
180
+ case topLeft = 0
181
+ case topRight = 1
182
+ case bottomLeft = 2
183
+ case bottomRight = 3
184
+ };
185
+
186
+ let glPosition = MapboxGLPosition(rawValue: position)
187
+ switch glPosition {
188
+ case .topLeft:
189
+ return .topLeft
190
+ case .bottomRight:
191
+ return .bottomRight
192
+ case .topRight:
193
+ return .topRight
194
+ case .bottomLeft:
195
+ return .bottomLeft
196
+ case .none:
197
+ return .topLeft
198
+ }
199
+ }
200
+
201
+ @objc func setReactCompassViewPosition(_ position: Int) {
202
+ mapView.ornaments.options.compass.position = toOrnamentPositon(position)
203
+ }
204
+
205
+ @objc func setReactCompassViewMargins(_ margins: CGPoint) {
206
+ mapView.ornaments.options.compass.margins = margins;
207
+ }
208
+
209
+ @objc func setReactScaleBarEnabled(_ value: Bool) {
210
+ self.mapView.ornaments.options.scaleBar.visibility = value ? .visible : .hidden
211
+ }
212
+
213
+ @objc func setReactScaleBarPosition(_ position: [String: Int]!) {
214
+ if let ornamentOptions = self.getOrnamentOptionsFromPosition(position) {
215
+ mapView.ornaments.options.scaleBar.position = ornamentOptions.position
216
+ mapView.ornaments.options.scaleBar.margins = ornamentOptions.margins
217
+ }
218
+ }
219
+
220
+ @objc func setReactZoomEnabled(_ value: Bool) {
221
+ self.mapView.gestures.options.quickZoomEnabled = value
222
+ self.mapView.gestures.options.doubleTapToZoomInEnabled = value
223
+ self.mapView.gestures.options.pinchZoomEnabled = value
224
+ }
225
+
226
+ @objc func setReactScrollEnabled(_ value: Bool) {
227
+ self.mapView.gestures.options.panEnabled = value
228
+ self.mapView.gestures.options.pinchPanEnabled = value
229
+ }
230
+
231
+ @objc func setReactRotateEnabled(_ value: Bool) {
232
+ self.mapView.gestures.options.pinchRotateEnabled = value
233
+ }
234
+
235
+ @objc func setReactPitchEnabled(_ value: Bool) {
236
+ self.mapView.gestures.options.pitchEnabled = value
237
+ }
238
+
239
+ @objc func setReactStyleURL(_ value: String?) {
240
+ self.styleLoaded = false
241
+ if let value = value {
242
+ if let _ = URL(string: value) {
243
+ mapView.mapboxMap.loadStyleURI(StyleURI(rawValue: value)!)
244
+ } else {
245
+ if RCTJSONParse(value, nil) != nil {
246
+ mapView.mapboxMap.loadStyleJSON(value)
247
+ }
248
+ }
249
+ }
250
+ }
251
+
252
+ private func getOrnamentOptionsFromPosition(_ position: [String: Int]!) -> (position: OrnamentPosition, margins: CGPoint)? {
253
+ let left = position["left"]
254
+ let right = position["right"]
255
+ let top = position["top"]
256
+ let bottom = position["bottom"]
257
+
258
+ if let left = left, let top = top {
259
+ return (OrnamentPosition.topLeft, CGPoint(x: left, y: top))
260
+ } else if let right = right, let top = top {
261
+ return (OrnamentPosition.topRight, CGPoint(x: right, y: top))
262
+ } else if let bottom = bottom, let right = right {
263
+ return (OrnamentPosition.bottomRight, CGPoint(x: right, y: bottom))
264
+ } else if let bottom = bottom, let left = left {
265
+ return (OrnamentPosition.bottomLeft, CGPoint(x: left, y: bottom))
266
+ }
267
+
268
+ return nil
269
+ }
270
+ }
271
+
272
+ // MARK: - event handlers
273
+
274
+ extension RCTMGLMapView {
275
+ @objc func setReactOnMapChange(_ value: @escaping RCTBubblingEventBlock) {
276
+ self.reactOnMapChange = value
277
+
278
+ self.mapView.mapboxMap.onEvery(.cameraChanged, handler: { cameraEvent in
279
+ if self.handleMapChangedEvents.contains(.regionIsChanging) {
280
+ let event = RCTMGLEvent(type:.regionIsChanging, payload: self.buildRegionObject());
281
+ self.fireEvent(event: event, callback: self.reactOnMapChange)
282
+ } else if self.handleMapChangedEvents.contains(.cameraChanged) {
283
+ let event = RCTMGLEvent(type:.cameraChanged, payload: self.buildStateObject());
284
+ self.fireEvent(event: event, callback: self.reactOnMapChange)
285
+ }
286
+ })
287
+
288
+ self.mapView.mapboxMap.onEvery(.mapIdle, handler: { cameraEvent in
289
+ if self.handleMapChangedEvents.contains(.regionDidChange) {
290
+ let event = RCTMGLEvent(type:.regionDidChange, payload: self.buildRegionObject());
291
+ self.fireEvent(event: event, callback: self.reactOnMapChange)
292
+ } else if self.handleMapChangedEvents.contains(.mapIdle) {
293
+ let event = RCTMGLEvent(type:.mapIdle, payload: self.buildStateObject());
294
+ self.fireEvent(event: event, callback: self.reactOnMapChange)
295
+ }
296
+ })
297
+ }
298
+
299
+ private func fireEvent(event: RCTMGLEvent, callback: RCTBubblingEventBlock?) {
300
+ guard let callback = callback else {
301
+ Logger.log(level: .error, message: "fireEvent failed: \(event) - callback is null")
302
+ return
303
+ }
304
+ fireEvent(event: event, callback: callback)
305
+ }
306
+
307
+ private func fireEvent(event: RCTMGLEvent, callback: @escaping RCTBubblingEventBlock) {
308
+ callback(event.toJSON())
309
+ }
310
+
311
+ private func buildStateObject() -> [String: [String: Any]] {
312
+ let cameraOptions = CameraOptions(cameraState: cameraState)
313
+ let bounds = mapView.mapboxMap.coordinateBounds(for: cameraOptions)
314
+
315
+ return [
316
+ "properties": [
317
+ "center": Point(mapView.cameraState.center).coordinates.toArray(),
318
+ "bounds": [
319
+ "ne": bounds.northeast.toArray(),
320
+ "sw": bounds.southwest.toArray()
321
+ ],
322
+ "zoom" : Double(mapView.cameraState.zoom),
323
+ "heading": Double(mapView.cameraState.bearing),
324
+ "pitch": Double(mapView.cameraState.pitch),
325
+ ],
326
+ "gestures": [
327
+ "isGestureActive": isGestureActive,
328
+ "isAnimatingFromGesture": isAnimatingFromGesture
329
+ ]
330
+ ]
331
+ }
332
+
333
+ private func buildRegionObject() -> [String: Any] {
334
+ let cameraOptions = CameraOptions(cameraState: cameraState)
335
+ let bounds = mapView.mapboxMap.coordinateBounds(for: cameraOptions)
336
+ let boundsArray : JSONArray = [
337
+ [.number(bounds.northeast.longitude),.number(bounds.northeast.latitude)],
338
+ [.number(bounds.southwest.longitude),.number(bounds.southwest.latitude)]
339
+ ]
340
+
341
+ var result = Feature(
342
+ geometry: .point(Point(mapView.cameraState.center))
343
+ )
344
+ result.properties = [
345
+ "zoomLevel": .number(mapView.cameraState.zoom),
346
+ "heading": .number(mapView.cameraState.bearing),
347
+ "bearing": .number(mapView.cameraState.bearing),
348
+ "pitch": .number(mapView.cameraState.pitch),
349
+ "visibleBounds": .array(boundsArray),
350
+ "isUserInteraction": .boolean(isGestureActive),
351
+ "isAnimatingFromUserInteraction": .boolean(isAnimatingFromGesture),
352
+ ]
353
+ return logged("buildRegionObject", errorResult: { ["error":["toJSON":$0.localizedDescription]] }) {
354
+ try result.toJSON()
355
+ }
356
+ }
357
+
358
+ public func setupEvents() {
359
+ self.mapboxMap.onEvery(.mapLoadingError, handler: {(event) in
360
+ if let data = event.data as? [String:Any], let message = data["message"] {
361
+ Logger.log(level: .error, message: "MapLoad error \(message)")
362
+ } else {
363
+ Logger.log(level: .error, message: "MapLoad error \(event)")
364
+ }
365
+ })
366
+
367
+ self.mapboxMap.onEvery(.styleImageMissing) { (event) in
368
+ if let data = event.data as? [String:Any] {
369
+ if let imageName = data["id"] as? String {
370
+
371
+ self.images.forEach {
372
+ if $0.addMissingImageToStyle(style: self.mapboxMap.style, imageName: imageName) {
373
+ return
374
+ }
375
+ }
376
+
377
+ self.images.forEach {
378
+ $0.sendImageMissingEvent(imageName: imageName, event: event)
379
+ }
380
+ }
381
+ }
382
+ }
383
+
384
+ self.mapboxMap.onEvery(.renderFrameFinished, handler: { (event) in
385
+ var type = RCTMGLEvent.EventType.didFinishRendering
386
+ var payload : [String:Any]? = nil
387
+ if let data = event.data as? [String:Any] {
388
+ if let renderMode = data["render-mode"], let renderMode = renderMode as? String, renderMode == "full" {
389
+ type = .didFinishRenderingFully
390
+ }
391
+ payload = data
392
+ }
393
+ let event = RCTMGLEvent(type: type, payload: payload);
394
+ self.fireEvent(event: event, callback: self.reactOnMapChange)
395
+ })
396
+
397
+ self.mapboxMap.onNext(.mapLoaded, handler: { (event) in
398
+ let event = RCTMGLEvent(type:.didFinishLoadingMap, payload: nil);
399
+ self.fireEvent(event: event, callback: self.reactOnMapChange)
400
+ })
401
+
402
+ self.mapboxMap.onEvery(.styleLoaded, handler: { (event) in
403
+ self.onStyleLoadedComponents.forEach { (component) in
404
+ component.addToMap(self, style: self.mapboxMap.style)
405
+ }
406
+
407
+ if !self.styleLoaded {
408
+ self.styleLoaded = true
409
+ if let mapboxMap = self.mapboxMap {
410
+ let waiters = self.styleLoadWaiters
411
+ self.styleLoadWaiters = []
412
+ waiters.forEach { $0(mapboxMap) }
413
+ }
414
+ }
415
+
416
+ let event = RCTMGLEvent(type:.didFinishLoadingStyle, payload: nil)
417
+ self.fireEvent(event: event, callback: self.reactOnMapChange)
418
+ })
419
+ }
420
+ }
421
+
422
+ // MARK: - gestures
423
+
424
+ extension RCTMGLMapView {
425
+ @objc func setReactOnPress(_ value: @escaping RCTBubblingEventBlock) {
426
+ self.reactOnPress = value
427
+
428
+ self.mapView.gestures.singleTapGestureRecognizer.removeTarget( pointAnnotationManager.manager, action: nil)
429
+ self.mapView.gestures.singleTapGestureRecognizer.addTarget(self, action: #selector(doHandleTap(_:)))
430
+ }
431
+
432
+ @objc func setReactOnLongPress(_ value: @escaping RCTBubblingEventBlock) {
433
+ self.reactOnLongPress = value
434
+
435
+ let longPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(doHandleLongPress(_:)))
436
+ self.mapView.addGestureRecognizer(longPressGestureRecognizer)
437
+ }
438
+ }
439
+
440
+ extension RCTMGLMapView: GestureManagerDelegate {
441
+ private func draggableSources() -> [RCTMGLInteractiveElement] {
442
+ return sources.filter { $0.isDraggable() }
443
+ }
444
+ private func touchableSources() -> [RCTMGLInteractiveElement] {
445
+ return sources.filter { $0.isTouchable() }
446
+ }
447
+
448
+ private func doHandleTapInSources(sources: [RCTMGLInteractiveElement], tapPoint: CGPoint, hits: [String: [QueriedFeature]], touchedSources: [RCTMGLInteractiveElement], callback: @escaping (_ hits: [String: [QueriedFeature]], _ touchedSources: [RCTMGLInteractiveElement]) -> Void) {
449
+ DispatchQueue.main.async {
450
+ if let source = sources.first {
451
+ let hitbox = source.hitbox;
452
+
453
+ let halfWidth = (hitbox["width"]?.doubleValue ?? RCTMGLInteractiveElement.hitboxDefault) / 2.0;
454
+ let halfHeight = (hitbox["height"]?.doubleValue ?? RCTMGLInteractiveElement.hitboxDefault) / 2.0;
455
+
456
+ let top = tapPoint.y - halfHeight;
457
+ let left = tapPoint.x - halfWidth;
458
+
459
+ let hitboxRect = CGRect(x: left, y: top, width: halfWidth * 2.0, height: halfHeight * 2.0)
460
+
461
+ let options = RenderedQueryOptions(
462
+ layerIds: source.getLayerIDs(), filter: nil
463
+ )
464
+ self.mapboxMap.queryRenderedFeatures(in: hitboxRect, options: options) {
465
+ result in
466
+
467
+ var newHits = hits
468
+ var newTouchedSources = touchedSources;
469
+ switch result {
470
+ case .failure(let error):
471
+ Logger.log(level: .error, message: "Error during handleTapInSources source.id=\(source.id ?? "n/a") error:\(error)")
472
+ case .success(let features):
473
+ if !features.isEmpty {
474
+ newHits[source.id] = features
475
+ newTouchedSources.append(source)
476
+ }
477
+ break
478
+ }
479
+ var nSources = sources
480
+ nSources.removeFirst()
481
+ self.doHandleTapInSources(sources: nSources, tapPoint: tapPoint, hits: newHits, touchedSources: newTouchedSources, callback: callback)
482
+ }
483
+ } else {
484
+ callback(hits, touchedSources)
485
+ }
486
+ }
487
+ }
488
+
489
+ func highestZIndex(sources: [RCTMGLInteractiveElement]) -> RCTMGLInteractiveElement? {
490
+ return sources.first
491
+ }
492
+
493
+ @objc
494
+ func doHandleTap(_ sender: UITapGestureRecognizer) {
495
+ let tapPoint = sender.location(in: self)
496
+ pointAnnotationManager.handleTap(sender) { (_: UITapGestureRecognizer) in
497
+ DispatchQueue.main.async {
498
+ let touchableSources = self.touchableSources()
499
+ self.doHandleTapInSources(sources: touchableSources, tapPoint: tapPoint, hits: [:], touchedSources: []) { (hits, touchedSources) in
500
+
501
+ if let source = self.highestZIndex(sources: touchedSources),
502
+ source.hasPressListener,
503
+ let onPress = source.onPress {
504
+ guard let hitFeatures = hits[source.id] else {
505
+ Logger.log(level:.error, message: "doHandleTap, no hits found when it should have")
506
+ return
507
+ }
508
+ let features = hitFeatures.compactMap { queriedFeature in
509
+ logged("doHandleTap.hitFeatures") { try queriedFeature.feature.toJSON() } }
510
+ let location = self.mapboxMap.coordinate(for: tapPoint)
511
+ let event = RCTMGLEvent(
512
+ type: (source is RCTMGLVectorSource) ? .vectorSourceLayerPress : .shapeSourceLayerPress,
513
+ payload: [
514
+ "features": features,
515
+ "point": [
516
+ "x": Double(tapPoint.x),
517
+ "y": Double(tapPoint.y),
518
+ ],
519
+ "coordinates": [
520
+ "latitude": Double(location.latitude),
521
+ "longitude": Double(location.longitude),
522
+ ]
523
+ ]
524
+ )
525
+ self.fireEvent(event: event, callback: onPress)
526
+
527
+ } else {
528
+ if let reactOnPress = self.reactOnPress {
529
+ let location = self.mapboxMap.coordinate(for: tapPoint)
530
+ var geojson = Feature(geometry: .point(Point(location)));
531
+ geojson.properties = [
532
+ "screenPointX": .number(Double(tapPoint.x)),
533
+ "screenPointY": .number(Double(tapPoint.y))
534
+ ]
535
+ let event = RCTMGLEvent(type:.tap, payload: logged("reactOnPress") { try geojson.toJSON() })
536
+ self.fireEvent(event: event, callback: reactOnPress)
537
+ }
538
+ }
539
+ }
540
+ }
541
+ }
542
+ }
543
+
544
+ @objc
545
+ func doHandleLongPress(_ sender: UILongPressGestureRecognizer) {
546
+ let position = sender.location(in: self)
547
+ pointAnnotationManager.handleLongPress(sender) { (_: UILongPressGestureRecognizer) in
548
+ DispatchQueue.main.async {
549
+ let draggableSources = self.draggableSources()
550
+ self.doHandleTapInSources(sources: draggableSources, tapPoint: position, hits: [:], touchedSources: []) { (hits, draggedSources) in
551
+ if let source = self.highestZIndex(sources: draggedSources),
552
+ source.draggable,
553
+ let onDragStart = source.onDragStart {
554
+ guard let hitFeatures = hits[source.id] else {
555
+ Logger.log(level:.error, message: "doHandleLongPress, no hits found when it should have")
556
+ return
557
+ }
558
+ let features = hitFeatures.compactMap { queriedFeature in
559
+ logged("doHandleTap.hitFeatures") { try queriedFeature.feature.toJSON() } }
560
+ let location = self.mapboxMap.coordinate(for: position)
561
+ let event = RCTMGLEvent(
562
+ type: .longPress,
563
+ payload: [
564
+ "features": features,
565
+ "point": [
566
+ "x": Double(position.x),
567
+ "y": Double(position.y),
568
+ ],
569
+ "coordinates": [
570
+ "latitude": Double(location.latitude),
571
+ "longitude": Double(location.longitude),
572
+ ]
573
+ ]
574
+ )
575
+ self.fireEvent(event: event, callback: onDragStart)
576
+ } else {
577
+ if let reactOnLongPress = self.reactOnLongPress, sender.state == .began {
578
+ let coordinate = self.mapboxMap.coordinate(for: position)
579
+ var geojson = Feature(geometry: .point(Point(coordinate)));
580
+ geojson.properties = [
581
+ "screenPointX": .number(Double(position.x)),
582
+ "screenPointY": .number(Double(position.y))
583
+ ]
584
+ let event = RCTMGLEvent(type:.longPress, payload: logged("doHandleLongPress") { try geojson.toJSON() })
585
+ self.fireEvent(event: event, callback: reactOnLongPress)
586
+ }
587
+ }
588
+ }
589
+ }
590
+ }
591
+ }
592
+
593
+ public func gestureManager(_ gestureManager: GestureManager, didBegin gestureType: GestureType) {
594
+ isGestureActive = true
595
+ }
596
+
597
+ public func gestureManager(_ gestureManager: GestureManager, didEnd gestureType: GestureType, willAnimate: Bool) {
598
+ isGestureActive = false
599
+ if willAnimate {
600
+ isAnimatingFromGesture = true
601
+ }
602
+ }
603
+
604
+ public func gestureManager(_ gestureManager: GestureManager, didEndAnimatingFor gestureType: GestureType) {
605
+ isGestureActive = false
606
+ isAnimatingFromGesture = false
607
+ }
608
+ }
609
+
610
+ extension RCTMGLMapView
611
+ {
612
+ @objc func takeSnap(
613
+ writeToDisk:Bool) -> URL
614
+ {
615
+ UIGraphicsBeginImageContextWithOptions(self.bounds.size, true, 0);
616
+
617
+ self.drawHierarchy(in: self.bounds, afterScreenUpdates: true)
618
+ let snapshot = UIGraphicsGetImageFromCurrentImageContext();
619
+ UIGraphicsEndImageContext();
620
+
621
+ return writeToDisk ? RNMBImageUtils.createTempFile(snapshot!) : RNMBImageUtils.createBase64(snapshot!)
622
+ }
623
+ }
624
+
625
+ extension RCTMGLMapView {
626
+ func queryTerrainElevation(coordinates: [NSNumber]) -> Double? {
627
+ return self.mapboxMap.elevation(at: CLLocationCoordinate2D(latitude: coordinates[1].doubleValue, longitude: coordinates[0].doubleValue))
628
+ }
629
+ }
630
+
631
+ extension RCTMGLMapView {
632
+ func onMapStyleLoaded(block: @escaping (MapboxMap) -> Void) {
633
+ guard let mapboxMap = mapboxMap else {
634
+ fatalError("mapboxMap is null")
635
+ }
636
+
637
+ if styleLoaded {
638
+ block(mapboxMap)
639
+ } else {
640
+ styleLoadWaiters.append(block)
641
+ }
642
+ }
643
+ }
644
+
645
+ extension RCTMGLMapView {
646
+ func setSourceVisibility(_ visible: Bool, sourceId: String, sourceLayerId: String?) -> Void {
647
+ let style = self.mapboxMap.style
648
+
649
+ style.allLayerIdentifiers.forEach { layerInfo in
650
+ let layer = logged("setSourceVisibility.layer", info: { "\(layerInfo.id)" }) {
651
+ try style.layer(withId: layerInfo.id)
652
+ }
653
+ if let layer = layer {
654
+ if layer.source == sourceId {
655
+ var good = true
656
+ if let sourceLayerId = sourceLayerId {
657
+ if sourceLayerId != layer.sourceLayer {
658
+ good = false
659
+ }
660
+ }
661
+ if good {
662
+ do {
663
+ try style.setLayerProperty(for: layer.id, property: "visibility", value: visible ? "visible" : "none")
664
+ } catch {
665
+ Logger.log(level: .error, message: "Cannot change visibility of \(layer.id) with source: \(sourceId)")
666
+ }
667
+ }
668
+ }
669
+ }
670
+ }
671
+ }
672
+ }
673
+
674
+ class PointAnnotationManager : AnnotationInteractionDelegate {
675
+ weak var selected : RCTMGLPointAnnotation? = nil
676
+ private var draggedAnnotation: PointAnnotation?
677
+
678
+ func annotationManager(_ manager: AnnotationManager, didDetectTappedAnnotations annotations: [Annotation]) {
679
+ guard annotations.count > 0 else {
680
+ fatalError("didDetectTappedAnnotations: No annotations found")
681
+ }
682
+
683
+ for annotation in annotations {
684
+ if let pointAnnotation = annotation as? PointAnnotation,
685
+ let userInfo = pointAnnotation.userInfo {
686
+
687
+ if let rctmglPointAnnotation = userInfo[RCTMGLPointAnnotation.key] as? WeakRef<RCTMGLPointAnnotation> {
688
+ if let pt = rctmglPointAnnotation.object {
689
+ let position = pt.superview?.convert(pt.layer.position, to: nil)
690
+ let location = pt.map?.mapboxMap.coordinate(for: position!)
691
+ var geojson = Feature(geometry: .point(Point(location!)));
692
+ geojson.properties = [
693
+ "screenPointX": .number(Double(position!.x)),
694
+ "screenPointY": .number(Double(position!.y))
695
+ ]
696
+ let event = RCTMGLEvent(type:.tap, payload: logged("doHandleTap") { try geojson.toJSON() })
697
+ if let selected = selected {
698
+ guard let onDeselected = pt.onDeselected else {
699
+ return
700
+ }
701
+ onDeselected(event.toJSON())
702
+ selected.onDeselect()
703
+ }
704
+ guard let onSelected = pt.onSelected else {
705
+ return
706
+ }
707
+ onSelected(event.toJSON())
708
+ pt.onSelect()
709
+ selected = pt
710
+ }
711
+ }
712
+ }
713
+ /*
714
+
715
+ let rctmglPointAnnotation = userInfo[RCTMGLPointAnnotation.key] as? WeakRef<RCTMGLPointAnnotation>,
716
+ let rctmglPointAnnotation = rctmglPointAnnotation.object {
717
+ rctmglPointAnnotation.didTap()
718
+ }*/
719
+ }
720
+ }
721
+
722
+ func handleTap(_ tap: UITapGestureRecognizer, noAnnotationFound: @escaping (UITapGestureRecognizer) -> Void) {
723
+ let layerId = manager.layerId
724
+ guard let mapFeatureQueryable = mapView?.mapboxMap else {
725
+ noAnnotationFound(tap)
726
+ return
727
+ }
728
+ let options = RenderedQueryOptions(layerIds: [layerId], filter: nil)
729
+ mapFeatureQueryable.queryRenderedFeatures(
730
+ at: tap.location(in: tap.view),
731
+ options: options) { [weak self] (result) in
732
+
733
+ guard let self = self else { return }
734
+
735
+ switch result {
736
+
737
+ case .success(let queriedFeatures):
738
+
739
+ // Get the identifiers of all the queried features
740
+ let queriedFeatureIds: [String] = queriedFeatures.compactMap {
741
+ guard case let .string(featureId) = $0.feature.identifier else {
742
+ return nil
743
+ }
744
+ return featureId
745
+ }
746
+
747
+ // Find if any `queriedFeatureIds` match an annotation's `id`
748
+ let tappedAnnotations = self.manager.annotations.filter { queriedFeatureIds.contains($0.id) }
749
+
750
+ // If `tappedAnnotations` is not empty, call delegate
751
+ if !tappedAnnotations.isEmpty {
752
+ self.annotationManager(
753
+ self.manager,
754
+ didDetectTappedAnnotations: tappedAnnotations)
755
+
756
+ } else {
757
+ noAnnotationFound(tap)
758
+ }
759
+
760
+ case .failure(let error):
761
+ noAnnotationFound(tap)
762
+ Logger.log(level:.warn, message:"Failed to query map for annotations due to error: \(error)")
763
+
764
+ }
765
+ }
766
+ }
767
+
768
+ var manager : MapboxMaps.PointAnnotationManager
769
+ weak var mapView : MapView? = nil
770
+
771
+ init(annotations: AnnotationOrchestrator, mapView: MapView) {
772
+ manager = annotations.makePointAnnotationManager()
773
+ manager.delegate = self
774
+ self.mapView = mapView
775
+ }
776
+
777
+ func onDragHandler(_ manager: AnnotationManager, didDetectDraggedAnnotations annotations: [Annotation], dragState: UILongPressGestureRecognizer.State, targetPoint: CLLocationCoordinate2D) {
778
+ guard annotations.count > 0 else {
779
+ fatalError("didDetectDraggedAnnotations: No annotations found")
780
+ }
781
+
782
+ for annotation in annotations {
783
+ if let pointAnnotation = annotation as? PointAnnotation,
784
+ let userInfo = pointAnnotation.userInfo {
785
+
786
+ if let rctmglPointAnnotation = userInfo[RCTMGLPointAnnotation.key] as? WeakRef<RCTMGLPointAnnotation> {
787
+ if let pt = rctmglPointAnnotation.object {
788
+ let position = pt.superview?.convert(pt.layer.position, to: nil)
789
+ var geojson = Feature(geometry: .point(Point(targetPoint)));
790
+ geojson.properties = [
791
+ "screenPointX": .number(Double(position!.x)),
792
+ "screenPointY": .number(Double(position!.y))
793
+ ]
794
+ let event = RCTMGLEvent(type:.longPress, payload: logged("doHandleLongPress") { try geojson.toJSON() })
795
+ switch (dragState) {
796
+ case .began:
797
+ guard let onDragStart = pt.onDragStart else {
798
+ return
799
+ }
800
+ onDragStart(event.toJSON())
801
+ case .changed:
802
+ guard let onDrag = pt.onDrag else {
803
+ return
804
+ }
805
+ onDrag(event.toJSON())
806
+ return
807
+ case .ended:
808
+ guard let onDragEnd = pt.onDragEnd else {
809
+ return
810
+ }
811
+ onDragEnd(event.toJSON())
812
+ return
813
+ default:
814
+ return
815
+ }
816
+ }
817
+ }
818
+ }
819
+ /*
820
+
821
+ let rctmglPointAnnotation = userInfo[RCTMGLPointAnnotation.key] as? WeakRef<RCTMGLPointAnnotation>,
822
+ let rctmglPointAnnotation = rctmglPointAnnotation.object {
823
+ rctmglPointAnnotation.didTap()
824
+ }*/
825
+ }
826
+ }
827
+
828
+ // Used for handling panning to detect annotation dragging
829
+ func handleLongPress(_ sender: UILongPressGestureRecognizer, noAnnotationFound: @escaping (UILongPressGestureRecognizer) -> Void) {
830
+ let layerId = manager.layerId
831
+ guard let mapFeatureQueryable = mapView?.mapboxMap else {
832
+ noAnnotationFound(sender)
833
+ return
834
+ }
835
+ let options = RenderedQueryOptions(layerIds: [layerId], filter: nil)
836
+ guard let targetPoint = self.mapView?.mapboxMap.coordinate(for: sender.location(in: sender.view)) else {
837
+ return
838
+ }
839
+ switch sender.state {
840
+ case .began:
841
+ mapFeatureQueryable.queryRenderedFeatures(
842
+ at: sender.location(in: sender.view),
843
+ options: options) { [weak self] (result) in
844
+
845
+ guard let self = self else { return }
846
+ switch result {
847
+ case .success(let queriedFeatures):
848
+ // Get the identifiers of all the queried features
849
+ let queriedFeatureIds: [String] = queriedFeatures.compactMap {
850
+ guard case let .string(featureId) = $0.feature.identifier else {
851
+ return nil
852
+ }
853
+ return featureId
854
+ }
855
+
856
+ // Find if any `queriedFeatureIds` match an annotation's `id`
857
+ let draggedAnnotations = self.manager.annotations.filter { queriedFeatureIds.contains($0.id) }
858
+ let enabledAnnotations = draggedAnnotations.filter { ($0.userInfo?[RCTMGLPointAnnotation.key] as? WeakRef<RCTMGLPointAnnotation>)?.object?.draggable ?? false }
859
+ // If `tappedAnnotations` is not empty, call delegate
860
+ if !enabledAnnotations.isEmpty {
861
+ self.draggedAnnotation = enabledAnnotations.first!
862
+ self.onDragHandler(self.manager, didDetectDraggedAnnotations: enabledAnnotations, dragState: .began, targetPoint: targetPoint)
863
+ } else {
864
+ noAnnotationFound(sender)
865
+ }
866
+ case .failure(let error):
867
+ noAnnotationFound(sender)
868
+ Logger.log(level:.warn, message:"Failed to query map for annotations due to error: \(error)")
869
+ }
870
+ }
871
+
872
+ case .changed:
873
+ guard let annotation = self.draggedAnnotation else {
874
+ return
875
+ }
876
+
877
+ self.onDragHandler(self.manager, didDetectDraggedAnnotations: [annotation], dragState: .changed, targetPoint: targetPoint)
878
+
879
+ // For some reason Mapbox doesn't let us update the geometry of an existing annotation
880
+ // so we have to create a whole new one.
881
+ var newAnnotation = PointAnnotation(id: annotation.id, coordinate: targetPoint)
882
+ newAnnotation.image = annotation.image
883
+ newAnnotation.userInfo = annotation.userInfo
884
+
885
+ var newAnnotations = self.manager.annotations.filter { an in
886
+ return an.id != annotation.id
887
+ }
888
+ newAnnotations.append(newAnnotation)
889
+ manager.annotations = newAnnotations
890
+ case .cancelled, .ended:
891
+ guard let annotation = self.draggedAnnotation else {
892
+ return
893
+ }
894
+ // Optionally notify some other delegate to tell them the drag finished.
895
+ self.onDragHandler(self.manager, didDetectDraggedAnnotations: [annotation], dragState: .ended, targetPoint: targetPoint)
896
+ // Reset our global var containing the annotation currently being dragged
897
+ self.draggedAnnotation = nil
898
+ return
899
+ default:
900
+ return
901
+ }
902
+ }
903
+
904
+
905
+ func remove(_ annotation: PointAnnotation) {
906
+ manager.annotations.removeAll(where: {$0.id == annotation.id})
907
+ }
908
+
909
+ func add(_ annotation: PointAnnotation) {
910
+ manager.annotations.append(annotation)
911
+ manager.syncSourceAndLayerIfNeeded()
912
+ }
913
+ }
914
+