react-native-maps 1.21.0-alpha.7 → 1.21.0-alpha.71
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 +38 -13
- package/android/generated/RCTAppDependencyProvider.h +25 -0
- package/android/generated/RCTAppDependencyProvider.mm +55 -0
- package/android/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
- package/android/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
- package/android/generated/RCTThirdPartyComponentsProvider.h +16 -0
- package/android/generated/RCTThirdPartyComponentsProvider.mm +26 -0
- package/android/generated/ReactAppDependencyProvider.podspec +34 -0
- package/android/generated/java/com/facebook/fbreact/specs/NativeAirMapsModuleSpec.java +63 -0
- package/android/generated/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerDelegate.java +35 -0
- package/android/generated/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerInterface.java +17 -0
- package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerDelegate.java +200 -0
- package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +71 -0
- package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +104 -0
- package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +39 -0
- package/android/generated/jni/CMakeLists.txt +36 -0
- package/android/generated/jni/RNMapsSpecs-generated.cpp +68 -0
- package/android/generated/jni/RNMapsSpecs.h +31 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.cpp +26 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +28 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +918 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +787 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/Props.cpp +154 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/Props.h +1058 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI-generated.cpp +74 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI.h +268 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.cpp +21 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +76 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/States.cpp +16 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/States.h +77 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/android/src/main/java/com/rnmaps/fabric/CalloutManager.java +77 -0
- package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
- package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +593 -0
- package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +259 -0
- package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +156 -4
- 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/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/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/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 +22 -2
- package/android/src/main/java/com/rnmaps/maps/MapCallout.java +18 -0
- package/android/src/main/java/com/rnmaps/maps/MapManager.java +14 -14
- package/android/src/main/java/com/rnmaps/maps/MapMarker.java +79 -3
- package/android/src/main/java/com/rnmaps/maps/MapModule.java +206 -206
- package/android/src/main/java/com/rnmaps/maps/MapView.java +1618 -1346
- package/ios/AirGoogleMaps/AIRGoogleMap.h +3 -2
- package/ios/AirGoogleMaps/AIRGoogleMap.m +153 -48
- package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
- package/ios/AirGoogleMaps/AIRGoogleMapManager.m +17 -28
- package/ios/AirGoogleMaps/AIRGoogleMapMarker.h +2 -0
- package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +347 -243
- 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/AIRGoogleMapWMSTile.h +1 -1
- package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +2 -2
- package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.h +3 -0
- package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.m +2 -0
- package/ios/AirGoogleMaps/RNMapsGoogleMapView.h +3 -3
- package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +161 -61
- package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
- package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +217 -0
- package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +25 -0
- package/ios/AirMaps/AIRMap.h +6 -3
- package/ios/AirMaps/AIRMap.m +289 -145
- package/ios/AirMaps/AIRMapManager.m +8 -17
- 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/RCTConvert+AirMap.h +4 -0
- package/ios/AirMaps/RCTConvert+AirMap.m +2 -0
- package/ios/AirMaps/RNMapsAirModule.h +1 -1
- package/ios/AirMaps/RNMapsAirModule.mm +42 -172
- package/ios/AirMaps/RNMapsAirModuleDelegate.h +24 -0
- package/ios/AirMaps/RNMapsHostVewDelegate.h +17 -0
- package/ios/AirMaps/RNMapsMapView.h +3 -3
- package/ios/AirMaps/RNMapsMapView.mm +344 -307
- package/ios/AirMaps/RNMapsMarkerView.h +24 -0
- package/ios/AirMaps/RNMapsMarkerView.mm +430 -0
- package/ios/AirMaps/RNMapsMarkerViewManager.mm +21 -0
- package/ios/AirMaps/UIView +AirMap.m +20 -0
- package/ios/AirMaps/UIView+AirMap.h +11 -0
- package/ios/AirMaps.xcodeproj/project.pbxproj +60 -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 +26 -0
- package/ios/generated/RNMapsSpecs/ComponentDescriptors.h +28 -0
- package/ios/generated/RNMapsSpecs/EventEmitters.cpp +918 -0
- package/ios/generated/RNMapsSpecs/EventEmitters.h +787 -0
- package/ios/generated/RNMapsSpecs/Props.cpp +154 -0
- package/ios/generated/RNMapsSpecs/Props.h +1058 -0
- package/ios/generated/RNMapsSpecs/RCTComponentViewHelpers.h +549 -0
- package/ios/generated/RNMapsSpecs/RNMapsSpecs-generated.mm +92 -0
- package/ios/generated/RNMapsSpecs/RNMapsSpecs.h +137 -0
- package/ios/generated/RNMapsSpecs/ShadowNodes.cpp +21 -0
- package/ios/generated/RNMapsSpecs/ShadowNodes.h +76 -0
- package/ios/generated/RNMapsSpecs/States.cpp +16 -0
- package/ios/generated/RNMapsSpecs/States.h +77 -0
- package/ios/generated/RNMapsSpecsJSI-generated.cpp +74 -0
- package/ios/generated/RNMapsSpecsJSI.h +268 -0
- package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
- package/lib/MapCallout.js +1 -0
- package/lib/MapMarker.d.ts +15 -2
- package/lib/MapMarker.js +53 -9
- package/lib/MapMarkerNativeComponent.js +0 -2
- package/lib/MapOverlay.js +2 -8
- package/lib/MapPolyline.d.ts +1 -1
- package/lib/MapView.d.ts +7 -22
- package/lib/MapView.js +83 -94
- package/lib/{FabricMapView.d.ts → createFabricMap.d.ts} +7 -11
- package/lib/createFabricMap.js +175 -0
- package/lib/decorateMapComponent.js +22 -0
- package/lib/specs/NativeAirMapsModule.d.ts +2 -2
- package/lib/specs/NativeComponentCallout.d.ts +46 -0
- package/lib/specs/NativeComponentCallout.js +9 -0
- package/lib/specs/NativeComponentGoogleMapView.d.ts +12 -12
- package/lib/specs/NativeComponentGooglePolygon.d.ts +75 -0
- package/lib/specs/NativeComponentGooglePolygon.js +9 -0
- package/lib/specs/NativeComponentMapView.d.ts +19 -36
- package/lib/specs/NativeComponentMapView.js +1 -3
- package/lib/specs/NativeComponentMarker.d.ts +258 -0
- package/lib/specs/NativeComponentMarker.js +19 -0
- package/package.json +15 -10
- package/react-native-maps.podspec +2 -1
- package/lib/FabricMapView.js +0 -181
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
#import <GoogleMaps/GoogleMaps.h>
|
|
14
14
|
#import <MapKit/MapKit.h>
|
|
15
15
|
#import "AIRGMSMarker.h"
|
|
16
|
-
|
|
16
|
+
#import "RNMapsAirModuleDelegate.h"
|
|
17
17
|
#import "AIRGoogleMapCoordinate.h"
|
|
18
18
|
|
|
19
|
-
@interface AIRGoogleMap : GMSMapView
|
|
19
|
+
@interface AIRGoogleMap : GMSMapView <RNMapsAirModuleDelegate>
|
|
20
20
|
|
|
21
21
|
// TODO: don't use MK region?
|
|
22
22
|
@property (nonatomic, weak) RCTBridge *bridge;
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
@property (nonatomic, assign) BOOL showsIndoorLevelPicker;
|
|
68
68
|
@property (nonatomic, assign) NSString *kmlSrc;
|
|
69
69
|
|
|
70
|
+
- (BOOL) isReady;
|
|
70
71
|
- (void)didPrepareMap;
|
|
71
72
|
- (void)mapViewDidFinishTileRendering;
|
|
72
73
|
- (BOOL)didTapMarker:(GMSMarker *)marker;
|
|
@@ -69,6 +69,7 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
69
69
|
BOOL _didPrepareMap;
|
|
70
70
|
BOOL _didCallOnMapReady;
|
|
71
71
|
BOOL _zoomTapEnabled;
|
|
72
|
+
BOOL _isAnimating;
|
|
72
73
|
NSString* _googleMapId;
|
|
73
74
|
}
|
|
74
75
|
|
|
@@ -146,6 +147,10 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
146
147
|
};
|
|
147
148
|
}
|
|
148
149
|
|
|
150
|
+
- (BOOL) isReady {
|
|
151
|
+
return _didPrepareMap;
|
|
152
|
+
}
|
|
153
|
+
|
|
149
154
|
-(void) fitToCoordinates:(NSArray<AIRGoogleMapCoordinate *> *) coordinates withEdgePadding:(NSDictionary*) edgePadding animated:(BOOL)animated
|
|
150
155
|
{
|
|
151
156
|
CLLocationCoordinate2D myLocation = coordinates.firstObject.coordinate;
|
|
@@ -235,12 +240,17 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
235
240
|
// This is where we intercept them and do the appropriate underlying mapview action.
|
|
236
241
|
if ([subview isKindOfClass:[AIRGoogleMapMarker class]]) {
|
|
237
242
|
AIRGoogleMapMarker *marker = (AIRGoogleMapMarker*)subview;
|
|
238
|
-
marker
|
|
243
|
+
[marker didInsertInMap:self];
|
|
239
244
|
[self.markers addObject:marker];
|
|
240
245
|
} else if ([subview isKindOfClass:[AIRGoogleMapPolygon class]]) {
|
|
241
246
|
AIRGoogleMapPolygon *polygon = (AIRGoogleMapPolygon*)subview;
|
|
242
|
-
polygon
|
|
247
|
+
[polygon didInsertInMap:self];
|
|
243
248
|
[self.polygons addObject:polygon];
|
|
249
|
+
|
|
250
|
+
} else if ([NSStringFromClass([subview class]) isEqualToString:@"RNMapsGooglePolygonView"]){
|
|
251
|
+
// RNMapsGooglePolygonView *polygon = (RNMapsGooglePolygonView*)subview;
|
|
252
|
+
// [polygon didInsertInMap:self];
|
|
253
|
+
[self.polygons addObject:subview];
|
|
244
254
|
} else if ([subview isKindOfClass:[AIRGoogleMapPolyline class]]) {
|
|
245
255
|
AIRGoogleMapPolyline *polyline = (AIRGoogleMapPolyline*)subview;
|
|
246
256
|
polyline.polyline.map = self;
|
|
@@ -285,7 +295,9 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
285
295
|
AIRGoogleMapMarker *marker = (AIRGoogleMapMarker*)subview;
|
|
286
296
|
marker.realMarker.map = nil;
|
|
287
297
|
[self.markers removeObject:marker];
|
|
288
|
-
} else if ([subview
|
|
298
|
+
} else if ([NSStringFromClass([subview class]) isEqualToString:@"RNMapsGooglePolygonView"]) {
|
|
299
|
+
[self.polygons removeObject:subview];
|
|
300
|
+
} else if ([subview isKindOfClass:[AIRGoogleMapPolygon class]]) {
|
|
289
301
|
AIRGoogleMapPolygon *polygon = (AIRGoogleMapPolygon*)subview;
|
|
290
302
|
polygon.polygon.map = nil;
|
|
291
303
|
[self.polygons removeObject:polygon];
|
|
@@ -350,6 +362,19 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
350
362
|
];
|
|
351
363
|
}
|
|
352
364
|
|
|
365
|
+
- (NSDictionary *) getCameraDic {
|
|
366
|
+
GMSCameraPosition *camera = [self camera];
|
|
367
|
+
return @{
|
|
368
|
+
@"center": @{
|
|
369
|
+
@"latitude": @(camera.target.latitude),
|
|
370
|
+
@"longitude": @(camera.target.longitude),
|
|
371
|
+
},
|
|
372
|
+
@"pitch": @(camera.viewingAngle),
|
|
373
|
+
@"heading": @(camera.bearing),
|
|
374
|
+
@"zoom": @(camera.zoom),
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
|
|
353
378
|
- (void)layoutSubviews {
|
|
354
379
|
[super layoutSubviews];
|
|
355
380
|
if(_didLayoutSubviews) return;
|
|
@@ -386,7 +411,7 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
386
411
|
}
|
|
387
412
|
|
|
388
413
|
- (void)setRegion:(MKCoordinateRegion)region {
|
|
389
|
-
|
|
414
|
+
if (_isAnimating || !CLLocationCoordinate2DIsValid(region.center)) return;
|
|
390
415
|
_region = region;
|
|
391
416
|
if(_didLayoutSubviews) {
|
|
392
417
|
self.camera = [AIRGoogleMap makeGMSCameraPositionFromMap:self andMKCoordinateRegion:region];
|
|
@@ -406,6 +431,7 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
406
431
|
}
|
|
407
432
|
|
|
408
433
|
- (void)setCameraProp:(GMSCameraPosition*)camera {
|
|
434
|
+
if (_isAnimating || !CLLocationCoordinate2DIsValid([camera target])) return;
|
|
409
435
|
_initialCamera = camera;
|
|
410
436
|
if(_didLayoutSubviews) {
|
|
411
437
|
self.camera = camera;
|
|
@@ -487,6 +513,7 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
487
513
|
}
|
|
488
514
|
|
|
489
515
|
- (void)willMove:(BOOL)gesture {
|
|
516
|
+
_isAnimating = YES;
|
|
490
517
|
id event = @{@"isGesture": [NSNumber numberWithBool:gesture]};
|
|
491
518
|
if (self.onRegionChangeStart) self.onRegionChangeStart(event);
|
|
492
519
|
}
|
|
@@ -520,6 +547,7 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
520
547
|
@"isGesture": [NSNumber numberWithBool:isGesture],
|
|
521
548
|
};
|
|
522
549
|
if (self.onChange) self.onChange(event); // complete
|
|
550
|
+
_isAnimating = NO;
|
|
523
551
|
}
|
|
524
552
|
|
|
525
553
|
- (void)setMapPadding:(UIEdgeInsets)mapPadding {
|
|
@@ -748,6 +776,63 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
748
776
|
return [map cameraForBounds:bounds insets:UIEdgeInsetsZero];
|
|
749
777
|
}
|
|
750
778
|
|
|
779
|
+
#pragma mark - RNMapsAirModuleDelegate
|
|
780
|
+
|
|
781
|
+
- (NSDictionary *) getCoordinatesForPoint:(CGPoint)point
|
|
782
|
+
{
|
|
783
|
+
CLLocationCoordinate2D coordinate = [self.projection coordinateForPoint:point];
|
|
784
|
+
return @{
|
|
785
|
+
@"latitude": @(coordinate.latitude),
|
|
786
|
+
@"longitude": @(coordinate.longitude),
|
|
787
|
+
};
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
- (NSDictionary *) getPointForCoordinates:(CLLocationCoordinate2D)location
|
|
791
|
+
{
|
|
792
|
+
CGPoint touchPoint = [self.projection pointForCoordinate:location];
|
|
793
|
+
return @{
|
|
794
|
+
@"x": @(touchPoint.x),
|
|
795
|
+
@"y": @(touchPoint.y),
|
|
796
|
+
};
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
-(void) takeSnapshotWithConfig:(NSDictionary *)config success:(RCTPromiseResolveBlock)success error:(RCTPromiseRejectBlock)error {
|
|
800
|
+
/* unused
|
|
801
|
+
NSNumber *width = [config objectForKey:@"width"];
|
|
802
|
+
NSNumber *height = [config objectForKey:@"height"];
|
|
803
|
+
*/
|
|
804
|
+
NSNumber *quality = [config objectForKey:@"quality"];
|
|
805
|
+
|
|
806
|
+
NSString *format = [config objectForKey:@"format"];
|
|
807
|
+
NSString *result = [config objectForKey:@"result"];
|
|
808
|
+
NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970];
|
|
809
|
+
NSString *pathComponent = [NSString stringWithFormat:@"Documents/snapshot-%.20lf.%@", timeStamp, format];
|
|
810
|
+
NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent: pathComponent];
|
|
811
|
+
|
|
812
|
+
// TODO: currently we are ignoring width, height, region
|
|
813
|
+
|
|
814
|
+
UIGraphicsBeginImageContextWithOptions(self.frame.size, YES, 0.0f);
|
|
815
|
+
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
|
|
816
|
+
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
|
|
817
|
+
|
|
818
|
+
NSData *data;
|
|
819
|
+
if ([format isEqualToString:@"png"]) {
|
|
820
|
+
data = UIImagePNGRepresentation(image);
|
|
821
|
+
|
|
822
|
+
} else if([format isEqualToString:@"jpg"]) {
|
|
823
|
+
data = UIImageJPEGRepresentation(image, quality.floatValue);
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
if ([result isEqualToString:@"file"]) {
|
|
827
|
+
[data writeToFile:filePath atomically:YES];
|
|
828
|
+
success(filePath);
|
|
829
|
+
} else if ([result isEqualToString:@"base64"]) {
|
|
830
|
+
success([data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn]);
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
UIGraphicsEndImageContext();
|
|
834
|
+
}
|
|
835
|
+
|
|
751
836
|
#pragma mark - Utils
|
|
752
837
|
|
|
753
838
|
- (CGRect) frameForMarker:(AIRGoogleMapMarker*) mrkView {
|
|
@@ -1002,6 +1087,51 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
1002
1087
|
return _kmlSrc;
|
|
1003
1088
|
}
|
|
1004
1089
|
|
|
1090
|
+
- (void) setKMLData:(NSData *) urlData {
|
|
1091
|
+
GMUKMLParser *parser = [[GMUKMLParser alloc] initWithData:urlData];
|
|
1092
|
+
[parser parse];
|
|
1093
|
+
|
|
1094
|
+
NSUInteger index = 0;
|
|
1095
|
+
NSMutableArray *markers = [[NSMutableArray alloc]init];
|
|
1096
|
+
|
|
1097
|
+
for (GMUPlacemark *place in parser.placemarks) {
|
|
1098
|
+
|
|
1099
|
+
CLLocationCoordinate2D location =((GMUPoint *) place.geometry).coordinate;
|
|
1100
|
+
|
|
1101
|
+
AIRGoogleMapMarker *marker = (AIRGoogleMapMarker *)[[AIRGoogleMapMarkerManager alloc] view];
|
|
1102
|
+
if (!marker.bridge) {
|
|
1103
|
+
marker.bridge = _bridge;
|
|
1104
|
+
}
|
|
1105
|
+
marker.identifier = place.title;
|
|
1106
|
+
marker.coordinate = location;
|
|
1107
|
+
marker.title = place.title;
|
|
1108
|
+
marker.subtitle = place.snippet;
|
|
1109
|
+
marker.pinColor = place.style.fillColor;
|
|
1110
|
+
marker.imageSrc = [AIRGoogleMap GetIconUrl:place parser:parser];
|
|
1111
|
+
marker.layer.backgroundColor = [UIColor clearColor].CGColor;
|
|
1112
|
+
marker.layer.position = CGPointZero;
|
|
1113
|
+
|
|
1114
|
+
[self insertReactSubview:(UIView *) marker atIndex:index];
|
|
1115
|
+
|
|
1116
|
+
[markers addObject:@{@"id": marker.identifier,
|
|
1117
|
+
@"title": marker.title,
|
|
1118
|
+
@"description": marker.subtitle,
|
|
1119
|
+
@"coordinate": @{
|
|
1120
|
+
@"latitude": @(location.latitude),
|
|
1121
|
+
@"longitude": @(location.longitude)
|
|
1122
|
+
}
|
|
1123
|
+
}];
|
|
1124
|
+
|
|
1125
|
+
index++;
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
id event = @{@"markers": markers};
|
|
1129
|
+
if (self.onKmlReady) self.onKmlReady(event);
|
|
1130
|
+
#else
|
|
1131
|
+
REQUIRES_GOOGLE_MAPS_UTILS();
|
|
1132
|
+
#endif
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1005
1135
|
- (void)setKmlSrc:(NSString *)kmlUrl {
|
|
1006
1136
|
#ifdef HAVE_GOOGLE_MAPS_UTILS
|
|
1007
1137
|
|
|
@@ -1011,53 +1141,28 @@ id regionAsJSON(MKCoordinateRegion region) {
|
|
|
1011
1141
|
NSData *urlData = nil;
|
|
1012
1142
|
|
|
1013
1143
|
if ([url isFileURL]) {
|
|
1014
|
-
|
|
1144
|
+
[self setKMLData:[NSData dataWithContentsOfURL:url]];
|
|
1015
1145
|
} else {
|
|
1016
|
-
|
|
1146
|
+
__weak AIRGoogleMap *weakSelf = self;
|
|
1147
|
+
|
|
1148
|
+
NSURLSession *session = [NSURLSession sharedSession];
|
|
1149
|
+
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url
|
|
1150
|
+
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
|
|
1151
|
+
if (error) {
|
|
1152
|
+
NSLog(@"Error fetching data: %@", error.localizedDescription);
|
|
1153
|
+
return;
|
|
1154
|
+
} else {
|
|
1155
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
1156
|
+
AIRGoogleMap *strongSelf = weakSelf;
|
|
1157
|
+
[strongSelf setKMLData:data];
|
|
1158
|
+
});
|
|
1159
|
+
|
|
1160
|
+
}
|
|
1161
|
+
}];
|
|
1162
|
+
[dataTask resume];
|
|
1017
1163
|
}
|
|
1018
1164
|
|
|
1019
|
-
|
|
1020
|
-
[parser parse];
|
|
1021
|
-
|
|
1022
|
-
NSUInteger index = 0;
|
|
1023
|
-
NSMutableArray *markers = [[NSMutableArray alloc]init];
|
|
1024
|
-
|
|
1025
|
-
for (GMUPlacemark *place in parser.placemarks) {
|
|
1026
|
-
|
|
1027
|
-
CLLocationCoordinate2D location =((GMUPoint *) place.geometry).coordinate;
|
|
1028
|
-
|
|
1029
|
-
AIRGoogleMapMarker *marker = (AIRGoogleMapMarker *)[[AIRGoogleMapMarkerManager alloc] view];
|
|
1030
|
-
if (!marker.bridge) {
|
|
1031
|
-
marker.bridge = _bridge;
|
|
1032
|
-
}
|
|
1033
|
-
marker.identifier = place.title;
|
|
1034
|
-
marker.coordinate = location;
|
|
1035
|
-
marker.title = place.title;
|
|
1036
|
-
marker.subtitle = place.snippet;
|
|
1037
|
-
marker.pinColor = place.style.fillColor;
|
|
1038
|
-
marker.imageSrc = [AIRGoogleMap GetIconUrl:place parser:parser];
|
|
1039
|
-
marker.layer.backgroundColor = [UIColor clearColor].CGColor;
|
|
1040
|
-
marker.layer.position = CGPointZero;
|
|
1041
|
-
|
|
1042
|
-
[self insertReactSubview:(UIView *) marker atIndex:index];
|
|
1043
|
-
|
|
1044
|
-
[markers addObject:@{@"id": marker.identifier,
|
|
1045
|
-
@"title": marker.title,
|
|
1046
|
-
@"description": marker.subtitle,
|
|
1047
|
-
@"coordinate": @{
|
|
1048
|
-
@"latitude": @(location.latitude),
|
|
1049
|
-
@"longitude": @(location.longitude)
|
|
1050
|
-
}
|
|
1051
|
-
}];
|
|
1052
|
-
|
|
1053
|
-
index++;
|
|
1054
|
-
}
|
|
1055
|
-
|
|
1056
|
-
id event = @{@"markers": markers};
|
|
1057
|
-
if (self.onKmlReady) self.onKmlReady(event);
|
|
1058
|
-
#else
|
|
1059
|
-
REQUIRES_GOOGLE_MAPS_UTILS();
|
|
1060
|
-
#endif
|
|
1165
|
+
|
|
1061
1166
|
}
|
|
1062
1167
|
|
|
1063
1168
|
|
|
@@ -25,20 +25,32 @@
|
|
|
25
25
|
}
|
|
26
26
|
return self;
|
|
27
27
|
}
|
|
28
|
+
- (void) prepare
|
|
29
|
+
{
|
|
30
|
+
if(_didMoveToWindow) return;
|
|
31
|
+
_didMoveToWindow = true;
|
|
32
|
+
if(_fillColor) {
|
|
33
|
+
_circle.fillColor = _fillColor;
|
|
34
|
+
}
|
|
35
|
+
if(_strokeColor) {
|
|
36
|
+
_circle.strokeColor = _strokeColor;
|
|
37
|
+
}
|
|
38
|
+
if(_strokeWidth) {
|
|
39
|
+
_circle.strokeWidth = _strokeWidth;
|
|
40
|
+
}
|
|
41
|
+
if (_zIndex) {
|
|
42
|
+
_circle.zIndex = _zIndex;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
- (void) didMoveToSuperview
|
|
46
|
+
{
|
|
47
|
+
[super didMoveToSuperview];
|
|
48
|
+
[self prepare];
|
|
49
|
+
}
|
|
28
50
|
|
|
29
51
|
- (void)didMoveToWindow {
|
|
30
52
|
[super didMoveToWindow];
|
|
31
|
-
|
|
32
|
-
_didMoveToWindow = true;
|
|
33
|
-
if(_fillColor) {
|
|
34
|
-
_circle.fillColor = _fillColor;
|
|
35
|
-
}
|
|
36
|
-
if(_strokeColor) {
|
|
37
|
-
_circle.strokeColor = _strokeColor;
|
|
38
|
-
}
|
|
39
|
-
if(_strokeWidth) {
|
|
40
|
-
_circle.strokeWidth = _strokeWidth;
|
|
41
|
-
}
|
|
53
|
+
[self prepare];
|
|
42
54
|
}
|
|
43
55
|
|
|
44
56
|
- (void)setRadius:(double)radius
|
|
@@ -253,7 +253,7 @@ RCT_EXPORT_METHOD(takeSnapshot:(nonnull NSNumber *)reactTag
|
|
|
253
253
|
format:(nonnull NSString *)format
|
|
254
254
|
quality:(nonnull NSNumber *)quality
|
|
255
255
|
result:(nonnull NSString *)result
|
|
256
|
-
withCallback:(
|
|
256
|
+
withCallback:(RCTPromiseResolveBlock)callback)
|
|
257
257
|
{
|
|
258
258
|
NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970];
|
|
259
259
|
NSString *pathComponent = [NSString stringWithFormat:@"Documents/snapshot-%.20lf.%@", timeStamp, format];
|
|
@@ -264,7 +264,19 @@ RCT_EXPORT_METHOD(takeSnapshot:(nonnull NSNumber *)reactTag
|
|
|
264
264
|
if (![view isKindOfClass:[AIRGoogleMap class]]) {
|
|
265
265
|
RCTLogError(@"Invalid view returned from registry, expecting AIRMap, got: %@", view);
|
|
266
266
|
} else {
|
|
267
|
-
|
|
267
|
+
AIRGoogleMap *mapView = (AIRGoogleMap *)view;
|
|
268
|
+
NSMutableDictionary* config = [NSMutableDictionary new];
|
|
269
|
+
|
|
270
|
+
[mapView takeSnapshotWithConfig:config success:callback error:^(NSString *code, NSString *message, NSError *error) {
|
|
271
|
+
callback(@[error]);
|
|
272
|
+
}];
|
|
273
|
+
|
|
274
|
+
[config setObject:width forKey:@"width"];
|
|
275
|
+
[config setObject:height forKey:@"height"];
|
|
276
|
+
[config setObject:format forKey:@"format"];
|
|
277
|
+
[config setObject:quality forKey:@"quality"];
|
|
278
|
+
[config setObject:result forKey:@"result"];
|
|
279
|
+
[config setObject:filePath forKey:@"filePath"];
|
|
268
280
|
|
|
269
281
|
// TODO: currently we are ignoring width, height, region
|
|
270
282
|
|
|
@@ -310,13 +322,7 @@ RCT_EXPORT_METHOD(pointForCoordinate:(nonnull NSNumber *)reactTag
|
|
|
310
322
|
RCTLogError(@"Invalid view returned from registry, expecting AIRMap, got: %@", view);
|
|
311
323
|
} else {
|
|
312
324
|
AIRGoogleMap *mapView = (AIRGoogleMap *)view;
|
|
313
|
-
|
|
314
|
-
CGPoint touchPoint = [mapView.projection pointForCoordinate:coord];
|
|
315
|
-
|
|
316
|
-
resolve(@{
|
|
317
|
-
@"x": @(touchPoint.x),
|
|
318
|
-
@"y": @(touchPoint.y),
|
|
319
|
-
});
|
|
325
|
+
resolve([mapView getPointForCoordinates:coord]);
|
|
320
326
|
}
|
|
321
327
|
}];
|
|
322
328
|
}
|
|
@@ -337,13 +343,7 @@ RCT_EXPORT_METHOD(coordinateForPoint:(nonnull NSNumber *)reactTag
|
|
|
337
343
|
RCTLogError(@"Invalid view returned from registry, expecting AIRMap, got: %@", view);
|
|
338
344
|
} else {
|
|
339
345
|
AIRGoogleMap *mapView = (AIRGoogleMap *)view;
|
|
340
|
-
|
|
341
|
-
CLLocationCoordinate2D coordinate = [mapView.projection coordinateForPoint:pt];
|
|
342
|
-
|
|
343
|
-
resolve(@{
|
|
344
|
-
@"latitude": @(coordinate.latitude),
|
|
345
|
-
@"longitude": @(coordinate.longitude),
|
|
346
|
-
});
|
|
346
|
+
resolve([view getCoordinatesForPoint:pt]);
|
|
347
347
|
}
|
|
348
348
|
}];
|
|
349
349
|
}
|
|
@@ -373,18 +373,7 @@ RCT_EXPORT_METHOD(getMapBoundaries:(nonnull NSNumber *)reactTag
|
|
|
373
373
|
if (![view isKindOfClass:[AIRGoogleMap class]]) {
|
|
374
374
|
RCTLogError(@"Invalid view returned from registry, expecting AIRGoogleMap, got: %@", view);
|
|
375
375
|
} else {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
resolve(@{
|
|
379
|
-
@"northEast" : @{
|
|
380
|
-
@"longitude" : boundingBox[0][0],
|
|
381
|
-
@"latitude" : boundingBox[0][1]
|
|
382
|
-
},
|
|
383
|
-
@"southWest" : @{
|
|
384
|
-
@"longitude" : boundingBox[1][0],
|
|
385
|
-
@"latitude" : boundingBox[1][1]
|
|
386
|
-
}
|
|
387
|
-
});
|
|
376
|
+
resolve([view getMapBoundaries]);
|
|
388
377
|
}
|
|
389
378
|
}];
|
|
390
379
|
}
|