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.
- 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
|
@@ -16,158 +16,228 @@
|
|
|
16
16
|
#import "AIRDummyView.h"
|
|
17
17
|
|
|
18
18
|
CGRect unionRect(CGRect a, CGRect b) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
return CGRectMake(
|
|
20
|
+
MIN(a.origin.x, b.origin.x),
|
|
21
|
+
MIN(a.origin.y, b.origin.y),
|
|
22
|
+
MAX(a.size.width, b.size.width),
|
|
23
|
+
MAX(a.size.height, b.size.height));
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
@interface AIRGoogleMapMarker ()
|
|
27
|
-
- (id)eventFromMarker:(AIRGMSMarker*)marker;
|
|
28
27
|
@end
|
|
29
28
|
|
|
30
29
|
@implementation AIRGoogleMapMarker {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
RCTImageLoaderCancellationBlock _reloadImageCancellationBlock;
|
|
31
|
+
RCTBubblingEventBlock _onPress;
|
|
32
|
+
RCTDirectEventBlock _onSelect;
|
|
33
|
+
RCTDirectEventBlock _onDeselect;
|
|
34
|
+
__weak UIImageView *_iconImageView;
|
|
35
|
+
UIView *_iconView;
|
|
36
|
+
UIColor *_pinColor;
|
|
37
|
+
CLLocationCoordinate2D _coordinates;
|
|
38
|
+
CLLocationDegrees _rotation;
|
|
39
|
+
BOOL _tracksInfoWindowChanges;
|
|
40
|
+
BOOL _tracksViewChanges;
|
|
41
|
+
BOOL _draggable;
|
|
42
|
+
BOOL _tappable;
|
|
43
|
+
BOOL _flat;
|
|
44
|
+
double _opacity;
|
|
45
|
+
NSString* _identifier;
|
|
46
|
+
NSString* _title;
|
|
47
|
+
NSString* _subtitle;
|
|
48
|
+
|
|
34
49
|
}
|
|
35
50
|
|
|
36
51
|
- (instancetype)init
|
|
37
52
|
{
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
53
|
+
if ((self = [super init])) {
|
|
54
|
+
_tracksViewChanges = true;
|
|
55
|
+
_tracksInfoWindowChanges = false;
|
|
56
|
+
_tappable = true;
|
|
57
|
+
_opacity = 1.0;
|
|
58
|
+
}
|
|
59
|
+
return self;
|
|
45
60
|
}
|
|
46
61
|
|
|
47
62
|
- (void)layoutSubviews {
|
|
48
|
-
|
|
49
|
-
|
|
63
|
+
float width = 0;
|
|
64
|
+
float height = 0;
|
|
65
|
+
|
|
66
|
+
for (UIView *v in [_iconView subviews]) {
|
|
50
67
|
|
|
51
|
-
|
|
68
|
+
float fw = v.frame.origin.x + v.frame.size.width;
|
|
69
|
+
float fh = v.frame.origin.y + v.frame.size.height;
|
|
52
70
|
|
|
53
|
-
|
|
54
|
-
|
|
71
|
+
width = MAX(fw, width);
|
|
72
|
+
height = MAX(fh, height);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
[_iconView setFrame:CGRectMake(0, 0, width, height)];
|
|
76
|
+
}
|
|
55
77
|
|
|
56
|
-
width = MAX(fw, width);
|
|
57
|
-
height = MAX(fh, height);
|
|
58
|
-
}
|
|
59
78
|
|
|
60
|
-
|
|
79
|
+
- (UIView *) iconView
|
|
80
|
+
{
|
|
81
|
+
return _iconView;
|
|
61
82
|
}
|
|
62
83
|
|
|
63
|
-
- (
|
|
84
|
+
- (void) didUpdateReactSubviews
|
|
85
|
+
{
|
|
86
|
+
[super didUpdateReactSubviews];
|
|
87
|
+
if (_iconView){
|
|
88
|
+
[_iconView setFrame:self.frame];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
64
91
|
|
|
65
|
-
|
|
66
|
-
|
|
92
|
+
- (void) didInsertInMap:(AIRGoogleMap *) map
|
|
93
|
+
{
|
|
94
|
+
_realMarker = [AIRGMSMarker new];
|
|
95
|
+
_realMarker.fakeMarker = self;
|
|
96
|
+
_realMarker.tracksViewChanges = _tracksViewChanges;
|
|
97
|
+
_realMarker.tracksInfoWindowChanges = _tracksInfoWindowChanges;
|
|
67
98
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
99
|
+
[_realMarker setPosition:_coordinates];
|
|
100
|
+
if (_iconView){
|
|
101
|
+
[_realMarker setIconView:_iconView];
|
|
102
|
+
}
|
|
103
|
+
if (_rotation != 0){
|
|
104
|
+
[_realMarker setRotation:_rotation];
|
|
105
|
+
}
|
|
106
|
+
if (_identifier){
|
|
107
|
+
[_realMarker setIdentifier:_identifier];
|
|
108
|
+
}
|
|
109
|
+
if (_title){
|
|
110
|
+
[_realMarker setTitle:_title];
|
|
111
|
+
}
|
|
112
|
+
if (_subtitle){
|
|
113
|
+
[_realMarker setSnippet:_subtitle];
|
|
114
|
+
}
|
|
115
|
+
if (!CGPointEqualToPoint(_anchor, CGPointZero)){
|
|
116
|
+
[_realMarker setGroundAnchor:_anchor];
|
|
117
|
+
}
|
|
118
|
+
if (!CGPointEqualToPoint(_calloutAnchor, CGPointZero)){
|
|
119
|
+
[_realMarker setInfoWindowAnchor:_calloutAnchor];
|
|
120
|
+
}
|
|
121
|
+
if (_flat){
|
|
122
|
+
[_realMarker setFlat:_flat];
|
|
123
|
+
}
|
|
124
|
+
if (_draggable){
|
|
125
|
+
[_realMarker setDraggable:_draggable];
|
|
126
|
+
}
|
|
127
|
+
[_realMarker setTappable:_tappable];
|
|
128
|
+
if (_pinColor){
|
|
129
|
+
_realMarker.icon = [GMSMarker markerImageWithColor:_pinColor];
|
|
130
|
+
}
|
|
131
|
+
if (_opacity != 1.0){
|
|
132
|
+
[_realMarker setOpacity:_opacity];
|
|
133
|
+
}
|
|
134
|
+
if (_onSelect){
|
|
135
|
+
[_realMarker setOnSelect:_onSelect];
|
|
136
|
+
}
|
|
137
|
+
if (_onDeselect){
|
|
138
|
+
[_realMarker setOnDeselect:_onDeselect];
|
|
139
|
+
}
|
|
140
|
+
if (_onPress){
|
|
141
|
+
[_realMarker setOnPress:_onPress];
|
|
142
|
+
}
|
|
143
|
+
if (_zIndex){
|
|
144
|
+
[_realMarker setZIndex:_zIndex];
|
|
145
|
+
}
|
|
146
|
+
[_realMarker setMap:map];
|
|
79
147
|
}
|
|
80
148
|
|
|
81
149
|
- (void)iconViewInsertSubview:(UIView*)subview atIndex:(NSInteger)atIndex {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
150
|
+
if (!_iconView){
|
|
151
|
+
_iconView = [[UIView alloc] init];
|
|
152
|
+
}
|
|
153
|
+
if (!_realMarker.iconView) {
|
|
154
|
+
_realMarker.iconView = _iconView;
|
|
155
|
+
}
|
|
156
|
+
[_iconView insertSubview:subview atIndex:atIndex];
|
|
87
157
|
}
|
|
88
158
|
|
|
89
159
|
- (void)insertReactSubview:(id<RCTComponent>)subview atIndex:(NSInteger)atIndex {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
160
|
+
if ([subview isKindOfClass:[AIRGoogleMapCallout class]]) {
|
|
161
|
+
self.calloutView = (AIRGoogleMapCallout *)subview;
|
|
162
|
+
} else { // a child view of the marker
|
|
163
|
+
[self iconViewInsertSubview:(UIView*)subview atIndex:atIndex+1];
|
|
164
|
+
}
|
|
165
|
+
AIRDummyView *dummySubview = [[AIRDummyView alloc] initWithView:(UIView *)subview];
|
|
166
|
+
[super insertReactSubview:(UIView*)dummySubview atIndex:atIndex];
|
|
97
167
|
}
|
|
98
168
|
|
|
99
169
|
- (void)removeReactSubview:(id<RCTComponent>)dummySubview {
|
|
100
|
-
|
|
170
|
+
UIView *subview = [dummySubview isKindOfClass:[AIRDummyView class]] ? ((AIRDummyView *)dummySubview).view : (UIView *)dummySubview;
|
|
101
171
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
172
|
+
if ([subview isKindOfClass:[AIRGoogleMapCallout class]]) {
|
|
173
|
+
self.calloutView = nil;
|
|
174
|
+
} else {
|
|
175
|
+
[subview removeFromSuperview];
|
|
176
|
+
}
|
|
177
|
+
[super removeReactSubview:(UIView*)dummySubview];
|
|
108
178
|
}
|
|
109
179
|
|
|
110
180
|
- (void)showCalloutView {
|
|
111
|
-
|
|
181
|
+
[_realMarker.map setSelectedMarker:_realMarker];
|
|
112
182
|
}
|
|
113
183
|
|
|
114
184
|
- (void)hideCalloutView {
|
|
115
|
-
|
|
185
|
+
[_realMarker.map setSelectedMarker:Nil];
|
|
116
186
|
}
|
|
117
187
|
|
|
118
188
|
- (void)redraw {
|
|
119
|
-
|
|
189
|
+
if (!_realMarker.iconView) return;
|
|
120
190
|
|
|
121
|
-
|
|
191
|
+
BOOL oldValue = _realMarker.tracksViewChanges;
|
|
122
192
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
193
|
+
if (oldValue == YES)
|
|
194
|
+
{
|
|
195
|
+
// Immediate refresh, like right now. Not waiting for next frame.
|
|
196
|
+
UIView *view = _realMarker.iconView;
|
|
197
|
+
_realMarker.iconView = nil;
|
|
198
|
+
_realMarker.iconView = view;
|
|
199
|
+
}
|
|
200
|
+
else
|
|
201
|
+
{
|
|
202
|
+
// Refresh according to docs
|
|
203
|
+
_realMarker.tracksViewChanges = YES;
|
|
204
|
+
_realMarker.tracksViewChanges = NO;
|
|
205
|
+
}
|
|
136
206
|
}
|
|
137
207
|
|
|
138
208
|
- (UIView *)markerInfoContents {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
209
|
+
if (self.calloutView && !self.calloutView.tooltip) {
|
|
210
|
+
return self.calloutView;
|
|
211
|
+
}
|
|
212
|
+
return nil;
|
|
143
213
|
}
|
|
144
214
|
|
|
145
215
|
- (UIView *)markerInfoWindow {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
216
|
+
if (self.calloutView && self.calloutView.tooltip) {
|
|
217
|
+
return self.calloutView;
|
|
218
|
+
}
|
|
219
|
+
return nil;
|
|
150
220
|
}
|
|
151
221
|
|
|
152
222
|
- (void)didTapInfoWindowOfMarker:(AIRGMSMarker *)marker point:(CGPoint)point frame:(CGRect)frame {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
223
|
+
if (self.calloutView && self.calloutView.onPress) {
|
|
224
|
+
//todo: why not 'callout-press' ?
|
|
225
|
+
id event = @{
|
|
226
|
+
@"action": @"marker-overlay-press",
|
|
227
|
+
@"id": self.identifier ?: @"unknown",
|
|
228
|
+
@"point": @{
|
|
229
|
+
@"x": @(point.x),
|
|
230
|
+
@"y": @(point.y),
|
|
231
|
+
},
|
|
232
|
+
@"frame": @{
|
|
233
|
+
@"x": @(frame.origin.x),
|
|
234
|
+
@"y": @(frame.origin.y),
|
|
235
|
+
@"width": @(frame.size.width),
|
|
236
|
+
@"height": @(frame.size.height),
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
self.calloutView.onPress(event);
|
|
240
|
+
}
|
|
171
241
|
}
|
|
172
242
|
|
|
173
243
|
- (void)didTapInfoWindowOfMarker:(AIRGMSMarker *)marker {
|
|
@@ -178,19 +248,19 @@ CGRect unionRect(CGRect a, CGRect b) {
|
|
|
178
248
|
if (subview && subview.onPress) {
|
|
179
249
|
//todo: why not 'callout-inside-press' ?
|
|
180
250
|
id event = @{
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
251
|
+
@"action": @"marker-inside-overlay-press",
|
|
252
|
+
@"id": self.identifier ?: @"unknown",
|
|
253
|
+
@"point": @{
|
|
254
|
+
@"x": @(point.x),
|
|
255
|
+
@"y": @(point.y),
|
|
256
|
+
},
|
|
257
|
+
@"frame": @{
|
|
258
|
+
@"x": @(frame.origin.x),
|
|
259
|
+
@"y": @(frame.origin.y),
|
|
260
|
+
@"width": @(frame.size.width),
|
|
261
|
+
@"height": @(frame.size.height),
|
|
262
|
+
}
|
|
263
|
+
};
|
|
194
264
|
subview.onPress(event);
|
|
195
265
|
} else {
|
|
196
266
|
[self didTapInfoWindowOfMarker:marker point:point frame:frame];
|
|
@@ -198,30 +268,32 @@ CGRect unionRect(CGRect a, CGRect b) {
|
|
|
198
268
|
}
|
|
199
269
|
|
|
200
270
|
- (void)didBeginDraggingMarker:(AIRGMSMarker *)marker {
|
|
201
|
-
|
|
202
|
-
|
|
271
|
+
if (!self.onDragStart) return;
|
|
272
|
+
self.onDragStart([self makeEventData]);
|
|
203
273
|
}
|
|
204
274
|
|
|
205
275
|
- (void)didEndDraggingMarker:(AIRGMSMarker *)marker {
|
|
206
|
-
|
|
207
|
-
|
|
276
|
+
if (!self.onDragEnd) return;
|
|
277
|
+
self.onDragEnd([self makeEventData]);
|
|
208
278
|
}
|
|
209
279
|
|
|
210
280
|
- (void)didDragMarker:(AIRGMSMarker *)marker {
|
|
211
|
-
|
|
212
|
-
|
|
281
|
+
if (!self.onDrag) return;
|
|
282
|
+
self.onDrag([self makeEventData]);
|
|
213
283
|
}
|
|
214
284
|
|
|
215
285
|
- (void)setCoordinate:(CLLocationCoordinate2D)coordinate {
|
|
216
|
-
|
|
286
|
+
_realMarker.position = coordinate;
|
|
287
|
+
_coordinates = coordinate;
|
|
217
288
|
}
|
|
218
289
|
|
|
219
290
|
- (CLLocationCoordinate2D)coordinate {
|
|
220
|
-
|
|
291
|
+
return _realMarker.position;
|
|
221
292
|
}
|
|
222
293
|
|
|
223
294
|
- (void)setRotation:(CLLocationDegrees)rotation {
|
|
224
295
|
_realMarker.rotation = rotation;
|
|
296
|
+
_rotation = rotation;
|
|
225
297
|
}
|
|
226
298
|
|
|
227
299
|
- (CLLocationDegrees)rotation {
|
|
@@ -229,198 +301,258 @@ CGRect unionRect(CGRect a, CGRect b) {
|
|
|
229
301
|
}
|
|
230
302
|
|
|
231
303
|
- (void)setIdentifier:(NSString *)identifier {
|
|
232
|
-
|
|
304
|
+
_realMarker.identifier = identifier;
|
|
305
|
+
_identifier = identifier;
|
|
233
306
|
}
|
|
234
307
|
|
|
235
308
|
- (NSString *)identifier {
|
|
236
|
-
|
|
309
|
+
return _realMarker.identifier;
|
|
237
310
|
}
|
|
238
311
|
|
|
239
312
|
- (void)setOnPress:(RCTBubblingEventBlock)onPress {
|
|
240
|
-
|
|
313
|
+
_realMarker.onPress = onPress;
|
|
314
|
+
_onPress = onPress;
|
|
241
315
|
}
|
|
242
316
|
|
|
243
317
|
- (RCTBubblingEventBlock)onPress {
|
|
244
|
-
|
|
318
|
+
return _realMarker.onPress;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
- (void)setOnSelect:(RCTDirectEventBlock)onSelect {
|
|
322
|
+
_realMarker.onSelect = onSelect;
|
|
323
|
+
_onSelect = onSelect;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
- (RCTDirectEventBlock)onSelect {
|
|
327
|
+
return _realMarker.onSelect;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
- (void)setOnDeselect:(RCTDirectEventBlock)onDeselect {
|
|
331
|
+
_realMarker.onDeselect = onDeselect;
|
|
332
|
+
_onDeselect = onDeselect;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
- (RCTDirectEventBlock)onDeselect {
|
|
336
|
+
return _realMarker.onDeselect;
|
|
245
337
|
}
|
|
246
338
|
|
|
247
339
|
- (void)setOpacity:(double)opacity
|
|
248
340
|
{
|
|
249
|
-
|
|
341
|
+
_realMarker.opacity = opacity;
|
|
342
|
+
_opacity = opacity;
|
|
250
343
|
}
|
|
251
344
|
|
|
252
345
|
- (void)setImageSrc:(NSString *)imageSrc
|
|
253
346
|
{
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
//
|
|
294
|
-
//
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
347
|
+
_imageSrc = imageSrc;
|
|
348
|
+
|
|
349
|
+
if (_reloadImageCancellationBlock) {
|
|
350
|
+
_reloadImageCancellationBlock();
|
|
351
|
+
_reloadImageCancellationBlock = nil;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
if (!_imageSrc) {
|
|
355
|
+
if (_iconImageView) [_iconImageView removeFromSuperview];
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
if (!_iconImageView) {
|
|
360
|
+
// prevent glitch with marker (cf. https://github.com/react-native-maps/react-native-maps/issues/738)
|
|
361
|
+
UIImageView *empyImageView = [[UIImageView alloc] init];
|
|
362
|
+
_iconImageView = empyImageView;
|
|
363
|
+
[self iconViewInsertSubview:_iconImageView atIndex:0];
|
|
364
|
+
}
|
|
365
|
+
__weak AIRGoogleMapMarker* weakSelf = self;
|
|
366
|
+
|
|
367
|
+
_reloadImageCancellationBlock = [[_bridge moduleForName:@"ImageLoader"] loadImageWithURLRequest:[RCTConvert NSURLRequest:_imageSrc]
|
|
368
|
+
size:self.bounds.size
|
|
369
|
+
scale:RCTScreenScale()
|
|
370
|
+
clipped:YES
|
|
371
|
+
resizeMode:RCTResizeModeCenter
|
|
372
|
+
progressBlock:nil
|
|
373
|
+
partialLoadBlock:nil
|
|
374
|
+
completionBlock:^(NSError *error, UIImage *image) {
|
|
375
|
+
if (error) {
|
|
376
|
+
// TODO(lmr): do something with the error?
|
|
377
|
+
NSLog(@"%@", error);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
381
|
+
__strong AIRGoogleMapMarker* strongSelf = weakSelf;
|
|
382
|
+
|
|
383
|
+
// TODO(gil): This way allows different image sizes
|
|
384
|
+
if (strongSelf->_iconImageView) [strongSelf->_iconImageView removeFromSuperview];
|
|
385
|
+
|
|
386
|
+
// ... but this way is more efficient?
|
|
387
|
+
// if (_iconImageView) {
|
|
388
|
+
// [_iconImageView setImage:image];
|
|
389
|
+
// return;
|
|
390
|
+
// }
|
|
391
|
+
|
|
392
|
+
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
|
|
393
|
+
|
|
394
|
+
// TODO: w,h or pixel density could be a prop.
|
|
395
|
+
float density = 1;
|
|
396
|
+
float w = image.size.width/density;
|
|
397
|
+
float h = image.size.height/density;
|
|
398
|
+
CGRect bounds = CGRectMake(0, 0, w, h);
|
|
399
|
+
|
|
400
|
+
imageView.contentMode = UIViewContentModeScaleAspectFit;
|
|
401
|
+
[imageView setFrame:bounds];
|
|
402
|
+
|
|
403
|
+
// NOTE: sizeToFit doesn't work instead. Not sure why.
|
|
404
|
+
// TODO: Doing it this way is not ideal because it causes things to reshuffle
|
|
405
|
+
// when the image loads IF the image is larger than the UIView.
|
|
406
|
+
// Shouldn't required images have size info automatically via RN?
|
|
407
|
+
CGRect selfBounds = unionRect(bounds, self.bounds);
|
|
408
|
+
[strongSelf setFrame:selfBounds];
|
|
409
|
+
|
|
410
|
+
strongSelf->_iconImageView = imageView;
|
|
411
|
+
[strongSelf iconViewInsertSubview:imageView atIndex:0];
|
|
412
|
+
[strongSelf layoutSubviews];
|
|
413
|
+
[strongSelf.realMarker setIconView:strongSelf.iconView];
|
|
414
|
+
});
|
|
415
|
+
}];
|
|
318
416
|
}
|
|
319
417
|
|
|
320
418
|
- (void)setIconSrc:(NSString *)iconSrc
|
|
321
419
|
{
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
420
|
+
_iconSrc = iconSrc;
|
|
421
|
+
|
|
422
|
+
if (_reloadImageCancellationBlock) {
|
|
423
|
+
_reloadImageCancellationBlock();
|
|
424
|
+
_reloadImageCancellationBlock = nil;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
if (!_realMarker.icon) {
|
|
428
|
+
// prevent glitch with marker (cf. https://github.com/react-native-maps/react-native-maps/issues/3657)
|
|
429
|
+
UIImage *emptyImage = [[UIImage alloc] init];
|
|
430
|
+
_realMarker.icon = emptyImage;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
_reloadImageCancellationBlock =
|
|
434
|
+
[[_bridge moduleForName:@"ImageLoader"] loadImageWithURLRequest:[RCTConvert NSURLRequest:_iconSrc]
|
|
435
|
+
size:self.bounds.size
|
|
436
|
+
scale:RCTScreenScale()
|
|
437
|
+
clipped:YES
|
|
438
|
+
resizeMode:RCTResizeModeCenter
|
|
439
|
+
progressBlock:nil
|
|
440
|
+
partialLoadBlock:nil
|
|
441
|
+
completionBlock:^(NSError *error, UIImage *image) {
|
|
442
|
+
if (error) {
|
|
443
|
+
// TODO(lmr): do something with the error?
|
|
444
|
+
NSLog(@"%@", error);
|
|
445
|
+
}
|
|
446
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
447
|
+
self->_realMarker.icon = image;
|
|
448
|
+
});
|
|
449
|
+
}];
|
|
346
450
|
}
|
|
347
451
|
|
|
348
452
|
- (void)setTitle:(NSString *)title {
|
|
349
|
-
|
|
453
|
+
_realMarker.title = [title copy];
|
|
454
|
+
_title = title;
|
|
350
455
|
}
|
|
351
456
|
|
|
352
457
|
- (NSString *)title {
|
|
353
|
-
|
|
458
|
+
return _realMarker.title;
|
|
354
459
|
}
|
|
355
460
|
|
|
356
461
|
- (void)setSubtitle:(NSString *)subtitle {
|
|
357
|
-
|
|
462
|
+
_realMarker.snippet = subtitle;
|
|
463
|
+
_subtitle = subtitle;
|
|
358
464
|
}
|
|
359
465
|
|
|
360
466
|
- (NSString *)subtitle {
|
|
361
|
-
|
|
467
|
+
return _realMarker.snippet;
|
|
362
468
|
}
|
|
363
469
|
|
|
364
470
|
- (void)setPinColor:(UIColor *)pinColor {
|
|
365
|
-
|
|
366
|
-
|
|
471
|
+
_pinColor = pinColor;
|
|
472
|
+
_realMarker.icon = [GMSMarker markerImageWithColor:pinColor];
|
|
367
473
|
}
|
|
368
474
|
|
|
369
475
|
- (void)setAnchor:(CGPoint)anchor {
|
|
370
|
-
|
|
371
|
-
|
|
476
|
+
_anchor = anchor;
|
|
477
|
+
_realMarker.groundAnchor = anchor;
|
|
372
478
|
}
|
|
373
479
|
|
|
374
480
|
- (void)setCalloutAnchor:(CGPoint)calloutAnchor {
|
|
375
|
-
|
|
376
|
-
|
|
481
|
+
_calloutAnchor = calloutAnchor;
|
|
482
|
+
_realMarker.infoWindowAnchor = calloutAnchor;
|
|
377
483
|
}
|
|
378
484
|
|
|
379
485
|
|
|
380
486
|
- (void)setZIndex:(NSInteger)zIndex
|
|
381
487
|
{
|
|
382
|
-
|
|
383
|
-
|
|
488
|
+
_zIndex = zIndex;
|
|
489
|
+
_realMarker.zIndex = (int)zIndex;
|
|
384
490
|
}
|
|
385
491
|
|
|
386
492
|
- (void)setDraggable:(BOOL)draggable {
|
|
387
|
-
|
|
493
|
+
_realMarker.draggable = draggable;
|
|
494
|
+
_draggable = draggable;
|
|
388
495
|
}
|
|
389
496
|
|
|
390
497
|
- (BOOL)draggable {
|
|
391
|
-
|
|
498
|
+
return _realMarker.draggable;
|
|
392
499
|
}
|
|
393
500
|
|
|
394
501
|
- (void)setTappable:(BOOL)tappable {
|
|
395
|
-
|
|
502
|
+
_realMarker.tappable = tappable;
|
|
503
|
+
_tappable = tappable;
|
|
396
504
|
}
|
|
397
505
|
|
|
398
506
|
- (BOOL)tappable {
|
|
399
|
-
|
|
507
|
+
return _realMarker.tappable;
|
|
400
508
|
}
|
|
401
509
|
|
|
402
510
|
- (void)setFlat:(BOOL)flat {
|
|
403
|
-
|
|
511
|
+
_realMarker.flat = flat;
|
|
512
|
+
_flat = flat;
|
|
404
513
|
}
|
|
405
514
|
|
|
406
515
|
- (BOOL)flat {
|
|
407
|
-
|
|
516
|
+
return _realMarker.flat;
|
|
408
517
|
}
|
|
409
518
|
|
|
410
519
|
- (void)setTracksViewChanges:(BOOL)tracksViewChanges {
|
|
411
|
-
|
|
520
|
+
_realMarker.tracksViewChanges = tracksViewChanges;
|
|
412
521
|
}
|
|
413
522
|
|
|
414
523
|
- (BOOL)tracksViewChanges {
|
|
415
|
-
|
|
524
|
+
return _realMarker.tracksViewChanges;
|
|
416
525
|
}
|
|
417
526
|
|
|
418
527
|
- (void)setTracksInfoWindowChanges:(BOOL)tracksInfoWindowChanges {
|
|
419
|
-
|
|
528
|
+
_realMarker.tracksInfoWindowChanges = tracksInfoWindowChanges;
|
|
420
529
|
}
|
|
421
530
|
|
|
422
531
|
- (BOOL)tracksInfoWindowChanges {
|
|
423
|
-
|
|
532
|
+
return _realMarker.tracksInfoWindowChanges;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
- (id)makeEventData:(NSString *)action {
|
|
537
|
+
CLLocationCoordinate2D coordinate = self.realMarker.position;
|
|
538
|
+
CGPoint position = [self.realMarker.map.projection pointForCoordinate:coordinate];
|
|
539
|
+
|
|
540
|
+
return @{
|
|
541
|
+
@"id": self.identifier ?: @"unknown",
|
|
542
|
+
@"position": @{
|
|
543
|
+
@"x": @(position.x),
|
|
544
|
+
@"y": @(position.y),
|
|
545
|
+
},
|
|
546
|
+
@"coordinate": @{
|
|
547
|
+
@"latitude": @(coordinate.latitude),
|
|
548
|
+
@"longitude": @(coordinate.longitude),
|
|
549
|
+
},
|
|
550
|
+
@"action": action,
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
- (id)makeEventData {
|
|
555
|
+
return [self makeEventData:@"unknown"];
|
|
424
556
|
}
|
|
425
557
|
|
|
426
558
|
@end
|