@rnmapbox/maps 10.0.15 → 10.1.0-beta.4

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 (409) hide show
  1. package/README.md +3 -9
  2. package/android/build.gradle +38 -35
  3. package/android/install.md +11 -116
  4. package/android/src/main/java-v10/com/mapbox/rctmgl/RCTMGLPackage.java +109 -12
  5. package/android/src/main/java-v10/com/mapbox/rctmgl/components/AbstractEventEmitter.kt +2 -3
  6. package/android/src/main/java-v10/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotation.kt +4 -2
  7. package/android/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateItem.kt +13 -12
  8. package/android/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCamera.kt +1 -2
  9. package/android/src/main/java-v10/com/mapbox/rctmgl/components/images/RCTMGLImage.kt +5 -3
  10. package/android/src/main/java-v10/com/mapbox/rctmgl/components/images/RCTMGLImages.kt +3 -1
  11. package/android/src/main/java-v10/com/mapbox/rctmgl/components/location/LocationComponentManager.kt +11 -9
  12. package/android/src/main/java-v10/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocation.kt +5 -3
  13. package/android/src/main/java-v10/com/mapbox/rctmgl/components/mapview/NativeMapViewModule.kt +193 -0
  14. package/android/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.kt +16 -2
  15. package/android/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.kt +17 -91
  16. package/android/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.kt +75 -160
  17. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/RCTMGLStyle.kt +8 -5
  18. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/RCTMGLStyleFactory.kt +3669 -0
  19. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/RCTMGLStyleValue.kt +9 -3
  20. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/atmosphere/RCTMGLAtmosphere.kt +9 -5
  21. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayer.kt +9 -4
  22. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayer.kt +7 -1
  23. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayer.kt +9 -4
  24. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayer.kt +7 -1
  25. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayer.kt +9 -1
  26. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayer.kt +6 -1
  27. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayer.kt +6 -1
  28. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLSkyLayer.kt +9 -1
  29. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayer.kt +9 -1
  30. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/light/RCTMGLLight.kt +3 -3
  31. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterDemSource.kt +2 -0
  32. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSource.kt +2 -0
  33. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSource.kt +2 -0
  34. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/terrain/RCTMGLTerrain.kt +7 -5
  35. package/android/src/main/java-v10/com/mapbox/rctmgl/events/LocationEvent.kt +14 -6
  36. package/android/src/main/java-v10/com/mapbox/rctmgl/location/LocationManager.kt +23 -32
  37. package/android/src/main/java-v10/com/mapbox/rctmgl/modules/CustomHttpHeaders.kt +9 -1
  38. package/android/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLLocationModule.kt +3 -4
  39. package/android/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLModule.kt +4 -5
  40. package/android/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLOfflineModule.kt +9 -7
  41. package/android/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLSnapshotModule.kt +124 -0
  42. package/android/src/main/java-v10/com/mapbox/rctmgl/utils/BitmapUtils.kt +174 -0
  43. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/Annotation.kt +4 -0
  44. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/Event.kt +17 -0
  45. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/Feature.kt +10 -0
  46. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/HttpInterceptor.kt +22 -0
  47. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/Image.kt +29 -0
  48. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/Light.kt +15 -0
  49. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/Location.kt +54 -0
  50. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/MapboxMap.kt +31 -0
  51. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/OfflineManager.kt +19 -0
  52. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/OrnamentSettings.kt +96 -0
  53. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/ResourceOption.kt +12 -0
  54. package/android/src/main/mapbox-v11-compat/v10/com/mapbox/rctmgl/v11compat/Snapshot.kt +28 -0
  55. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/Annotation.kt +4 -0
  56. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/Event.kt +342 -0
  57. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/Feature.kt +16 -0
  58. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/HttpInterceptor.kt +21 -0
  59. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/Image.kt +40 -0
  60. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/Light.kt +15 -0
  61. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/Location.kt +58 -0
  62. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/MapboxMap.kt +37 -0
  63. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/OfflineManager.kt +12 -0
  64. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/OrnamentSettings.kt +96 -0
  65. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/ResourceOption.kt +14 -0
  66. package/android/src/main/mapbox-v11-compat/v11/com/mapbox/rctmgl/v11compat/Snapshot.kt +22 -0
  67. package/android/src/main/old-arch/com/facebook/react/viewmanagers/MBXAndroidTextureMapViewManagerDelegate.java +89 -0
  68. package/android/src/main/old-arch/com/facebook/react/viewmanagers/MBXAndroidTextureMapViewManagerInterface.java +37 -0
  69. package/android/src/main/old-arch/com/facebook/react/viewmanagers/MBXMapViewManagerDelegate.java +89 -0
  70. package/android/src/main/old-arch/com/facebook/react/viewmanagers/MBXMapViewManagerInterface.java +37 -0
  71. package/android/src/main/old-arch/com/mapbox/rctmgl/NativeMapViewModuleSpec.java +88 -0
  72. package/ios/RCTMGL-v10/CustomHttpHeaders.swift +18 -0
  73. package/ios/RCTMGL-v10/MBXMapViewComponentView.h +18 -0
  74. package/ios/RCTMGL-v10/MBXMapViewComponentView.mm +203 -0
  75. package/ios/RCTMGL-v10/MBXMapViewManager.m +37 -0
  76. package/ios/RCTMGL-v10/MBXMapViewManager.swift +250 -0
  77. package/ios/RCTMGL-v10/MBXMapViewModule.h +18 -0
  78. package/ios/RCTMGL-v10/MBXMapViewModule.mm +167 -0
  79. package/ios/RCTMGL-v10/MGLModule.swift +15 -1
  80. package/ios/RCTMGL-v10/MGLSnapshotModule.swift +7 -1
  81. package/ios/RCTMGL-v10/RCTMGLAtmosphere.swift +4 -0
  82. package/ios/RCTMGL-v10/RCTMGLBackgroundLayer.swift +2 -1
  83. package/ios/RCTMGL-v10/RCTMGLCamera.swift +23 -0
  84. package/ios/RCTMGL-v10/RCTMGLCircleLayer.swift +4 -0
  85. package/ios/RCTMGL-v10/RCTMGLFillExtrustionLayer.swift +4 -0
  86. package/ios/RCTMGL-v10/RCTMGLFillLayer.swift +4 -0
  87. package/ios/RCTMGL-v10/RCTMGLHeatmapLayer.swift +4 -1
  88. package/ios/RCTMGL-v10/RCTMGLImageSource.swift +4 -0
  89. package/ios/RCTMGL-v10/RCTMGLImages.swift +14 -2
  90. package/ios/RCTMGL-v10/RCTMGLLayer.swift +35 -11
  91. package/ios/RCTMGL-v10/RCTMGLLight.swift +14 -4
  92. package/ios/RCTMGL-v10/RCTMGLLineLayer.swift +4 -0
  93. package/ios/RCTMGL-v10/RCTMGLLocationModule.swift +65 -12
  94. package/ios/RCTMGL-v10/RCTMGLLocationModuleV11.swift +32 -0
  95. package/ios/RCTMGL-v10/RCTMGLMapView.swift +116 -28
  96. package/ios/RCTMGL-v10/RCTMGLNativeUserLocation.swift +4 -0
  97. package/ios/RCTMGL-v10/RCTMGLOfflineModule.swift +17 -0
  98. package/ios/RCTMGL-v10/RCTMGLRasterDemSource.swift +4 -0
  99. package/ios/RCTMGL-v10/RCTMGLRasterLayer.swift +4 -0
  100. package/ios/RCTMGL-v10/RCTMGLRasterSource.swift +4 -0
  101. package/ios/RCTMGL-v10/RCTMGLShapeSource.swift +65 -3
  102. package/ios/RCTMGL-v10/RCTMGLSource.swift +4 -0
  103. package/ios/RCTMGL-v10/RCTMGLStyleValue.swift +60 -1
  104. package/ios/RCTMGL-v10/RCTMGLSymbolLayer.swift +4 -0
  105. package/ios/RCTMGL-v10/RCTMGLVectorSource.swift +4 -0
  106. package/ios/RCTMGL-v10/rnmapbox_maps.h +1 -0
  107. package/ios/install.md +28 -39
  108. package/lib/commonjs/components/MapView.js +47 -11
  109. package/lib/commonjs/components/MapView.js.map +1 -1
  110. package/lib/commonjs/specs/MBXAndroidTextureMapViewNativeComponent.js +13 -0
  111. package/lib/commonjs/specs/MBXAndroidTextureMapViewNativeComponent.js.map +1 -0
  112. package/lib/commonjs/specs/MBXMapViewNativeComponent.js +11 -0
  113. package/lib/commonjs/specs/MBXMapViewNativeComponent.js.map +1 -0
  114. package/lib/commonjs/specs/NativeMapViewModule.js +11 -0
  115. package/lib/commonjs/specs/NativeMapViewModule.js.map +1 -0
  116. package/lib/commonjs/specs/codegenUtils.js +2 -0
  117. package/lib/commonjs/specs/codegenUtils.js.map +1 -0
  118. package/lib/module/components/MapView.js +47 -10
  119. package/lib/module/components/MapView.js.map +1 -1
  120. package/lib/module/specs/MBXAndroidTextureMapViewNativeComponent.js +5 -0
  121. package/lib/module/specs/MBXAndroidTextureMapViewNativeComponent.js.map +1 -0
  122. package/lib/module/specs/MBXMapViewNativeComponent.js +3 -0
  123. package/lib/module/specs/MBXMapViewNativeComponent.js.map +1 -0
  124. package/lib/module/specs/NativeMapViewModule.js +5 -0
  125. package/lib/module/specs/NativeMapViewModule.js.map +1 -0
  126. package/lib/module/specs/codegenUtils.js +2 -0
  127. package/lib/module/specs/codegenUtils.js.map +1 -0
  128. package/lib/typescript/components/MapView.d.ts +13 -3
  129. package/lib/typescript/components/MapView.d.ts.map +1 -1
  130. package/lib/typescript/specs/MBXAndroidTextureMapViewNativeComponent.d.ts +52 -0
  131. package/lib/typescript/specs/MBXAndroidTextureMapViewNativeComponent.d.ts.map +1 -0
  132. package/lib/typescript/specs/MBXMapViewNativeComponent.d.ts +52 -0
  133. package/lib/typescript/specs/MBXMapViewNativeComponent.d.ts.map +1 -0
  134. package/lib/typescript/specs/NativeMapViewModule.d.ts +21 -0
  135. package/lib/typescript/specs/NativeMapViewModule.d.ts.map +1 -0
  136. package/lib/typescript/specs/codegenUtils.d.ts +2 -0
  137. package/lib/typescript/specs/codegenUtils.d.ts.map +1 -0
  138. package/package.json +9 -1
  139. package/rnmapbox-maps.podspec +34 -72
  140. package/setup-jest.js +16 -0
  141. package/src/components/MapView.tsx +56 -12
  142. package/src/specs/MBXAndroidTextureMapViewNativeComponent.ts +63 -0
  143. package/src/specs/MBXMapViewNativeComponent.ts +63 -0
  144. package/src/specs/NativeMapViewModule.ts +54 -0
  145. package/src/specs/codegenUtils.ts +4 -0
  146. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/RCTMGLPackage.java +0 -99
  147. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/AbstractEvent.java +0 -35
  148. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/AbstractEventEmitter.java +0 -80
  149. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/AbstractMapFeature.java +0 -19
  150. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/MarkerView.java +0 -23
  151. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/MarkerViewManager.java +0 -69
  152. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLCallout.java +0 -15
  153. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLCalloutManager.java +0 -22
  154. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerView.java +0 -112
  155. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerViewManager.java +0 -45
  156. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotation.java +0 -360
  157. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotationManager.java +0 -88
  158. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/CameraStop.java +0 -249
  159. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/CameraUpdateItem.java +0 -125
  160. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/CameraUpdateQueue.java +0 -73
  161. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/RCTMGLCamera.java +0 -530
  162. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.java +0 -101
  163. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/camera/constants/CameraMode.java +0 -22
  164. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/images/RCTMGLImages.java +0 -234
  165. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/images/RCTMGLImagesManager.java +0 -103
  166. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/location/LocationComponentManager.java +0 -149
  167. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocation.java +0 -67
  168. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocationManager.java +0 -35
  169. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/LayerSourceInfo.java +0 -59
  170. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapView.java +0 -16
  171. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.java +0 -31
  172. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.java +0 -1528
  173. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.java +0 -355
  174. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/mapview/helpers/CameraChangeTracker.java +0 -41
  175. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/RCTMGLStyle.java +0 -83
  176. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/RCTMGLStyleFactory.java +0 -2220
  177. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/RCTMGLStyleFunctionParser.java +0 -108
  178. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/RCTMGLStyleValue.java +0 -216
  179. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTLayer.java +0 -287
  180. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayer.java +0 -27
  181. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayerManager.java +0 -64
  182. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayer.java +0 -55
  183. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayerManager.java +0 -77
  184. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayer.java +0 -55
  185. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayerManager.java +0 -80
  186. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayer.java +0 -55
  187. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayerManager.java +0 -80
  188. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayer.java +0 -55
  189. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayerManager.java +0 -77
  190. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayer.java +0 -55
  191. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayerManager.java +0 -79
  192. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayer.java +0 -27
  193. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayerManager.java +0 -64
  194. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayer.java +0 -55
  195. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayerManager.java +0 -75
  196. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/light/RCTMGLLight.java +0 -65
  197. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/light/RCTMGLLightManager.java +0 -29
  198. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSource.java +0 -81
  199. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSourceManager.java +0 -72
  200. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSource.java +0 -45
  201. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSourceManager.java +0 -44
  202. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSource.java +0 -316
  203. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSourceManager.java +0 -253
  204. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSource.java +0 -97
  205. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSourceManager.java +0 -80
  206. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSource.java +0 -64
  207. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSourceManager.java +0 -84
  208. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/components/styles/sources/RCTSource.java +0 -244
  209. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/AbstractEvent.java +0 -66
  210. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/AndroidCallbackEvent.java +0 -38
  211. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/EventEmitter.java +0 -45
  212. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/FeatureClickEvent.java +0 -79
  213. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/IEvent.java +0 -18
  214. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/ImageMissingEvent.java +0 -42
  215. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/LocationEvent.java +0 -100
  216. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/MapChangeEvent.java +0 -47
  217. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/MapClickEvent.java +0 -51
  218. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/MapUserTrackingModeEvent.java +0 -36
  219. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/OfflineEvent.java +0 -29
  220. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/PointAnnotationClickEvent.java +0 -46
  221. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/PointAnnotationDragEvent.java +0 -51
  222. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/constants/EventKeys.java +0 -39
  223. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/events/constants/EventTypes.java +0 -51
  224. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/http/CustomHeadersInterceptor.java +0 -38
  225. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/location/LocationManager.java +0 -147
  226. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/location/UserLocation.java +0 -63
  227. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/location/UserLocationVerticalAlignment.java +0 -11
  228. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/location/UserTrackingMode.java +0 -63
  229. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/location/UserTrackingState.java +0 -19
  230. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/modules/RCTMGLLocationModule.java +0 -164
  231. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/modules/RCTMGLLogging.java +0 -140
  232. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/modules/RCTMGLModule.java +0 -377
  233. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/modules/RCTMGLOfflineModule.java +0 -597
  234. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/modules/RCTMGLSnapshotModule.java +0 -139
  235. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/BitmapUtils.java +0 -129
  236. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/ClusterPropertyEntry.java +0 -13
  237. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/ConvertUtils.java +0 -257
  238. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/DownloadMapImageTask.java +0 -159
  239. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/ExpressionParser.java +0 -74
  240. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/GeoJSONUtils.java +0 -209
  241. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/GeoViewport.java +0 -38
  242. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/ImageEntry.java +0 -25
  243. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/ResourceUtils.java +0 -30
  244. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/SimpleEventCallback.java +0 -30
  245. package/android/src/main/java-mapboxgl/common/com/mapbox/rctmgl/utils/SphericalMercator.java +0 -69
  246. package/android/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/InstanceManagerImpl.java +0 -35
  247. package/android/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/LocationEngineCallbackImpl.java +0 -12
  248. package/android/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/LocationEngineResultImpl.java +0 -18
  249. package/android/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/LocationManagerImpl.java +0 -64
  250. package/android/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/PermissionsManagerImpl.java +0 -10
  251. package/android/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/SymbolClickListenerImpl.java +0 -18
  252. package/android/src/main/java-mapboxgl/mapbox/com/mapbox/rctmgl/impl/TelemetryImpl.java +0 -11
  253. package/android/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/InstanceManagerImpl.java +0 -42
  254. package/android/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/LocationEngineCallbackImpl.java +0 -12
  255. package/android/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/LocationEngineResultImpl.java +0 -18
  256. package/android/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/LocationManagerImpl.java +0 -64
  257. package/android/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/PermissionsManagerImpl.java +0 -10
  258. package/android/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/SymbolClickListenerImpl.java +0 -18
  259. package/android/src/main/java-mapboxgl/maplibre/com/mapbox/rctmgl/impl/TelemetryImpl.java +0 -7
  260. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/RCTMGLStyleFactory.java +0 -2586
  261. package/android/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLSnapshotModule.java +0 -151
  262. package/android/src/main/java-v10/com/mapbox/rctmgl/utils/BitmapUtils.java +0 -183
  263. package/ios/RCTMGL/CameraMode.h +0 -18
  264. package/ios/RCTMGL/CameraMode.m +0 -18
  265. package/ios/RCTMGL/CameraStop.h +0 -26
  266. package/ios/RCTMGL/CameraStop.m +0 -83
  267. package/ios/RCTMGL/CameraUpdateItem.h +0 -18
  268. package/ios/RCTMGL/CameraUpdateItem.m +0 -178
  269. package/ios/RCTMGL/CameraUpdateQueue.h +0 -21
  270. package/ios/RCTMGL/CameraUpdateQueue.m +0 -74
  271. package/ios/RCTMGL/FilterParser.h +0 -14
  272. package/ios/RCTMGL/FilterParser.m +0 -22
  273. package/ios/RCTMGL/MGLCustomHeaders.h +0 -20
  274. package/ios/RCTMGL/MGLCustomHeaders.m +0 -98
  275. package/ios/RCTMGL/MGLFaux3DUserLocationAnnotationView.h +0 -23
  276. package/ios/RCTMGL/MGLFaux3DUserLocationAnnotationView.m +0 -474
  277. package/ios/RCTMGL/MGLModule.h +0 -13
  278. package/ios/RCTMGL/MGLModule.m +0 -336
  279. package/ios/RCTMGL/MGLOfflineModule.h +0 -19
  280. package/ios/RCTMGL/MGLOfflineModule.m +0 -537
  281. package/ios/RCTMGL/MGLSnapshotModule.h +0 -13
  282. package/ios/RCTMGL/MGLSnapshotModule.m +0 -80
  283. package/ios/RCTMGL/MGLUserLocationHeadingArrowLayer.h +0 -11
  284. package/ios/RCTMGL/MGLUserLocationHeadingArrowLayer.m +0 -57
  285. package/ios/RCTMGL/MGLUserLocationHeadingBeamLayer.h +0 -11
  286. package/ios/RCTMGL/MGLUserLocationHeadingBeamLayer.m +0 -102
  287. package/ios/RCTMGL/MGLUserLocationHeadingIndicator.h +0 -10
  288. package/ios/RCTMGL/RCTConvert+Mapbox.h +0 -16
  289. package/ios/RCTMGL/RCTConvert+Mapbox.m +0 -32
  290. package/ios/RCTMGL/RCTMGL.h +0 -13
  291. package/ios/RCTMGL/RCTMGL.m +0 -13
  292. package/ios/RCTMGL/RCTMGLBackgroundLayer.h +0 -14
  293. package/ios/RCTMGL/RCTMGLBackgroundLayer.m +0 -27
  294. package/ios/RCTMGL/RCTMGLBackgroundLayerManager.h +0 -13
  295. package/ios/RCTMGL/RCTMGLBackgroundLayerManager.m +0 -35
  296. package/ios/RCTMGL/RCTMGLCallout.h +0 -15
  297. package/ios/RCTMGL/RCTMGLCallout.m +0 -74
  298. package/ios/RCTMGL/RCTMGLCalloutManager.h +0 -13
  299. package/ios/RCTMGL/RCTMGLCalloutManager.m +0 -21
  300. package/ios/RCTMGL/RCTMGLCamera.h +0 -39
  301. package/ios/RCTMGL/RCTMGLCamera.m +0 -258
  302. package/ios/RCTMGL/RCTMGLCameraManager.h +0 -13
  303. package/ios/RCTMGL/RCTMGLCameraManager.m +0 -52
  304. package/ios/RCTMGL/RCTMGLCircleLayer.h +0 -13
  305. package/ios/RCTMGL/RCTMGLCircleLayer.m +0 -34
  306. package/ios/RCTMGL/RCTMGLCircleLayerManager.h +0 -13
  307. package/ios/RCTMGL/RCTMGLCircleLayerManager.m +0 -39
  308. package/ios/RCTMGL/RCTMGLEvent.h +0 -21
  309. package/ios/RCTMGL/RCTMGLEvent.m +0 -47
  310. package/ios/RCTMGL/RCTMGLEventProtocol.h +0 -16
  311. package/ios/RCTMGL/RCTMGLEventTypes.h +0 -50
  312. package/ios/RCTMGL/RCTMGLEventTypes.m +0 -49
  313. package/ios/RCTMGL/RCTMGLFillExtrusionLayer.h +0 -14
  314. package/ios/RCTMGL/RCTMGLFillExtrusionLayer.m +0 -32
  315. package/ios/RCTMGL/RCTMGLFillExtrusionLayerManager.h +0 -13
  316. package/ios/RCTMGL/RCTMGLFillExtrusionLayerManager.m +0 -39
  317. package/ios/RCTMGL/RCTMGLFillLayer.h +0 -14
  318. package/ios/RCTMGL/RCTMGLFillLayer.m +0 -33
  319. package/ios/RCTMGL/RCTMGLFillLayerManager.h +0 -13
  320. package/ios/RCTMGL/RCTMGLFillLayerManager.m +0 -37
  321. package/ios/RCTMGL/RCTMGLHeatmapLayer.h +0 -12
  322. package/ios/RCTMGL/RCTMGLHeatmapLayer.m +0 -30
  323. package/ios/RCTMGL/RCTMGLHeatmapLayerManager.h +0 -12
  324. package/ios/RCTMGL/RCTMGLHeatmapLayerManager.m +0 -38
  325. package/ios/RCTMGL/RCTMGLImageQueue.h +0 -19
  326. package/ios/RCTMGL/RCTMGLImageQueue.m +0 -57
  327. package/ios/RCTMGL/RCTMGLImageQueueOperation.h +0 -17
  328. package/ios/RCTMGL/RCTMGLImageQueueOperation.m +0 -138
  329. package/ios/RCTMGL/RCTMGLImageSource.h +0 -16
  330. package/ios/RCTMGL/RCTMGLImageSource.m +0 -60
  331. package/ios/RCTMGL/RCTMGLImageSourceManager.h +0 -13
  332. package/ios/RCTMGL/RCTMGLImageSourceManager.m +0 -25
  333. package/ios/RCTMGL/RCTMGLImages.h +0 -25
  334. package/ios/RCTMGL/RCTMGLImages.m +0 -126
  335. package/ios/RCTMGL/RCTMGLImagesManager.h +0 -5
  336. package/ios/RCTMGL/RCTMGLImagesManager.m +0 -21
  337. package/ios/RCTMGL/RCTMGLLayer.h +0 -52
  338. package/ios/RCTMGL/RCTMGLLayer.m +0 -236
  339. package/ios/RCTMGL/RCTMGLLight.h +0 -17
  340. package/ios/RCTMGL/RCTMGLLight.m +0 -46
  341. package/ios/RCTMGL/RCTMGLLightManager.h +0 -13
  342. package/ios/RCTMGL/RCTMGLLightManager.m +0 -23
  343. package/ios/RCTMGL/RCTMGLLineLayer.h +0 -14
  344. package/ios/RCTMGL/RCTMGLLineLayer.m +0 -33
  345. package/ios/RCTMGL/RCTMGLLineLayerManager.h +0 -13
  346. package/ios/RCTMGL/RCTMGLLineLayerManager.m +0 -40
  347. package/ios/RCTMGL/RCTMGLLocation.h +0 -19
  348. package/ios/RCTMGL/RCTMGLLocation.m +0 -32
  349. package/ios/RCTMGL/RCTMGLLocationManager.h +0 -30
  350. package/ios/RCTMGL/RCTMGLLocationManager.m +0 -180
  351. package/ios/RCTMGL/RCTMGLLocationManagerDelegate.h +0 -20
  352. package/ios/RCTMGL/RCTMGLLocationModule.h +0 -15
  353. package/ios/RCTMGL/RCTMGLLocationModule.m +0 -99
  354. package/ios/RCTMGL/RCTMGLLogging.h +0 -18
  355. package/ios/RCTMGL/RCTMGLLogging.m +0 -132
  356. package/ios/RCTMGL/RCTMGLMapTouchEvent.h +0 -25
  357. package/ios/RCTMGL/RCTMGLMapTouchEvent.m +0 -77
  358. package/ios/RCTMGL/RCTMGLMapView.h +0 -91
  359. package/ios/RCTMGL/RCTMGLMapView.m +0 -536
  360. package/ios/RCTMGL/RCTMGLMapViewManager.h +0 -17
  361. package/ios/RCTMGL/RCTMGLMapViewManager.m +0 -625
  362. package/ios/RCTMGL/RCTMGLNativeUserLocation.h +0 -18
  363. package/ios/RCTMGL/RCTMGLNativeUserLocation.m +0 -49
  364. package/ios/RCTMGL/RCTMGLNativeUserLocationManager.h +0 -5
  365. package/ios/RCTMGL/RCTMGLNativeUserLocationManager.m +0 -25
  366. package/ios/RCTMGL/RCTMGLPointAnnotation.h +0 -41
  367. package/ios/RCTMGL/RCTMGLPointAnnotation.m +0 -251
  368. package/ios/RCTMGL/RCTMGLPointAnnotationManager.h +0 -13
  369. package/ios/RCTMGL/RCTMGLPointAnnotationManager.m +0 -36
  370. package/ios/RCTMGL/RCTMGLRasterLayer.h +0 -14
  371. package/ios/RCTMGL/RCTMGLRasterLayer.m +0 -30
  372. package/ios/RCTMGL/RCTMGLRasterLayerManager.h +0 -13
  373. package/ios/RCTMGL/RCTMGLRasterLayerManager.m +0 -35
  374. package/ios/RCTMGL/RCTMGLRasterSource.h +0 -16
  375. package/ios/RCTMGL/RCTMGLRasterSource.m +0 -35
  376. package/ios/RCTMGL/RCTMGLRasterSourceManager.h +0 -13
  377. package/ios/RCTMGL/RCTMGLRasterSourceManager.m +0 -32
  378. package/ios/RCTMGL/RCTMGLShapeSource.h +0 -53
  379. package/ios/RCTMGL/RCTMGLShapeSource.m +0 -194
  380. package/ios/RCTMGL/RCTMGLShapeSourceManager.h +0 -14
  381. package/ios/RCTMGL/RCTMGLShapeSourceManager.m +0 -206
  382. package/ios/RCTMGL/RCTMGLSource.h +0 -35
  383. package/ios/RCTMGL/RCTMGLSource.m +0 -143
  384. package/ios/RCTMGL/RCTMGLStyle.h +0 -217
  385. package/ios/RCTMGL/RCTMGLStyle.m +0 -1640
  386. package/ios/RCTMGL/RCTMGLStyleValue.h +0 -27
  387. package/ios/RCTMGL/RCTMGLStyleValue.m +0 -167
  388. package/ios/RCTMGL/RCTMGLSymbolLayer.h +0 -19
  389. package/ios/RCTMGL/RCTMGLSymbolLayer.m +0 -121
  390. package/ios/RCTMGL/RCTMGLSymbolLayerManager.h +0 -13
  391. package/ios/RCTMGL/RCTMGLSymbolLayerManager.m +0 -40
  392. package/ios/RCTMGL/RCTMGLTileSource.h +0 -22
  393. package/ios/RCTMGL/RCTMGLTileSource.m +0 -31
  394. package/ios/RCTMGL/RCTMGLUserLocation.h +0 -15
  395. package/ios/RCTMGL/RCTMGLUserLocation.m +0 -38
  396. package/ios/RCTMGL/RCTMGLUtils.h +0 -31
  397. package/ios/RCTMGL/RCTMGLUtils.m +0 -218
  398. package/ios/RCTMGL/RCTMGLVectorLayer.h +0 -15
  399. package/ios/RCTMGL/RCTMGLVectorLayer.m +0 -59
  400. package/ios/RCTMGL/RCTMGLVectorSource.h +0 -16
  401. package/ios/RCTMGL/RCTMGLVectorSource.m +0 -28
  402. package/ios/RCTMGL/RCTMGLVectorSourceManager.h +0 -14
  403. package/ios/RCTMGL/RCTMGLVectorSourceManager.m +0 -79
  404. package/ios/RCTMGL/RNMBImageUtils.h +0 -17
  405. package/ios/RCTMGL/RNMBImageUtils.m +0 -31
  406. package/ios/RCTMGL/ViewManager.h +0 -16
  407. package/ios/RCTMGL/ViewManager.m +0 -63
  408. package/ios/RCTMGL-v10/RCTMGLMapViewManager.m +0 -107
  409. package/ios/RCTMGL-v10/RCTMGLMapViewManager.swift +0 -285
