react-native-maps 1.21.0-alpha.12 → 1.21.0-alpha.121
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 +77 -57
- package/android/gradlew +1 -2
- package/android/src/generated/RCTAppDependencyProvider.h +25 -0
- package/android/src/generated/RCTAppDependencyProvider.mm +55 -0
- package/android/src/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
- package/android/src/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
- package/android/src/generated/RCTThirdPartyComponentsProvider.h +16 -0
- package/android/src/generated/RCTThirdPartyComponentsProvider.mm +26 -0
- package/android/src/generated/ReactAppDependencyProvider.podspec +34 -0
- package/android/src/generated/java/com/facebook/fbreact/specs/NativeAirMapsModuleSpec.java +63 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerDelegate.java +35 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerInterface.java +17 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsCircleManagerDelegate.java +49 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsCircleManagerInterface.java +23 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerDelegate.java +49 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerInterface.java +23 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerDelegate.java +206 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +73 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +104 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +39 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerDelegate.java +46 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerInterface.java +23 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerDelegate.java +58 -0
- package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerInterface.java +26 -0
- package/android/src/generated/jni/CMakeLists.txt +36 -0
- package/android/src/generated/jni/RNMapsSpecs-generated.cpp +68 -0
- package/android/src/generated/jni/RNMapsSpecs.h +31 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.cpp +29 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +31 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +977 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +846 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/Props.cpp +193 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/Props.h +1223 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI-generated.cpp +74 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI.h +268 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.cpp +24 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +109 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/States.cpp +16 -0
- package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/States.h +113 -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 +619 -0
- package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +258 -0
- package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +235 -2
- package/android/src/main/java/com/rnmaps/fabric/OverlayManager.java +95 -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/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/rnmaps/maps/MapAirModulePackage.java +39 -3
- package/android/src/main/java/com/rnmaps/maps/MapCallout.java +18 -0
- package/android/src/main/java/com/rnmaps/maps/MapCircle.java +24 -0
- package/android/src/main/java/com/rnmaps/maps/MapManager.java +14 -14
- package/android/src/main/java/com/rnmaps/maps/MapMarker.java +637 -556
- package/android/src/main/java/com/rnmaps/maps/MapMarkerManager.java +3 -3
- package/android/src/main/java/com/rnmaps/maps/MapModule.java +206 -206
- package/android/src/main/java/com/rnmaps/maps/MapOverlay.java +267 -151
- package/android/src/main/java/com/rnmaps/maps/MapPolygon.java +31 -1
- package/android/src/main/java/com/rnmaps/maps/MapPolyline.java +207 -141
- package/android/src/main/java/com/rnmaps/maps/MapPolylineManager.java +1 -16
- package/android/src/main/java/com/rnmaps/maps/MapView.java +1650 -1337
- package/ios/AirGoogleMaps/AIRGoogleMap.h +9 -10
- package/ios/AirGoogleMaps/AIRGoogleMap.m +109 -71
- package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
- package/ios/AirGoogleMaps/AIRGoogleMapManager.m +10 -9
- package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +14 -6
- package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +1 -1
- package/ios/AirGoogleMaps/AIRGoogleMapPolygon.h +2 -1
- package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +30 -0
- package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +0 -1
- package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +0 -7
- 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.m +2 -0
- package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +126 -61
- package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +16 -1
- package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
- package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +217 -0
- package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +26 -0
- package/ios/AirMaps/AIRMap.h +7 -7
- package/ios/AirMaps/AIRMap.m +227 -236
- package/ios/AirMaps/AIRMapManager.m +13 -7
- package/ios/AirMaps/AIRMapMarker.h +1 -0
- package/ios/AirMaps/AIRMapMarker.m +165 -103
- package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
- package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.h +28 -0
- package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.mm +68 -0
- package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.h +25 -0
- package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.mm +43 -0
- package/ios/AirMaps/RNMapsAirModule.h +1 -1
- package/ios/AirMaps/RNMapsAirModule.mm +4 -3
- package/ios/AirMaps/RNMapsAirModuleDelegate.h +2 -2
- package/ios/AirMaps/RNMapsDefines.h +0 -0
- package/ios/AirMaps/RNMapsMapView.mm +336 -299
- package/ios/AirMaps/RNMapsMapViewManager.mm +19 -1
- package/ios/AirMaps/RNMapsMarkerView.h +24 -0
- package/ios/AirMaps/RNMapsMarkerView.mm +430 -0
- package/ios/AirMaps/RNMapsMarkerViewManager.mm +28 -0
- package/ios/AirMaps.xcodeproj/project.pbxproj +20 -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/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 +193 -0
- package/ios/generated/RNMapsSpecs/Props.h +1223 -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/package.json +24 -18
- package/react-native-google-maps.podspec +26 -0
- package/react-native-maps-generated.podspec +31 -0
- package/react-native-maps.podspec +44 -15
- package/src/AnimatedRegion.ts +169 -0
- 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 +156 -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 +1223 -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 +219 -0
- package/src/fixImageProp.ts +17 -0
- package/src/index.ts +52 -0
- package/src/sharedTypes.ts +101 -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 +913 -0
- package/src/specs/NativeComponentGooglePolygon.ts +94 -0
- package/src/specs/NativeComponentMapView.ts +1091 -0
- package/src/specs/NativeComponentMarker.ts +326 -0
- package/src/specs/NativeComponentOverlay.ts +89 -0
- package/src/specs/NativeComponentPolyline.ts +124 -0
- package/lib/AnimatedRegion.d.ts +0 -19
- package/lib/AnimatedRegion.js +0 -134
- package/lib/Geojson.d.ts +0 -204
- package/lib/Geojson.js +0 -166
- package/lib/MapCallout.d.ts +0 -40
- package/lib/MapCallout.js +0 -51
- package/lib/MapCalloutSubview.d.ts +0 -34
- package/lib/MapCalloutSubview.js +0 -48
- package/lib/MapCircle.d.ts +0 -117
- package/lib/MapCircle.js +0 -53
- package/lib/MapHeatmap.d.ts +0 -78
- package/lib/MapHeatmap.js +0 -59
- package/lib/MapLocalTile.d.ts +0 -35
- package/lib/MapLocalTile.js +0 -44
- package/lib/MapMarker.d.ts +0 -309
- package/lib/MapMarker.js +0 -116
- package/lib/MapMarkerNativeComponent.d.ts +0 -15
- package/lib/MapMarkerNativeComponent.js +0 -17
- package/lib/MapOverlay.d.ts +0 -87
- package/lib/MapOverlay.js +0 -63
- package/lib/MapPolygon.d.ts +0 -140
- package/lib/MapPolygon.js +0 -53
- package/lib/MapPolygon.types.d.ts +0 -18
- package/lib/MapPolygon.types.js +0 -2
- package/lib/MapPolyline.d.ts +0 -156
- package/lib/MapPolyline.js +0 -53
- package/lib/MapUrlTile.d.ts +0 -134
- package/lib/MapUrlTile.js +0 -44
- package/lib/MapView.d.ts +0 -715
- package/lib/MapView.js +0 -447
- package/lib/MapView.types.d.ts +0 -161
- package/lib/MapView.types.js +0 -2
- package/lib/MapView.web.d.ts +0 -1
- package/lib/MapView.web.js +0 -9
- package/lib/MapViewNativeComponent.d.ts +0 -18
- package/lib/MapViewNativeComponent.js +0 -19
- package/lib/MapWMSTile.d.ts +0 -116
- package/lib/MapWMSTile.js +0 -44
- package/lib/ProviderConstants.d.ts +0 -2
- package/lib/ProviderConstants.js +0 -5
- package/lib/createFabricMap.d.ts +0 -23
- package/lib/createFabricMap.js +0 -175
- package/lib/decorateMapComponent.d.ts +0 -36
- package/lib/decorateMapComponent.js +0 -80
- package/lib/index.d.ts +0 -38
- package/lib/index.js +0 -81
- package/lib/sharedTypes.d.ts +0 -81
- package/lib/sharedTypes.js +0 -2
- package/lib/sharedTypesInternal.js +0 -2
- package/lib/specs/NativeAirMapsModule.d.ts +0 -31
- package/lib/specs/NativeAirMapsModule.js +0 -4
- package/lib/specs/NativeComponentGoogleMapView.d.ts +0 -713
- package/lib/specs/NativeComponentGoogleMapView.js +0 -21
- package/lib/specs/NativeComponentMapView.d.ts +0 -855
- package/lib/specs/NativeComponentMapView.js +0 -21
- /package/{lib/sharedTypesInternal.d.ts → src/sharedTypesInternal.ts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//
|
|
2
2
|
// RNMapsGoogleMapView.mm
|
|
3
|
-
//
|
|
3
|
+
//
|
|
4
4
|
//
|
|
5
5
|
// Created by Salah Ghanim on 23.11.24.
|
|
6
6
|
// Copyright © 2024 react-native-maps. All rights reserved.
|
|
@@ -8,17 +8,17 @@
|
|
|
8
8
|
#ifdef HAVE_GOOGLE_MAPS
|
|
9
9
|
|
|
10
10
|
#import "RNMapsGoogleMapView.h"
|
|
11
|
-
#import "
|
|
11
|
+
#import "RNMapsGooglePolygonView.h"
|
|
12
|
+
#import "AIRGoogleMap.h"
|
|
12
13
|
#import "AIRMapMarker.h"
|
|
13
|
-
#import "
|
|
14
|
-
|
|
15
|
-
#import <react/
|
|
16
|
-
#import <react/
|
|
17
|
-
#import <react/
|
|
18
|
-
#import <react/renderer/components/RNMapsSpecs/RCTComponentViewHelpers.h>
|
|
19
|
-
|
|
14
|
+
#import "AIRGoogleMapManager.h"
|
|
15
|
+
#import <react-native-maps-generated/ComponentDescriptors.h>
|
|
16
|
+
#import <react-native-maps-generated/EventEmitters.h>
|
|
17
|
+
#import <react-native-maps-generated/Props.h>
|
|
18
|
+
#import <react-native-maps-generated/RCTComponentViewHelpers.h>
|
|
20
19
|
#import "RCTFabricComponentsPlugins.h"
|
|
21
20
|
#import <React/RCTConversions.h>
|
|
21
|
+
#import <React/RCTUtils.h>
|
|
22
22
|
#import "RCTConvert+GMSMapViewType.h"
|
|
23
23
|
#import "RCTConvert+AirMap.h"
|
|
24
24
|
#import "UIView+AirMap.h"
|
|
@@ -32,6 +32,7 @@ using namespace facebook::react;
|
|
|
32
32
|
AIRGoogleMap *_view;
|
|
33
33
|
AIRGoogleMapManager* _legacyMapManager;
|
|
34
34
|
NSMutableDictionary<NSNumber*, UIView*>* _pendingInsertsSubviews;
|
|
35
|
+
NSMutableArray *_polygons;
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
|
|
@@ -43,11 +44,12 @@ using namespace facebook::react;
|
|
|
43
44
|
- (void)animateToRegion:(NSString *)regionJSON duration:(NSInteger)duration{
|
|
44
45
|
NSDictionary* regionDic = [RCTConvert dictonaryFromString:regionJSON];
|
|
45
46
|
MKCoordinateRegion region = [RCTConvert MKCoordinateRegion:regionDic];
|
|
46
|
-
[CATransaction begin];
|
|
47
|
-
[CATransaction setAnimationDuration:duration/1000];
|
|
48
47
|
GMSCameraPosition *camera = [AIRGoogleMap makeGMSCameraPositionFromMap:_view andMKCoordinateRegion:region];
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
if (duration == 0){
|
|
49
|
+
[_view setRegion:region];
|
|
50
|
+
} else {
|
|
51
|
+
[_view animateToCameraPosition:camera];
|
|
52
|
+
}
|
|
51
53
|
}
|
|
52
54
|
- (void)setCamera:(NSString *)cameraJSON{
|
|
53
55
|
NSDictionary* cameraDic = [RCTConvert dictonaryFromString:cameraJSON];
|
|
@@ -80,9 +82,19 @@ using namespace facebook::react;
|
|
|
80
82
|
}
|
|
81
83
|
|
|
82
84
|
NSDictionary* edgePadding = [RCTConvert dictonaryFromString:edgePaddingJSON];
|
|
83
|
-
|
|
85
|
+
|
|
84
86
|
[_view fitToCoordinates:coordinatesArray withEdgePadding:edgePadding animated:animated];
|
|
85
87
|
}
|
|
88
|
+
- (void) setIndoorActiveLevelIndex:(NSInteger)activeLevelIndex
|
|
89
|
+
{
|
|
90
|
+
if (!_view.indoorDisplay) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if ( activeLevelIndex < [_view.indoorDisplay.activeBuilding.levels count]) {
|
|
94
|
+
_view.indoorDisplay.activeLevel = _view.indoorDisplay.activeBuilding.levels[activeLevelIndex];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
}
|
|
86
98
|
|
|
87
99
|
#pragma mark - Native commands
|
|
88
100
|
|
|
@@ -111,9 +123,10 @@ using namespace facebook::react;
|
|
|
111
123
|
}
|
|
112
124
|
|
|
113
125
|
- (void) prepareContentView {
|
|
114
|
-
|
|
126
|
+
|
|
115
127
|
_view = (AIRGoogleMap *)[_legacyMapManager view];
|
|
116
|
-
|
|
128
|
+
_polygons = [NSMutableArray new];
|
|
129
|
+
|
|
117
130
|
self.contentView = _view;
|
|
118
131
|
|
|
119
132
|
_view.onPress = [self](NSDictionary* dictionary) {
|
|
@@ -143,7 +156,7 @@ using namespace facebook::react;
|
|
|
143
156
|
mapViewEventEmitter->onPress(data);
|
|
144
157
|
}
|
|
145
158
|
};
|
|
146
|
-
|
|
159
|
+
|
|
147
160
|
_view.onLongPress = [self](NSDictionary* dictionary) {
|
|
148
161
|
if (_eventEmitter) {
|
|
149
162
|
// Extract values from the NSDictionary
|
|
@@ -180,7 +193,37 @@ using namespace facebook::react;
|
|
|
180
193
|
mapViewEventEmitter->onMapReady(data);
|
|
181
194
|
}
|
|
182
195
|
};
|
|
183
|
-
|
|
196
|
+
|
|
197
|
+
_view.onIndoorLevelActivated = [self](NSDictionary* dictionary) {
|
|
198
|
+
if (_eventEmitter) {
|
|
199
|
+
|
|
200
|
+
auto mapViewEventEmitter = std::static_pointer_cast<RNMapsGoogleMapViewEventEmitter const>(_eventEmitter);
|
|
201
|
+
|
|
202
|
+
facebook::react::RNMapsGoogleMapViewEventEmitter::OnIndoorLevelActivated data = {
|
|
203
|
+
.activeLevelIndex= (int) [dictionary[@"activeLevelIndex"] integerValue],
|
|
204
|
+
.name = [dictionary[@"name"] UTF8String],
|
|
205
|
+
.shortName = [dictionary[@"shortName"] UTF8String],
|
|
206
|
+
};
|
|
207
|
+
mapViewEventEmitter->onIndoorLevelActivated(data);
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
_view.onIndoorBuildingFocused = [self](NSDictionary* dictionary) {
|
|
212
|
+
if (_eventEmitter) {
|
|
213
|
+
auto mapViewEventEmitter = std::static_pointer_cast<RNMapsGoogleMapViewEventEmitter const>(_eventEmitter);
|
|
214
|
+
|
|
215
|
+
NSError *jsError = nil;
|
|
216
|
+
NSString *levelsStr = RCTJSONStringify(dictionary[@"levels"], &jsError);
|
|
217
|
+
|
|
218
|
+
facebook::react::RNMapsGoogleMapViewEventEmitter::OnIndoorBuildingFocused data = {
|
|
219
|
+
.underground = [dictionary[@"underground"] boolValue],
|
|
220
|
+
.activeLevelIndex = (int) [dictionary[@"activeLevelIndex"] integerValue],
|
|
221
|
+
.levels = [levelsStr UTF8String]
|
|
222
|
+
};
|
|
223
|
+
mapViewEventEmitter->onIndoorBuildingFocused(data);
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
|
|
184
227
|
_view.onMapLoaded = [self](NSDictionary* dictionary) {
|
|
185
228
|
if (_eventEmitter) {
|
|
186
229
|
auto mapViewEventEmitter = std::static_pointer_cast<RNMapsGoogleMapViewEventEmitter const>(_eventEmitter);
|
|
@@ -188,7 +231,7 @@ using namespace facebook::react;
|
|
|
188
231
|
mapViewEventEmitter->onMapLoaded(data);
|
|
189
232
|
}
|
|
190
233
|
};
|
|
191
|
-
|
|
234
|
+
|
|
192
235
|
_view.onKmlReady = [self](NSDictionary* dictionary) {
|
|
193
236
|
if (_eventEmitter) {
|
|
194
237
|
|
|
@@ -197,7 +240,7 @@ using namespace facebook::react;
|
|
|
197
240
|
mapViewEventEmitter->onKmlReady(data);
|
|
198
241
|
}
|
|
199
242
|
};
|
|
200
|
-
_view.
|
|
243
|
+
_view.onRegionChange = [self](NSDictionary* dictionary) {
|
|
201
244
|
if (_eventEmitter) {
|
|
202
245
|
|
|
203
246
|
NSDictionary* regionDict = dictionary[@"region"];
|
|
@@ -256,7 +299,7 @@ using namespace facebook::react;
|
|
|
256
299
|
if (errorDict){
|
|
257
300
|
str = errorDict[@"message"];
|
|
258
301
|
}
|
|
259
|
-
|
|
302
|
+
|
|
260
303
|
facebook::react::RNMapsGoogleMapViewEventEmitter::OnUserLocationChangeError error = {
|
|
261
304
|
.message = std::string([str UTF8String]),
|
|
262
305
|
};
|
|
@@ -271,6 +314,35 @@ using namespace facebook::react;
|
|
|
271
314
|
}
|
|
272
315
|
};
|
|
273
316
|
|
|
317
|
+
_view.onPoiClick = [self](NSDictionary* dictionary) {
|
|
318
|
+
if (_eventEmitter) {
|
|
319
|
+
|
|
320
|
+
NSDictionary* coordinateDict = dictionary[@"coordinate"];
|
|
321
|
+
NSDictionary* positionDict = dictionary[@"position"];
|
|
322
|
+
|
|
323
|
+
// Populate the OnMapPressCoordinate struct
|
|
324
|
+
facebook::react::RNMapsGoogleMapViewEventEmitter::OnPoiClickCoordinate coordinate = {
|
|
325
|
+
.latitude = [coordinateDict[@"latitude"] doubleValue],
|
|
326
|
+
.longitude = [coordinateDict[@"longitude"] doubleValue],
|
|
327
|
+
};
|
|
328
|
+
// Populate the OnMapDouplePressPosition struct
|
|
329
|
+
facebook::react::RNMapsGoogleMapViewEventEmitter::OnPoiClickPosition position = {
|
|
330
|
+
.x = [positionDict[@"x"] doubleValue],
|
|
331
|
+
.y = [positionDict[@"y"] doubleValue],
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
auto mapViewEventEmitter = std::static_pointer_cast<RNMapsGoogleMapViewEventEmitter const>(_eventEmitter);
|
|
336
|
+
facebook::react::RNMapsGoogleMapViewEventEmitter::OnPoiClick data = {
|
|
337
|
+
.coordinate = coordinate,
|
|
338
|
+
.position = position,
|
|
339
|
+
.placeId = [dictionary[@"placeId"] UTF8String],
|
|
340
|
+
.name = [dictionary[@"name"] UTF8String],
|
|
341
|
+
};
|
|
342
|
+
mapViewEventEmitter->onPoiClick(data);
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
|
|
274
346
|
|
|
275
347
|
|
|
276
348
|
_view.onRegionChangeStart = [self](NSDictionary* dictionary) {
|
|
@@ -288,23 +360,7 @@ using namespace facebook::react;
|
|
|
288
360
|
mapViewEventEmitter->onRegionChangeStart(data);
|
|
289
361
|
}
|
|
290
362
|
};
|
|
291
|
-
|
|
292
|
-
_view.onRegionChange = [self](NSDictionary* dictionary) {
|
|
293
|
-
if (_eventEmitter) {
|
|
294
363
|
|
|
295
|
-
NSDictionary* regionDict = dictionary[@"region"];
|
|
296
|
-
auto mapViewEventEmitter = std::static_pointer_cast<RNMapsGoogleMapViewEventEmitter const>(_eventEmitter);
|
|
297
|
-
facebook::react::RNMapsGoogleMapViewEventEmitter::OnRegionChange data = {
|
|
298
|
-
.region.latitude = [regionDict[@"latitude"] doubleValue],
|
|
299
|
-
.region.longitude = [regionDict[@"longitude"] doubleValue],
|
|
300
|
-
.region.latitudeDelta = [regionDict[@"latitudeDelta"] doubleValue],
|
|
301
|
-
.region.longitudeDelta = [regionDict[@"longitudeDelta"] doubleValue],
|
|
302
|
-
.continuous = [dictionary[@"continuous"] boolValue],
|
|
303
|
-
};
|
|
304
|
-
mapViewEventEmitter->onRegionChange(data);
|
|
305
|
-
}
|
|
306
|
-
};
|
|
307
|
-
|
|
308
364
|
_view.onRegionChangeComplete = [self](NSDictionary* dictionary) {
|
|
309
365
|
if (_eventEmitter) {
|
|
310
366
|
|
|
@@ -391,6 +447,11 @@ using namespace facebook::react;
|
|
|
391
447
|
}
|
|
392
448
|
} else {
|
|
393
449
|
[_view insertReactSubview:childComponentView atIndex:index];
|
|
450
|
+
if ([childComponentView isKindOfClass:[RNMapsGooglePolygonView class]]){
|
|
451
|
+
RNMapsGooglePolygonView* polygon = (RNMapsGooglePolygonView *) childComponentView;
|
|
452
|
+
[_polygons addObject:childComponentView];
|
|
453
|
+
[polygon didInsertInMap:_view];
|
|
454
|
+
}
|
|
394
455
|
}
|
|
395
456
|
}
|
|
396
457
|
|
|
@@ -405,6 +466,11 @@ using namespace facebook::react;
|
|
|
405
466
|
}
|
|
406
467
|
} else {
|
|
407
468
|
[_view removeReactSubview:childComponentView];
|
|
469
|
+
if ([childComponentView isKindOfClass:[RNMapsGooglePolygonView class]]){
|
|
470
|
+
RNMapsGooglePolygonView* polygon = (RNMapsGooglePolygonView *) childComponentView;
|
|
471
|
+
[_polygons removeObject:childComponentView];
|
|
472
|
+
[polygon didRemoveFromMap];
|
|
473
|
+
}
|
|
408
474
|
}
|
|
409
475
|
}
|
|
410
476
|
- (void) prepareForRecycle
|
|
@@ -423,7 +489,7 @@ using namespace facebook::react;
|
|
|
423
489
|
{
|
|
424
490
|
const auto &oldViewProps = *std::static_pointer_cast<RNMapsGoogleMapViewProps const>(_props);
|
|
425
491
|
const auto &newViewProps = *std::static_pointer_cast<RNMapsGoogleMapViewProps const>(props);
|
|
426
|
-
|
|
492
|
+
|
|
427
493
|
|
|
428
494
|
if (oldViewProps.googleMapId != newViewProps.googleMapId) {
|
|
429
495
|
NSString* mapID = RCTNSStringFromString(newViewProps.googleMapId);
|
|
@@ -455,7 +521,7 @@ using namespace facebook::react;
|
|
|
455
521
|
_legacyMapManager.camera = camera;
|
|
456
522
|
}
|
|
457
523
|
|
|
458
|
-
|
|
524
|
+
|
|
459
525
|
|
|
460
526
|
if (!_view){
|
|
461
527
|
[self prepareContentView];
|
|
@@ -489,20 +555,6 @@ using namespace facebook::react;
|
|
|
489
555
|
_view.name = region; \
|
|
490
556
|
}
|
|
491
557
|
|
|
492
|
-
#define REMAP_GOOGLEMAPVIEW_CAMERA_PROP(name) \
|
|
493
|
-
if (newViewProps.name.center.latitude != oldViewProps.name.center.latitude || \
|
|
494
|
-
newViewProps.name.center.longitude != oldViewProps.name.center.longitude || \
|
|
495
|
-
newViewProps.name.heading != oldViewProps.name.heading || \
|
|
496
|
-
newViewProps.name.pitch != oldViewProps.name.pitch || \
|
|
497
|
-
newViewProps.name.zoom != oldViewProps.name.zoom) { \
|
|
498
|
-
GMSCameraPosition* camera = [GMSCameraPosition cameraWithLatitude:newViewProps.name.center.latitude \
|
|
499
|
-
longitude:newViewProps.name.center.longitude \
|
|
500
|
-
zoom:newViewProps.name.zoom \
|
|
501
|
-
bearing:newViewProps.name.heading \
|
|
502
|
-
viewingAngle:newViewProps.name.pitch]; \
|
|
503
|
-
_view.name = camera; \
|
|
504
|
-
}
|
|
505
|
-
|
|
506
558
|
|
|
507
559
|
#define REMAP_MAPVIEW_EDGEINSETS_PROP(name) \
|
|
508
560
|
if (newViewProps.name.top != oldViewProps.name.top || \
|
|
@@ -517,16 +569,16 @@ using namespace facebook::react;
|
|
|
517
569
|
|
|
518
570
|
|
|
519
571
|
REMAP_MAPVIEW_PROP(pitchEnabled)
|
|
520
|
-
|
|
521
572
|
REMAP_MAPVIEW_PROP(zoomTapEnabled)
|
|
522
|
-
|
|
523
573
|
REMAP_MAPVIEW_PROP(scrollEnabled)
|
|
524
|
-
|
|
574
|
+
|
|
575
|
+
REMAP_MAPVIEW_STRING_PROP(kmlSrc)
|
|
576
|
+
|
|
525
577
|
if (newViewProps.minZoom != oldViewProps.minZoom || newViewProps.maxZoom != oldViewProps.maxZoom){
|
|
526
578
|
[_view setMinZoom:newViewProps.minZoom maxZoom:newViewProps.maxZoom];
|
|
527
579
|
}
|
|
528
580
|
|
|
529
|
-
|
|
581
|
+
[_view setShowsCompass:newViewProps.showsCompass];
|
|
530
582
|
REMAP_MAPVIEW_PROP(showsTraffic)
|
|
531
583
|
REMAP_MAPVIEW_PROP(showsUserLocation)
|
|
532
584
|
REMAP_MAPVIEW_PROP(zoomEnabled)
|
|
@@ -535,9 +587,20 @@ using namespace facebook::react;
|
|
|
535
587
|
REMAP_MAPVIEW_REGION_PROP(region)
|
|
536
588
|
REMAP_MAPVIEW_REGION_PROP(initialRegion)
|
|
537
589
|
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
590
|
+
if (newViewProps.camera.center.latitude != oldViewProps.camera.center.latitude ||
|
|
591
|
+
newViewProps.camera.center.longitude != oldViewProps.camera.center.longitude ||
|
|
592
|
+
newViewProps.camera.heading != oldViewProps.camera.heading ||
|
|
593
|
+
newViewProps.camera.pitch != oldViewProps.camera.pitch ||
|
|
594
|
+
newViewProps.camera.zoom != oldViewProps.camera.zoom) {
|
|
595
|
+
GMSCameraPosition* camera = [GMSCameraPosition cameraWithLatitude:newViewProps.camera.center.latitude
|
|
596
|
+
longitude:newViewProps.camera.center.longitude
|
|
597
|
+
zoom:newViewProps.camera.zoom
|
|
598
|
+
bearing:newViewProps.camera.heading
|
|
599
|
+
viewingAngle:newViewProps.camera.pitch];
|
|
600
|
+
_view.cameraProp = camera;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
|
|
541
604
|
REMAP_MAPVIEW_EDGEINSETS_PROP(mapPadding)
|
|
542
605
|
|
|
543
606
|
|
|
@@ -551,14 +614,16 @@ using namespace facebook::react;
|
|
|
551
614
|
break;
|
|
552
615
|
case RNMapsGoogleMapViewMapType::Terrain:
|
|
553
616
|
_view.mapType = kGMSTypeTerrain;
|
|
617
|
+
break;
|
|
554
618
|
case RNMapsGoogleMapViewMapType::Hybrid:
|
|
555
619
|
_view.mapType = kGMSTypeHybrid;
|
|
620
|
+
break;
|
|
556
621
|
default:
|
|
557
622
|
_view.mapType = kGMSTypeNormal;
|
|
558
623
|
break;
|
|
559
624
|
}
|
|
560
625
|
}
|
|
561
|
-
|
|
626
|
+
|
|
562
627
|
if (oldViewProps.userInterfaceStyle != newViewProps.userInterfaceStyle){
|
|
563
628
|
switch (newViewProps.userInterfaceStyle) {
|
|
564
629
|
case RNMapsGoogleMapViewUserInterfaceStyle::Light:
|
|
@@ -18,7 +18,22 @@
|
|
|
18
18
|
|
|
19
19
|
RCT_EXPORT_MODULE(RNMapsGoogleMapViewManager)
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
RCT_EXPORT_VIEW_PROPERTY(onMapReady, RCTDirectEventBlock)
|
|
22
|
+
RCT_EXPORT_VIEW_PROPERTY(onMapLoaded, RCTDirectEventBlock)
|
|
23
|
+
RCT_EXPORT_VIEW_PROPERTY(onKmlReady, RCTDirectEventBlock)
|
|
24
|
+
RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock)
|
|
25
|
+
RCT_EXPORT_VIEW_PROPERTY(onLongPress, RCTBubblingEventBlock)
|
|
26
|
+
RCT_EXPORT_VIEW_PROPERTY(onPanDrag, RCTDirectEventBlock)
|
|
27
|
+
RCT_EXPORT_VIEW_PROPERTY(onUserLocationChange, RCTDirectEventBlock)
|
|
28
|
+
RCT_EXPORT_VIEW_PROPERTY(onMarkerPress, RCTDirectEventBlock)
|
|
29
|
+
RCT_EXPORT_VIEW_PROPERTY(onMarkerSelect, RCTDirectEventBlock)
|
|
30
|
+
RCT_EXPORT_VIEW_PROPERTY(onMarkerDeselect, RCTDirectEventBlock)
|
|
31
|
+
RCT_EXPORT_VIEW_PROPERTY(onRegionChangeStart, RCTDirectEventBlock)
|
|
32
|
+
RCT_EXPORT_VIEW_PROPERTY(onRegionChange, RCTDirectEventBlock)
|
|
33
|
+
RCT_EXPORT_VIEW_PROPERTY(onRegionChangeComplete, RCTDirectEventBlock)
|
|
34
|
+
RCT_EXPORT_VIEW_PROPERTY(onPoiClick, RCTDirectEventBlock)
|
|
35
|
+
RCT_EXPORT_VIEW_PROPERTY(onIndoorLevelActivated, RCTDirectEventBlock)
|
|
36
|
+
RCT_EXPORT_VIEW_PROPERTY(onIndoorBuildingFocused, RCTDirectEventBlock)
|
|
22
37
|
|
|
23
38
|
@end
|
|
24
39
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNMapsGoogleMapView.h
|
|
3
|
+
//
|
|
4
|
+
//
|
|
5
|
+
// Created by Salah Ghanim on 23.11.24.
|
|
6
|
+
// Copyright © 2024 react-native-maps. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
9
|
+
#ifdef HAVE_GOOGLE_MAPS
|
|
10
|
+
|
|
11
|
+
#import <React/RCTViewComponentView.h>
|
|
12
|
+
#import <UIKit/UIKit.h>
|
|
13
|
+
|
|
14
|
+
@class AIRGoogleMap;
|
|
15
|
+
@class AIRGMSPolygon;
|
|
16
|
+
|
|
17
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
18
|
+
@interface RNMapsGooglePolygonView : RCTViewComponentView
|
|
19
|
+
- (void) didInsertInMap:(AIRGoogleMap*) map;
|
|
20
|
+
- (void) didRemoveFromMap;
|
|
21
|
+
@end
|
|
22
|
+
|
|
23
|
+
NS_ASSUME_NONNULL_END
|
|
24
|
+
|
|
25
|
+
#endif
|
|
26
|
+
#endif
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNMapsGoogleMapView.mm
|
|
3
|
+
//
|
|
4
|
+
//
|
|
5
|
+
// Created by Salah Ghanim on 23.11.24.
|
|
6
|
+
// Copyright © 2024 react-native-maps. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
#ifdef HAVE_GOOGLE_MAPS
|
|
9
|
+
|
|
10
|
+
#import "RNMapsGooglePolygonView.h"
|
|
11
|
+
#import "AIRGMSPolygon.h"
|
|
12
|
+
#import "AIRGoogleMap.h"
|
|
13
|
+
#import <react-native-maps-generated/RNMapsSpecs.h>
|
|
14
|
+
#import <react-native-maps-generated/ComponentDescriptors.h>
|
|
15
|
+
#import <react-native-maps-generated/EventEmitters.h>
|
|
16
|
+
#import <react-native-maps-generated/Props.h>
|
|
17
|
+
#import <react-native-maps-generated/RCTComponentViewHelpers.h>
|
|
18
|
+
|
|
19
|
+
#import "RCTFabricComponentsPlugins.h"
|
|
20
|
+
#import <React/RCTConversions.h>
|
|
21
|
+
#import "RCTConvert+GMSMapViewType.h"
|
|
22
|
+
#import "RCTConvert+AirMap.h"
|
|
23
|
+
#import "UIView+AirMap.h"
|
|
24
|
+
|
|
25
|
+
using namespace facebook::react;
|
|
26
|
+
|
|
27
|
+
bool areHolesEqual(const std::vector<std::vector<RNMapsGooglePolygonHolesStruct>>& newHoles, const std::vector<std::vector<RNMapsGooglePolygonHolesStruct>>& oldHoles) {
|
|
28
|
+
// First-level check: compare the sizes of the top-level vectors
|
|
29
|
+
if (newHoles.size() != oldHoles.size()) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Second-level check: compare the contents of each child vector
|
|
34
|
+
for (size_t i = 0; i < newHoles.size(); ++i) {
|
|
35
|
+
const auto& newHole = newHoles.at(i);
|
|
36
|
+
const auto& oldHole = oldHoles.at(i);
|
|
37
|
+
|
|
38
|
+
// Compare sizes of the child vectors
|
|
39
|
+
if (newHole.size() != oldHole.size()) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@interface RNMapsGooglePolygonView () <RCTRNMapsGooglePolygonViewProtocol>
|
|
49
|
+
@end
|
|
50
|
+
|
|
51
|
+
@implementation RNMapsGooglePolygonView {
|
|
52
|
+
AIRGMSPolygon *_view;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
- (AIRGMSPolygon*) polygon {
|
|
57
|
+
return _view;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
+ (ComponentDescriptorProvider)componentDescriptorProvider
|
|
61
|
+
{
|
|
62
|
+
return concreteComponentDescriptorProvider<RNMapsGooglePolygonComponentDescriptor>();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
- (void) didInsertInMap:(AIRGoogleMap*) map
|
|
66
|
+
{
|
|
67
|
+
_view.map = map;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
-(void) didRemoveFromMap
|
|
71
|
+
{
|
|
72
|
+
_view.map = nil;
|
|
73
|
+
_view = nil;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
- (void) prepareContentView {
|
|
77
|
+
|
|
78
|
+
_view = [AIRGMSPolygon new];
|
|
79
|
+
_view.onPress = [self](NSDictionary* dictionary) {
|
|
80
|
+
if (_eventEmitter) {
|
|
81
|
+
// Extract values from the NSDictionary
|
|
82
|
+
NSDictionary* coordinateDict = dictionary[@"coordinate"];
|
|
83
|
+
NSDictionary* positionDict = dictionary[@"position"];
|
|
84
|
+
|
|
85
|
+
// Populate the OnMapPressCoordinate struct
|
|
86
|
+
facebook::react::RNMapsGooglePolygonEventEmitter::OnPressCoordinate coordinate = {
|
|
87
|
+
.latitude = [coordinateDict[@"latitude"] doubleValue],
|
|
88
|
+
.longitude = [coordinateDict[@"longitude"] doubleValue],
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// Populate the OnMapPressPosition struct
|
|
92
|
+
facebook::react::RNMapsGooglePolygonEventEmitter::OnPressPosition position = {
|
|
93
|
+
.x = [positionDict[@"x"] doubleValue],
|
|
94
|
+
.y = [positionDict[@"y"] doubleValue],
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
auto mapViewEventEmitter = std::static_pointer_cast<RNMapsGooglePolygonEventEmitter const>(_eventEmitter);
|
|
98
|
+
facebook::react::RNMapsGooglePolygonEventEmitter::OnPress data = {
|
|
99
|
+
.action = std::string([@"press" UTF8String]),
|
|
100
|
+
.position = position,
|
|
101
|
+
.coordinate = coordinate
|
|
102
|
+
};
|
|
103
|
+
mapViewEventEmitter->onPress(data);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
- (instancetype)initWithFrame:(CGRect)frame
|
|
110
|
+
{
|
|
111
|
+
if (self = [super initWithFrame:frame]) {
|
|
112
|
+
static const auto defaultProps = std::make_shared<const RNMapsGooglePolygonProps>();
|
|
113
|
+
_props = defaultProps;
|
|
114
|
+
[self prepareContentView];
|
|
115
|
+
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return self;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
- (void) prepareForRecycle
|
|
124
|
+
{
|
|
125
|
+
[super prepareForRecycle];
|
|
126
|
+
static const auto defaultProps = std::make_shared<const RNMapsGooglePolygonProps>();
|
|
127
|
+
_props = defaultProps;
|
|
128
|
+
_view = nil;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
- (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps
|
|
133
|
+
{
|
|
134
|
+
const auto &oldViewProps = *std::static_pointer_cast<RNMapsGooglePolygonProps const>(_props);
|
|
135
|
+
const auto &newViewProps = *std::static_pointer_cast<RNMapsGooglePolygonProps const>(props);
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
if (!_view){
|
|
139
|
+
[self prepareContentView];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
#define REMAP_MAPVIEW_PROP(name) \
|
|
143
|
+
if (oldViewProps.name != newViewProps.name) { \
|
|
144
|
+
_view.name = newViewProps.name; \
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
#define REMAP_MAPVIEW_STRING_PROP(name) \
|
|
148
|
+
if (oldViewProps.name != newViewProps.name) { \
|
|
149
|
+
_view.name = RCTNSStringFromString(newViewProps.name); \
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
#define REMAP_MAPVIEW_POINT_PROP(name) \
|
|
153
|
+
if (newViewProps.name.x != oldViewProps.name.x || \
|
|
154
|
+
newViewProps.name.y != oldViewProps.name.y) { \
|
|
155
|
+
_view.name = CGPointMake(newViewProps.name.x, newViewProps.name.y); \
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
if(newViewProps.zIndex.has_value()){
|
|
160
|
+
_view.zIndex = newViewProps.zIndex.value();
|
|
161
|
+
}
|
|
162
|
+
if (newViewProps.coordinates.size() != oldViewProps.coordinates.size()){
|
|
163
|
+
GMSMutablePath *path = [GMSMutablePath path];
|
|
164
|
+
for(int i = 0; i < newViewProps.coordinates.size(); i++)
|
|
165
|
+
{
|
|
166
|
+
CLLocationCoordinate2D coordinates = CLLocationCoordinate2DMake(
|
|
167
|
+
newViewProps.coordinates.at(i).latitude,newViewProps.coordinates.at(i).longitude);
|
|
168
|
+
[path addCoordinate:coordinates];
|
|
169
|
+
}
|
|
170
|
+
_view.path = path;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (!areHolesEqual(newViewProps.holes, oldViewProps.holes)){
|
|
174
|
+
NSMutableArray<GMSMutablePath *> *interiorPolygons = [NSMutableArray array];
|
|
175
|
+
for(int h = 0; h < newViewProps.holes.size(); h++)
|
|
176
|
+
{
|
|
177
|
+
GMSMutablePath *path = [GMSMutablePath path];
|
|
178
|
+
for(int i = 0; i < newViewProps.holes[h].size(); i++)
|
|
179
|
+
{
|
|
180
|
+
CLLocationCoordinate2D coordinates = CLLocationCoordinate2DMake(
|
|
181
|
+
newViewProps.holes.at(h).at(i).latitude,
|
|
182
|
+
newViewProps.holes.at(h).at(i).longitude);
|
|
183
|
+
[path addCoordinate:coordinates];
|
|
184
|
+
}
|
|
185
|
+
[interiorPolygons addObject:path];
|
|
186
|
+
}
|
|
187
|
+
_view.holes = interiorPolygons;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
REMAP_MAPVIEW_PROP(tappable)
|
|
192
|
+
|
|
193
|
+
if (newViewProps.fillColor){
|
|
194
|
+
_view.fillColor = RCTUIColorFromSharedColor(newViewProps.fillColor);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (newViewProps.strokeColor){
|
|
198
|
+
_view.strokeColor = RCTUIColorFromSharedColor(newViewProps.strokeColor);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
[super updateProps:props oldProps:oldProps];
|
|
205
|
+
}
|
|
206
|
+
- (void) didMoveToSuperview {
|
|
207
|
+
[super didMoveToSuperview];
|
|
208
|
+
NSLog(@"SuperView ? %@", self.superview);
|
|
209
|
+
}
|
|
210
|
+
@end
|
|
211
|
+
|
|
212
|
+
Class<RCTComponentViewProtocol> RNMapsGooglePolygonCls(void)
|
|
213
|
+
{
|
|
214
|
+
return RNMapsGooglePolygonView.class;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
#endif
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNMapsMapViewManager.mm
|
|
3
|
+
// AirMaps
|
|
4
|
+
//
|
|
5
|
+
// Created by Salah Ghanim on 23.11.24.
|
|
6
|
+
// Copyright © 2024 react-native-maps. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
#ifdef HAVE_GOOGLE_MAPS
|
|
9
|
+
|
|
10
|
+
#import <React/RCTLog.h>
|
|
11
|
+
#import <React/RCTUIManager.h>
|
|
12
|
+
#import <React/RCTViewManager.h>
|
|
13
|
+
|
|
14
|
+
@interface RNMapsGooglePolygonViewManager : RCTViewManager
|
|
15
|
+
@end
|
|
16
|
+
|
|
17
|
+
@implementation RNMapsGooglePolygonViewManager
|
|
18
|
+
|
|
19
|
+
RCT_EXPORT_MODULE(RNMapsGooglePolygonViewManager)
|
|
20
|
+
|
|
21
|
+
RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@end
|
|
25
|
+
|
|
26
|
+
#endif
|
package/ios/AirMaps/AIRMap.h
CHANGED
|
@@ -35,6 +35,7 @@ extern const NSInteger AIRMapMaxZoomLevel;
|
|
|
35
35
|
@property (nonatomic, assign) BOOL hasStartedRendering;
|
|
36
36
|
@property (nonatomic, assign) BOOL cacheEnabled;
|
|
37
37
|
@property (nonatomic, assign) BOOL loadingEnabled;
|
|
38
|
+
@property (nonatomic, assign) BOOL handlePanDrag;
|
|
38
39
|
@property (nonatomic, assign) BOOL legacyZoomConstraintsEnabled;
|
|
39
40
|
@property (nonatomic, strong) UIColor *loadingBackgroundColor;
|
|
40
41
|
@property (nonatomic, strong) UIColor *loadingIndicatorColor;
|
|
@@ -43,7 +44,7 @@ extern const NSInteger AIRMapMaxZoomLevel;
|
|
|
43
44
|
@property (nonatomic, assign) CGFloat maxDelta;
|
|
44
45
|
@property (nonatomic, assign) UIEdgeInsets legalLabelInsets;
|
|
45
46
|
@property (nonatomic, assign) MKCoordinateRegion initialRegion;
|
|
46
|
-
@property (nonatomic,
|
|
47
|
+
@property (nonatomic, retain) MKMapCamera *initialCamera;
|
|
47
48
|
@property (nonatomic, assign) CGFloat minZoom;
|
|
48
49
|
@property (nonatomic, assign) CGFloat maxZoom;
|
|
49
50
|
@property (nonatomic, assign) CGPoint compassOffset;
|
|
@@ -55,12 +56,12 @@ extern const NSInteger AIRMapMaxZoomLevel;
|
|
|
55
56
|
|
|
56
57
|
@property (nonatomic, assign) BOOL ignoreRegionChanges;
|
|
57
58
|
|
|
58
|
-
@property (nonatomic, copy)
|
|
59
|
-
@property (nonatomic, copy)
|
|
59
|
+
@property (nonatomic, copy) RCTDirectEventBlock onMapReady;
|
|
60
|
+
@property (nonatomic, copy) RCTDirectEventBlock onRegionChange;
|
|
60
61
|
@property (nonatomic, copy) RCTBubblingEventBlock onPress;
|
|
61
|
-
@property (nonatomic, copy) RCTBubblingEventBlock onPanDrag;
|
|
62
|
-
@property (nonatomic, copy) RCTBubblingEventBlock onDoublePress;
|
|
63
62
|
@property (nonatomic, copy) RCTBubblingEventBlock onLongPress;
|
|
63
|
+
@property (nonatomic, copy) RCTDirectEventBlock onPanDrag;
|
|
64
|
+
@property (nonatomic, copy) RCTDirectEventBlock onDoublePress;
|
|
64
65
|
@property (nonatomic, copy) RCTDirectEventBlock onMarkerPress;
|
|
65
66
|
@property (nonatomic, copy) RCTDirectEventBlock onMarkerSelect;
|
|
66
67
|
@property (nonatomic, copy) RCTDirectEventBlock onMarkerDeselect;
|
|
@@ -70,8 +71,7 @@ extern const NSInteger AIRMapMaxZoomLevel;
|
|
|
70
71
|
|
|
71
72
|
@property (nonatomic, copy) RCTDirectEventBlock onCalloutPress;
|
|
72
73
|
@property (nonatomic, copy) RCTDirectEventBlock onRegionChangeStart;
|
|
73
|
-
@property (nonatomic, copy) RCTDirectEventBlock
|
|
74
|
-
@property (nonatomic, copy) RCTBubblingEventBlock onUserLocationChange;
|
|
74
|
+
@property (nonatomic, copy) RCTDirectEventBlock onUserLocationChange;
|
|
75
75
|
|
|
76
76
|
- (void)cacheViewIfNeeded;
|
|
77
77
|
- (void)beginLoading;
|