react-native-maps 0.31.1 → 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
@@ -7,16 +7,15 @@
7
7
  #ifdef HAVE_GOOGLE_MAPS
8
8
 
9
9
  #import <GoogleMaps/GoogleMaps.h>
10
- #import "AIRMapCoordinate.h"
11
10
 
12
11
  @interface AIRGoogleMapCircle : UIView
13
12
 
14
13
  @property (nonatomic, strong) GMSCircle *circle;
15
14
  @property (nonatomic, assign) double radius;
16
15
  @property (nonatomic, assign) CLLocationCoordinate2D centerCoordinate;
17
- @property (nonatomic, assign) UIColor *strokeColor;
16
+ @property (nonatomic, strong) UIColor *strokeColor;
18
17
  @property (nonatomic, assign) double strokeWidth;
19
- @property (nonatomic, assign) UIColor *fillColor;
18
+ @property (nonatomic, strong) UIColor *fillColor;
20
19
  @property (nonatomic, assign) int zIndex;
21
20
 
22
21
  @end
@@ -11,14 +11,47 @@
11
11
  #import <React/RCTUtils.h>
12
12
 
13
13
  @implementation AIRGoogleMapCircle
14
+ {
15
+ BOOL _didMoveToWindow;
16
+ }
14
17
 
15
18
  - (instancetype)init
16
19
  {
17
20
  if (self = [super init]) {
21
+ _didMoveToWindow = false;
18
22
  _circle = [[GMSCircle alloc] init];
23
+ _circle.fillColor = _fillColor;
24
+ _circle.strokeColor = _strokeColor;
19
25
  }
20
26
  return self;
21
27
  }
28
+ - (void) prepare
29
+ {
30
+ if(_didMoveToWindow) return;
31
+ _didMoveToWindow = true;
32
+ if(_fillColor) {
33
+ _circle.fillColor = _fillColor;
34
+ }
35
+ if(_strokeColor) {
36
+ _circle.strokeColor = _strokeColor;
37
+ }
38
+ if(_strokeWidth) {
39
+ _circle.strokeWidth = _strokeWidth;
40
+ }
41
+ if (_zIndex) {
42
+ _circle.zIndex = _zIndex;
43
+ }
44
+ }
45
+ - (void) didMoveToSuperview
46
+ {
47
+ [super didMoveToSuperview];
48
+ [self prepare];
49
+ }
50
+
51
+ - (void)didMoveToWindow {
52
+ [super didMoveToWindow];
53
+ [self prepare];
54
+ }
22
55
 
23
56
  - (void)setRadius:(double)radius