@@ -1,1528 +0,0 @@
1
- package com.mapbox.rctmgl.components.mapview;
2
-
3
- import android.content.Context;
4
- import android.graphics.Bitmap;
5
- import android.graphics.BitmapFactory;
6
- import android.graphics.PointF;
7
- import android.graphics.RectF;
8
- import android.location.Location;
9
- import android.os.Handler;
10
- import androidx.annotation.NonNull;
11
- import androidx.annotation.UiThread;
12
-
13
- import android.util.DisplayMetrics;
14
- import android.util.Pair;
15
- import android.view.Gravity;
16
- import android.view.MotionEvent;
17
- import android.view.View;
18
- import android.view.ViewGroup;
19
- import android.widget.FrameLayout;
20
- import com.mapbox.mapboxsdk.log.Logger;
21
-
22
- import com.facebook.react.bridge.LifecycleEventListener;
23
- import com.facebook.react.bridge.ReactContext;
24
- import com.facebook.react.bridge.ReadableArray;
25
- import com.facebook.react.bridge.ReadableMap;
26
- import com.facebook.react.bridge.WritableArray;
27
- import com.facebook.react.bridge.WritableMap;
28
- import com.facebook.react.bridge.WritableNativeArray;
29
- import com.facebook.react.bridge.WritableNativeMap;
30
- import com.mapbox.android.gestures.MoveGestureDetector;
31
- import com.mapbox.geojson.Feature;
32
- import com.mapbox.geojson.FeatureCollection;
33
- import com.mapbox.mapboxsdk.camera.CameraPosition;
34
- import com.mapbox.mapboxsdk.camera.CameraUpdate;
35
- import com.mapbox.mapboxsdk.geometry.LatLng;
36
- import com.mapbox.mapboxsdk.geometry.VisibleRegion;
37
- import com.mapbox.mapboxsdk.maps.AttributionDialogManager;
38
- import com.mapbox.mapboxsdk.maps.MapView;
39
- import com.mapbox.mapboxsdk.maps.MapboxMap;
40
- import com.mapbox.mapboxsdk.maps.MapboxMapOptions;
41
- import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
42
- import com.mapbox.mapboxsdk.maps.Style;
43
- import com.mapbox.mapboxsdk.maps.UiSettings;
44
- import com.mapbox.mapboxsdk.plugins.localization.LocalizationPlugin;
45
- import com.mapbox.mapboxsdk.plugins.annotation.OnSymbolClickListener;
46
- import com.mapbox.mapboxsdk.plugins.annotation.OnSymbolDragListener;
47
- import com.mapbox.mapboxsdk.plugins.annotation.Symbol;
48
- import com.mapbox.mapboxsdk.plugins.annotation.SymbolManager;
49
- import com.mapbox.mapboxsdk.style.expressions.Expression;
50
- import com.mapbox.mapboxsdk.style.layers.Layer;
51
- import com.mapbox.mapboxsdk.style.layers.Property;
52
- import com.mapbox.rctmgl.R;
53
- import com.mapbox.rctmgl.components.AbstractMapFeature;
54
- import com.mapbox.rctmgl.components.annotation.RCTMGLPointAnnotation;
55
- import com.mapbox.rctmgl.components.annotation.RCTMGLMarkerView;
56
- import com.mapbox.rctmgl.components.annotation.MarkerView;
57
- import com.mapbox.rctmgl.components.annotation.MarkerViewManager;
58
- import com.mapbox.rctmgl.components.camera.RCTMGLCamera;
59
- import com.mapbox.rctmgl.components.images.RCTMGLImages;
60
- import com.mapbox.rctmgl.components.location.LocationComponentManager;
61
- import com.mapbox.rctmgl.components.location.RCTMGLNativeUserLocation;
62
- import com.mapbox.rctmgl.components.mapview.helpers.CameraChangeTracker;
63
- import com.mapbox.rctmgl.components.styles.layers.RCTLayer;
64
- import com.mapbox.rctmgl.components.styles.light.RCTMGLLight;
65
- import com.mapbox.rctmgl.components.styles.sources.RCTMGLShapeSource;
66
- import com.mapbox.rctmgl.components.styles.sources.RCTSource;
67
- import com.mapbox.rctmgl.events.AndroidCallbackEvent;
68
- import com.mapbox.rctmgl.events.IEvent;
69
- import com.mapbox.rctmgl.events.MapChangeEvent;
70
- import com.mapbox.rctmgl.events.MapClickEvent;
71
- import com.mapbox.rctmgl.events.constants.EventTypes;
72
- import com.mapbox.rctmgl.utils.BitmapUtils;
73
- import com.mapbox.rctmgl.utils.GeoJSONUtils;
74
- import com.mapbox.rctmgl.utils.GeoViewport;
75
-
76
- import com.mapbox.rctmgl.impl.SymbolClickListenerImpl;
77
-
78
- import java.util.ArrayList;
79
- import java.util.Arrays;
80
- import java.util.HashMap;
81
- import java.util.HashSet;
82
- import java.util.List;
83
- import java.util.Map;
84
- import java.util.Locale;
85
- import org.json.*;
86
-
87
- import javax.annotation.Nullable;
88
-
89
- import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.visibility;
90
-
91
- /**
92
- * Created by nickitaliano on 8/18/17.
93
- */
94
-
95
- @SuppressWarnings({ "MissingPermission" })
96
- public class RCTMGLMapView extends MapView implements OnMapReadyCallback, MapboxMap.OnMapClickListener,
97
- MapboxMap.OnMapLongClickListener, MapView.OnCameraIsChangingListener, MapView.OnCameraDidChangeListener,
98
- MapView.OnDidFailLoadingMapListener, MapView.OnDidFinishLoadingMapListener,
99
- MapView.OnWillStartRenderingFrameListener, MapView.OnDidFinishRenderingFrameListener,
100
- MapView.OnWillStartRenderingMapListener, MapView.OnDidFinishRenderingMapListener,
101
- MapView.OnDidFinishLoadingStyleListener, MapView.OnStyleImageMissingListener {
102
- public static final String LOG_TAG = "RCTMGLMapView";
103
-
104
- private RCTMGLMapViewManager mManager;
105
- private Context mContext;
106
- private Handler mHandler;
107
- private LifecycleEventListener mLifeCycleListener;
108
- private boolean mPaused;
109
- private boolean mDestroyed;
110
-
111
- private RCTMGLCamera mCamera;
112
- private List<AbstractMapFeature> mFeatures;
113
- private List<AbstractMapFeature> mQueuedFeatures;
114
- private Map<String, RCTMGLPointAnnotation> mPointAnnotations;
115
- private Map<String, RCTSource> mSources;
116
- private List<RCTMGLImages> mImages;
117
-
118
- private CameraChangeTracker mCameraChangeTracker = new CameraChangeTracker();
119
- private List<Pair<Integer, ReadableArray>> mPreRenderMethods = new ArrayList<>();
120
-
121
- private MapboxMap mMap;
122
-
123
- private LocalizationPlugin mLocalizationPlugin;
124
-
125
- private String mStyleURL;
126
-
127
- private Integer mPreferredFramesPerSecond;
128
- private boolean mLocalizeLabels;
129
- private Boolean mScrollEnabled;
130
- private Boolean mPitchEnabled;
131
- private Boolean mRotateEnabled;
132
- private Boolean mAttributionEnabled;
133
- private Integer mAttributionGravity;
134
- private int[] mAttributionMargin;
135
- private Boolean mLogoEnabled;
136
- private Integer mLogoGravity;
137
- private int[] mLogoMargins;
138
- private Boolean mCompassEnabled;
139
- private ReadableMap mCompassViewMargins;
140
- private int mCompassViewPosition = -1;
141
- private Boolean mZoomEnabled;
142
-
143
- private SymbolManager symbolManager;
144
-
145
- private long mActiveMarkerID = -1;
146
-
147
- private ReadableArray mInsets;
148
-
149
- private HashSet<String> mHandledMapChangedEvents = null;
150
-
151
- private MarkerViewManager markerViewManager = null;
152
- private ViewGroup mOffscreenAnnotationViewContainer = null;
153
-
154
- private boolean mAnnotationClicked = false;
155
-
156
- private LocationComponentManager mLocationComponentManager = null;
157
-
158
- private @Nullable Integer mTintColor = null;
159
-
160
- public RCTMGLMapView(Context context, RCTMGLMapViewManager manager, MapboxMapOptions options) {
161
- super(context, options);
162
-
163
- mContext = context;
164
- onCreate(null);
165
- onStart();
166
- onResume();
167
- getMapAsync(this);
168
-
169
- mManager = manager;
170
-
171
- mSources = new HashMap<>();
172
- mImages = new ArrayList<>();
173
- mPointAnnotations = new HashMap<>();
174
- mQueuedFeatures = new ArrayList<>();
175
- mFeatures = new ArrayList<>();
176
-
177
- mHandler = new Handler();
178
-
179
- setLifecycleListeners();
180
-
181
- addOnCameraIsChangingListener(this);
182
- addOnCameraDidChangeListener(this);
183
- addOnDidFailLoadingMapListener(this);
184
- addOnDidFinishLoadingMapListener(this);
185
- addOnStyleImageMissingListener(this);
186
-
187
- addOnWillStartRenderingFrameListener(this);
188
- addOnDidFinishRenderingFrameListener(this);
189
- addOnWillStartRenderingMapListener(this);
190
- addOnDidFinishRenderingMapListener(this);
191
- addOnDidFinishLoadingStyleListener(this);
192
- }
193
-
194
- @Override
195
- public void onResume() {
196
- super.onResume();
197
- mPaused = false;
198
- }
199
-
200
- @Override
201
- public void onPause() {
202
- super.onPause();
203
- mPaused = true;
204
- }
205
-
206
- @Override
207
- public void onDestroy() {
208
- super.onDestroy();
209
- mDestroyed = true;
210
- }
211
-
212
- public void enqueuePreRenderMapMethod(Integer methodID, @Nullable ReadableArray args) {
213
- mPreRenderMethods.add(new Pair<>(methodID, args));
214
- }
215
-
216
- public void addFeature(View childView, int childPosition) {
217
- AbstractMapFeature feature = null;
218
-
219
- if (childView instanceof RCTSource) {
220
- RCTSource source = (RCTSource) childView;
221
- mSources.put(source.getID(), source);
222
- feature = (AbstractMapFeature) childView;
223
- } else if (childView instanceof RCTMGLImages) {
224
- RCTMGLImages images = (RCTMGLImages) childView;
225
- mImages.add(images);
226
- feature = (AbstractMapFeature) childView;
227
- } else if (childView instanceof RCTMGLLight) {
228
- feature = (AbstractMapFeature) childView;
229
- } else if (childView instanceof RCTMGLNativeUserLocation) {
230
- feature = (AbstractMapFeature) childView;
231
- } else if (childView instanceof RCTMGLPointAnnotation) {
232
- RCTMGLPointAnnotation annotation = (RCTMGLPointAnnotation) childView;
233
- mPointAnnotations.put(annotation.getID(), annotation);
234
- feature = (AbstractMapFeature) childView;
235
- } else if (childView instanceof RCTMGLMarkerView) {
236
- RCTMGLMarkerView marker = (RCTMGLMarkerView) childView;
237
- feature = (AbstractMapFeature) childView;
238
- } else if (childView instanceof RCTMGLCamera) {
239
- mCamera = (RCTMGLCamera) childView;
240
- feature = (AbstractMapFeature) childView;
241
- } else if (childView instanceof RCTLayer) {
242
- feature = (RCTLayer) childView;
243
- } else if (childView instanceof ViewGroup) {
244
- ViewGroup children = (ViewGroup) childView;
245
-
246
- for (int i = 0; i < children.getChildCount(); i++) {
247
- addFeature(children.getChildAt(i), childPosition);
248
- }
249
- }
250
-
251
- if (feature != null) {
252
- if (mQueuedFeatures == null) {
253
- feature.addToMap(this);
254
- mFeatures.add(childPosition, feature);
255
- } else {
256
- mQueuedFeatures.add(childPosition, feature);
257
- }
258
- }
259
- }
260
-
261
- public void removeFeature(int childPosition) {
262
- AbstractMapFeature feature = features().get(childPosition);
263
-
264
- if (feature == null) {
265
- return;
266
- }
267
-
268
- if (feature instanceof RCTSource) {
269
- RCTSource source = (RCTSource) feature;
270
- mSources.remove(source.getID());
271
- } else if (feature instanceof RCTMGLPointAnnotation) {
272
- RCTMGLPointAnnotation annotation = (RCTMGLPointAnnotation) feature;
273
-
274
- if (annotation.getMapboxID() == mActiveMarkerID) {
275
- mActiveMarkerID = -1;
276
- }
277
-
278
- mPointAnnotations.remove(annotation.getID());
279
- } else if (feature instanceof RCTMGLImages) {
280
- RCTMGLImages images = (RCTMGLImages) feature;
281
- mImages.remove(images);
282
- }
283
-
284
- feature.removeFromMap(this);
285
- features().remove(feature);
286
- }
287
-
288
- private List<AbstractMapFeature> features() {
289
- if (mQueuedFeatures != null && mQueuedFeatures.size() > 0) {
290
- return mQueuedFeatures;
291
- } else {
292
- return mFeatures;
293
- }
294
- }
295
-
296
- public int getFeatureCount() {
297
- return features().size();
298
- }
299
-
300
- public AbstractMapFeature getFeatureAt(int i) {
301
- return features().get(i);
302
- }
303
-
304
- public synchronized void dispose() {
305
- if (mDestroyed) {
306
- return;
307
- }
308
-
309
- if (!layerWaiters.isEmpty()) {
310
- layerWaiters.clear();
311
- }
312
-
313
- ReactContext reactContext = (ReactContext) mContext;
314
- reactContext.removeLifecycleEventListener(mLifeCycleListener);
315
-
316
- if (!mPaused) {
317
- onPause();
318
- }
319
-
320
- onStop();
321
- onDestroy();
322
- }
323
-
324
- public VisibleRegion getVisibleRegion(LatLng center, double zoomLevel) {
325
- DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
326
- int[] contentPadding = mMap.getPadding();
327
-
328
- int mapWidth = (int) ((mMap.getWidth() * 0.75 - (contentPadding[0] + contentPadding[2]))
329
- / metrics.density);
330
- int mapHeight = (int) ((mMap.getHeight() * 0.75 - (contentPadding[1] + contentPadding[3]))
331
- / metrics.density);
332
- VisibleRegion region = GeoViewport.getRegion(center, (int) zoomLevel, mapWidth, mapHeight);
333
- return region;
334
- }
335
-
336
- public CameraPosition getCameraPosition() {
337
- return mMap.getCameraPosition();
338
- }
339
-
340
- public void animateCamera(CameraUpdate cameraUpdate, MapboxMap.CancelableCallback callback) {
341
- mMap.animateCamera(cameraUpdate, callback);
342
- }
343
-
344
- public void moveCamera(CameraUpdate cameraUpdate, MapboxMap.CancelableCallback callback) {
345
- mMap.moveCamera(cameraUpdate, callback);
346
- }
347
-
348
- public void moveCamera(CameraUpdate cameraUpdate) {
349
- mMap.moveCamera(cameraUpdate);
350
- }
351
-
352
- public void easeCamera(CameraUpdate cameraUpdate, int duration, boolean easingInterpolator, MapboxMap.CancelableCallback callback) {
353
- mMap.easeCamera(cameraUpdate, duration, easingInterpolator, callback);
354
- }
355
-
356
- public void easeCamera(CameraUpdate cameraUpdate) {
357
- mMap.easeCamera(cameraUpdate);
358
- }
359
-
360
- public RCTMGLPointAnnotation getPointAnnotationByID(String annotationID) {
361
- if (annotationID == null) {
362
- return null;
363
- }
364
-
365
- for (String key : mPointAnnotations.keySet()) {
366
- RCTMGLPointAnnotation annotation = mPointAnnotations.get(key);
367
-
368
- if (annotation != null && annotationID.equals(annotation.getID())) {
369
- return annotation;
370
- }
371
- }
372
-
373
- return null;
374
- }
375
-
376
- public RCTMGLPointAnnotation getPointAnnotationByMarkerID(long markerID) {
377
- for (String key : mPointAnnotations.keySet()) {
378
- RCTMGLPointAnnotation annotation = mPointAnnotations.get(key);
379
-
380
- if (annotation != null && markerID == annotation.getMapboxID()) {
381
- return annotation;
382
- }
383
- }
384
-
385
- return null;
386
- }
387
-
388
- public MapboxMap getMapboxMap() {
389
- return mMap;
390
- }
391
-
392
- public SymbolManager getSymbolManager() {
393
- return symbolManager;
394
- }
395
-
396
- public interface FoundLayerCallback {
397
- public void found(Layer layer);
398
- }
399
-
400
- private Map<String, List<FoundLayerCallback>> layerWaiters = new HashMap<String, List<FoundLayerCallback>>();
401
-
402
- public void layerAdded(Layer layer) {
403
- String layerId = layer.getId();
404
-
405
- List<FoundLayerCallback> callbacks = layerWaiters.get(layerId);
406
- if (callbacks != null) {
407
- for (FoundLayerCallback callback : callbacks) {
408
- callback.found(layer);
409
- }
410
- }
411
- layerWaiters.remove(layerId);
412
- }
413
-
414
- public void waitForLayer(String layerID, FoundLayerCallback callback) {
415
- Layer layer = mMap.getStyle().getLayer(layerID);
416
- if (layer != null) {
417
- callback.found(layer);
418
- } else {
419
- List<FoundLayerCallback> waiters = layerWaiters.get(layerID);
420
- if (waiters == null) {
421
- waiters = new ArrayList<FoundLayerCallback>();
422
- layerWaiters.put(layerID, waiters);
423
- }
424
- waiters.add(callback);
425
- }
426
- }
427
-
428
- public boolean isJSONValid(String test) {
429
- try {
430
- new JSONObject(test);
431
- } catch (JSONException ex) {
432
- return false;
433
- }
434
- return true;
435
- }
436
-
437
-
438
- @Override
439
- public void onMapReady(final MapboxMap mapboxMap) {
440
- mMap = mapboxMap;
441
-
442
- if (isJSONValid(mStyleURL)) {
443
- mMap.setStyle(new Style.Builder().fromJson(mStyleURL));
444
- } else {
445
- mMap.setStyle(new Style.Builder().fromUri(mStyleURL));
446
- }
447
-
448
-
449
- reflow();
450
-
451
- mMap.getStyle(new Style.OnStyleLoaded() {
452
- @Override
453
- public void onStyleLoaded(@NonNull Style style) {
454
- createSymbolManager(style);
455
- setUpImage(style);
456
- addQueuedFeatures();
457
- setupLocalization(style);
458
- }
459
- });
460
-
461
- updatePreferredFramesPerSecond();
462
- updateInsets();
463
- updateUISettings();
464
-
465
- mMap.addOnCameraIdleListener(new MapboxMap.OnCameraIdleListener() {
466
- @Override
467
- public void onCameraIdle() {
468
- sendRegionDidChangeEvent();
469
- }
470
- });
471
-
472
- mMap.addOnCameraMoveStartedListener(new MapboxMap.OnCameraMoveStartedListener() {
473
- @Override
474
- public void onCameraMoveStarted(int reason) {
475
- mCameraChangeTracker.setReason(reason);
476
- handleMapChangedEvent(EventTypes.REGION_WILL_CHANGE);
477
- }
478
- });
479
-
480
- mMap.addOnCameraMoveListener(new MapboxMap.OnCameraMoveListener() {
481
- @Override
482
- public void onCameraMove() {
483
- if (markerViewManager != null) {
484
- markerViewManager.updateMarkers();
485
- }
486
- }
487
- });
488
-
489
- mMap.addOnMoveListener(new MapboxMap.OnMoveListener() {
490
- @Override
491
- public void onMoveBegin(MoveGestureDetector detector) {
492
- mCameraChangeTracker.setReason(CameraChangeTracker.USER_GESTURE);
493
- handleMapChangedEvent(EventTypes.REGION_WILL_CHANGE);
494
- }
495
-
496
- @Override
497
- public void onMove(MoveGestureDetector detector) {
498
- mCameraChangeTracker.setReason(CameraChangeTracker.USER_GESTURE);
499
- handleMapChangedEvent(EventTypes.REGION_IS_CHANGING);
500
- }
501
-
502
- @Override
503
- public void onMoveEnd(MoveGestureDetector detector) {}
504
- });
505
- }
506
-
507
- public void reflow() {
508
- mHandler.post(new Runnable() {
509
- @Override
510
- public void run() {
511
- measure(View.MeasureSpec.makeMeasureSpec(getMeasuredWidth(), View.MeasureSpec.EXACTLY),
512
- View.MeasureSpec.makeMeasureSpec(getMeasuredHeight(), View.MeasureSpec.EXACTLY));
513
- layout(getLeft(), getTop(), getRight(), getBottom());
514
- }
515
- });
516
- }
517
-
518
- public void createSymbolManager(Style style) {
519
- symbolManager = new SymbolManager(this, mMap, style);
520
- symbolManager.setIconAllowOverlap(true);
521
- symbolManager.addClickListener(
522
- SymbolClickListenerImpl.annotationClickListener(new SymbolClickListenerImpl.Listener() {
523
- @Override
524
- public boolean onAnnotationClick(Symbol symbol) {
525
- onMarkerClick(symbol); return true;
526
- }
527
- })
528
- );
529
- symbolManager.addDragListener(new OnSymbolDragListener() {
530
- @Override
531
- public void onAnnotationDragStarted(Symbol symbol) {
532
- mAnnotationClicked = true;
533
- final long selectedMarkerID = symbol.getId();
534
- RCTMGLPointAnnotation annotation = getPointAnnotationByMarkerID(selectedMarkerID);
535
- if (annotation != null) {
536
- annotation.onDragStart();
537
- }
538
- }
539
-
540
- @Override
541
- public void onAnnotationDrag(Symbol symbol) {
542
- final long selectedMarkerID = symbol.getId();
543
- RCTMGLPointAnnotation annotation = getPointAnnotationByMarkerID(selectedMarkerID);
544
- if (annotation != null) {
545
- annotation.onDrag();
546
- }
547
- }
548
-
549
- @Override
550
- public void onAnnotationDragFinished(Symbol symbol) {
551
- mAnnotationClicked = false;
552
- final long selectedMarkerID = symbol.getId();
553
- RCTMGLPointAnnotation annotation = getPointAnnotationByMarkerID(selectedMarkerID);
554
- if (annotation != null) {
555
- annotation.onDragEnd();
556
- }
557
- }
558
- });
559
- mMap.addOnMapClickListener(this);
560
- mMap.addOnMapLongClickListener(this);
561
- }
562
-
563
- public void addQueuedFeatures() {
564
- if (mQueuedFeatures != null && mQueuedFeatures.size() > 0) {
565
- for (int i = 0; i < mQueuedFeatures.size(); i++) {
566
- AbstractMapFeature feature = mQueuedFeatures.get(i);
567
- feature.addToMap(this);
568
- mFeatures.add(feature);
569
- }
570
- mQueuedFeatures = null;
571
- }
572
- }
573
-
574
- private void setupLocalization(Style style) {
575
- mLocalizationPlugin = new LocalizationPlugin(RCTMGLMapView.this, mMap, style);
576
- if (mLocalizeLabels) {
577
- try {
578
- mLocalizationPlugin.matchMapLanguageWithDeviceDefault();
579
- } catch (Exception e) {
580
- final String localeString = Locale.getDefault().toString();
581
- Logger.w(LOG_TAG, String.format("Could not find matching locale for %s", localeString));
582
- }
583
- }
584
- }
585
-
586
- @Override
587
- public boolean onTouchEvent(MotionEvent ev) {
588
- boolean result = super.onTouchEvent(ev);
589
-
590
- if (result && mScrollEnabled) {
591
- requestDisallowInterceptTouchEvent(true);
592
- }
593
-
594
- return result;
595
- }
596
-
597
- @Override
598
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
599
- if (!mPaused) {
600
- if (markerViewManager != null) {
601
- markerViewManager.removeViews();
602
- }
603
- super.onLayout(changed, left, top, right, bottom);
604
- if (markerViewManager != null) {
605
- markerViewManager.restoreViews();
606
- }
607
- }
608
- }
609
-
610
- @Override
611
- public boolean onMapClick(@NonNull LatLng point) {
612
- if (mAnnotationClicked) {
613
- mAnnotationClicked = false;
614
- return true;
615
- }
616
-
617
- PointF screenPoint = mMap.getProjection().toScreenLocation(point);
618
- List<RCTSource> touchableSources = getAllTouchableSources();
619
-
620
- Map<String, List<Feature>> hits = new HashMap<>();
621
- List<RCTSource> hitTouchableSources = new ArrayList<>();
622
- for (RCTSource touchableSource : touchableSources) {
623
- Map<String, Double> hitbox = touchableSource.getTouchHitbox();
624
- if (hitbox == null) {
625
- continue;
626
- }
627
-
628
- float halfWidth = hitbox.get("width").floatValue() / 2.0f;
629
- float halfHeight = hitbox.get("height").floatValue() / 2.0f;
630
-
631
- RectF hitboxF = new RectF();
632
- hitboxF.set(screenPoint.x - halfWidth, screenPoint.y - halfHeight, screenPoint.x + halfWidth,
633
- screenPoint.y + halfHeight);
634
-
635
- List<Feature> features = mMap.queryRenderedFeatures(hitboxF, touchableSource.getLayerIDs());
636
- if (features.size() > 0) {
637
- hits.put(touchableSource.getID(), features);
638
- hitTouchableSources.add(touchableSource);
639
- }
640
- }
641
-
642
- if (hits.size() > 0) {
643
- RCTSource source = getTouchableSourceWithHighestZIndex(hitTouchableSources);
644
- if (source != null && source.hasPressListener()) {
645
- source.onPress(new RCTSource.OnPressEvent(
646
- hits.get(source.getID()),
647
- point,
648
- screenPoint
649
- ));
650
- return true;
651
- }
652
- }
653
-
654
- MapClickEvent event = new MapClickEvent(this, point, screenPoint);
655
- mManager.handleEvent(event);
656
- return false;
657
- }
658
-
659
- @Override
660
- public boolean onMapLongClick(@NonNull LatLng point) {
661
- if (mAnnotationClicked) {
662
- mAnnotationClicked = false;
663
- return true;
664
- }
665
- PointF screenPoint = mMap.getProjection().toScreenLocation(point);
666
- MapClickEvent event = new MapClickEvent(this, point, screenPoint, EventTypes.MAP_LONG_CLICK);
667
- mManager.handleEvent(event);
668
- return false;
669
- }
670
-
671
- public void onMarkerClick(@NonNull Symbol symbol) {
672
- mAnnotationClicked = true;
673
- final long selectedMarkerID = symbol.getId();
674
-
675
- RCTMGLPointAnnotation activeAnnotation = null;
676
- RCTMGLPointAnnotation nextActiveAnnotation = null;
677
-
678
- for (String key : mPointAnnotations.keySet()) {
679
- RCTMGLPointAnnotation annotation = mPointAnnotations.get(key);
680
- final long curMarkerID = annotation.getMapboxID();
681
- if (mActiveMarkerID == curMarkerID) {
682
- activeAnnotation = annotation;
683
- }
684
- if (selectedMarkerID == curMarkerID && mActiveMarkerID != curMarkerID) {
685
- nextActiveAnnotation = annotation;
686
- }
687
- }
688
-
689
- if (activeAnnotation != null) {
690
- deselectAnnotation(activeAnnotation);
691
- }
692
-
693
- if (nextActiveAnnotation != null) {
694
- selectAnnotation(nextActiveAnnotation);
695
- }
696
-
697
- }
698
-
699
- public void selectAnnotation(RCTMGLPointAnnotation annotation) {
700
- mActiveMarkerID = annotation.getMapboxID();
701
- annotation.onSelect(true);
702
- }
703
-
704
- public void deselectAnnotation(RCTMGLPointAnnotation annotation) {
705
- mActiveMarkerID = -1;
706
- annotation.onDeselect();
707
- }
708
-
709
- @Override
710
- public void onCameraDidChange(boolean animated) {
711
- mCameraChangeTracker.setIsAnimating(animated);
712
- }
713
-
714
- @Override
715
- public void onCameraIsChanging() {
716
- handleMapChangedEvent(EventTypes.REGION_IS_CHANGING);
717
- }
718
-
719
- @Override
720
- public void onDidFailLoadingMap(String errorMessage) {
721
- handleMapChangedEvent(EventTypes.DID_FAIL_LOADING_MAP);
722
- }
723
-
724
- @Override
725
- public void onDidFinishLoadingMap() {
726
- handleMapChangedEvent(EventTypes.DID_FINISH_LOADING_MAP);
727
- }
728
-
729
- @Override
730
- public void onWillStartRenderingFrame() {
731
- handleMapChangedEvent(EventTypes.WILL_START_RENDERING_FRAME);
732
- }
733
-
734
- @Override
735
- public void onDidFinishRenderingFrame(boolean fully) {
736
- if (fully) {
737
- handleMapChangedEvent(EventTypes.DID_FINISH_RENDERING_FRAME_FULLY);
738
- } else {
739
- handleMapChangedEvent(EventTypes.DID_FINISH_RENDERING_FRAME);
740
- }
741
- }
742
-
743
- @Override
744
- public void onWillStartRenderingMap() {
745
- handleMapChangedEvent(EventTypes.WILL_START_RENDERING_MAP);
746
- }
747
-
748
- @Override
749
- public void onDidFinishRenderingMap(boolean fully) {
750
- if (fully) {
751
- for (Pair<Integer, ReadableArray> preRenderMethod : mPreRenderMethods) {
752
- Integer methodID = preRenderMethod.first;
753
- ReadableArray args = preRenderMethod.second;
754
-
755
- mManager.receiveCommand(this, methodID, args);
756
- }
757
- mPreRenderMethods.clear();
758
- handleMapChangedEvent(EventTypes.DID_FINISH_RENDERING_MAP_FULLY);
759
- } else {
760
- handleMapChangedEvent(EventTypes.DID_FINISH_RENDERING_MAP);
761
- }
762
- }
763
-
764
- @Override
765
- public void onDidFinishLoadingStyle() {
766
- handleMapChangedEvent(EventTypes.DID_FINISH_LOADING_STYLE);
767
- }
768
-
769
- @Override
770
- public void onStyleImageMissing(@NonNull String id) {
771
- for (RCTMGLImages images : mImages) {
772
- if (images.addMissingImageToStyle(id, mMap)) {
773
- return;
774
- }
775
- }
776
- for (RCTMGLImages images : mImages) {
777
- images.sendImageMissingEvent(id, mMap);
778
- }
779
- }
780
-
781
- private float getDisplayDensity() {
782
- return mContext.getResources().getDisplayMetrics().density;
783
- }
784
-
785
- public void setReactStyleURL(String styleURL) {
786
- mStyleURL = styleURL;
787
-
788
- if (mMap != null) {
789
- removeAllSourcesFromMap();
790
-
791
- if (isJSONValid(mStyleURL)) {
792
- mMap.setStyle(new Style.Builder().fromJson(mStyleURL), new Style.OnStyleLoaded() {
793
- @Override
794
- public void onStyleLoaded(@NonNull Style style) {
795
- addAllSourcesToMap();
796
- }
797
- });
798
- } else {
799
- mMap.setStyle(styleURL, new Style.OnStyleLoaded() {
800
- @Override
801
- public void onStyleLoaded(@NonNull Style style) {
802
- addAllSourcesToMap();
803
- }
804
- });
805
- }
806
- }
807
- }
808
-
809
- public void setReactPreferredFramesPerSecond(Integer preferredFramesPerSecond) {
810
- mPreferredFramesPerSecond = preferredFramesPerSecond;
811
- updatePreferredFramesPerSecond();
812
- }
813
-
814
- public void setReactContentInset(ReadableArray array) {
815
- mInsets = array;
816
- updateInsets();
817
- }
818
-
819
- public void setLocalizeLabels(boolean localizeLabels) {
820
- mLocalizeLabels = localizeLabels;
821
- }
822
-
823
- public void setReactZoomEnabled(boolean zoomEnabled) {
824
- mZoomEnabled = zoomEnabled;
825
- updateUISettings();
826
- }
827
-
828
- public void setReactScrollEnabled(boolean scrollEnabled) {
829
- mScrollEnabled = scrollEnabled;
830
- updateUISettings();
831
- }
832
-
833
- public void setReactPitchEnabled(boolean pitchEnabled) {
834
- mPitchEnabled = pitchEnabled;
835
- updateUISettings();
836
- }
837
-
838
- public void setReactRotateEnabled(boolean rotateEnabled) {
839
- mRotateEnabled = rotateEnabled;
840
- updateUISettings();
841
- }
842
-
843
- public void setReactLogoEnabled(boolean logoEnabled) {
844
- mLogoEnabled = logoEnabled;
845
- updateUISettings();
846
- }
847
-
848
- public void setReactLogoPosition(ReadableMap position) {
849
- if (position == null) {
850
- // reset from explicit to default
851
- if (mLogoGravity != null) {
852
- MapboxMapOptions defaultOptions = MapboxMapOptions.createFromAttributes(mContext);
853
- mLogoGravity = defaultOptions.getLogoGravity();
854
- mLogoMargins = Arrays.copyOf(defaultOptions.getLogoMargins(), 4);
855
- updateUISettings();
856
- }
857
- return;
858
- }
859
-
860
- mLogoGravity = Gravity.NO_GRAVITY;
861
- if (position.hasKey("left")) {
862
- mLogoGravity |= Gravity.START;
863
- }
864
- if (position.hasKey("right")) {
865
- mLogoGravity |= Gravity.END;
866
- }
867
- if (position.hasKey("top")) {
868
- mLogoGravity |= Gravity.TOP;
869
- }
870
- if (position.hasKey("bottom")) {
871
- mLogoGravity |= Gravity.BOTTOM;
872
- }
873
- float density = getDisplayDensity();
874
- mLogoMargins = new int[]{
875
- position.hasKey("left") ? (int) density * position.getInt("left") : 0,
876
- position.hasKey("top") ? (int) density * position.getInt("top") : 0,
877
- position.hasKey("right") ? (int) density * position.getInt("right") : 0,
878
- position.hasKey("bottom") ? (int) density * position.getInt("bottom") : 0
879
- };
880
- updateUISettings();
881
- }
882
-
883
- public void setReactCompassEnabled(boolean compassEnabled) {
884
- mCompassEnabled = compassEnabled;
885
- updateUISettings();
886
- }
887
-
888
- public void setReactCompassViewMargins(ReadableMap compassViewMargins) {
889
- mCompassViewMargins = compassViewMargins;
890
- updateUISettings();
891
- }
892
-
893
- public void setReactCompassViewPosition(int compassViewPosition) {
894
- mCompassViewPosition = compassViewPosition;
895
- updateUISettings();
896
- }
897
-
898
- public void setReactAttributionEnabled(boolean attributionEnabled) {
899
- mAttributionEnabled = attributionEnabled;
900
- updateUISettings();
901
- }
902
-
903
- public void setReactAttributionPosition(ReadableMap position) {
904
- if (position == null) {
905
- // reset from explicit to default
906
- if (mAttributionGravity != null) {
907
- MapboxMapOptions defaultOptions = MapboxMapOptions.createFromAttributes(mContext);
908
- mAttributionGravity = defaultOptions.getAttributionGravity();
909
- mAttributionMargin = Arrays.copyOf(defaultOptions.getAttributionMargins(), 4);
910
- updateUISettings();
911
- }
912
- return;
913
- }
914
- mAttributionGravity = Gravity.NO_GRAVITY;
915
- if (position.hasKey("left")) {
916
- mAttributionGravity |= Gravity.START;
917
- }
918
- if (position.hasKey("right")) {
919
- mAttributionGravity |= Gravity.END;
920
- }
921
- if (position.hasKey("top")) {
922
- mAttributionGravity |= Gravity.TOP;
923
- }
924
- if (position.hasKey("bottom")) {
925
- mAttributionGravity |= Gravity.BOTTOM;
926
- }
927
- float density = getDisplayDensity();
928
- mAttributionMargin = new int[]{
929
- position.hasKey("left") ? (int) density * position.getInt("left") : 0,
930
- position.hasKey("top") ? (int) density * position.getInt("top") : 0,
931
- position.hasKey("right") ? (int) density * position.getInt("right") : 0,
932
- position.hasKey("bottom") ? (int) density * position.getInt("bottom") : 0
933
- };
934
- updateUISettings();
935
- }
936
-
937
- public void queryRenderedFeaturesAtPoint(String callbackID, PointF point, Expression filter,
938
- List<String> layerIDs) {
939
- List<Feature> features = mMap.queryRenderedFeatures(point, filter,
940
- layerIDs.toArray(new String[layerIDs.size()]));
941
-
942
- WritableMap payload = new WritableNativeMap();
943
- payload.putString("data", FeatureCollection.fromFeatures(features).toJson());
944
-
945
- AndroidCallbackEvent event = new AndroidCallbackEvent(this, callbackID, payload);
946
- mManager.handleEvent(event);
947
- }
948
-
949
- public void getZoom(String callbackID) {
950
- CameraPosition position = mMap.getCameraPosition();
951
-
952
- WritableMap payload = new WritableNativeMap();
953
- payload.putDouble("zoom", position.zoom);
954
-
955
- AndroidCallbackEvent event = new AndroidCallbackEvent(this, callbackID, payload);
956
- mManager.handleEvent(event);
957
- }
958
-
959
- public void queryRenderedFeaturesInRect(String callbackID, RectF rect, Expression filter, List<String> layerIDs) {
960
- List<Feature> features = mMap.queryRenderedFeatures(rect, filter,
961
- layerIDs.toArray(new String[layerIDs.size()]));
962
-
963
- WritableMap payload = new WritableNativeMap();
964
- payload.putString("data", FeatureCollection.fromFeatures(features).toJson());
965
-
966
- AndroidCallbackEvent event = new AndroidCallbackEvent(this, callbackID, payload);
967
- mManager.handleEvent(event);
968
- }
969
-
970
- public void getVisibleBounds(String callbackID) {
971
- VisibleRegion region = mMap.getProjection().getVisibleRegion();
972
-
973
- WritableMap payload = new WritableNativeMap();
974
- payload.putArray("visibleBounds", GeoJSONUtils.fromLatLngBounds(region.latLngBounds));
975
-
976
- AndroidCallbackEvent event = new AndroidCallbackEvent(this, callbackID, payload);
977
- mManager.handleEvent(event);
978
- }
979
-
980
- public void getPointInView(String callbackID, LatLng mapCoordinate) {
981
-
982
- PointF pointInView = mMap.getProjection().toScreenLocation(mapCoordinate);
983
- float density = getDisplayDensity();
984
- pointInView.x /= density;
985
- pointInView.y /= density;
986
- WritableMap payload = new WritableNativeMap();
987
-
988
- WritableArray array = new WritableNativeArray();
989
- array.pushDouble(pointInView.x);
990
- array.pushDouble(pointInView.y);
991
- payload.putArray("pointInView", array);
992
-
993
- AndroidCallbackEvent event = new AndroidCallbackEvent(this, callbackID, payload);
994
- mManager.handleEvent(event);
995
- }
996
-
997
- public void getCoordinateFromView(String callbackID, PointF pointInView) {
998
- float density = getDisplayDensity();
999
- pointInView.x *= density;
1000
- pointInView.y *= density;
1001
-
1002
- LatLng mapCoordinate = mMap.getProjection().fromScreenLocation(pointInView);
1003
- WritableMap payload = new WritableNativeMap();
1004
-
1005
- WritableArray array = new WritableNativeArray();
1006
- array.pushDouble(mapCoordinate.getLongitude());
1007
- array.pushDouble(mapCoordinate.getLatitude());
1008
- payload.putArray("coordinateFromView", array);
1009
-
1010
- AndroidCallbackEvent event = new AndroidCallbackEvent(this, callbackID, payload);
1011
- mManager.handleEvent(event);
1012
- }
1013
-
1014
- public void takeSnap(final String callbackID, final boolean writeToDisk) {
1015
-
1016
- if (mMap == null) {
1017
- throw new Error("takeSnap should only be called after the map has rendered");
1018
- }
1019
-
1020
- mMap.snapshot(new MapboxMap.SnapshotReadyCallback() {
1021
- @Override
1022
- public void onSnapshotReady(Bitmap snapshot) {
1023
- WritableMap payload = new WritableNativeMap();
1024
- String uri = writeToDisk ? BitmapUtils.createTempFile(mContext, snapshot)
1025
- : BitmapUtils.createBase64(snapshot);
1026
- payload.putString("uri", uri);
1027
-
1028
- AndroidCallbackEvent event = new AndroidCallbackEvent(RCTMGLMapView.this, callbackID, payload);
1029
- mManager.handleEvent(event);
1030
- }
1031
- });
1032
- }
1033
-
1034
- public void getCenter(String callbackID) {
1035
- LatLng center = mMap.getCameraPosition().target;
1036
-
1037
- WritableArray array = new WritableNativeArray();
1038
- array.pushDouble(center.getLongitude());
1039
- array.pushDouble(center.getLatitude());
1040
- WritableMap payload = new WritableNativeMap();
1041
- payload.putArray("center", array);
1042
-
1043
- AndroidCallbackEvent event = new AndroidCallbackEvent(this, callbackID, payload);
1044
- mManager.handleEvent(event);
1045
- }
1046
-
1047
- public void showAttribution() {
1048
- AttributionDialogManager manager = new AttributionDialogManager(mContext, mMap);
1049
- manager.onClick(this);
1050
- }
1051
-
1052
- public void setSourceVisibility(final boolean visible, @NonNull final String sourceId, @Nullable final String sourceLayerId) {
1053
- if (mMap == null) {
1054
- return;
1055
- }
1056
- mMap.getStyle(new Style.OnStyleLoaded() {
1057
- @Override
1058
- public void onStyleLoaded(@NonNull Style style) {
1059
- List<Layer> layers = style.getLayers();
1060
- for (Layer layer : layers) {
1061
- LayerSourceInfo layerSourceInfo = new LayerSourceInfo(layer);
1062
- if (layerSourceInfo.sourceId.equals(sourceId) && (sourceLayerId == null
1063
- || sourceLayerId.equals(layerSourceInfo.sourceLayerId))) {
1064
- layer.setProperties(visibility(visible ? Property.VISIBLE : Property.NONE));
1065
- }
1066
- }
1067
- }
1068
- });
1069
- }
1070
-
1071
- public void init() {
1072
- // Required for rendering properly in Android Oreo
1073
- getViewTreeObserver().dispatchOnGlobalLayout();
1074
- }
1075
-
1076
- public boolean isDestroyed() {
1077
- return mDestroyed;
1078
- }
1079
-
1080
- public void getStyle(Style.OnStyleLoaded onStyleLoaded) {
1081
- if (mMap == null) {
1082
- return;
1083
- }
1084
-
1085
- mMap.getStyle(onStyleLoaded);
1086
- }
1087
-
1088
- private void updateUISettings() {
1089
- if (mMap == null) {
1090
- return;
1091
- }
1092
-
1093
- UiSettings uiSettings = mMap.getUiSettings();
1094
-
1095
- if (mScrollEnabled != null && uiSettings.isScrollGesturesEnabled() != mScrollEnabled) {
1096
- uiSettings.setScrollGesturesEnabled(mScrollEnabled);
1097
- if (!mScrollEnabled) {
1098
- mMap.getGesturesManager().getMoveGestureDetector().interrupt();
1099
- }
1100
- }
1101
-
1102
- if (mPitchEnabled != null && uiSettings.isTiltGesturesEnabled() != mPitchEnabled) {
1103
- uiSettings.setTiltGesturesEnabled(mPitchEnabled);
1104
- }
1105
-
1106
- if (mRotateEnabled != null && uiSettings.isRotateGesturesEnabled() != mRotateEnabled) {
1107
- uiSettings.setRotateGesturesEnabled(mRotateEnabled);
1108
- if (!mRotateEnabled) {
1109
- mMap.getGesturesManager().getRotateGestureDetector().interrupt();
1110
- }
1111
- }
1112
-
1113
- if (mAttributionEnabled != null && uiSettings.isAttributionEnabled() != mAttributionEnabled) {
1114
- uiSettings.setAttributionEnabled(mAttributionEnabled);
1115
- }
1116
-
1117
- if (mAttributionGravity != null && uiSettings.getAttributionGravity() != mAttributionGravity) {
1118
- uiSettings.setAttributionGravity(mAttributionGravity);
1119
- }
1120
-
1121
- if (mAttributionMargin != null &&
1122
- (uiSettings.getAttributionMarginLeft() != mAttributionMargin[0] ||
1123
- uiSettings.getAttributionMarginTop() != mAttributionMargin[1] ||
1124
- uiSettings.getAttributionMarginRight() != mAttributionMargin[2] ||
1125
- uiSettings.getAttributionMarginBottom() != mAttributionMargin[3]
1126
- )
1127
- ) {
1128
- uiSettings.setAttributionMargins(
1129
- mAttributionMargin[0],
1130
- mAttributionMargin[1],
1131
- mAttributionMargin[2],
1132
- mAttributionMargin[3]
1133
- );
1134
- }
1135
-
1136
- if (mTintColor != null) {
1137
- uiSettings.setAttributionTintColor(mTintColor);
1138
- }
1139
-
1140
- if (mLogoEnabled != null && uiSettings.isLogoEnabled() != mLogoEnabled) {
1141
- uiSettings.setLogoEnabled(mLogoEnabled);
1142
- }
1143
-
1144
- if (mLogoGravity != null && uiSettings.getLogoGravity() != mLogoGravity) {
1145
- uiSettings.setLogoGravity(mLogoGravity);
1146
- }
1147
-
1148
- if (mLogoMargins != null &&
1149
- (uiSettings.getLogoMarginLeft() != mLogoMargins[0] ||
1150
- uiSettings.getLogoMarginTop() != mLogoMargins[1] ||
1151
- uiSettings.getLogoMarginRight() != mLogoMargins[2] ||
1152
- uiSettings.getLogoMarginBottom() != mLogoMargins[3]
1153
- )
1154
- ) {
1155
- uiSettings.setLogoMargins(
1156
- mLogoMargins[0],
1157
- mLogoMargins[1],
1158
- mLogoMargins[2],
1159
- mLogoMargins[3]
1160
- );
1161
- }
1162
-
1163
- if (mCompassEnabled != null && uiSettings.isCompassEnabled() != mCompassEnabled) {
1164
- uiSettings.setCompassEnabled(mCompassEnabled);
1165
- }
1166
-
1167
- if (mCompassViewPosition != -1 && uiSettings.isCompassEnabled()) {
1168
- switch (mCompassViewPosition) {
1169
- case 0:
1170
- uiSettings.setCompassGravity(Gravity.TOP | Gravity.START);
1171
- break;
1172
- case 1:
1173
- uiSettings.setCompassGravity(Gravity.TOP | Gravity.END);
1174
- break;
1175
- case 2:
1176
- uiSettings.setCompassGravity(Gravity.BOTTOM | Gravity.START);
1177
- break;
1178
- case 3:
1179
- uiSettings.setCompassGravity(Gravity.BOTTOM | Gravity.END);
1180
- break;
1181
- }
1182
- }
1183
-
1184
- if (mCompassViewMargins != null && uiSettings.isCompassEnabled()) {
1185
- int pixelDensity = (int)getResources().getDisplayMetrics().density;
1186
-
1187
- int x = mCompassViewMargins.getInt("x") * pixelDensity;
1188
- int y = mCompassViewMargins.getInt("y") * pixelDensity;
1189
-
1190
- switch (uiSettings.getCompassGravity()) {
1191
- case Gravity.TOP | Gravity.START:
1192
- uiSettings.setCompassMargins(x, y, 0, 0);
1193
- break;
1194
- default:
1195
- case Gravity.TOP | Gravity.END:
1196
- uiSettings.setCompassMargins(0, y, x, 0);
1197
- break;
1198
- case Gravity.BOTTOM | Gravity.START:
1199
- uiSettings.setCompassMargins(x, 0, 0, y);
1200
- break;
1201
- case Gravity.BOTTOM | Gravity.END:
1202
- uiSettings.setCompassMargins(0, 0, x, y);
1203
- break;
1204
- }
1205
- }
1206
-
1207
- if (mZoomEnabled != null && uiSettings.isZoomGesturesEnabled() != mZoomEnabled) {
1208
- uiSettings.setZoomGesturesEnabled(mZoomEnabled);
1209
- if (!mZoomEnabled) {
1210
- mMap.getGesturesManager().getStandardScaleGestureDetector().interrupt();
1211
- }
1212
- }
1213
- }
1214
-
1215
- private void updatePreferredFramesPerSecond() {
1216
- if (mPreferredFramesPerSecond == null) {
1217
- return;
1218
- }
1219
- setMaximumFps(mPreferredFramesPerSecond);
1220
- }
1221
-
1222
- public double[] getContentInset() {
1223
- if (mInsets == null) {
1224
- double[] result = {0,0,0,0};
1225
-
1226
- return result;
1227
- }
1228
- double top = 0, right = 0, bottom = 0, left = 0;
1229
-
1230
- if (mInsets.size() == 4) {
1231
- top = mInsets.getInt(0);
1232
- right = mInsets.getInt(1);
1233
- bottom = mInsets.getInt(2);
1234
- left = mInsets.getInt(3);
1235
- } else if (mInsets.size() == 2) {
1236
- top = mInsets.getInt(0);
1237
- right = mInsets.getInt(1);
1238
- bottom = top;
1239
- left = right;
1240
- } else if (mInsets.size() == 1) {
1241
- top = mInsets.getInt(0);
1242
- right = top;
1243
- bottom = top;
1244
- left = top;
1245
- }
1246
-
1247
- final DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
1248
-
1249
- double[] result = {left * metrics.density, top * metrics.density, right * metrics.density, bottom * metrics.density};
1250
- return result;
1251
- }
1252
-
1253
- private void updateInsets() {
1254
- if (mMap == null || mInsets == null) {
1255
- return;
1256
- }
1257
-
1258
- double padding[] = getContentInset();
1259
- double top = padding[1], right = padding[2], bottom = padding[3], left = padding[0];
1260
-
1261
- mMap.setPadding(Double.valueOf(left).intValue(),
1262
- Double.valueOf(top).intValue(),
1263
- Double.valueOf(right).intValue(),
1264
- Double.valueOf(bottom).intValue());
1265
- }
1266
-
1267
- private void setLifecycleListeners() {
1268
- final ReactContext reactContext = (ReactContext) mContext;
1269
-
1270
- mLifeCycleListener = new LifecycleEventListener() {
1271
- @Override
1272
- public void onHostResume() {
1273
- onResume();
1274
- }
1275
-
1276
- @Override
1277
- public void onHostPause() {
1278
- onPause();
1279
- }
1280
-
1281
- @Override
1282
- public void onHostDestroy() {
1283
- dispose();
1284
- }
1285
- };
1286
-
1287
- reactContext.addLifecycleEventListener(mLifeCycleListener);
1288
- }
1289
-
1290
- private WritableMap makeRegionPayload(Boolean isAnimated) {
1291
- CameraPosition position = mMap.getCameraPosition();
1292
- if(position == null || position.target == null) {
1293
- return new WritableNativeMap();
1294
- }
1295
- LatLng latLng = new LatLng(position.target.getLatitude(), position.target.getLongitude());
1296
-
1297
- WritableMap properties = new WritableNativeMap();
1298
-
1299
- properties.putDouble("zoomLevel", position.zoom);
1300
- properties.putDouble("heading", position.bearing);
1301
- properties.putDouble("pitch", position.tilt);
1302
- properties.putBoolean("animated",
1303
- (null == isAnimated) ? mCameraChangeTracker.isAnimated() : isAnimated.booleanValue());
1304
- properties.putBoolean("isUserInteraction", mCameraChangeTracker.isUserInteraction());
1305
-
1306
- try {
1307
- VisibleRegion visibleRegion = mMap.getProjection().getVisibleRegion();
1308
- properties.putArray("visibleBounds", GeoJSONUtils.fromLatLngBounds(visibleRegion.latLngBounds));
1309
- } catch(Exception ex) {
1310
- Logger.e(LOG_TAG, String.format("An error occurred while attempting to make the region: %s", ex.getMessage()));
1311
- }
1312
-
1313
- return GeoJSONUtils.toPointFeature(latLng, properties);
1314
- }
1315
-
1316
- public void sendRegionChangeEvent(boolean isAnimated) {
1317
- IEvent event = new MapChangeEvent(this, EventTypes.REGION_DID_CHANGE,
1318
- makeRegionPayload(new Boolean(isAnimated)));
1319
-
1320
- mManager.handleEvent(event);
1321
- mCameraChangeTracker.setReason(CameraChangeTracker.EMPTY);
1322
- }
1323
-
1324
- private void removeAllSourcesFromMap() {
1325
- if (mSources.size() == 0) {
1326
- return;
1327
- }
1328
- for (String key : mSources.keySet()) {
1329
- RCTSource source = mSources.get(key);
1330
- source.removeFromMap(this);
1331
- }
1332
- }
1333
-
1334
- private void addAllSourcesToMap() {
1335
- if (mSources.size() == 0) {
1336
- return;
1337
- }
1338
- for (String key : mSources.keySet()) {
1339
- RCTSource source = mSources.get(key);
1340
- source.addToMap(this);
1341
- }
1342
- }
1343
-
1344
- private List<RCTSource> getAllTouchableSources() {
1345
- List<RCTSource> sources = new ArrayList<>();
1346
-
1347
- for (String key : mSources.keySet()) {
1348
- RCTSource source = mSources.get(key);
1349
- if (source != null && source.hasPressListener()) {
1350
- sources.add(source);
1351
- }
1352
- }
1353
-
1354
- return sources;
1355
- }
1356
-
1357
- private List<RCTMGLShapeSource> getAllShapeSources() {
1358
- List<RCTMGLShapeSource> shapeSources = new ArrayList<>();
1359
-
1360
- for (String key : mSources.keySet()) {
1361
- RCTSource source = mSources.get(key);
1362
-
1363
- if (source instanceof RCTMGLShapeSource) {
1364
- shapeSources.add((RCTMGLShapeSource) source);
1365
- }
1366
- }
1367
-
1368
- return shapeSources;
1369
- }
1370
-
1371
- private RCTSource getTouchableSourceWithHighestZIndex(List<RCTSource> sources) {
1372
- if (sources == null || sources.size() == 0) {
1373
- return null;
1374
- }
1375
-
1376
- if (sources.size() == 1) {
1377
- return sources.get(0);
1378
- }
1379
-
1380
- Map<String, RCTSource> layerToSourceMap = new HashMap<>();
1381
- for (RCTSource source : sources) {
1382
- String[] layerIDs = source.getLayerIDs();
1383
-
1384
- for (String layerID : layerIDs) {
1385
- layerToSourceMap.put(layerID, source);
1386
- }
1387
- }
1388
-
1389
- List<Layer> mapboxLayers = mMap.getStyle().getLayers();
1390
- for (int i = mapboxLayers.size() - 1; i >= 0; i--) {
1391
- Layer mapboxLayer = mapboxLayers.get(i);
1392
-
1393
- String layerID = mapboxLayer.getId();
1394
- if (layerToSourceMap.containsKey(layerID)) {
1395
- return layerToSourceMap.get(layerID);
1396
- }
1397
- }
1398
-
1399
- return null;
1400
- }
1401
-
1402
- private boolean hasSetCenterCoordinate() {
1403
- CameraPosition cameraPosition = mMap.getCameraPosition();
1404
- LatLng center = cameraPosition.target;
1405
- return center.getLatitude() != 0.0 && center.getLongitude() != 0.0;
1406
- }
1407
-
1408
- private double getMapRotation() {
1409
- CameraPosition cameraPosition = mMap.getCameraPosition();
1410
- return cameraPosition.bearing;
1411
- }
1412
-
1413
- public void sendRegionDidChangeEvent() {
1414
-
1415
- handleMapChangedEvent(EventTypes.REGION_DID_CHANGE);
1416
- mCameraChangeTracker.setReason(mCameraChangeTracker.EMPTY);
1417
- }
1418
-
1419
- private void handleMapChangedEvent(String eventType) {
1420
- if (!canHandleEvent(eventType))
1421
- return;
1422
-
1423
- IEvent event;
1424
-
1425
- switch (eventType) {
1426
- case EventTypes.REGION_WILL_CHANGE:
1427
- case EventTypes.REGION_DID_CHANGE:
1428
- case EventTypes.REGION_IS_CHANGING:
1429
- event = new MapChangeEvent(this, eventType, makeRegionPayload(null));
1430
- break;
1431
- default:
1432
- event = new MapChangeEvent(this, eventType);
1433
- }
1434
-
1435
- mManager.handleEvent(event);
1436
- }
1437
-
1438
- private boolean canHandleEvent(String event) {
1439
- return mHandledMapChangedEvents == null || mHandledMapChangedEvents.contains(event);
1440
- }
1441
-
1442
- public void setHandledMapChangedEvents(ArrayList<String> eventsWhiteList) {
1443
- this.mHandledMapChangedEvents = new HashSet<>(eventsWhiteList);
1444
- }
1445
-
1446
- private void sendUserLocationUpdateEvent(Location location) {
1447
- if (location == null) {
1448
- return;
1449
- }
1450
- IEvent event = new MapChangeEvent(this, EventTypes.USER_LOCATION_UPDATED, makeLocationChangePayload(location));
1451
- mManager.handleEvent(event);
1452
- }
1453
-
1454
- private WritableMap makeLocationChangePayload(Location location) {
1455
-
1456
- WritableMap positionProperties = new WritableNativeMap();
1457
- WritableMap coords = new WritableNativeMap();
1458
-
1459
- coords.putDouble("longitude", location.getLongitude());
1460
- coords.putDouble("latitude", location.getLatitude());
1461
- coords.putDouble("altitude", location.getAltitude());
1462
- coords.putDouble("accuracy", location.getAccuracy());
1463
- // A better solution will be to pull the heading from the compass engine,
1464
- // unfortunately the api is not publicly available in the mapbox sdk
1465
- coords.putDouble("heading", location.getBearing());
1466
- coords.putDouble("course", location.getBearing());
1467
- coords.putDouble("speed", location.getSpeed());
1468
-
1469
- positionProperties.putMap("coords", coords);
1470
- positionProperties.putDouble("timestamp", location.getTime());
1471
- return positionProperties;
1472
- }
1473
-
1474
- /**
1475
- * Adds the marker image to the map for use as a SymbolLayer icon
1476
- */
1477
- private void setUpImage(@NonNull Style loadedStyle) {
1478
- loadedStyle.addImage("MARKER_IMAGE_ID", BitmapFactory.decodeResource(
1479
- this.getResources(), R.drawable.red_marker)
1480
- );
1481
- }
1482
-
1483
- /**
1484
- * PointAnnotations are rendered to a canvas, but react native Image component is
1485
- * implemented on top of Fresco, and fresco will not load images when their view is
1486
- * not attached to the window. So we'll have an offscreen view where we add those views
1487
- * so they can rendered full to canvas.
1488
- */
1489
- public ViewGroup offscreenAnnotationViewContainer() {
1490
- if (mOffscreenAnnotationViewContainer == null) {
1491
- mOffscreenAnnotationViewContainer = new FrameLayout(getContext());
1492
- FrameLayout.LayoutParams flParams = new FrameLayout.LayoutParams(0,0);
1493
- flParams.setMargins(-10000, -10000, -10000,-10000);
1494
- mOffscreenAnnotationViewContainer.setLayoutParams(flParams);
1495
- addView(mOffscreenAnnotationViewContainer);
1496
- }
1497
- return mOffscreenAnnotationViewContainer;
1498
- }
1499
-
1500
- public MarkerViewManager getMarkerViewManager(MapboxMap map) {
1501
- if (markerViewManager == null) {
1502
- if (map == null) {
1503
- throw new Error("makerViewManager should be called one the map has loaded");
1504
- }
1505
- markerViewManager = new MarkerViewManager(this, map);
1506
- }
1507
- return markerViewManager;
1508
- }
1509
-
1510
- public LocationComponentManager getLocationComponentManager() {
1511
- if (mLocationComponentManager == null) {
1512
- mLocationComponentManager = new LocationComponentManager(this, mContext);
1513
- }
1514
- return mLocationComponentManager;
1515
- }
1516
-
1517
- public @Nullable Integer getTintColor() {
1518
- return mTintColor;
1519
- }
1520
-
1521
- public void setTintColor(@Nullable Integer tintColor) {
1522
- if (mTintColor == tintColor) return;
1523
- mTintColor = tintColor;
1524
- updateUISettings();
1525
- if (mLocationComponentManager == null) return;
1526
- mLocationComponentManager.update(getMapboxMap().getStyle());
1527
- }
1528
- }