react-native-maps 0.31.0 → 1.0.0-alpha.1

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 (301) hide show
  1. package/android/build.gradle +89 -33
  2. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  3. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  4. package/android/gradlew +251 -0
  5. package/android/gradlew.bat +94 -0
  6. package/android/src/main/AndroidManifest.xml +1 -5
  7. package/android/src/main/RCTAppDependencyProvider.h +25 -0
  8. package/android/src/main/RCTAppDependencyProvider.mm +55 -0
  9. package/android/src/main/RCTModulesConformingToProtocolsProvider.h +18 -0
  10. package/android/src/main/RCTModulesConformingToProtocolsProvider.mm +33 -0
  11. package/android/src/main/RCTThirdPartyComponentsProvider.h +16 -0
  12. package/android/src/main/RCTThirdPartyComponentsProvider.mm +28 -0
  13. package/android/src/main/ReactAppDependencyProvider.podspec +34 -0
  14. package/android/src/main/java/com/facebook/fbreact/specs/NativeAirMapsModuleSpec.java +63 -0
  15. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerDelegate.java +35 -0
  16. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerInterface.java +17 -0
  17. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCircleManagerDelegate.java +49 -0
  18. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCircleManagerInterface.java +23 -0
  19. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerDelegate.java +49 -0
  20. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerInterface.java +23 -0
  21. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerDelegate.java +209 -0
  22. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +74 -0
  23. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +104 -0
  24. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +39 -0
  25. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerDelegate.java +45 -0
  26. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerInterface.java +22 -0
  27. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerDelegate.java +58 -0
  28. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerInterface.java +26 -0
  29. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsUrlTileManagerDelegate.java +62 -0
  30. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsUrlTileManagerInterface.java +27 -0
  31. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsWMSTileManagerDelegate.java +56 -0
  32. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsWMSTileManagerInterface.java +25 -0
  33. package/android/src/main/java/com/rnmaps/fabric/CalloutManager.java +77 -0
  34. package/android/src/main/java/com/rnmaps/fabric/CircleManager.java +94 -0
  35. package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
  36. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +623 -0
  37. package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +258 -0
  38. package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +284 -0
  39. package/android/src/main/java/com/rnmaps/fabric/OverlayManager.java +101 -0
  40. package/android/src/main/java/com/rnmaps/fabric/PolygonManager.java +89 -0
  41. package/android/src/main/java/com/rnmaps/fabric/PolylineManager.java +121 -0
  42. package/android/src/main/java/com/rnmaps/fabric/UrlTileManager.java +124 -0
  43. package/android/src/main/java/com/rnmaps/fabric/WMSTileManager.java +114 -0
  44. package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
  45. package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +28 -0
  46. package/android/src/main/java/com/rnmaps/fabric/event/OnDoublePressEvent.java +27 -0
  47. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +28 -0
  48. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +28 -0
  49. package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +28 -0
  50. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorBuildingFocusedEvent.java +28 -0
  51. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorLevelActivatedEvent.java +28 -0
  52. package/android/src/main/java/com/rnmaps/fabric/event/OnKmlReadyEvent.java +28 -0
  53. package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +28 -0
  54. package/android/src/main/java/com/rnmaps/fabric/event/OnMapLoadedEvent.java +29 -0
  55. package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +29 -0
  56. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +28 -0
  57. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +28 -0
  58. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +28 -0
  59. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +28 -0
  60. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +28 -0
  61. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +28 -0
  62. package/android/src/main/java/com/rnmaps/fabric/event/OnPanDragEvent.java +28 -0
  63. package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +27 -0
  64. package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +27 -0
  65. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeCompleteEvent.java +30 -0
  66. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +48 -0
  67. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeStartEvent.java +33 -0
  68. package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +28 -0
  69. package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +28 -0
  70. package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/FileUtil.java +3 -6
  71. package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/FusedLocationSource.java +5 -2
  72. package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ImageReadable.java +1 -1
  73. package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ImageReader.java +5 -7
  74. package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ImageUtil.java +1 -2
  75. package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/LatLngBoundsUtils.java +1 -1
  76. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +98 -0
  77. package/android/src/main/java/com/rnmaps/maps/MapCallout.java +41 -0
  78. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapCalloutManager.java → rnmaps/maps/MapCalloutManager.java} +6 -6
  79. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapCircle.java → rnmaps/maps/MapCircle.java} +34 -8
  80. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapCircleManager.java → rnmaps/maps/MapCircleManager.java} +15 -20
  81. package/android/src/main/java/com/rnmaps/maps/MapFeature.java +17 -0
  82. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapGradientPolyline.java → rnmaps/maps/MapGradientPolyline.java} +9 -12
  83. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapGradientPolylineManager.java → rnmaps/maps/MapGradientPolylineManager.java} +13 -18
  84. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapHeatmap.java → rnmaps/maps/MapHeatmap.java} +8 -9
  85. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapHeatmapManager.java → rnmaps/maps/MapHeatmapManager.java} +8 -8
  86. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapLocalTile.java → rnmaps/maps/MapLocalTile.java} +19 -16
  87. package/android/src/main/java/com/rnmaps/maps/MapLocalTileManager.java +54 -0
  88. package/android/src/main/java/com/rnmaps/maps/MapManager.java +504 -0
  89. package/android/src/main/java/com/rnmaps/maps/MapMarker.java +706 -0
  90. package/android/src/main/java/com/rnmaps/maps/MapMarkerManager.java +368 -0
  91. package/android/src/main/java/com/rnmaps/maps/MapModule.java +283 -0
  92. package/android/src/main/java/com/rnmaps/maps/MapOverlay.java +262 -0
  93. package/android/src/main/java/com/rnmaps/maps/MapOverlayManager.java +97 -0
  94. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapPolygon.java → rnmaps/maps/MapPolygon.java} +73 -9
  95. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapPolygonManager.java → rnmaps/maps/MapPolygonManager.java} +22 -22
  96. package/android/src/main/java/com/rnmaps/maps/MapPolyline.java +230 -0
  97. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapPolylineManager.java → rnmaps/maps/MapPolylineManager.java} +18 -38
  98. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapTileProvider.java → rnmaps/maps/MapTileProvider.java} +55 -76
  99. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapTileWorker.java → rnmaps/maps/MapTileWorker.java} +7 -14
  100. package/android/src/main/java/com/rnmaps/maps/MapUIBlock.java +64 -0
  101. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapUrlTile.java → rnmaps/maps/MapUrlTile.java} +29 -29
  102. package/android/src/main/java/com/rnmaps/maps/MapUrlTileManager.java +87 -0
  103. package/android/src/main/java/com/rnmaps/maps/MapView.java +1844 -0
  104. package/android/src/main/java/com/{airbnb/android/react/maps/AirMapWMSTile.java → rnmaps/maps/MapWMSTile.java} +11 -17
  105. package/android/src/main/java/com/rnmaps/maps/MapWMSTileManager.java +81 -0
  106. package/android/src/main/java/com/rnmaps/maps/MapsPackage.java +45 -0
  107. package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/RegionChangeEvent.java +1 -1
  108. package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/SizeReportingShadowNode.java +1 -1
  109. package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ViewAttacherGroup.java +2 -7
  110. package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ViewChangesTracker.java +12 -11
  111. package/android/src/main/jni/CMakeLists.txt +36 -0
  112. package/android/src/main/jni/RNMapsSpecs-generated.cpp +68 -0
  113. package/android/src/main/jni/RNMapsSpecs.h +31 -0
  114. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.cpp +31 -0
  115. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +33 -0
  116. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +979 -0
  117. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +860 -0
  118. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.cpp +227 -0
  119. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.h +1297 -0
  120. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI-generated.cpp +74 -0
  121. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI.h +268 -0
  122. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.cpp +26 -0
  123. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +131 -0
  124. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.cpp +16 -0
  125. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.h +137 -0
  126. package/app.plugin.js +1 -0
  127. package/ios/AirGoogleMaps/AIRGMSMarker.h +2 -0
  128. package/ios/AirGoogleMaps/AIRGoogleMap.h +22 -12
  129. package/ios/AirGoogleMaps/{AIRGoogleMap.m → AIRGoogleMap.mm} +407 -130
  130. package/ios/AirGoogleMaps/AIRGoogleMapCircle.h +2 -3
  131. package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +42 -3
  132. package/ios/AirGoogleMaps/AIRGoogleMapCoordinate.h +13 -0
  133. package/ios/AirGoogleMaps/AIRGoogleMapCoordinate.m +10 -0
  134. package/ios/AirGoogleMaps/AIRGoogleMapHeatmap.h +1 -1
  135. package/ios/AirGoogleMaps/AIRGoogleMapManager.h +11 -0
  136. package/ios/AirGoogleMaps/AIRGoogleMapManager.mm +543 -0
  137. package/ios/AirGoogleMaps/AIRGoogleMapMarker.h +4 -0
  138. package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +369 -237
  139. package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +3 -2
  140. package/ios/AirGoogleMaps/AIRGoogleMapOverlay.h +0 -1
  141. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.h +7 -6
  142. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +62 -5
  143. package/ios/AirGoogleMaps/AIRGoogleMapPolygonManager.m +3 -3
  144. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +4 -3
  145. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +9 -9
  146. package/ios/AirGoogleMaps/AIRGoogleMapPolylineManager.m +2 -2
  147. package/ios/AirGoogleMaps/AIRGoogleMapUrlTile.m +2 -2
  148. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.h +1 -1
  149. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +4 -4
  150. package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.h +3 -0
  151. package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.m +18 -0
  152. package/ios/AirGoogleMaps/RNMapsGoogleMapView.h +29 -0
  153. package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +678 -0
  154. package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +40 -0
  155. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
  156. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +226 -0
  157. package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +26 -0
  158. package/ios/AirGoogleMaps/Resources/GoogleMapsPrivacy.bundle/PrivacyInfo.xcprivacy +110 -0
  159. package/ios/AirMaps/AIRMap.h +19 -14
  160. package/ios/AirMaps/{AIRMap.m → AIRMap.mm} +333 -120
  161. package/ios/AirMaps/AIRMapCircle.m +1 -53
  162. package/ios/AirMaps/AIRMapCoordinate.m +2 -4
  163. package/ios/AirMaps/AIRMapManager.m +64 -218
  164. package/ios/AirMaps/AIRMapMarker.h +5 -0
  165. package/ios/AirMaps/AIRMapMarker.m +180 -69
  166. package/ios/AirMaps/AIRMapMarkerManager.m +3 -0
  167. package/ios/AirMaps/AIRMapOverlay.m +2 -2
  168. package/ios/AirMaps/AIRMapPolygon.m +0 -52
  169. package/ios/AirMaps/AIRMapPolyline.m +3 -2
  170. package/ios/AirMaps/AIRMapWMSTile.m +8 -8
  171. package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
  172. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.h +25 -0
  173. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.mm +77 -0
  174. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.h +25 -0
  175. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.mm +52 -0
  176. package/ios/AirMaps/RCTComponentData+Maps.h +13 -0
  177. package/ios/AirMaps/RCTComponentData+Maps.m +55 -0
  178. package/ios/AirMaps/RCTConvert+AirMap.h +6 -1
  179. package/ios/AirMaps/RCTConvert+AirMap.m +18 -0
  180. package/ios/AirMaps/RNMapsAirModule.h +15 -0
  181. package/ios/AirMaps/RNMapsAirModule.mm +164 -0
  182. package/ios/AirMaps/RNMapsDefines.h +1 -0
  183. package/ios/AirMaps/RNMapsMapView.h +27 -0
  184. package/ios/AirMaps/RNMapsMapView.mm +577 -0
  185. package/ios/AirMaps/RNMapsMapViewManager.mm +42 -0
  186. package/ios/AirMaps/RNMapsMarkerView.h +24 -0
  187. package/ios/AirMaps/RNMapsMarkerView.mm +439 -0
  188. package/ios/AirMaps/RNMapsMarkerViewManager.mm +28 -0
  189. package/ios/AirMaps/UIView+AirMap.h +11 -0
  190. package/ios/AirMaps/UIView+AirMap.m +20 -0
  191. package/ios/AirMaps/module.modulemap +6 -0
  192. package/ios/AirMaps.xcodeproj/project.pbxproj +44 -4
  193. package/ios/PrivacyInfo.xcprivacy +37 -0
  194. package/ios/generated/RCTAppDependencyProvider.h +25 -0
  195. package/ios/generated/RCTAppDependencyProvider.mm +55 -0
  196. package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  197. package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  198. package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
  199. package/ios/generated/RCTThirdPartyComponentsProvider.mm +26 -0
  200. package/ios/generated/RNMapsAirModuleDelegate.h +24 -0
  201. package/ios/generated/RNMapsHostVewDelegate.h +17 -0
  202. package/ios/generated/RNMapsSpecs/ComponentDescriptors.cpp +29 -0
  203. package/ios/generated/RNMapsSpecs/ComponentDescriptors.h +31 -0
  204. package/ios/generated/RNMapsSpecs/EventEmitters.cpp +977 -0
  205. package/ios/generated/RNMapsSpecs/EventEmitters.h +846 -0
  206. package/ios/generated/RNMapsSpecs/Props.cpp +194 -0
  207. package/ios/generated/RNMapsSpecs/Props.h +1224 -0
  208. package/ios/generated/RNMapsSpecs/RCTComponentViewHelpers.h +591 -0
  209. package/ios/generated/RNMapsSpecs/RNMapsSpecs-generated.mm +92 -0
  210. package/ios/generated/RNMapsSpecs/RNMapsSpecs.h +137 -0
  211. package/ios/generated/RNMapsSpecs/ShadowNodes.cpp +24 -0
  212. package/ios/generated/RNMapsSpecs/ShadowNodes.h +109 -0
  213. package/ios/generated/RNMapsSpecs/States.cpp +16 -0
  214. package/ios/generated/RNMapsSpecs/States.h +113 -0
  215. package/ios/generated/RNMapsSpecsJSI-generated.cpp +74 -0
  216. package/ios/generated/RNMapsSpecsJSI.h +268 -0
  217. package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
  218. package/ios/generated/module.modulemap +15 -0
  219. package/package.json +57 -34
  220. package/plugin/build/android.js +58 -0
  221. package/plugin/build/index.js +10 -0
  222. package/plugin/build/ios.js +176 -0
  223. package/plugin/build/types.js +2 -0
  224. package/react-native-maps.podspec +114 -11
  225. package/react-native.config.js +15 -0
  226. package/src/{AnimatedRegion.js → AnimatedRegion.ts} +26 -21
  227. package/src/Geojson.tsx +541 -0
  228. package/src/MapCallout.tsx +77 -0
  229. package/src/MapCalloutSubview.tsx +64 -0
  230. package/src/MapCircle.tsx +162 -0
  231. package/src/MapHeatmap.tsx +125 -0
  232. package/src/MapLocalTile.tsx +60 -0
  233. package/src/MapMarker.tsx +531 -0
  234. package/src/MapMarkerNativeComponent.ts +51 -0
  235. package/src/MapOverlay.tsx +178 -0
  236. package/src/MapPolygon.tsx +188 -0
  237. package/src/MapPolygon.types.ts +25 -0
  238. package/src/MapPolyline.tsx +215 -0
  239. package/src/MapUrlTile.tsx +169 -0
  240. package/src/MapView.tsx +1235 -0
  241. package/src/MapView.types.ts +212 -0
  242. package/src/MapView.web.ts +2 -0
  243. package/src/MapViewNativeComponent.ts +86 -0
  244. package/src/MapWMSTile.tsx +148 -0
  245. package/src/ProviderConstants.ts +2 -0
  246. package/src/createFabricMap.tsx +253 -0
  247. package/src/decorateMapComponent.ts +230 -0
  248. package/src/fixImageProp.ts +17 -0
  249. package/src/index.ts +52 -0
  250. package/src/sharedTypes.ts +101 -0
  251. package/src/sharedTypesInternal.ts +1 -0
  252. package/src/specs/NativeAirMapsModule.ts +36 -0
  253. package/src/specs/NativeComponentCallout.ts +63 -0
  254. package/src/specs/NativeComponentCircle.ts +93 -0
  255. package/src/specs/NativeComponentGoogleMapView.ts +922 -0
  256. package/src/specs/NativeComponentGooglePolygon.ts +94 -0
  257. package/src/specs/NativeComponentMapView.ts +1100 -0
  258. package/src/specs/NativeComponentMarker.ts +326 -0
  259. package/src/specs/NativeComponentOverlay.ts +98 -0
  260. package/src/specs/NativeComponentPolyline.ts +124 -0
  261. package/src/specs/NativeComponentUrlTile.ts +128 -0
  262. package/src/specs/NativeComponentWMSTile.ts +107 -0
  263. package/LICENSE +0 -21
  264. package/README.md +0 -652
  265. package/android/src/main/assets/ula.kml +0 -1214
  266. package/android/src/main/java/com/airbnb/android/react/maps/AirMapCallout.java +0 -23
  267. package/android/src/main/java/com/airbnb/android/react/maps/AirMapFeature.java +0 -18
  268. package/android/src/main/java/com/airbnb/android/react/maps/AirMapLiteManager.java +0 -20
  269. package/android/src/main/java/com/airbnb/android/react/maps/AirMapLocalTileManager.java +0 -56
  270. package/android/src/main/java/com/airbnb/android/react/maps/AirMapManager.java +0 -500
  271. package/android/src/main/java/com/airbnb/android/react/maps/AirMapMarker.java +0 -630
  272. package/android/src/main/java/com/airbnb/android/react/maps/AirMapMarkerManager.java +0 -370
  273. package/android/src/main/java/com/airbnb/android/react/maps/AirMapModule.java +0 -380
  274. package/android/src/main/java/com/airbnb/android/react/maps/AirMapOverlay.java +0 -169
  275. package/android/src/main/java/com/airbnb/android/react/maps/AirMapOverlayManager.java +0 -81
  276. package/android/src/main/java/com/airbnb/android/react/maps/AirMapPolyline.java +0 -162
  277. package/android/src/main/java/com/airbnb/android/react/maps/AirMapUrlTileManager.java +0 -97
  278. package/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java +0 -1384
  279. package/android/src/main/java/com/airbnb/android/react/maps/AirMapWMSTileManager.java +0 -87
  280. package/android/src/main/java/com/airbnb/android/react/maps/MapsPackage.java +0 -65
  281. package/index.d.ts +0 -637
  282. package/ios/AirGoogleMaps/AIRGoogleMapManager.m +0 -690
  283. package/ios/User.xcconfig +0 -0
  284. package/react-native-google-maps.podspec +0 -22
  285. package/src/Geojson.js +0 -334
  286. package/src/MapCallout.js +0 -51
  287. package/src/MapCalloutSubview.js +0 -44
  288. package/src/MapCircle.js +0 -150
  289. package/src/MapHeatmap.js +0 -99
  290. package/src/MapLocalTile.js +0 -52
  291. package/src/MapMarker.js +0 -377
  292. package/src/MapOverlay.js +0 -86
  293. package/src/MapPolygon.js +0 -202
  294. package/src/MapPolyline.js +0 -168
  295. package/src/MapUrlTile.js +0 -131
  296. package/src/MapView.js +0 -1160
  297. package/src/MapView.web.js +0 -1
  298. package/src/MapWMSTile.js +0 -122
  299. package/src/ProviderConstants.js +0 -2
  300. package/src/decorateMapComponent.js +0 -112
  301. package/src/index.js +0 -31