24
57
  {
@@ -35,19 +68,25 @@
35
68
  -(void)setStrokeColor:(UIColor *)strokeColor
36
69
  {
37
70
  _strokeColor = strokeColor;
38
- _circle.strokeColor = strokeColor;
71
+ if(_didMoveToWindow) {
72
+ _circle.strokeColor = strokeColor;
73
+ }
39
74
  }
40
75
 
41
76
  -(void)setStrokeWidth:(double)strokeWidth
42
77
  {
43
78
  _strokeWidth = strokeWidth;
44
- _circle.strokeWidth = strokeWidth;
79
+ if(_didMoveToWindow) {
80
+ _circle.strokeWidth = strokeWidth;
81
+ }
45
82
  }
46
83
 
47
84
  -(void)setFillColor:(UIColor *)fillColor
48
85
  {
49
86
  _fillColor = fillColor;
50
- _circle.fillColor = fillColor;
87
+ if(_didMoveToWindow) {
88
+ _circle.fillColor = fillColor;
89
+ }
51
90
  }
52
91
 
53
92
  -(void)setZIndex:(int)zIndex
@@ -0,0 +1,13 @@
1
+ //
2
+ // Created by Leland Richardson on 12/27/15.
3
+ // Copyright (c) 2015 Facebook. All rights reserved.
4
+ //
5
+
6
+ #import <Foundation/Foundation.h>
7
+ #import <MapKit/MapKit.h>
8
+
9
+ @interface AIRGoogleMapCoordinate : NSObject
10
+
11
+ @property (nonatomic, assign) CLLocationCoordinate2D coordinate;
12
+
13
+ @end
@@ -0,0 +1,10 @@
1
+ //
2
+ // Created by Leland Richardson on 12/27/15.
3
+ // Copyright (c) 2015 Facebook. All rights reserved.
4
+ //
5
+
6
+ #import "AIRGoogleMapCoordinate.h"
7
+
8
+
9
+ @implementation AIRGoogleMapCoordinate
10
+ @end
@@ -4,7 +4,7 @@
4
4
  // Created by David Cako on 29 April 2018.
5
5
  //
6
6
 
7
- #import <Google-Maps-iOS-Utils/GMUHeatmapTileLayer.h>
7
+ #import "GMUHeatmapTileLayer.h"
8
8
 
9
9
  @interface AIRGoogleMapHeatmap : UIView
10
10
 
@@ -9,7 +9,18 @@
9
9
 
10
10
  #import <React/RCTViewManager.h>
11
11
 
12
+ @class GMSCameraPosition;
13
+
12
14
  @interface AIRGoogleMapManager : RCTViewManager
15
+
16
+ @property (nonatomic, strong) NSString* googleMapId;
17
+ @property (nonatomic, strong) NSString* customMapStyle;
18
+ @property (nonatomic) BOOL zoomTapEnabled;
19
+ @property (nonatomic, strong) UIColor* backgroundColor;
20
+ @property (nonatomic, strong) GMSCameraPosition* camera;
21
+
22
+ @property (nonatomic, strong) NSDictionary *initialProps;
23
+
13
24
  @property (nonatomic) BOOL isGesture;
14
25
 
15
26
  @end
@@ -0,0 +1,543 @@
1
+ //
2
+ // AIRGoogleMapManager.m
3
+ // AirMaps
4
+ //
5
+ // Created by Gil Birman on 9/1/16.
6
+ //
7
+
8
+ #ifdef HAVE_GOOGLE_MAPS
9
+
10
+
11
+ #import "AIRGoogleMapManager.h"
12
+ #import <React/RCTViewManager.h>
13
+ #import <React/RCTBridge.h>
14
+ #import <React/RCTUIManager.h>
15
+ #import <React/RCTConvert+CoreLocation.h>
16
+ #import <React/RCTEventDispatcher.h>
17
+ #import <React/RCTViewManager.h>
18
+ #import <React/RCTConvert.h>
19
+ #import <React/UIView+React.h>
20
+ #import "RCTConvert+GMSMapViewType.h"
21
+ #import "AIRGoogleMap.h"
22
+ #import "AIRGoogleMapMarker.h"
23
+ #import "AIRGoogleMapCoordinate.h"
24
+ #import "RCTConvert+GMSMapViewType.h"
25
+ #import <MapKit/MapKit.h>
26
+ #import <QuartzCore/QuartzCore.h>
27
+
28
+ #if __has_include(<ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>)
29
+ #import <ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>
30
+ #else
31
+ #import "RNMapsAirModuleDelegate.h"
32
+ #endif
33
+
34
+ static NSString *const RCTMapViewKey = @"MapView";
35
+
36
+
37
+ @interface AIRGoogleMapManager() <GMSMapViewDelegate>
38
+ {
39
+ BOOL didCallOnMapReady;
40
+ }
41
+ @end
42
+
43
+ @implementation AIRGoogleMapManager
44
+
45
+ RCT_EXPORT_MODULE()
46
+
47
+ - (UIView *)view
48
+ {
49
+
50
+ if (self.initialProps){
51
+ if (self.initialProps[@"googleMapId"]){
52
+ _googleMapId = self.initialProps[@"googleMapId"];
53
+ }
54
+ if (self.initialProps[@"zoomTapEnabled"]){
55
+ _zoomTapEnabled = self.initialProps[@"zoomTapEnabled"];
56
+ }
57
+ if (self.initialProps[@"loadingBackgroundColor"]){
58
+ _backgroundColor = [RCTConvert UIColor:self.initialProps[@"loadingBackgroundColor"]];
59
+ }
60
+ if (self.initialProps[@"initialCamera"]){
61
+ _camera = [RCTConvert GMSCameraPositionWithDefaults:self.initialProps[@"initialCamera"] existingCamera:nil];
62
+ }
63
+ }
64
+ AIRGoogleMap *map = [[AIRGoogleMap alloc] initWithMapId:self.googleMapId initialCamera:self.camera backgroundColor:self.backgroundColor andZoomTapEnabled:self.zoomTapEnabled];
65
+ map.bridge = self.bridge;
66
+ map.delegate = self;
67
+ map.isAccessibilityElement = NO;
68
+ map.accessibilityElementsHidden = NO;
69
+ map.settings.consumesGesturesInView = NO;
70
+ if (self.customMapStyle != nil){
71
+ map.customMapStyleString = self.customMapStyle;
72
+ }
73
+
74
+ UIPanGestureRecognizer *drag = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleMapDrag:)];
75
+ [drag setMinimumNumberOfTouches:1];
76
+ [drag setMaximumNumberOfTouches:1];
77
+ [map addGestureRecognizer:drag];
78
+
79
+ UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handleMapDrag:)];
80
+ [map addGestureRecognizer:pinch];
81
+
82
+ return map;
83
+ }
84
+
85
+ RCT_EXPORT_VIEW_PROPERTY(isAccessibilityElement, BOOL)
86
+ RCT_REMAP_VIEW_PROPERTY(testID, accessibilityIdentifier, NSString)
87
+ RCT_EXPORT_VIEW_PROPERTY(googleMapId, NSString)
88
+ RCT_EXPORT_VIEW_PROPERTY(initialCamera, GMSCameraPosition)
89
+ RCT_REMAP_VIEW_PROPERTY(camera, cameraProp, GMSCameraPosition)
90
+ RCT_EXPORT_VIEW_PROPERTY(initialRegion, MKCoordinateRegion)
91
+ RCT_EXPORT_VIEW_PROPERTY(region, MKCoordinateRegion)
92
+ RCT_EXPORT_VIEW_PROPERTY(showsBuildings, BOOL)
93
+ RCT_EXPORT_VIEW_PROPERTY(showsCompass, BOOL)
94
+ //RCT_EXPORT_VIEW_PROPERTY(showsScale, BOOL) // Not supported by GoogleMaps
95
+ RCT_EXPORT_VIEW_PROPERTY(showsTraffic, BOOL)
96
+ RCT_EXPORT_VIEW_PROPERTY(zoomEnabled, BOOL)
97
+ RCT_EXPORT_VIEW_PROPERTY(rotateEnabled, BOOL)
98
+ RCT_EXPORT_VIEW_PROPERTY(scrollEnabled, BOOL)
99
+ RCT_EXPORT_VIEW_PROPERTY(scrollDuringRotateOrZoomEnabled, BOOL)
100
+ RCT_EXPORT_VIEW_PROPERTY(pitchEnabled, BOOL)
101
+ RCT_EXPORT_VIEW_PROPERTY(zoomTapEnabled, BOOL)
102
+ RCT_EXPORT_VIEW_PROPERTY(showsUserLocation, BOOL)
103
+ RCT_EXPORT_VIEW_PROPERTY(showsMyLocationButton, BOOL)
104
+ RCT_EXPORT_VIEW_PROPERTY(showsIndoors, BOOL)
105
+ RCT_EXPORT_VIEW_PROPERTY(showsIndoorLevelPicker, BOOL)
106
+ RCT_EXPORT_VIEW_PROPERTY(customMapStyleString, NSString)
107
+ RCT_EXPORT_VIEW_PROPERTY(mapPadding, UIEdgeInsets)
108
+ RCT_REMAP_VIEW_PROPERTY(paddingAdjustmentBehavior, paddingAdjustmentBehaviorString, NSString)
109
+ RCT_EXPORT_VIEW_PROPERTY(onMapReady, RCTDirectEventBlock)
110
+ RCT_EXPORT_VIEW_PROPERTY(onMapLoaded, RCTDirectEventBlock)
111
+ RCT_EXPORT_VIEW_PROPERTY(onKmlReady, RCTDirectEventBlock)
112
+ RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock)
113
+ RCT_EXPORT_VIEW_PROPERTY(onLongPress, RCTBubblingEventBlock)
114
+ RCT_EXPORT_VIEW_PROPERTY(onPanDrag, RCTDirectEventBlock)
115
+ RCT_EXPORT_VIEW_PROPERTY(onUserLocationChange, RCTDirectEventBlock)
116
+ RCT_EXPORT_VIEW_PROPERTY(onMarkerPress, RCTDirectEventBlock)
117
+ RCT_EXPORT_VIEW_PROPERTY(onMarkerSelect, RCTDirectEventBlock)
118
+ RCT_EXPORT_VIEW_PROPERTY(onMarkerDeselect, RCTDirectEventBlock)
119
+ RCT_EXPORT_VIEW_PROPERTY(onRegionChangeStart, RCTDirectEventBlock)
120
+ RCT_EXPORT_VIEW_PROPERTY(onRegionChange, RCTDirectEventBlock)
121
+ RCT_EXPORT_VIEW_PROPERTY(onRegionChangeComplete, RCTDirectEventBlock)
122
+ RCT_EXPORT_VIEW_PROPERTY(onPoiClick, RCTDirectEventBlock)
123
+ RCT_EXPORT_VIEW_PROPERTY(onIndoorLevelActivated, RCTDirectEventBlock)
124
+ RCT_EXPORT_VIEW_PROPERTY(onIndoorBuildingFocused, RCTDirectEventBlock)
125
+ RCT_EXPORT_VIEW_PROPERTY(mapType, GMSMapViewType)
126
+ RCT_EXPORT_VIEW_PROPERTY(minZoomLevel, CGFloat)
127
+ RCT_EXPORT_VIEW_PROPERTY(maxZoomLevel, CGFloat)
128
+ RCT_EXPORT_VIEW_PROPERTY(kmlSrc, NSString)
129
+ RCT_EXPORT_VIEW_PROPERTY(loadingBackgroundColor, UIColor)
130
+
131
+ RCT_EXPORT_METHOD(getCamera:(nonnull NSNumber *)reactTag
132
+ resolver: (RCTPromiseResolveBlock)resolve
133
+ rejecter:(RCTPromiseRejectBlock)reject)
134
+ {
135
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
136
+ id view = viewRegistry[reactTag];
137
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
138
+ reject(@"Invalid argument", [NSString stringWithFormat:@"Invalid view returned from registry, expecting AIRGoogleMap, got: %@", view], NULL);
139
+ } else {
140
+ AIRGoogleMap *mapView = (AIRGoogleMap *)view;
141
+ resolve(@{
142
+ @"center": @{
143
+ @"latitude": @(mapView.camera.target.latitude),
144
+ @"longitude": @(mapView.camera.target.longitude),
145
+ },
146
+ @"pitch": @(mapView.camera.viewingAngle),
147
+ @"heading": @(mapView.camera.bearing),
148
+ @"zoom": @(mapView.camera.zoom),
149
+ });
150
+ }
151
+ }];
152
+ }
153
+
154
+ RCT_EXPORT_METHOD(setCamera:(nonnull NSNumber *)reactTag
155
+ camera:(id)json)
156
+ {
157
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
158
+ id view = viewRegistry[reactTag];
159
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
160
+ RCTLogError(@"Invalid view returned from registry, expecting AIRGoogleMap, got: %@", view);
161
+ } else {
162
+ AIRGoogleMap *mapView = (AIRGoogleMap *)view;
163
+ GMSCameraPosition *camera = [RCTConvert GMSCameraPositionWithDefaults:json existingCamera:[mapView cameraProp]];
164
+ [mapView setCameraProp:camera];
165
+ }
166
+ }];
167
+ }
168
+
169
+
170
+ RCT_EXPORT_METHOD(animateCamera:(nonnull NSNumber *)reactTag
171
+ withCamera:(id)json
172
+ withDuration:(CGFloat)duration)
173
+ {
174
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
175
+ id view = viewRegistry[reactTag];
176
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
177
+ RCTLogError(@"Invalid view returned from registry, expecting AIRGoogleMap, got: %@", view);
178
+ } else {
179
+ [CATransaction begin];
180
+ [CATransaction setAnimationDuration:duration/1000];
181
+ AIRGoogleMap *mapView = (AIRGoogleMap *)view;
182
+ GMSCameraPosition *camera = [RCTConvert GMSCameraPositionWithDefaults:json existingCamera:[mapView cameraProp]];
183
+ [mapView animateToCameraPosition:camera];
184
+ [CATransaction commit];
185
+ }
186
+ }];
187
+ }
188
+
189
+ RCT_EXPORT_METHOD(animateToRegion:(nonnull NSNumber *)reactTag
190
+ withRegion:(MKCoordinateRegion)region
191
+ withDuration:(CGFloat)duration)
192
+ {
193
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
194
+ id view = viewRegistry[reactTag];
195
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
196
+ RCTLogError(@"Invalid view returned from registry, expecting AIRGoogleMap, got: %@", view);
197
+ } else {
198
+ // Core Animation must be used to control the animation's duration
199
+ // See http://stackoverflow.com/a/15663039/171744
200
+ [CATransaction begin];
201
+ [CATransaction setAnimationDuration:duration/1000];
202
+ AIRGoogleMap *mapView = (AIRGoogleMap *)view;
203
+ GMSCameraPosition *camera = [AIRGoogleMap makeGMSCameraPositionFromMap:mapView andMKCoordinateRegion:region];
204
+ [mapView animateToCameraPosition:camera];
205
+ [CATransaction commit];
206
+ }
207
+ }];
208
+ }
209
+
210
+ RCT_EXPORT_METHOD(fitToElements:(nonnull NSNumber *)reactTag
211
+ edgePadding:(nonnull NSDictionary *)edgePadding
212
+ animated:(BOOL)animated)
213
+ {
214
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
215
+ id view = viewRegistry[reactTag];
216
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
217
+ RCTLogError(@"Invalid view returned from registry, expecting AIRGoogleMap, got: %@", view);
218
+ } else {
219
+ AIRGoogleMap *mapView = (AIRGoogleMap *)view;
220
+ [mapView fitToElementsWithEdgePadding:edgePadding animated:animated];
221
+ }
222
+ }];
223
+ }
224
+
225
+ RCT_EXPORT_METHOD(fitToSuppliedMarkers:(nonnull NSNumber *)reactTag
226
+ markers:(nonnull NSArray *)markers
227
+ edgePadding:(nonnull NSDictionary *)edgePadding
228
+ animated:(BOOL)animated)
229
+ {
230
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
231
+ id view = viewRegistry[reactTag];
232
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
233
+ RCTLogError(@"Invalid view returned from registry, expecting AIRGoogleMap, got: %@", view);
234
+ } else {
235
+ AIRGoogleMap *mapView = (AIRGoogleMap *)view;
236
+ [mapView fitToSuppliedMarkers:markers withEdgePadding:edgePadding animated:animated];
237
+ }
238
+ }];
239
+ }
240
+
241
+ RCT_EXPORT_METHOD(fitToCoordinates:(nonnull NSNumber *)reactTag
242
+ coordinates:(nonnull NSArray<AIRGoogleMapCoordinate *> *)coordinates
243
+ edgePadding:(nonnull NSDictionary *)edgePadding
244
+ animated:(BOOL)animated)
245
+ {
246
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
247
+ id view = viewRegistry[reactTag];
248
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
249
+ RCTLogError(@"Invalid view returned from registry, expecting AIRGoogleMap, got: %@", view);
250
+ } else {
251
+ AIRGoogleMap *mapView = (AIRGoogleMap *)view;
252
+ [mapView fitToCoordinates:coordinates withEdgePadding:edgePadding animated:animated];
253
+ }
254
+ }];
255
+ }
256
+
257
+ RCT_EXPORT_METHOD(takeSnapshot:(nonnull NSNumber *)reactTag
258
+ withWidth:(nonnull NSNumber *)width
259
+ withHeight:(nonnull NSNumber *)height
260
+ withRegion:(MKCoordinateRegion)region
261
+ format:(nonnull NSString *)format
262
+ quality:(nonnull NSNumber *)quality
263
+ result:(nonnull NSString *)result
264
+ withCallback:(RCTPromiseResolveBlock)callback)
265
+ {
266
+ NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970];
267
+ NSString *pathComponent = [NSString stringWithFormat:@"Documents/snapshot-%.20lf.%@", timeStamp, format];
268
+ NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent: pathComponent];
269
+
270
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
271
+ id view = viewRegistry[reactTag];
272
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
273
+ RCTLogError(@"Invalid view returned from registry, expecting AIRMap, got: %@", view);
274
+ } else {
275
+ NSMutableDictionary* config = [NSMutableDictionary new];
276
+
277
+ [view takeSnapshotWithConfig:config success:callback error:^(NSString *code, NSString *message, NSError *error) {
278
+ callback(@[error]);
279
+ }];
280
+
281
+ [config setObject:width forKey:@"width"];
282
+ [config setObject:height forKey:@"height"];
283
+ [config setObject:format forKey:@"format"];
284
+ [config setObject:quality forKey:@"quality"];
285
+ [config setObject:result forKey:@"result"];
286
+ [config setObject:filePath forKey:@"filePath"];
287
+
288
+ // TODO: currently we are ignoring width, height, region
289
+
290
+ AIRGoogleMap* mapView = (AIRGoogleMap *) view;
291
+
292
+
293
+ UIGraphicsBeginImageContextWithOptions(mapView.frame.size, YES, 0.0f);
294
+ [mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
295
+ UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
296
+
297
+ NSData *data;
298
+ if ([format isEqualToString:@"png"]) {
299
+ data = UIImagePNGRepresentation(image);
300
+
301
+ }
302
+ else if([format isEqualToString:@"jpg"]) {
303
+ data = UIImageJPEGRepresentation(image, quality.floatValue);
304
+ }
305
+
306
+ if ([result isEqualToString:@"file"]) {
307
+ [data writeToFile:filePath atomically:YES];
308
+ callback(@[[NSNull null], filePath]);
309
+ }
310
+ else if ([result isEqualToString:@"base64"]) {
311
+ callback(@[[NSNull null], [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn]]);
312
+ }
313
+ }
314
+ UIGraphicsEndImageContext();
315
+ }];
316
+ }
317
+
318
+ RCT_EXPORT_METHOD(pointForCoordinate:(nonnull NSNumber *)reactTag
319
+ coordinate:(NSDictionary *)coordinate
320
+ resolver: (RCTPromiseResolveBlock)resolve
321
+ rejecter:(RCTPromiseRejectBlock)reject)
322
+ {
323
+ CLLocationCoordinate2D coord =
324
+ CLLocationCoordinate2DMake(
325
+ [coordinate[@"latitude"] doubleValue],
326
+ [coordinate[@"longitude"] doubleValue]
327
+ );
328
+
329
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
330
+ id view = viewRegistry[reactTag];
331
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
332
+ RCTLogError(@"Invalid view returned from registry, expecting AIRMap, got: %@", view);
333
+ } else {
334
+ id<RNMapsAirModuleDelegate> mapView = (id<RNMapsAirModuleDelegate>) view;
335
+ resolve([mapView getPointForCoordinates:coord]);
336
+ }
337
+ }];
338
+ }
339
+
340
+ RCT_EXPORT_METHOD(coordinateForPoint:(nonnull NSNumber *)reactTag
341
+ point:(NSDictionary *)point
342
+ resolver: (RCTPromiseResolveBlock)resolve
343
+ rejecter:(RCTPromiseRejectBlock)reject)
344
+ {
345
+ CGPoint pt = CGPointMake(
346
+ [point[@"x"] doubleValue],
347
+ [point[@"y"] doubleValue]
348
+ );
349
+
350
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
351
+ id view = viewRegistry[reactTag];
352
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
353
+ RCTLogError(@"Invalid view returned from registry, expecting AIRMap, got: %@", view);
354
+ } else {
355
+ id<RNMapsAirModuleDelegate> mapView = (id<RNMapsAirModuleDelegate>) view;
356
+ resolve([view getCoordinatesForPoint:pt]);
357
+ }
358
+ }];
359
+ }
360
+
361
+ RCT_EXPORT_METHOD(getMarkersFrames:(nonnull NSNumber *)reactTag
362
+ onlyVisible:(BOOL)onlyVisible
363
+ resolver: (RCTPromiseResolveBlock)resolve
364
+ rejecter:(RCTPromiseRejectBlock)reject)
365
+ {
366
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
367
+ id view = viewRegistry[reactTag];
368
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
369
+ RCTLogError(@"Invalid view returned from registry, expecting AIRMap, got: %@", view);
370
+ } else {
371
+ AIRGoogleMap *mapView = (AIRGoogleMap *)view;
372
+ resolve([mapView getMarkersFramesWithOnlyVisible:onlyVisible]);
373
+ }
374
+ }];
375
+ }
376
+
377
+ RCT_EXPORT_METHOD(getMapBoundaries:(nonnull NSNumber *)reactTag
378
+ resolver:(RCTPromiseResolveBlock)resolve
379
+ rejecter:(RCTPromiseRejectBlock)reject)
380
+ {
381
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
382
+ id view = viewRegistry[reactTag];
383
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
384
+ RCTLogError(@"Invalid view returned from registry, expecting AIRGoogleMap, got: %@", view);
385
+ } else {
386
+ resolve([view getMapBoundaries]);
387
+ }
388
+ }];
389
+ }
390
+
391
+ RCT_EXPORT_METHOD(setMapBoundaries:(nonnull NSNumber *)reactTag
392
+ northEast:(CLLocationCoordinate2D)northEast
393
+ southWest:(CLLocationCoordinate2D)southWest)
394
+ {
395
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
396
+ id view = viewRegistry[reactTag];
397
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
398
+ RCTLogError(@"Invalid view returned from registry, expecting AIRGoogleMap, got: %@", view);
399
+ } else {
400
+ AIRGoogleMap *mapView = (AIRGoogleMap *)view;
401
+
402
+ GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:northEast coordinate:southWest];
403
+
404
+ mapView.cameraTargetBounds = bounds;
405
+ }
406
+ }];
407
+ }
408
+
409
+ RCT_EXPORT_METHOD(setIndoorActiveLevelIndex:(nonnull NSNumber *)reactTag
410
+ levelIndex:(NSInteger) levelIndex)
411
+ {
412
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
413
+ id view = viewRegistry[reactTag];
414
+ if (![view isKindOfClass:[AIRGoogleMap class]]) {
415
+ RCTLogError(@"Invalid view returned from registry, expecting AIRGoogleMap, got: %@", view);
416
+ } else {
417
+ AIRGoogleMap *mapView = (AIRGoogleMap *)view;
418
+ if (!mapView.indoorDisplay) {
419
+ return;
420
+ }
421
+ if ( levelIndex < [mapView.indoorDisplay.activeBuilding.levels count]) {
422
+ mapView.indoorDisplay.activeLevel = mapView.indoorDisplay.activeBuilding.levels[levelIndex];
423
+ }
424
+ }
425
+ }];
426
+ }
427
+
428
+ + (BOOL)requiresMainQueueSetup {
429
+ return YES;
430
+ }
431
+
432
+ - (NSDictionary *)constantsToExport {
433
+ return @{ @"legalNotice": [GMSServices openSourceLicenseInfo] };
434
+ }
435
+
436
+ - (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture {
437
+ self.isGesture = gesture;
438
+ AIRGoogleMap *googleMapView = (AIRGoogleMap *)mapView;
439
+ [googleMapView willMove:gesture];
440
+ }
441
+
442
+ - (void)mapViewDidStartTileRendering:(GMSMapView *)mapView {
443
+ AIRGoogleMap *googleMapView = (AIRGoogleMap *)mapView;
444
+ [googleMapView didPrepareMap];
445
+ }
446
+
447
+ - (void)mapViewDidFinishTileRendering:(GMSMapView *)mapView {
448
+ AIRGoogleMap *googleMapView = (AIRGoogleMap *)mapView;
449
+ [googleMapView mapViewDidFinishTileRendering];
450
+ }
451
+
452
+ - (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker {
453
+ AIRGoogleMap *googleMapView = (AIRGoogleMap *)mapView;
454
+ return [googleMapView didTapMarker:marker];
455
+ }
456
+
457
+ - (void)mapView:(GMSMapView *)mapView didTapOverlay:(GMSPolygon *)polygon {
458
+ AIRGoogleMap *googleMapView = (AIRGoogleMap *)mapView;
459
+ [googleMapView didTapPolygon:polygon];
460
+ }
461
+
462
+ - (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate {
463
+ AIRGoogleMap *googleMapView = (AIRGoogleMap *)mapView;
464
+ [googleMapView didTapAtCoordinate:coordinate];
465
+ }
466
+
467
+ - (void)mapView:(GMSMapView *)mapView didLongPressAtCoordinate:(CLLocationCoordinate2D)coordinate {
468
+ AIRGoogleMap *googleMapView = (AIRGoogleMap *)mapView;
469
+ [googleMapView didLongPressAtCoordinate:coordinate];
470
+ }
471
+
472
+ - (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position {
473
+ AIRGoogleMap *googleMapView = (AIRGoogleMap *)mapView;
474
+ [googleMapView didChangeCameraPosition:position isGesture:self.isGesture];
475
+ }
476
+
477
+ - (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position {
478
+ AIRGoogleMap *googleMapView = (AIRGoogleMap *)mapView;
479
+ [googleMapView idleAtCameraPosition:position isGesture:self.isGesture];
480
+ }
481
+
482
+ - (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker {
483
+ AIRGMSMarker *aMarker = (AIRGMSMarker *)marker;
484
+ return [aMarker.fakeMarker markerInfoWindow];}
485
+
486
+ - (UIView *)mapView:(GMSMapView *)mapView markerInfoContents:(GMSMarker *)marker {
487
+ AIRGMSMarker *aMarker = (AIRGMSMarker *)marker;
488
+ return [aMarker.fakeMarker markerInfoContents];
489
+ }
490
+
491
+ - (void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(GMSMarker *)marker {
492
+ AIRGMSMarker *aMarker = (AIRGMSMarker *)marker;
493
+ [aMarker.fakeMarker didTapInfoWindowOfMarker:aMarker];
494
+ }
495
+
496
+ - (void)mapView:(GMSMapView *)mapView didBeginDraggingMarker:(GMSMarker *)marker {
497
+ AIRGMSMarker *aMarker = (AIRGMSMarker *)marker;
498
+ [aMarker.fakeMarker didBeginDraggingMarker:aMarker];
499
+ }
500
+
501
+ - (void)mapView:(GMSMapView *)mapView didEndDraggingMarker:(GMSMarker *)marker {
502
+ AIRGMSMarker *aMarker = (AIRGMSMarker *)marker;
503
+ [aMarker.fakeMarker didEndDraggingMarker:aMarker];
504
+ }
505
+
506
+ - (void)mapView:(GMSMapView *)mapView didDragMarker:(GMSMarker *)marker {
507
+ AIRGMSMarker *aMarker = (AIRGMSMarker *)marker;
508
+ [aMarker.fakeMarker didDragMarker:aMarker];
509
+ }
510
+
511
+ - (void)mapView:(GMSMapView *)mapView
512
+ didTapPOIWithPlaceID:(NSString *)placeID
513
+ name:(NSString *)name
514
+ location:(CLLocationCoordinate2D)location {
515
+ AIRGoogleMap *googleMapView = (AIRGoogleMap *)mapView;
516
+ [googleMapView didTapPOIWithPlaceID:placeID name:name location:location];
517
+ }
518
+
519
+ #pragma mark Gesture Recognizer Handlers
520
+
521
+ - (void)handleMapDrag:(UIPanGestureRecognizer*)recognizer {
522
+ AIRGoogleMap *map = (AIRGoogleMap *)recognizer.view;
523
+ if (!map.onPanDrag) return;
524
+
525
+ CGPoint touchPoint = [recognizer locationInView:map];
526
+ CLLocationCoordinate2D coord = [map.projection coordinateForPoint:touchPoint];
527
+ map.onPanDrag(@{
528
+ @"coordinate": @{
529
+ @"latitude": @(coord.latitude),
530
+ @"longitude": @(coord.longitude),
531
+ },
532
+ @"position": @{
533
+ @"x": @(touchPoint.x),
534
+ @"y": @(touchPoint.y),
535
+ },
536
+ @"numberOfTouches": @(recognizer.numberOfTouches),
537
+ });
538
+
539
+ }
540
+
541
+ @end
542
+
543
+ #endif