react-native-maps 1.21.0-alpha.13 → 1.21.0-alpha.130
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 +73 -53
- package/android/gradlew +1 -2
- 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 +206 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +73 -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 +46 -0
- package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerInterface.java +23 -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/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 +40 -4
- 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/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 +29 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +31 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +977 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +846 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.cpp +193 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.h +1223 -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 +24 -0
- package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +109 -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 +113 -0
- package/ios/AirGoogleMaps/AIRGoogleMap.h +10 -11
- package/ios/AirGoogleMaps/AIRGoogleMap.m +103 -69
- package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
- package/ios/AirGoogleMaps/AIRGoogleMapManager.m +10 -9
- package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +6 -3
- package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +1 -1
- package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +3 -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/RNMapsGoogleMapView.h +1 -1
- package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +112 -43
- 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 +8 -9
- package/ios/AirMaps/AIRMap.m +222 -239
- package/ios/AirMaps/AIRMapManager.m +10 -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/RNMapsDefines.h +0 -0
- package/ios/AirMaps/RNMapsMapView.h +1 -1
- package/ios/AirMaps/RNMapsMapView.mm +119 -95
- 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/{AirMaps → generated}/RNMapsAirModuleDelegate.h +2 -2
- 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 +25 -18
- package/react-native-google-maps.podspec +26 -0
- package/react-native-maps-generated.podspec +31 -0
- package/react-native-maps.podspec +53 -15
- package/react-native.config.js +16 -0
- 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/ios/{AirMaps → generated}/RNMapsHostVewDelegate.h +0 -0
- /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
|
|
|
@@ -44,7 +45,11 @@ using namespace facebook::react;
|
|
|
44
45
|
NSDictionary* regionDic = [RCTConvert dictonaryFromString:regionJSON];
|
|
45
46
|
MKCoordinateRegion region = [RCTConvert MKCoordinateRegion:regionDic];
|
|
46
47
|
GMSCameraPosition *camera = [AIRGoogleMap makeGMSCameraPositionFromMap:_view andMKCoordinateRegion:region];
|
|
47
|
-
|
|
48
|
+
if (duration == 0){
|
|
49
|
+
[_view setRegion:region];
|
|
50
|
+
} else {
|
|
51
|
+
[_view animateToCameraPosition:camera];
|
|
52
|
+
}
|
|
48
53
|
}
|
|
49
54
|
- (void)setCamera:(NSString *)cameraJSON{
|
|
50
55
|
NSDictionary* cameraDic = [RCTConvert dictonaryFromString:cameraJSON];
|
|
@@ -77,9 +82,19 @@ using namespace facebook::react;
|
|
|
77
82
|
}
|
|
78
83
|
|
|
79
84
|
NSDictionary* edgePadding = [RCTConvert dictonaryFromString:edgePaddingJSON];
|
|
80
|
-
|
|
85
|
+
|
|
81
86
|
[_view fitToCoordinates:coordinatesArray withEdgePadding:edgePadding animated:animated];
|
|
82
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
|
+
}
|
|
83
98
|
|
|
84
99
|
#pragma mark - Native commands
|
|
85
100
|
|
|
@@ -108,9 +123,10 @@ using namespace facebook::react;
|
|
|
108
123
|
}
|
|
109
124
|
|
|
110
125
|
- (void) prepareContentView {
|
|
111
|
-
|
|
126
|
+
|
|
112
127
|
_view = (AIRGoogleMap *)[_legacyMapManager view];
|
|
113
|
-
|
|
128
|
+
_polygons = [NSMutableArray new];
|
|
129
|
+
|
|
114
130
|
self.contentView = _view;
|
|
115
131
|
|
|
116
132
|
_view.onPress = [self](NSDictionary* dictionary) {
|
|
@@ -140,7 +156,7 @@ using namespace facebook::react;
|
|
|
140
156
|
mapViewEventEmitter->onPress(data);
|
|
141
157
|
}
|
|
142
158
|
};
|
|
143
|
-
|
|
159
|
+
|
|
144
160
|
_view.onLongPress = [self](NSDictionary* dictionary) {
|
|
145
161
|
if (_eventEmitter) {
|
|
146
162
|
// Extract values from the NSDictionary
|
|
@@ -177,7 +193,37 @@ using namespace facebook::react;
|
|
|
177
193
|
mapViewEventEmitter->onMapReady(data);
|
|
178
194
|
}
|
|
179
195
|
};
|
|
180
|
-
|
|
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
|
+
|
|
181
227
|
_view.onMapLoaded = [self](NSDictionary* dictionary) {
|
|
182
228
|
if (_eventEmitter) {
|
|
183
229
|
auto mapViewEventEmitter = std::static_pointer_cast<RNMapsGoogleMapViewEventEmitter const>(_eventEmitter);
|
|
@@ -185,7 +231,7 @@ using namespace facebook::react;
|
|
|
185
231
|
mapViewEventEmitter->onMapLoaded(data);
|
|
186
232
|
}
|
|
187
233
|
};
|
|
188
|
-
|
|
234
|
+
|
|
189
235
|
_view.onKmlReady = [self](NSDictionary* dictionary) {
|
|
190
236
|
if (_eventEmitter) {
|
|
191
237
|
|
|
@@ -194,7 +240,7 @@ using namespace facebook::react;
|
|
|
194
240
|
mapViewEventEmitter->onKmlReady(data);
|
|
195
241
|
}
|
|
196
242
|
};
|
|
197
|
-
_view.
|
|
243
|
+
_view.onRegionChange = [self](NSDictionary* dictionary) {
|
|
198
244
|
if (_eventEmitter) {
|
|
199
245
|
|
|
200
246
|
NSDictionary* regionDict = dictionary[@"region"];
|
|
@@ -253,7 +299,7 @@ using namespace facebook::react;
|
|
|
253
299
|
if (errorDict){
|
|
254
300
|
str = errorDict[@"message"];
|
|
255
301
|
}
|
|
256
|
-
|
|
302
|
+
|
|
257
303
|
facebook::react::RNMapsGoogleMapViewEventEmitter::OnUserLocationChangeError error = {
|
|
258
304
|
.message = std::string([str UTF8String]),
|
|
259
305
|
};
|
|
@@ -268,6 +314,35 @@ using namespace facebook::react;
|
|
|
268
314
|
}
|
|
269
315
|
};
|
|
270
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
|
+
|
|
271
346
|
|
|
272
347
|
|
|
273
348
|
_view.onRegionChangeStart = [self](NSDictionary* dictionary) {
|
|
@@ -285,23 +360,7 @@ using namespace facebook::react;
|
|
|
285
360
|
mapViewEventEmitter->onRegionChangeStart(data);
|
|
286
361
|
}
|
|
287
362
|
};
|
|
288
|
-
|
|
289
|
-
_view.onRegionChange = [self](NSDictionary* dictionary) {
|
|
290
|
-
if (_eventEmitter) {
|
|
291
363
|
|
|
292
|
-
NSDictionary* regionDict = dictionary[@"region"];
|
|
293
|
-
auto mapViewEventEmitter = std::static_pointer_cast<RNMapsGoogleMapViewEventEmitter const>(_eventEmitter);
|
|
294
|
-
facebook::react::RNMapsGoogleMapViewEventEmitter::OnRegionChange data = {
|
|
295
|
-
.region.latitude = [regionDict[@"latitude"] doubleValue],
|
|
296
|
-
.region.longitude = [regionDict[@"longitude"] doubleValue],
|
|
297
|
-
.region.latitudeDelta = [regionDict[@"latitudeDelta"] doubleValue],
|
|
298
|
-
.region.longitudeDelta = [regionDict[@"longitudeDelta"] doubleValue],
|
|
299
|
-
.continuous = [dictionary[@"continuous"] boolValue],
|
|
300
|
-
};
|
|
301
|
-
mapViewEventEmitter->onRegionChange(data);
|
|
302
|
-
}
|
|
303
|
-
};
|
|
304
|
-
|
|
305
364
|
_view.onRegionChangeComplete = [self](NSDictionary* dictionary) {
|
|
306
365
|
if (_eventEmitter) {
|
|
307
366
|
|
|
@@ -388,6 +447,11 @@ using namespace facebook::react;
|
|
|
388
447
|
}
|
|
389
448
|
} else {
|
|
390
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
|
+
}
|
|
391
455
|
}
|
|
392
456
|
}
|
|
393
457
|
|
|
@@ -402,6 +466,11 @@ using namespace facebook::react;
|
|
|
402
466
|
}
|
|
403
467
|
} else {
|
|
404
468
|
[_view removeReactSubview:childComponentView];
|
|
469
|
+
if ([childComponentView isKindOfClass:[RNMapsGooglePolygonView class]]){
|
|
470
|
+
RNMapsGooglePolygonView* polygon = (RNMapsGooglePolygonView *) childComponentView;
|
|
471
|
+
[_polygons removeObject:childComponentView];
|
|
472
|
+
[polygon didRemoveFromMap];
|
|
473
|
+
}
|
|
405
474
|
}
|
|
406
475
|
}
|
|
407
476
|
- (void) prepareForRecycle
|
|
@@ -420,7 +489,7 @@ using namespace facebook::react;
|
|
|
420
489
|
{
|
|
421
490
|
const auto &oldViewProps = *std::static_pointer_cast<RNMapsGoogleMapViewProps const>(_props);
|
|
422
491
|
const auto &newViewProps = *std::static_pointer_cast<RNMapsGoogleMapViewProps const>(props);
|
|
423
|
-
|
|
492
|
+
|
|
424
493
|
|
|
425
494
|
if (oldViewProps.googleMapId != newViewProps.googleMapId) {
|
|
426
495
|
NSString* mapID = RCTNSStringFromString(newViewProps.googleMapId);
|
|
@@ -452,7 +521,7 @@ using namespace facebook::react;
|
|
|
452
521
|
_legacyMapManager.camera = camera;
|
|
453
522
|
}
|
|
454
523
|
|
|
455
|
-
|
|
524
|
+
|
|
456
525
|
|
|
457
526
|
if (!_view){
|
|
458
527
|
[self prepareContentView];
|
|
@@ -500,16 +569,16 @@ using namespace facebook::react;
|
|
|
500
569
|
|
|
501
570
|
|
|
502
571
|
REMAP_MAPVIEW_PROP(pitchEnabled)
|
|
503
|
-
|
|
504
572
|
REMAP_MAPVIEW_PROP(zoomTapEnabled)
|
|
505
|
-
|
|
506
573
|
REMAP_MAPVIEW_PROP(scrollEnabled)
|
|
507
|
-
|
|
574
|
+
|
|
575
|
+
REMAP_MAPVIEW_STRING_PROP(kmlSrc)
|
|
576
|
+
|
|
508
577
|
if (newViewProps.minZoom != oldViewProps.minZoom || newViewProps.maxZoom != oldViewProps.maxZoom){
|
|
509
578
|
[_view setMinZoom:newViewProps.minZoom maxZoom:newViewProps.maxZoom];
|
|
510
579
|
}
|
|
511
580
|
|
|
512
|
-
|
|
581
|
+
[_view setShowsCompass:newViewProps.showsCompass];
|
|
513
582
|
REMAP_MAPVIEW_PROP(showsTraffic)
|
|
514
583
|
REMAP_MAPVIEW_PROP(showsUserLocation)
|
|
515
584
|
REMAP_MAPVIEW_PROP(zoomEnabled)
|
|
@@ -530,8 +599,8 @@ using namespace facebook::react;
|
|
|
530
599
|
viewingAngle:newViewProps.camera.pitch];
|
|
531
600
|
_view.cameraProp = camera;
|
|
532
601
|
}
|
|
533
|
-
|
|
534
|
-
|
|
602
|
+
|
|
603
|
+
|
|
535
604
|
REMAP_MAPVIEW_EDGEINSETS_PROP(mapPadding)
|
|
536
605
|
|
|
537
606
|
|
|
@@ -554,7 +623,7 @@ using namespace facebook::react;
|
|
|
554
623
|
break;
|
|
555
624
|
}
|
|
556
625
|
}
|
|
557
|
-
|
|
626
|
+
|
|
558
627
|
if (oldViewProps.userInterfaceStyle != newViewProps.userInterfaceStyle){
|
|
559
628
|
switch (newViewProps.userInterfaceStyle) {
|
|
560
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
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
#import "SMCalloutView.h"
|
|
15
15
|
#import "RCTConvert+AirMap.h"
|
|
16
16
|
#import "AIRMapCalloutSubview.h"
|
|
17
|
-
#import
|
|
17
|
+
#import <react-native-maps-generated/RNMapsAirModuleDelegate.h>
|
|
18
18
|
|
|
19
19
|
@class AIRMapCoordinate;
|
|
20
20
|
@class AIRMapMarker;
|
|
@@ -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,12 +71,10 @@ 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;
|
|
78
|
-
- (void)didSetRegion;
|
|
79
78
|
- (void)finishLoading;
|
|
80
79
|
- (double)getZoomLevel;
|
|
81
80
|
- (NSArray *)getMapBoundaries;
|