@@ -17,18 +17,20 @@
17
17
  #import "AIRGoogleMapUrlTile.h"
18
18
  #import "AIRGoogleMapWMSTile.h"
19
19
  #import "AIRGoogleMapOverlay.h"
20
+ #import "AIRGoogleMapCoordinate.h"
20
21
  #import <GoogleMaps/GoogleMaps.h>
21
22
  #import <MapKit/MapKit.h>
22
23
  #import <React/UIView+React.h>
23
24
  #import <React/RCTBridge.h>
24
- #import "RCTConvert+AirMap.h"
25
+ #import <React/RCTConvert.h>
25
26
  #import <objc/runtime.h>
26
27
 
28
+
27
29
  #ifdef HAVE_GOOGLE_MAPS_UTILS
28
- #import <Google-Maps-iOS-Utils/GMUKMLParser.h>
29
- #import <Google-Maps-iOS-Utils/GMUPlacemark.h>
30
- #import <Google-Maps-iOS-Utils/GMUPoint.h>
31
- #import <Google-Maps-iOS-Utils/GMUGeometryRenderer.h>
30
+ #import "GMUKMLParser.h"
31
+ #import "GMUPlacemark.h"
32
+ #import "GMUPoint.h"
33
+ #import "GMUGeometryRenderer.h"
32
34
  #define REQUIRES_GOOGLE_MAPS_UTILS(feature) do {} while (0)
