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.
- package/android/build.gradle +89 -33
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/android/gradlew +251 -0
- package/android/gradlew.bat +94 -0
- package/android/src/main/AndroidManifest.xml +1 -5
- package/android/src/main/RCTAppDependencyProvider.h +25 -0
- package/android/src/main/RCTAppDependencyProvider.mm +55 -0
- package/android/src/main/RCTModulesConformingToProtocolsProvider.h +18 -0
- package/android/src/main/RCTModulesConformingToProtocolsProvider.mm +33 -0
- package/android/src/main/RCTThirdPartyComponentsProvider.h +16 -0
- package/android/src/main/RCTThirdPartyComponentsProvider.mm +28 -0
- package/android/src/main/ReactAppDependencyProvider.podspec +34 -0
- package/android/src/main/java/com/facebook/fbreact/specs/NativeAirMapsModuleSpec.java +63 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerDelegate.java +35 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerInterface.java +17 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCircleManagerDelegate.java +49 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCircleManagerInterface.java +23 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerDelegate.java +49 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerInterface.java +23 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerDelegate.java +209 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +74 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +104 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +39 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerDelegate.java +45 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerInterface.java +22 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerDelegate.java +58 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerInterface.java +26 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsUrlTileManagerDelegate.java +62 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsUrlTileManagerInterface.java +27 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsWMSTileManagerDelegate.java +56 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsWMSTileManagerInterface.java +25 -0
- package/android/src/main/java/com/rnmaps/fabric/CalloutManager.java +77 -0
- package/android/src/main/java/com/rnmaps/fabric/CircleManager.java +94 -0
- package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
- package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +623 -0
- package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +258 -0
- package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +284 -0
- package/android/src/main/java/com/rnmaps/fabric/OverlayManager.java +101 -0
- package/android/src/main/java/com/rnmaps/fabric/PolygonManager.java +89 -0
- package/android/src/main/java/com/rnmaps/fabric/PolylineManager.java +121 -0
- package/android/src/main/java/com/rnmaps/fabric/UrlTileManager.java +124 -0
- package/android/src/main/java/com/rnmaps/fabric/WMSTileManager.java +114 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnDoublePressEvent.java +27 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorBuildingFocusedEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorLevelActivatedEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnKmlReadyEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMapLoadedEvent.java +29 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +29 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnPanDragEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +27 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +27 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeCompleteEvent.java +30 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +48 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeStartEvent.java +33 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +28 -0
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/FileUtil.java +3 -6
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/FusedLocationSource.java +5 -2
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ImageReadable.java +1 -1
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ImageReader.java +5 -7
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ImageUtil.java +1 -2
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/LatLngBoundsUtils.java +1 -1
- package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +98 -0
- package/android/src/main/java/com/rnmaps/maps/MapCallout.java +41 -0
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapCalloutManager.java → rnmaps/maps/MapCalloutManager.java} +6 -6
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapCircle.java → rnmaps/maps/MapCircle.java} +34 -8
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapCircleManager.java → rnmaps/maps/MapCircleManager.java} +15 -20
- package/android/src/main/java/com/rnmaps/maps/MapFeature.java +17 -0
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapGradientPolyline.java → rnmaps/maps/MapGradientPolyline.java} +9 -12
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapGradientPolylineManager.java → rnmaps/maps/MapGradientPolylineManager.java} +13 -18
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapHeatmap.java → rnmaps/maps/MapHeatmap.java} +8 -9
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapHeatmapManager.java → rnmaps/maps/MapHeatmapManager.java} +8 -8
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapLocalTile.java → rnmaps/maps/MapLocalTile.java} +19 -16
- package/android/src/main/java/com/rnmaps/maps/MapLocalTileManager.java +54 -0
- package/android/src/main/java/com/rnmaps/maps/MapManager.java +504 -0
- package/android/src/main/java/com/rnmaps/maps/MapMarker.java +706 -0
- package/android/src/main/java/com/rnmaps/maps/MapMarkerManager.java +368 -0
- package/android/src/main/java/com/rnmaps/maps/MapModule.java +283 -0
- package/android/src/main/java/com/rnmaps/maps/MapOverlay.java +262 -0
- package/android/src/main/java/com/rnmaps/maps/MapOverlayManager.java +97 -0
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapPolygon.java → rnmaps/maps/MapPolygon.java} +73 -9
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapPolygonManager.java → rnmaps/maps/MapPolygonManager.java} +22 -22
- package/android/src/main/java/com/rnmaps/maps/MapPolyline.java +230 -0
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapPolylineManager.java → rnmaps/maps/MapPolylineManager.java} +18 -38
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapTileProvider.java → rnmaps/maps/MapTileProvider.java} +55 -76
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapTileWorker.java → rnmaps/maps/MapTileWorker.java} +7 -14
- package/android/src/main/java/com/rnmaps/maps/MapUIBlock.java +64 -0
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapUrlTile.java → rnmaps/maps/MapUrlTile.java} +29 -29
- package/android/src/main/java/com/rnmaps/maps/MapUrlTileManager.java +87 -0
- package/android/src/main/java/com/rnmaps/maps/MapView.java +1844 -0
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapWMSTile.java → rnmaps/maps/MapWMSTile.java} +11 -17
- package/android/src/main/java/com/rnmaps/maps/MapWMSTileManager.java +81 -0
- package/android/src/main/java/com/rnmaps/maps/MapsPackage.java +45 -0
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/RegionChangeEvent.java +1 -1
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/SizeReportingShadowNode.java +1 -1
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ViewAttacherGroup.java +2 -7
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ViewChangesTracker.java +12 -11
- package/android/src/main/jni/CMakeLists.txt +36 -0
- package/android/src/main/jni/RNMapsSpecs-generated.cpp +68 -0
- package/android/src/main/jni/RNMapsSpecs.h +31 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.cpp +31 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +33 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +979 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +860 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.cpp +227 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.h +1297 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI-generated.cpp +74 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI.h +268 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.cpp +26 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +131 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.cpp +16 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.h +137 -0
- package/app.plugin.js +1 -0
- package/ios/AirGoogleMaps/AIRGMSMarker.h +2 -0
- package/ios/AirGoogleMaps/AIRGoogleMap.h +22 -12
- package/ios/AirGoogleMaps/{AIRGoogleMap.m → AIRGoogleMap.mm} +407 -130
- package/ios/AirGoogleMaps/AIRGoogleMapCircle.h +2 -3
- package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +42 -3
- package/ios/AirGoogleMaps/AIRGoogleMapCoordinate.h +13 -0
- package/ios/AirGoogleMaps/AIRGoogleMapCoordinate.m +10 -0
- package/ios/AirGoogleMaps/AIRGoogleMapHeatmap.h +1 -1
- package/ios/AirGoogleMaps/AIRGoogleMapManager.h +11 -0
- package/ios/AirGoogleMaps/AIRGoogleMapManager.mm +543 -0
- package/ios/AirGoogleMaps/AIRGoogleMapMarker.h +4 -0
- package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +369 -237
- package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +3 -2
- package/ios/AirGoogleMaps/AIRGoogleMapOverlay.h +0 -1
- package/ios/AirGoogleMaps/AIRGoogleMapPolygon.h +7 -6
- package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +62 -5
- package/ios/AirGoogleMaps/AIRGoogleMapPolygonManager.m +3 -3
- package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +4 -3
- package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +9 -9
- package/ios/AirGoogleMaps/AIRGoogleMapPolylineManager.m +2 -2
- package/ios/AirGoogleMaps/AIRGoogleMapUrlTile.m +2 -2
- package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.h +1 -1
- package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +4 -4
- package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.h +3 -0
- package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.m +18 -0
- package/ios/AirGoogleMaps/RNMapsGoogleMapView.h +29 -0
- package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +678 -0
- package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +40 -0
- package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
- package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +226 -0
- package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +26 -0
- package/ios/AirGoogleMaps/Resources/GoogleMapsPrivacy.bundle/PrivacyInfo.xcprivacy +110 -0
- package/ios/AirMaps/AIRMap.h +19 -14
- package/ios/AirMaps/{AIRMap.m → AIRMap.mm} +333 -120
- package/ios/AirMaps/AIRMapCircle.m +1 -53
- package/ios/AirMaps/AIRMapCoordinate.m +2 -4
- package/ios/AirMaps/AIRMapManager.m +64 -218
- package/ios/AirMaps/AIRMapMarker.h +5 -0
- package/ios/AirMaps/AIRMapMarker.m +180 -69
- package/ios/AirMaps/AIRMapMarkerManager.m +3 -0
- package/ios/AirMaps/AIRMapOverlay.m +2 -2
- package/ios/AirMaps/AIRMapPolygon.m +0 -52
- package/ios/AirMaps/AIRMapPolyline.m +3 -2
- package/ios/AirMaps/AIRMapWMSTile.m +8 -8
- package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
- package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.h +25 -0
- package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.mm +77 -0
- package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.h +25 -0
- package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.mm +52 -0
- package/ios/AirMaps/RCTComponentData+Maps.h +13 -0
- package/ios/AirMaps/RCTComponentData+Maps.m +55 -0
- package/ios/AirMaps/RCTConvert+AirMap.h +6 -1
- package/ios/AirMaps/RCTConvert+AirMap.m +18 -0
- package/ios/AirMaps/RNMapsAirModule.h +15 -0
- package/ios/AirMaps/RNMapsAirModule.mm +164 -0
- package/ios/AirMaps/RNMapsDefines.h +1 -0
- package/ios/AirMaps/RNMapsMapView.h +27 -0
- package/ios/AirMaps/RNMapsMapView.mm +577 -0
- package/ios/AirMaps/RNMapsMapViewManager.mm +42 -0
- package/ios/AirMaps/RNMapsMarkerView.h +24 -0
- package/ios/AirMaps/RNMapsMarkerView.mm +439 -0
- package/ios/AirMaps/RNMapsMarkerViewManager.mm +28 -0
- package/ios/AirMaps/UIView+AirMap.h +11 -0
- package/ios/AirMaps/UIView+AirMap.m +20 -0
- package/ios/AirMaps/module.modulemap +6 -0
- package/ios/AirMaps.xcodeproj/project.pbxproj +44 -4
- package/ios/PrivacyInfo.xcprivacy +37 -0
- package/ios/generated/RCTAppDependencyProvider.h +25 -0
- package/ios/generated/RCTAppDependencyProvider.mm +55 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.mm +26 -0
- package/ios/generated/RNMapsAirModuleDelegate.h +24 -0
- package/ios/generated/RNMapsHostVewDelegate.h +17 -0
- package/ios/generated/RNMapsSpecs/ComponentDescriptors.cpp +29 -0
- package/ios/generated/RNMapsSpecs/ComponentDescriptors.h +31 -0
- package/ios/generated/RNMapsSpecs/EventEmitters.cpp +977 -0
- package/ios/generated/RNMapsSpecs/EventEmitters.h +846 -0
- package/ios/generated/RNMapsSpecs/Props.cpp +194 -0
- package/ios/generated/RNMapsSpecs/Props.h +1224 -0
- package/ios/generated/RNMapsSpecs/RCTComponentViewHelpers.h +591 -0
- package/ios/generated/RNMapsSpecs/RNMapsSpecs-generated.mm +92 -0
- package/ios/generated/RNMapsSpecs/RNMapsSpecs.h +137 -0
- package/ios/generated/RNMapsSpecs/ShadowNodes.cpp +24 -0
- package/ios/generated/RNMapsSpecs/ShadowNodes.h +109 -0
- package/ios/generated/RNMapsSpecs/States.cpp +16 -0
- package/ios/generated/RNMapsSpecs/States.h +113 -0
- package/ios/generated/RNMapsSpecsJSI-generated.cpp +74 -0
- package/ios/generated/RNMapsSpecsJSI.h +268 -0
- package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
- package/ios/generated/module.modulemap +15 -0
- package/package.json +57 -34
- package/plugin/build/android.js +58 -0
- package/plugin/build/index.js +10 -0
- package/plugin/build/ios.js +176 -0
- package/plugin/build/types.js +2 -0
- package/react-native-maps.podspec +114 -11
- package/react-native.config.js +15 -0
- package/src/{AnimatedRegion.js → AnimatedRegion.ts} +26 -21
- package/src/Geojson.tsx +541 -0
- package/src/MapCallout.tsx +77 -0
- package/src/MapCalloutSubview.tsx +64 -0
- package/src/MapCircle.tsx +162 -0
- package/src/MapHeatmap.tsx +125 -0
- package/src/MapLocalTile.tsx +60 -0
- package/src/MapMarker.tsx +531 -0
- package/src/MapMarkerNativeComponent.ts +51 -0
- package/src/MapOverlay.tsx +178 -0
- package/src/MapPolygon.tsx +188 -0
- package/src/MapPolygon.types.ts +25 -0
- package/src/MapPolyline.tsx +215 -0
- package/src/MapUrlTile.tsx +169 -0
- package/src/MapView.tsx +1235 -0
- package/src/MapView.types.ts +212 -0
- package/src/MapView.web.ts +2 -0
- package/src/MapViewNativeComponent.ts +86 -0
- package/src/MapWMSTile.tsx +148 -0
- package/src/ProviderConstants.ts +2 -0
- package/src/createFabricMap.tsx +253 -0
- package/src/decorateMapComponent.ts +230 -0
- package/src/fixImageProp.ts +17 -0
- package/src/index.ts +52 -0
- package/src/sharedTypes.ts +101 -0
- package/src/sharedTypesInternal.ts +1 -0
- package/src/specs/NativeAirMapsModule.ts +36 -0
- package/src/specs/NativeComponentCallout.ts +63 -0
- package/src/specs/NativeComponentCircle.ts +93 -0
- package/src/specs/NativeComponentGoogleMapView.ts +922 -0
- package/src/specs/NativeComponentGooglePolygon.ts +94 -0
- package/src/specs/NativeComponentMapView.ts +1100 -0
- package/src/specs/NativeComponentMarker.ts +326 -0
- package/src/specs/NativeComponentOverlay.ts +98 -0
- package/src/specs/NativeComponentPolyline.ts +124 -0
- package/src/specs/NativeComponentUrlTile.ts +128 -0
- package/src/specs/NativeComponentWMSTile.ts +107 -0
- package/LICENSE +0 -21
- package/README.md +0 -652
- package/android/src/main/assets/ula.kml +0 -1214
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapCallout.java +0 -23
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapFeature.java +0 -18
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapLiteManager.java +0 -20
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapLocalTileManager.java +0 -56
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapManager.java +0 -500
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapMarker.java +0 -630
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapMarkerManager.java +0 -370
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapModule.java +0 -380
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapOverlay.java +0 -169
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapOverlayManager.java +0 -81
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapPolyline.java +0 -162
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapUrlTileManager.java +0 -97
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java +0 -1384
- package/android/src/main/java/com/airbnb/android/react/maps/AirMapWMSTileManager.java +0 -87
- package/android/src/main/java/com/airbnb/android/react/maps/MapsPackage.java +0 -65
- package/index.d.ts +0 -637
- package/ios/AirGoogleMaps/AIRGoogleMapManager.m +0 -690
- package/ios/User.xcconfig +0 -0
- package/react-native-google-maps.podspec +0 -22
- package/src/Geojson.js +0 -334
- package/src/MapCallout.js +0 -51
- package/src/MapCalloutSubview.js +0 -44
- package/src/MapCircle.js +0 -150
- package/src/MapHeatmap.js +0 -99
- package/src/MapLocalTile.js +0 -52
- package/src/MapMarker.js +0 -377
- package/src/MapOverlay.js +0 -86
- package/src/MapPolygon.js +0 -202
- package/src/MapPolyline.js +0 -168
- package/src/MapUrlTile.js +0 -131
- package/src/MapView.js +0 -1160
- package/src/MapView.web.js +0 -1
- package/src/MapWMSTile.js +0 -122
- package/src/ProviderConstants.js +0 -2
- package/src/decorateMapComponent.js +0 -112
- 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
|
|
25
|
+
#import <React/RCTConvert.h>
|
|
25
26
|
#import <objc/runtime.h>
|
|
26
27
|
|
|
28
|
+
|
|
27
29
|
#ifdef HAVE_GOOGLE_MAPS_UTILS
|
|
28
|
-
#import
|
|
29
|
-
#import
|
|
30
|
-
#import
|
|
31
|
-
#import
|
|
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
|
-
|
|
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
|
|
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)
|
|
81
|
+
- (instancetype)initWithMapId:(NSString *)mapId initialCamera:(GMSCameraPosition*) camera backgroundColor:(UIColor *) backgroundColor andZoomTapEnabled:(BOOL)zoomTapEnabled
|
|
72
82
|
{
|
|
73
|
-
|
|
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
|
-
|
|
109
|
+
_initialRegionSet = false;
|
|
110
|
+
_initialCameraSet = false;
|
|
111
|
+
_didLayoutSubviews = false;
|
|
112
|
+
_didPrepareMap = false;
|
|
87
113
|
_didCallOnMapReady = false;
|
|
88
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
- (
|
|
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.
|
|
239
|
-
[NSNumber numberWithDouble:northEast.
|
|
240
|
-
|
|
241
|
-
@
|
|
242
|
-
[NSNumber numberWithDouble:southWest.
|
|
243
|
-
[NSNumber numberWithDouble:southWest.
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
- (
|
|
249
|
-
|
|
250
|
-
|
|
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
|
-
|
|
270
|
-
|
|
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
|
-
|
|
277
|
-
|
|
412
|
+
if(!_initialCameraSet && _didLayoutSubviews){
|
|
413
|
+
self.camera = initialCamera;
|
|
414
|
+
_initialCameraSet = true;
|
|
415
|
+
}
|
|
278
416
|
}
|
|
279
417
|
|
|
280
418
|
- (void)setRegion:(MKCoordinateRegion)region {
|
|
281
|
-
|
|
419
|
+
if (_isAnimating || !CLLocationCoordinate2DIsValid(region.center)) return;
|
|
282
420
|
_region = region;
|
|
283
|
-
|
|
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
|
-
|
|
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
|
-
|
|
294
|
-
|
|
455
|
+
if (!_didPrepareMap){
|
|
456
|
+
[self overrideGestureRecognizersForView];
|
|
457
|
+
}
|
|
295
458
|
|
|
296
|
-
if (_didCallOnMapReady)
|
|
297
|
-
|
|
298
|
-
|
|
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.
|
|
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
|
-
|
|
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)
|
|
697
|
+
- (void)setMinZoom:(CGFloat)minZoomLevel {
|
|
526
698
|
[self setMinZoom:minZoomLevel maxZoom:self.maxZoom ];
|
|
527
699
|
}
|
|
528
700
|
|
|
529
|
-
- (void)
|
|
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
|
|
656
|
-
NSArray* grs =
|
|
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
|
-
[
|
|
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
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
tapTouch
|
|
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.
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
-
|
|
1148
|
+
[self setKMLData:[NSData dataWithContentsOfURL:url]];
|
|
845
1149
|
} else {
|
|
846
|
-
|
|
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
|
-
@"
|
|
901
|
-
|
|
902
|
-
|
|
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
|
-
|
|
922
|
-
|
|
923
|
-
|
|
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
|
-
|
|
942
|
-
|
|
943
|
-
|
|
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
|