33
35
  #else
34
36
  #define GMUKMLParser void
@@ -48,8 +50,12 @@ id regionAsJSON(MKCoordinateRegion region) {
48
50
  @"longitudeDelta": [NSNumber numberWithDouble:region.span.longitudeDelta],
49
51
  };
50
52
  }
51
-
52
- @interface AIRGoogleMap () <GMSIndoorDisplayDelegate>
53
+ #if __has_include(<ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>)
54
+ #import <ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>
55
+ #else
56
+ #import "RNMapsAirModuleDelegate.h"
57
+ #endif
58
+ @interface AIRGoogleMap () <GMSIndoorDisplayDelegate, RNMapsAirModuleDelegate>
53
59
 
54
60
  - (id)eventFromCoordinate:(CLLocationCoordinate2D)coordinate;
55
61
 
@@ -62,15 +68,33 @@ id regionAsJSON(MKCoordinateRegion region) {
62
68
  NSMutableArray<UIView *> *_reactSubviews;
63
69
  MKCoordinateRegion _initialRegion;
64
70
  MKCoordinateRegion _region;
65
- BOOL _initialCameraSetOnLoad;
71
+ BOOL _initialRegionSet;
72
+ BOOL _initialCameraSet;
73
+ BOOL _didLayoutSubviews;
74
+ BOOL _didPrepareMap;
66
75
  BOOL _didCallOnMapReady;
67
- BOOL _didMoveToWindow;
68
76
  BOOL _zoomTapEnabled;
77
+ BOOL _isAnimating;
78
+ NSString* _googleMapId;
69
79
  }
70
80
 
71
- - (instancetype)init
81
+ - (instancetype)initWithMapId:(NSString *)mapId initialCamera:(GMSCameraPosition*) camera backgroundColor:(UIColor *) backgroundColor andZoomTapEnabled:(BOOL)zoomTapEnabled
72
82
  {
73
- if ((self = [super init])) {
83
+ GMSMapViewOptions* options = [[GMSMapViewOptions alloc] init];
84
+
85
+ if (mapId){
86
+ GMSMapID *mapID = [GMSMapID mapIDWithIdentifier:mapId];
87
+ [options setMapID:mapID];
88
+ }
89
+ if (backgroundColor){
90
+ [options setBackgroundColor:backgroundColor];
91
+ }
92
+ if (camera){
93
+ [options setCamera:camera];
94
+ }
95
+ self = [super initWithOptions:options];
96
+
97
+ if (self) {
74
98
  _reactSubviews = [NSMutableArray new];
75
99
  _markers = [NSMutableArray array];
76
100
  _polygons = [NSMutableArray array];
@@ -80,13 +104,14 @@ id regionAsJSON(MKCoordinateRegion region) {
80
104
  _tiles = [NSMutableArray array];
81
105
  _overlays = [NSMutableArray array];
82
106
  _initialCamera = nil;
83
- _cameraProp = nil;
84
107
  _initialRegion = MKCoordinateRegionMake(CLLocationCoordinate2DMake(0.0, 0.0), MKCoordinateSpanMake(0.0, 0.0));
85
108
  _region = MKCoordinateRegionMake(CLLocationCoordinate2DMake(0.0, 0.0), MKCoordinateSpanMake(0.0, 0.0));
86
- _initialCameraSetOnLoad = false;
109
+ _initialRegionSet = false;
110
+ _initialCameraSet = false;
111
+ _didLayoutSubviews = false;
112
+ _didPrepareMap = false;
87
113
  _didCallOnMapReady = false;
88
- _didMoveToWindow = false;
89
- _zoomTapEnabled = YES;
114
+ _zoomTapEnabled = zoomTapEnabled;
90
115
 
91
116
  // Listen to the myLocation property of GMSMapView.
92
117
  [self addObserver:self
@@ -101,6 +126,10 @@ id regionAsJSON(MKCoordinateRegion region) {
101
126
  return self;
102
127
  }
103
128
 
129
+ - (instancetype) init {
130
+ return [self initWithMapId:nil initialCamera:nil backgroundColor:nil andZoomTapEnabled:YES];
131
+ }
132
+
104
133
  - (void)dealloc {
105
134
  [self removeObserver:self
106
135
  forKeyPath:@"myLocation"
@@ -123,6 +152,92 @@ id regionAsJSON(MKCoordinateRegion region) {
123
152
  };
124
153
  }
125
154
 
155
+ - (BOOL) isReady {
156
+ return _didPrepareMap;
157
+ }
158
+
159
+ -(void) fitToCoordinates:(NSArray<AIRGoogleMapCoordinate *> *) coordinates withEdgePadding:(NSDictionary*) edgePadding animated:(BOOL)animated
160
+ {
161
+ CLLocationCoordinate2D myLocation = coordinates.firstObject.coordinate;
162
+ GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:myLocation coordinate:myLocation];
163
+
164
+ for (AIRGoogleMapCoordinate *coordinate in coordinates)
165
+ bounds = [bounds includingCoordinate:coordinate.coordinate];
166
+
167
+ // Set Map viewport
168
+ CGFloat top = [RCTConvert CGFloat:edgePadding[@"top"]];
169
+ CGFloat right = [RCTConvert CGFloat:edgePadding[@"right"]];
170
+ CGFloat bottom = [RCTConvert CGFloat:edgePadding[@"bottom"]];
171
+ CGFloat left = [RCTConvert CGFloat:edgePadding[@"left"]];
172
+
173
+ GMSCameraUpdate *cameraUpdate = [GMSCameraUpdate fitBounds:bounds withEdgeInsets:UIEdgeInsetsMake(top, left, bottom, right)];
174
+
175
+ if (animated) {
176
+ [self animateWithCameraUpdate: cameraUpdate];
177
+ } else {
178
+ [self moveCamera: cameraUpdate];
179
+ }
180
+ }
181
+
182
+ -(void) fitToElementsWithEdgePadding:(nonnull NSDictionary *)edgePadding
183
+ animated:(BOOL)animated
184
+ {
185
+ CLLocationCoordinate2D myLocation = ((AIRGoogleMapMarker *)(self.markers.firstObject)).realMarker.position;
186
+ GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:myLocation coordinate:myLocation];
187
+
188
+ for (AIRGoogleMapMarker *marker in self.markers)
189
+ bounds = [bounds includingCoordinate:marker.realMarker.position];
190
+
191
+ GMSCameraUpdate* cameraUpdate;
192
+
193
+ if ([edgePadding count] != 0) {
194
+ // Set Map viewport
195
+ CGFloat top = [RCTConvert CGFloat:edgePadding[@"top"]];
196
+ CGFloat right = [RCTConvert CGFloat:edgePadding[@"right"]];
197
+ CGFloat bottom = [RCTConvert CGFloat:edgePadding[@"bottom"]];
198
+ CGFloat left = [RCTConvert CGFloat:edgePadding[@"left"]];
199
+
200
+ cameraUpdate = [GMSCameraUpdate fitBounds:bounds withEdgeInsets:UIEdgeInsetsMake(top, left, bottom, right)];
201
+ } else {
202
+ cameraUpdate = [GMSCameraUpdate fitBounds:bounds withPadding:55.0f];
203
+ }
204
+ if (animated) {
205
+ [self animateWithCameraUpdate: cameraUpdate];
206
+ } else {
207
+ [self moveCamera: cameraUpdate];
208
+ }
209
+ }
210
+
211
+ - (void) fitToSuppliedMarkers:(NSArray*) markers withEdgePadding:(NSDictionary*) edgePadding animated:(BOOL)animated
212
+ {
213
+ NSPredicate *filterMarkers = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
214
+ AIRGoogleMapMarker *marker = (AIRGoogleMapMarker *)evaluatedObject;
215
+ return [marker isKindOfClass:[AIRGoogleMapMarker class]] && [markers containsObject:marker.identifier];
216
+ }];
217
+
218
+ NSArray *filteredMarkers = [self.markers filteredArrayUsingPredicate:filterMarkers];
219
+
220
+ CLLocationCoordinate2D myLocation = ((AIRGoogleMapMarker *)(filteredMarkers.firstObject)).realMarker.position;
221
+ GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:myLocation coordinate:myLocation];
222
+
223
+ for (AIRGoogleMapMarker *marker in filteredMarkers)
224
+ bounds = [bounds includingCoordinate:marker.realMarker.position];
225
+
226
+ // Set Map viewport
227
+ CGFloat top = [RCTConvert CGFloat:edgePadding[@"top"]];
228
+ CGFloat right = [RCTConvert CGFloat:edgePadding[@"right"]];
229
+ CGFloat bottom = [RCTConvert CGFloat:edgePadding[@"bottom"]];
230
+ CGFloat left = [RCTConvert CGFloat:edgePadding[@"left"]];
231
+
232
+ GMSCameraUpdate* cameraUpdate = [GMSCameraUpdate fitBounds:bounds withEdgeInsets:UIEdgeInsetsMake(top, left, bottom, right)];
233
+ if (animated) {
234
+ [self animateWithCameraUpdate:cameraUpdate
235
+ ];
236
+ } else {
237
+ [self moveCamera: cameraUpdate];
238
+ }
239
+ }
240
+
126
241
  #pragma clang diagnostic push
127
242
  #pragma clang diagnostic ignored "-Wobjc-missing-super-calls"
128
243
  - (void)insertReactSubview:(id<RCTComponent>)subview atIndex:(NSInteger)atIndex {
@@ -130,12 +245,17 @@ id regionAsJSON(MKCoordinateRegion region) {
130
245
  // This is where we intercept them and do the appropriate underlying mapview action.
131
246
  if ([subview isKindOfClass:[AIRGoogleMapMarker class]]) {
132
247
  AIRGoogleMapMarker *marker = (AIRGoogleMapMarker*)subview;
133
- marker.realMarker.map = self;
248
+ [marker didInsertInMap:self];
134
249
  [self.markers addObject:marker];
135
250
  } else if ([subview isKindOfClass:[AIRGoogleMapPolygon class]]) {
136
251
  AIRGoogleMapPolygon *polygon = (AIRGoogleMapPolygon*)subview;
137
- polygon.polygon.map = self;
252
+ [polygon didInsertInMap:self];
138
253
  [self.polygons addObject:polygon];
254
+
255
+ } else if ([NSStringFromClass([subview class]) isEqualToString:@"RNMapsGooglePolygonView"]){
256
+ // RNMapsGooglePolygonView *polygon = (RNMapsGooglePolygonView*)subview;
257
+ // [polygon didInsertInMap:self];
258
+ [self.polygons addObject:subview];
139
259
  } else if ([subview isKindOfClass:[AIRGoogleMapPolyline class]]) {
140
260
  AIRGoogleMapPolyline *polyline = (AIRGoogleMapPolyline*)subview;
141
261
  polyline.polyline.map = self;
@@ -180,7 +300,9 @@ id regionAsJSON(MKCoordinateRegion region) {
180
300
  AIRGoogleMapMarker *marker = (AIRGoogleMapMarker*)subview;
181
301
  marker.realMarker.map = nil;
182
302
  [self.markers removeObject:marker];
183
- } else if ([subview isKindOfClass:[AIRGoogleMapPolygon class]]) {
303
+ } else if ([NSStringFromClass([subview class]) isEqualToString:@"RNMapsGooglePolygonView"]) {
304
+ [self.polygons removeObject:subview];
305
+ } else if ([subview isKindOfClass:[AIRGoogleMapPolygon class]]) {
184
306
  AIRGoogleMapPolygon *polygon = (AIRGoogleMapPolygon*)subview;
185
307
  polygon.polygon.map = nil;
186
308
  [self.polygons removeObject:polygon];
@@ -225,7 +347,7 @@ id regionAsJSON(MKCoordinateRegion region) {
225
347
  }
226
348
  #pragma clang diagnostic pop
227
349
 
228
- - (NSArray *)getMapBoundaries
350
+ - (NSDictionary *)getMapBoundaries
229
351
  {
230
352
  GMSVisibleRegion visibleRegion = self.projection.visibleRegion;
231
353
  GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithRegion:visibleRegion];
@@ -233,69 +355,112 @@ id regionAsJSON(MKCoordinateRegion region) {
233
355
  CLLocationCoordinate2D northEast = bounds.northEast;
234
356
  CLLocationCoordinate2D southWest = bounds.southWest;
235
357
 
236
- return @[
237
- @[
238
- [NSNumber numberWithDouble:northEast.longitude],
239
- [NSNumber numberWithDouble:northEast.latitude]
240
- ],
241
- @[
242
- [NSNumber numberWithDouble:southWest.longitude],
243
- [NSNumber numberWithDouble:southWest.latitude]
244
- ]
245
- ];
246
- }
247
-
248
- - (void)didMoveToWindow {
249
- if (_didMoveToWindow) return;
250
- _didMoveToWindow = true;
358
+ return @{
359
+ @"northEast": @{
360
+ @"latitude": [NSNumber numberWithDouble:northEast.latitude],
361
+ @"longitude": [NSNumber numberWithDouble:northEast.longitude],
362
+ },
363
+ @"southWest": @{
364
+ @"latitude": [NSNumber numberWithDouble:southWest.latitude],
365
+ @"longitude": [NSNumber numberWithDouble:southWest.longitude],
366
+ },
367
+ };
368
+ }
369
+
370
+ - (NSDictionary *) getCameraDic {
371
+ GMSCameraPosition *camera = [self camera];
372
+ return @{
373
+ @"center": @{
374
+ @"latitude": @(camera.target.latitude),
375
+ @"longitude": @(camera.target.longitude),
376
+ },
377
+ @"pitch": @(camera.viewingAngle),
378
+ @"heading": @(camera.bearing),
379
+ @"zoom": @(camera.zoom),
380
+ };
381
+ }
382
+
383
+ - (void)layoutSubviews {
384
+ [super layoutSubviews];
385
+ if(_didLayoutSubviews) return;
386
+ _didLayoutSubviews = true;
251
387
 
252
388
  if (_initialCamera != nil) {
253
389
  self.camera = _initialCamera;
390
+ _initialCameraSet = true;
254
391
  }
255
392
  else if (_initialRegion.span.latitudeDelta != 0.0 &&
256
393
  _initialRegion.span.longitudeDelta != 0.0) {
257
394
  self.camera = [AIRGoogleMap makeGMSCameraPositionFromMap:self andMKCoordinateRegion:_initialRegion];
395
+ _initialRegionSet = true;
258
396
  } else if (_region.span.latitudeDelta != 0.0 &&
259
397
  _region.span.longitudeDelta != 0.0) {
260
398
  self.camera = [AIRGoogleMap makeGMSCameraPositionFromMap:self andMKCoordinateRegion:_region];
261
399
  }
262
-
263
- [super didMoveToWindow];
264
400
  }
265
401
 
266
402
  - (void)setInitialRegion:(MKCoordinateRegion)initialRegion {
267
- if (_initialCameraSetOnLoad) return;
268
403
  _initialRegion = initialRegion;
269
- _initialCameraSetOnLoad = _didMoveToWindow;
270
- self.camera = [AIRGoogleMap makeGMSCameraPositionFromMap:self andMKCoordinateRegion:initialRegion];
404
+ if(!_initialRegionSet && _didLayoutSubviews){
405
+ self.camera = [AIRGoogleMap makeGMSCameraPositionFromMap:self andMKCoordinateRegion:initialRegion];
406
+ _initialRegionSet = true;
407
+ }
271
408
  }
272
409
 
273
410
  - (void)setInitialCamera:(GMSCameraPosition*)initialCamera {
274
- if (_initialCameraSetOnLoad) return;
275
411
  _initialCamera = initialCamera;
276
- _initialCameraSetOnLoad = _didMoveToWindow;
277
- self.camera = initialCamera;
412
+ if(!_initialCameraSet && _didLayoutSubviews){
413
+ self.camera = initialCamera;
414
+ _initialCameraSet = true;
415
+ }
278
416
  }
279
417
 
280
418
  - (void)setRegion:(MKCoordinateRegion)region {
281
- // TODO: The JS component is repeatedly setting region unnecessarily. We might want to deal with that in here.
419
+ if (_isAnimating || !CLLocationCoordinate2DIsValid(region.center)) return;
282
420
  _region = region;
283
- self.camera = [AIRGoogleMap makeGMSCameraPositionFromMap:self andMKCoordinateRegion:region];
421
+ if(_didLayoutSubviews) {
422
+ self.camera = [AIRGoogleMap makeGMSCameraPositionFromMap:self andMKCoordinateRegion:region];
423
+ }
424
+ }
425
+
426
+ - (void) setGoogleMapId:(NSString *) googleMapId {
427
+ _googleMapId = googleMapId;
428
+ }
429
+
430
+ - (GMSCameraPosition *)cameraProp {
431
+ if(_didLayoutSubviews) {
432
+ return self.camera;
433
+ } else {
434
+ return _initialCamera;
435
+ }
284
436
  }
285
437
 
286
438
  - (void)setCameraProp:(GMSCameraPosition*)camera {
439
+ if (_isAnimating || !CLLocationCoordinate2DIsValid([camera target])) return;
287
440
  _initialCamera = camera;
288
- self.camera = camera;
441
+ if(_didLayoutSubviews) {
442
+ self.camera = camera;
443
+ }
289
444
  }
290
445
 
446
+ - (void)setOnMapReady:(RCTBubblingEventBlock)onMapReady {
447
+ _onMapReady = onMapReady;
448
+ if(!_didCallOnMapReady && _didPrepareMap) {
449
+ self.onMapReady(@{});
450
+ _didCallOnMapReady = true;
451
+ }
452
+ }
291
453
 
292
454
  - (void)didPrepareMap {
293
- UIView* mapView = [self valueForKey:@"mapView"]; //GMSVectorMapView
294
- [self overrideGestureRecognizersForView:mapView];
455
+ if (!_didPrepareMap){
456
+ [self overrideGestureRecognizersForView];
457
+ }
295
458
 
296
- if (_didCallOnMapReady) return;
297
- _didCallOnMapReady = true;
298
- if (self.onMapReady) self.onMapReady(@{});
459
+ if (!_didCallOnMapReady && self.onMapReady) {
460
+ self.onMapReady(@{});
461
+ _didCallOnMapReady = true;
462
+ }
463
+ _didPrepareMap = true;
299
464
  }
300
465
 
301
466
  - (void)mapViewDidFinishTileRendering {
@@ -318,6 +483,7 @@ id regionAsJSON(MKCoordinateRegion region) {
318
483
 
319
484
  // TODO: not sure why this is necessary
320
485
  [self setSelectedMarker:marker];
486
+
321
487
  return NO;
322
488
  }
323
489
 
@@ -351,13 +517,19 @@ id regionAsJSON(MKCoordinateRegion region) {
351
517
  self.onLongPress([self eventFromCoordinate:coordinate]);
352
518
  }
353
519
 
520
+ - (void)willMove:(BOOL)gesture {
521
+ _isAnimating = YES;
522
+ id event = @{@"isGesture": [NSNumber numberWithBool:gesture]};
523
+ if (self.onRegionChangeStart) self.onRegionChangeStart(event);
524
+ }
525
+
354
526
  - (void)didChangeCameraPosition:(GMSCameraPosition *)position isGesture:(BOOL)isGesture{
355
527
  id event = @{@"continuous": @YES,
356
528
  @"region": regionAsJSON([AIRGoogleMap makeGMSCameraPositionFromMap:self andGMSCameraPosition:position]),
357
529
  @"isGesture": [NSNumber numberWithBool:isGesture],
358
530
  };
359
531
 
360
- if (self.onChange) self.onChange(event);
532
+ if (self.onRegionChange) self.onRegionChange(event);
361
533
  }
362
534
 
363
535
  - (void)didTapPOIWithPlaceID:(NSString *)placeID
@@ -379,7 +551,8 @@ id regionAsJSON(MKCoordinateRegion region) {
379
551
  @"region": regionAsJSON([AIRGoogleMap makeGMSCameraPositionFromMap:self andGMSCameraPosition:position]),
380
552
  @"isGesture": [NSNumber numberWithBool:isGesture],
381
553
  };
382
- if (self.onChange) self.onChange(event); // complete
554
+ if (self.onRegionChangeComplete) self.onRegionChangeComplete(event); // complete
555
+ _isAnimating = NO;
383
556
  }
384
557
 
385
558
  - (void)setMapPadding:(UIEdgeInsets)mapPadding {
@@ -498,8 +671,7 @@ id regionAsJSON(MKCoordinateRegion region) {
498
671
  if (!style) {
499
672
  NSLog(@"The style definition could not be loaded: %@", error);
500
673
  }
501
-
502
- self.mapStyle = style;
674
+ [self setMapStyle:style];
503
675
  }
504
676
 
505
677
  - (BOOL)showsCompass {
@@ -522,11 +694,11 @@ id regionAsJSON(MKCoordinateRegion region) {
522
694
  return self.settings.myLocationButton;
523
695
  }
524
696
 
525
- - (void)setMinZoomLevel:(CGFloat)minZoomLevel {
697
+ - (void)setMinZoom:(CGFloat)minZoomLevel {
526
698
  [self setMinZoom:minZoomLevel maxZoom:self.maxZoom ];
527
699
  }
528
700
 
529
- - (void)setMaxZoomLevel:(CGFloat)maxZoomLevel {
701
+ - (void)setMaxZoom:(CGFloat)maxZoomLevel {
530
702
  [self setMinZoom:self.minZoom maxZoom:maxZoomLevel ];
531
703
  }
532
704
 
@@ -546,6 +718,33 @@ id regionAsJSON(MKCoordinateRegion region) {
546
718
  return self.settings.indoorPicker;
547
719
  }
548
720
 
721
+ -(void)setSelectedMarker:(AIRGMSMarker *)selectedMarker {
722
+ if (selectedMarker == self.selectedMarker) {
723
+ return;
724
+ }
725
+ AIRGMSMarker *airMarker = (AIRGMSMarker *) self.selectedMarker;
726
+ AIRGoogleMapMarker *fakeAirMarker = (AIRGoogleMapMarker *) airMarker.fakeMarker;
727
+ AIRGoogleMapMarker *fakeSelectedMarker = (AIRGoogleMapMarker *) selectedMarker.fakeMarker;
728
+
729
+ if (airMarker && airMarker.onDeselect) {
730
+ airMarker.onDeselect([fakeAirMarker makeEventData:@"marker-deselect"]);
731
+ }
732
+
733
+ if (airMarker && self.onMarkerDeselect) {
734
+ self.onMarkerDeselect([fakeAirMarker makeEventData:@"marker-deselect"]);
735
+ }
736
+
737
+ if (selectedMarker && selectedMarker.onSelect) {
738
+ selectedMarker.onSelect([fakeSelectedMarker makeEventData:@"marker-select"]);
739
+ }
740
+
741
+ if (selectedMarker && self.onMarkerSelect) {
742
+ self.onMarkerSelect([fakeSelectedMarker makeEventData:@"marker-select"]);
743
+ }
744
+
745
+ [super setSelectedMarker:selectedMarker];
746
+ }
747
+
549
748
  + (MKCoordinateRegion) makeGMSCameraPositionFromMap:(GMSMapView *)map andGMSCameraPosition:(GMSCameraPosition *)position {
550
749
  // solution from here: http://stackoverflow.com/a/16587735/1102215
551
750
  GMSVisibleRegion visibleRegion = map.projection.visibleRegion;
@@ -581,6 +780,63 @@ id regionAsJSON(MKCoordinateRegion region) {
581
780
  return [map cameraForBounds:bounds insets:UIEdgeInsetsZero];
582
781
  }
583
782
 
783
+ #pragma mark - RNMapsAirModuleDelegate
784
+
785
+ - (NSDictionary *) getCoordinatesForPoint:(CGPoint)point
786
+ {
787
+ CLLocationCoordinate2D coordinate = [self.projection coordinateForPoint:point];
788
+ return @{
789
+ @"latitude": @(coordinate.latitude),
790
+ @"longitude": @(coordinate.longitude),
791
+ };
792
+ }
793
+
794
+ - (NSDictionary *) getPointForCoordinates:(CLLocationCoordinate2D)location
795
+ {
796
+ CGPoint touchPoint = [self.projection pointForCoordinate:location];
797
+ return @{
798
+ @"x": @(touchPoint.x),
799
+ @"y": @(touchPoint.y),
800
+ };
801
+ }
802
+
803
+ -(void) takeSnapshotWithConfig:(NSDictionary *)config success:(RCTPromiseResolveBlock)success error:(RCTPromiseRejectBlock)error {
804
+ /* unused
805
+ NSNumber *width = [config objectForKey:@"width"];
806
+ NSNumber *height = [config objectForKey:@"height"];
807
+ */
808
+ NSNumber *quality = [config objectForKey:@"quality"];
809
+
810
+ NSString *format = [config objectForKey:@"format"];
811
+ NSString *result = [config objectForKey:@"result"];
812
+ NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970];
813
+ NSString *pathComponent = [NSString stringWithFormat:@"Documents/snapshot-%.20lf.%@", timeStamp, format];
814
+ NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent: pathComponent];
815
+
816
+ // TODO: currently we are ignoring width, height, region
817
+
818
+ UIGraphicsBeginImageContextWithOptions(self.frame.size, YES, 0.0f);
819
+ [self.layer renderInContext:UIGraphicsGetCurrentContext()];
820
+ UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
821
+
822
+ NSData *data;
823
+ if ([format isEqualToString:@"png"]) {
824
+ data = UIImagePNGRepresentation(image);
825
+
826
+ } else if([format isEqualToString:@"jpg"]) {
827
+ data = UIImageJPEGRepresentation(image, quality.floatValue);
828
+ }
829
+
830
+ if ([result isEqualToString:@"file"]) {
831
+ [data writeToFile:filePath atomically:YES];
832
+ success(filePath);
833
+ } else if ([result isEqualToString:@"base64"]) {
834
+ success([data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn]);
835
+ }
836
+
837
+ UIGraphicsEndImageContext();
838
+ }
839
+
584
840
  #pragma mark - Utils
585
841
 
586
842
  - (CGRect) frameForMarker:(AIRGoogleMapMarker*) mrkView {
@@ -652,8 +908,8 @@ id regionAsJSON(MKCoordinateRegion region) {
652
908
 
653
909
  #pragma mark - Overrides for Callout behavior
654
910
 
655
- -(void)overrideGestureRecognizersForView:(UIView*)view {
656
- NSArray* grs = view.gestureRecognizers;
911
+ -(void)overrideGestureRecognizersForView {
912
+ NSArray* grs = self.gestureRecognizers;
657
913
  for (UIGestureRecognizer* gestureRecognizer in grs) {
658
914
  NSNumber* grHash = [NSNumber numberWithUnsignedInteger:gestureRecognizer.hash];
659
915
  if([self.origGestureRecognizersMeta objectForKey:grHash] != nil)
@@ -673,7 +929,7 @@ id regionAsJSON(MKCoordinateRegion region) {
673
929
  }];
674
930
  }
675
931
  if (isZoomTapGesture && self.zoomTapEnabled == NO) {
676
- [view removeGestureRecognizer:gestureRecognizer];
932
+ [self removeGestureRecognizer:gestureRecognizer];
677
933
  continue;
678
934
  }
679
935
 
@@ -704,16 +960,19 @@ id regionAsJSON(MKCoordinateRegion region) {
704
960
  BOOL isTap = [gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] || [gestureRecognizer isMemberOfClass:[UITapGestureRecognizer class]];
705
961
  if (isTap) {
706
962
  BOOL isTapInsideBubble = NO;
707
- CGPoint tapPoint = CGPointZero;
708
- CGPoint tapPointInBubble = CGPointZero;
709
-
710
- NSArray* touches = [gestureRecognizer valueForKey:@"touches"];
711
- UITouch* oneTouch = [touches firstObject];
712
- NSArray* delayedTouches = [gestureRecognizer valueForKey:@"delayedTouches"];
713
- NSObject* delayedTouch = [delayedTouches firstObject]; //UIGestureDeleayedTouch
714
- UITouch* tapTouch = [delayedTouch valueForKey:@"stateWhenDelayed"];
715
- if (!tapTouch)
716
- tapTouch = oneTouch;
963
+ CGPoint tapPoint = CGPointZero;
964
+ CGPoint tapPointInBubble = CGPointZero;
965
+
966
+ NSArray* touches = [gestureRecognizer valueForKey:@"touches"];
967
+ UITouch* oneTouch = [touches firstObject];
968
+ NSArray* delayedTouches = [gestureRecognizer valueForKey:@"delayedTouches"];
969
+ NSObject* delayedTouch = [delayedTouches firstObject]; //UIGestureDeleayedTouch
970
+ UITouch* tapTouch = [delayedTouch valueForKey:@"stateWhenDelayed"];
971
+
972
+ if (!tapTouch) {
973
+ tapTouch = oneTouch;
974
+ };
975
+
717
976
  tapPoint = [tapTouch locationInView:self];
718
977
  isTapInsideBubble = tapTouch != nil && CGRectContainsPoint(bubbleFrame, tapPoint);
719
978
  if (isTapInsideBubble) {
@@ -797,7 +1056,7 @@ id regionAsJSON(MKCoordinateRegion region) {
797
1056
  @"latitude": @(location.coordinate.latitude),
798
1057
  @"longitude": @(location.coordinate.longitude),
799
1058
  @"altitude": @(location.altitude),
800
- @"timestamp": @(location.timestamp.timeIntervalSinceReferenceDate * 1000),
1059
+ @"timestamp": @(location.timestamp.timeIntervalSince1970 * 1000),
801
1060
  @"accuracy": @(location.horizontalAccuracy),
802
1061
  @"altitudeAccuracy": @(location.verticalAccuracy),
803
1062
  @"speed": @(location.speed),
@@ -813,7 +1072,7 @@ id regionAsJSON(MKCoordinateRegion region) {
813
1072
  }
814
1073
 
815
1074
  + (NSString *)GetIconUrl:(GMUPlacemark *) marker parser:(GMUKMLParser *) parser {
816
- #ifdef HAVE_GOOGLE_MAPS_UTILS
1075
+ #if HAVE_GOOGLE_MAPS_UTILS
817
1076
  if (marker.style.styleID != nil) {
818
1077
  for (GMUStyle *style in parser.styles) {
819
1078
  if (style.styleID == marker.style.styleID) {
@@ -832,8 +1091,53 @@ id regionAsJSON(MKCoordinateRegion region) {
832
1091
  return _kmlSrc;
833
1092
  }
834
1093
 
1094
+ - (void) setKMLData:(NSData *) urlData {
1095
+ GMUKMLParser *parser = [[GMUKMLParser alloc] initWithData:urlData];
1096
+ [parser parse];
1097
+
1098
+ NSUInteger index = 0;
1099
+ NSMutableArray *markers = [[NSMutableArray alloc]init];
1100
+
1101
+ for (GMUPlacemark *place in parser.placemarks) {
1102
+
1103
+ CLLocationCoordinate2D location =((GMUPoint *) place.geometry).coordinate;
1104
+
1105
+ AIRGoogleMapMarker *marker = (AIRGoogleMapMarker *)[[AIRGoogleMapMarkerManager alloc] view];
1106
+ if (!marker.bridge) {
1107
+ marker.bridge = _bridge;
1108
+ }
1109
+ marker.identifier = place.title;
1110
+ marker.coordinate = location;
1111
+ marker.title = place.title;
1112
+ marker.subtitle = place.snippet;
1113
+ marker.pinColor = place.style.fillColor;
1114
+ marker.imageSrc = [AIRGoogleMap GetIconUrl:place parser:parser];
1115
+ marker.layer.backgroundColor = [UIColor clearColor].CGColor;
1116
+ marker.layer.position = CGPointZero;
1117
+
1118
+ [self insertReactSubview:(UIView *) marker atIndex:index];
1119
+
1120
+ [markers addObject:@{@"id": marker.identifier,
1121
+ @"title": marker.title,
1122
+ @"description": marker.subtitle,
1123
+ @"coordinate": @{
1124
+ @"latitude": @(location.latitude),
1125
+ @"longitude": @(location.longitude)
1126
+ }
1127
+ }];
1128
+
1129
+ index++;
1130
+ }
1131
+
1132
+ id event = @{@"markers": markers};
1133
+ if (self.onKmlReady) self.onKmlReady(event);
1134
+ #else
1135
+ REQUIRES_GOOGLE_MAPS_UTILS();
1136
+ #endif
1137
+ }
1138
+
835
1139
  - (void)setKmlSrc:(NSString *)kmlUrl {
836
- #ifdef HAVE_GOOGLE_MAPS_UTILS
1140
+ #if HAVE_GOOGLE_MAPS_UTILS
837
1141
 
838
1142
  _kmlSrc = kmlUrl;
839
1143
 
@@ -841,53 +1145,28 @@ id regionAsJSON(MKCoordinateRegion region) {
841
1145
  NSData *urlData = nil;
842
1146
 
843
1147
  if ([url isFileURL]) {
844
- urlData = [NSData dataWithContentsOfURL:url];
1148
+ [self setKMLData:[NSData dataWithContentsOfURL:url]];
845
1149
  } else {
846
- urlData = [[NSFileManager defaultManager] contentsAtPath:kmlUrl];
1150
+ __weak AIRGoogleMap *weakSelf = self;
1151
+
1152
+ NSURLSession *session = [NSURLSession sharedSession];
1153
+ NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url
1154
+ completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
1155
+ if (error) {
1156
+ NSLog(@"Error fetching data: %@", error.localizedDescription);
1157
+ return;
1158
+ } else {
1159
+ dispatch_async(dispatch_get_main_queue(), ^{
1160
+ AIRGoogleMap *strongSelf = weakSelf;
1161
+ [strongSelf setKMLData:data];
1162
+ });
1163
+
1164
+ }
1165
+ }];
1166
+ [dataTask resume];
847
1167
  }
848
1168
 
849
- GMUKMLParser *parser = [[GMUKMLParser alloc] initWithData:urlData];
850
- [parser parse];
851
1169
 
852
- NSUInteger index = 0;
853
- NSMutableArray *markers = [[NSMutableArray alloc]init];
854
-
855
- for (GMUPlacemark *place in parser.placemarks) {
856
-
857
- CLLocationCoordinate2D location =((GMUPoint *) place.geometry).coordinate;
858
-
859
- AIRGoogleMapMarker *marker = (AIRGoogleMapMarker *)[[AIRGoogleMapMarkerManager alloc] view];
860
- if (!marker.bridge) {
861
- marker.bridge = _bridge;
862
- }
863
- marker.identifier = place.title;
864
- marker.coordinate = location;
865
- marker.title = place.title;
866
- marker.subtitle = place.snippet;
867
- marker.pinColor = place.style.fillColor;
868
- marker.imageSrc = [AIRGoogleMap GetIconUrl:place parser:parser];
869
- marker.layer.backgroundColor = [UIColor clearColor].CGColor;
870
- marker.layer.position = CGPointZero;
871
-
872
- [self insertReactSubview:(UIView *) marker atIndex:index];
873
-
874
- [markers addObject:@{@"id": marker.identifier,
875
- @"title": marker.title,
876
- @"description": marker.subtitle,
877
- @"coordinate": @{
878
- @"latitude": @(location.latitude),
879
- @"longitude": @(location.longitude)
880
- }
881
- }];
882
-
883
- index++;
884
- }
885
-
886
- id event = @{@"markers": markers};
887
- if (self.onKmlReady) self.onKmlReady(event);
888
- #else
889
- REQUIRES_GOOGLE_MAPS_UTILS();
890
- #endif
891
1170
  }
892
1171
 
893
1172
 
@@ -897,11 +1176,9 @@ id regionAsJSON(MKCoordinateRegion region) {
897
1176
  return;
898
1177
  }
899
1178
  self.onIndoorBuildingFocused(@{
900
- @"IndoorBuilding": @{
901
- @"activeLevelIndex": @0,
902
- @"underground": @false,
903
- @"levels": [[NSMutableArray alloc]init]
904
- }
1179
+ @"activeLevelIndex": @0,
1180
+ @"underground": @false,
1181
+ @"levels": [[NSMutableArray alloc]init]
905
1182
  });
906
1183
  }
907
1184
  NSInteger i = 0;
@@ -918,11 +1195,9 @@ id regionAsJSON(MKCoordinateRegion region) {
918
1195
  return;
919
1196
  }
920
1197
  self.onIndoorBuildingFocused(@{
921
- @"IndoorBuilding": @{
922
- @"activeLevelIndex": @(building.defaultLevelIndex),
923
- @"underground": @(building.underground),
924
- @"levels": arrayLevels
925
- }
1198
+ @"activeLevelIndex": @(building.defaultLevelIndex),
1199
+ @"underground": @(building.underground),
1200
+ @"levels": arrayLevels
926
1201
  });
927
1202
  }
928
1203
 
@@ -938,13 +1213,15 @@ id regionAsJSON(MKCoordinateRegion region) {
938
1213
  i++;
939
1214
  }
940
1215
  self.onIndoorLevelActivated(@{
941
- @"IndoorLevel": @{
942
- @"activeLevelIndex": @(i),
943
- @"name": level.name,
944
- @"shortName": level.shortName
945
- }
1216
+ @"activeLevelIndex": @(i),
1217
+ @"name": level.name,
1218
+ @"shortName": level.shortName
946
1219
  });
947
1220
  }
1221
+ // do nothing, passed as options on initialization
1222
+ - (void)setLoadingBackgroundColor:(UIColor *)loadingBackgroundColor {
1223
+
1224
+ }
948
1225
 
949
1226
 
950
1227
  @end