react-native-maps 1.21.0-alpha.11 → 1.21.0-alpha.111

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.
Files changed (133) hide show
  1. package/android/build.gradle +77 -57
  2. package/android/gradlew +1 -2
  3. package/android/src/main/java/com/rnmaps/fabric/CalloutManager.java +77 -0
  4. package/android/src/main/java/com/rnmaps/fabric/CircleManager.java +94 -0
  5. package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
  6. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +619 -0
  7. package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +258 -0
  8. package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +235 -2
  9. package/android/src/main/java/com/rnmaps/fabric/OverlayManager.java +95 -0
  10. package/android/src/main/java/com/rnmaps/fabric/PolygonManager.java +89 -0
  11. package/android/src/main/java/com/rnmaps/fabric/PolylineManager.java +121 -0
  12. package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
  13. package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +28 -0
  14. package/android/src/main/java/com/rnmaps/fabric/event/OnDoublePressEvent.java +27 -0
  15. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +28 -0
  16. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +28 -0
  17. package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +28 -0
  18. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorBuildingFocusedEvent.java +28 -0
  19. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorLevelActivatedEvent.java +28 -0
  20. package/android/src/main/java/com/rnmaps/fabric/event/OnKmlReadyEvent.java +28 -0
  21. package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +28 -0
  22. package/android/src/main/java/com/rnmaps/fabric/event/OnMapLoadedEvent.java +29 -0
  23. package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +29 -0
  24. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +28 -0
  25. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +28 -0
  26. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +28 -0
  27. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +28 -0
  28. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +28 -0
  29. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +28 -0
  30. package/android/src/main/java/com/rnmaps/fabric/event/OnPanDragEvent.java +28 -0
  31. package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +27 -0
  32. package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +27 -0
  33. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeCompleteEvent.java +30 -0
  34. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +48 -0
  35. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeStartEvent.java +33 -0
  36. package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +28 -0
  37. package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +28 -0
  38. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +39 -3
  39. package/android/src/main/java/com/rnmaps/maps/MapCallout.java +18 -0
  40. package/android/src/main/java/com/rnmaps/maps/MapCircle.java +24 -0
  41. package/android/src/main/java/com/rnmaps/maps/MapManager.java +14 -14
  42. package/android/src/main/java/com/rnmaps/maps/MapMarker.java +637 -556
  43. package/android/src/main/java/com/rnmaps/maps/MapMarkerManager.java +3 -3
  44. package/android/src/main/java/com/rnmaps/maps/MapModule.java +206 -206
  45. package/android/src/main/java/com/rnmaps/maps/MapOverlay.java +267 -151
  46. package/android/src/main/java/com/rnmaps/maps/MapPolygon.java +31 -1
  47. package/android/src/main/java/com/rnmaps/maps/MapPolyline.java +207 -141
  48. package/android/src/main/java/com/rnmaps/maps/MapPolylineManager.java +1 -16
  49. package/android/src/main/java/com/rnmaps/maps/MapView.java +1650 -1337
  50. package/ios/AirGoogleMaps/AIRGMSMarker.h +1 -1
  51. package/ios/AirGoogleMaps/AIRGoogleMap.h +9 -10
  52. package/ios/AirGoogleMaps/AIRGoogleMap.m +112 -74
  53. package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
  54. package/ios/AirGoogleMaps/AIRGoogleMapManager.m +10 -9
  55. package/ios/AirGoogleMaps/AIRGoogleMapMarker.h +2 -0
  56. package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +347 -243
  57. package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +1 -1
  58. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.h +2 -1
  59. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +30 -0
  60. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +0 -1
  61. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +0 -7
  62. package/ios/AirGoogleMaps/AIRGoogleMapUrlTile.m +2 -2
  63. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.h +1 -1
  64. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +4 -4
  65. package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.m +2 -0
  66. package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +137 -57
  67. package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +16 -1
  68. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
  69. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +217 -0
  70. package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +26 -0
  71. package/ios/AirMaps/AIRMap.h +7 -7
  72. package/ios/AirMaps/AIRMap.m +227 -236
  73. package/ios/AirMaps/AIRMapManager.m +13 -7
  74. package/ios/AirMaps/AIRMapMarker.h +1 -0
  75. package/ios/AirMaps/AIRMapMarker.m +165 -103
  76. package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
  77. package/ios/AirMaps/NSObject+DynamicLoad.h +16 -0
  78. package/ios/AirMaps/NSObject+DynamicLoad.m +28 -0
  79. package/ios/AirMaps/RNMapsAirModule.h +1 -1
  80. package/ios/AirMaps/RNMapsAirModule.mm +4 -3
  81. package/ios/AirMaps/RNMapsAirModuleDelegate.h +2 -2
  82. package/ios/AirMaps/RNMapsMapView.mm +332 -295
  83. package/ios/AirMaps/RNMapsMapViewManager.mm +19 -1
  84. package/ios/AirMaps/RNMapsMarkerView.h +24 -0
  85. package/ios/AirMaps/RNMapsMarkerView.mm +430 -0
  86. package/ios/AirMaps/RNMapsMarkerViewManager.mm +28 -0
  87. package/ios/AirMaps.xcodeproj/project.pbxproj +20 -0
  88. package/lib/MapCircle.d.ts +1 -1
  89. package/lib/MapHeatmap.d.ts +2 -2
  90. package/lib/MapHeatmap.js +1 -1
  91. package/lib/MapMarker.d.ts +16 -3
  92. package/lib/MapMarker.js +55 -13
  93. package/lib/MapMarkerNativeComponent.js +0 -2
  94. package/lib/MapOverlay.d.ts +1 -0
  95. package/lib/MapOverlay.js +11 -9
  96. package/lib/MapPolygon.d.ts +1 -1
  97. package/lib/MapPolyline.d.ts +7 -7
  98. package/lib/MapView.d.ts +17 -29
  99. package/lib/MapView.js +114 -128
  100. package/lib/MapView.types.d.ts +1 -1
  101. package/lib/createFabricMap.d.ts +1 -0
  102. package/lib/createFabricMap.js +17 -4
  103. package/lib/decorateMapComponent.js +40 -0
  104. package/lib/fixImageProp.d.ts +4 -0
  105. package/lib/fixImageProp.js +16 -0
  106. package/lib/specs/NativeAirMapsModule.d.ts +2 -2
  107. package/lib/specs/NativeComponentCallout.d.ts +46 -0
  108. package/lib/specs/NativeComponentCallout.js +9 -0
  109. package/lib/specs/NativeComponentCircle.d.ts +74 -0
  110. package/lib/specs/NativeComponentCircle.js +7 -0
  111. package/lib/specs/NativeComponentGoogleMapView.d.ts +19 -22
  112. package/lib/specs/NativeComponentGoogleMapView.js +1 -0
  113. package/lib/specs/NativeComponentGooglePolygon.d.ts +75 -0
  114. package/lib/specs/NativeComponentGooglePolygon.js +7 -0
  115. package/lib/specs/NativeComponentMapView.d.ts +43 -56
  116. package/lib/specs/NativeComponentMapView.js +2 -3
  117. package/lib/specs/NativeComponentMarker.d.ts +258 -0
  118. package/lib/specs/NativeComponentMarker.js +19 -0
  119. package/lib/specs/NativeComponentOverlay.d.ts +67 -0
  120. package/lib/specs/NativeComponentOverlay.js +7 -0
  121. package/lib/specs/NativeComponentPolyline.d.ts +101 -0
  122. package/lib/specs/NativeComponentPolyline.js +7 -0
  123. package/package.json +21 -19
  124. package/react-native-maps.podspec +15 -15
  125. package/specs/NativeAirMapsModule.ts +36 -0
  126. package/specs/NativeComponentCallout.ts +63 -0
  127. package/specs/NativeComponentCircle.ts +94 -0
  128. package/specs/NativeComponentGoogleMapView.ts +913 -0
  129. package/specs/NativeComponentGooglePolygon.ts +94 -0
  130. package/specs/NativeComponentMapView.ts +1059 -0
  131. package/specs/NativeComponentMarker.ts +326 -0
  132. package/specs/NativeComponentOverlay.ts +89 -0
  133. package/specs/NativeComponentPolyline.ts +124 -0
@@ -12,7 +12,7 @@
12
12
 
13
13
  @class AIRGoogleMapMarker;
14
14
 
15
- @interface AIRGMSMarker : GMSAdvancedMarker
15
+ @interface AIRGMSMarker : GMSMarker
16
16
  @property (nonatomic, strong) NSString *identifier;
17
17
  @property (nonatomic, weak) AIRGoogleMapMarker *fakeMarker;
18
18
  @property (nonatomic, copy) RCTBubblingEventBlock onPress;
@@ -27,18 +27,17 @@
27
27
  @property (nonatomic, assign) NSString *customMapStyleString;
28
28
  @property (nonatomic, assign) UIEdgeInsets mapPadding;
29
29
  @property (nonatomic, assign) NSString *paddingAdjustmentBehaviorString;
30
- @property (nonatomic, copy) RCTBubblingEventBlock onMapReady;
31
- @property (nonatomic, copy) RCTBubblingEventBlock onMapLoaded;
32
- @property (nonatomic, copy) RCTBubblingEventBlock onKmlReady;
30
+ @property (nonatomic, copy) RCTDirectEventBlock onMapReady;
31
+ @property (nonatomic, copy) RCTDirectEventBlock onMapLoaded;
32
+ @property (nonatomic, copy) RCTDirectEventBlock onKmlReady;
33
33
  @property (nonatomic, copy) RCTBubblingEventBlock onPress;
34
34
  @property (nonatomic, copy) RCTBubblingEventBlock onLongPress;
35
- @property (nonatomic, copy) RCTBubblingEventBlock onPanDrag;
36
- @property (nonatomic, copy) RCTBubblingEventBlock onUserLocationChange;
37
- @property (nonatomic, copy) RCTBubblingEventBlock onMarkerPress;
38
- @property (nonatomic, copy) RCTBubblingEventBlock onMarkerSelect;
39
- @property (nonatomic, copy) RCTBubblingEventBlock onMarkerDeselect;
40
- @property (nonatomic, copy) RCTBubblingEventBlock onChange;
41
- @property (nonatomic, copy) RCTBubblingEventBlock onPoiClick;
35
+ @property (nonatomic, copy) RCTDirectEventBlock onPanDrag;
36
+ @property (nonatomic, copy) RCTDirectEventBlock onUserLocationChange;
37
+ @property (nonatomic, copy) RCTDirectEventBlock onMarkerPress;
38
+ @property (nonatomic, copy) RCTDirectEventBlock onMarkerSelect;
39
+ @property (nonatomic, copy) RCTDirectEventBlock onMarkerDeselect;
40
+ @property (nonatomic, copy) RCTDirectEventBlock onPoiClick;
42
41
  @property (nonatomic, copy) RCTDirectEventBlock onRegionChangeStart;
43
42
  @property (nonatomic, copy) RCTDirectEventBlock onRegionChange;
44
43
  @property (nonatomic, copy) RCTDirectEventBlock onRegionChangeComplete;
@@ -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
 
@@ -239,12 +240,17 @@ id regionAsJSON(MKCoordinateRegion region) {
239
240
  // This is where we intercept them and do the appropriate underlying mapview action.
240
241
  if ([subview isKindOfClass:[AIRGoogleMapMarker class]]) {
241
242
  AIRGoogleMapMarker *marker = (AIRGoogleMapMarker*)subview;
242
- marker.realMarker.map = self;
243
+ [marker didInsertInMap:self];
243
244
  [self.markers addObject:marker];
244
245
  } else if ([subview isKindOfClass:[AIRGoogleMapPolygon class]]) {
245
246
  AIRGoogleMapPolygon *polygon = (AIRGoogleMapPolygon*)subview;
246
- polygon.polygon.map = self;
247
+ [polygon didInsertInMap:self];
247
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];
248
254
  } else if ([subview isKindOfClass:[AIRGoogleMapPolyline class]]) {
249
255
  AIRGoogleMapPolyline *polyline = (AIRGoogleMapPolyline*)subview;
250
256
  polyline.polyline.map = self;
@@ -289,7 +295,9 @@ id regionAsJSON(MKCoordinateRegion region) {
289
295
  AIRGoogleMapMarker *marker = (AIRGoogleMapMarker*)subview;
290
296
  marker.realMarker.map = nil;
291
297
  [self.markers removeObject:marker];
292
- } else if ([subview isKindOfClass:[AIRGoogleMapPolygon class]]) {
298
+ } else if ([NSStringFromClass([subview class]) isEqualToString:@"RNMapsGooglePolygonView"]) {
299
+ [self.polygons removeObject:subview];
300
+ } else if ([subview isKindOfClass:[AIRGoogleMapPolygon class]]) {
293
301
  AIRGoogleMapPolygon *polygon = (AIRGoogleMapPolygon*)subview;
294
302
  polygon.polygon.map = nil;
295
303
  [self.polygons removeObject:polygon];
@@ -354,6 +362,19 @@ id regionAsJSON(MKCoordinateRegion region) {
354
362
  ];
355
363
  }
356
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
+
357
378
  - (void)layoutSubviews {
358
379
  [super layoutSubviews];
359
380
  if(_didLayoutSubviews) return;
@@ -390,7 +411,7 @@ id regionAsJSON(MKCoordinateRegion region) {
390
411
  }
391
412
 
392
413
  - (void)setRegion:(MKCoordinateRegion)region {
393
- // TODO: The JS component is repeatedly setting region unnecessarily. We might want to deal with that in here.
414
+ if (_isAnimating || !CLLocationCoordinate2DIsValid(region.center)) return;
394
415
  _region = region;
395
416
  if(_didLayoutSubviews) {
396
417
  self.camera = [AIRGoogleMap makeGMSCameraPositionFromMap:self andMKCoordinateRegion:region];
@@ -410,6 +431,7 @@ id regionAsJSON(MKCoordinateRegion region) {
410
431
  }
411
432
 
412
433
  - (void)setCameraProp:(GMSCameraPosition*)camera {
434
+ if (_isAnimating || !CLLocationCoordinate2DIsValid([camera target])) return;
413
435
  _initialCamera = camera;
414
436
  if(_didLayoutSubviews) {
415
437
  self.camera = camera;
@@ -491,6 +513,7 @@ id regionAsJSON(MKCoordinateRegion region) {
491
513
  }
492
514
 
493
515
  - (void)willMove:(BOOL)gesture {
516
+ _isAnimating = YES;
494
517
  id event = @{@"isGesture": [NSNumber numberWithBool:gesture]};
495
518
  if (self.onRegionChangeStart) self.onRegionChangeStart(event);
496
519
  }
@@ -501,7 +524,7 @@ id regionAsJSON(MKCoordinateRegion region) {
501
524
  @"isGesture": [NSNumber numberWithBool:isGesture],
502
525
  };
503
526
 
504
- if (self.onChange) self.onChange(event);
527
+ if (self.onRegionChange) self.onRegionChange(event);
505
528
  }
506
529
 
507
530
  - (void)didTapPOIWithPlaceID:(NSString *)placeID
@@ -523,7 +546,8 @@ id regionAsJSON(MKCoordinateRegion region) {
523
546
  @"region": regionAsJSON([AIRGoogleMap makeGMSCameraPositionFromMap:self andGMSCameraPosition:position]),
524
547
  @"isGesture": [NSNumber numberWithBool:isGesture],
525
548
  };
526
- if (self.onChange) self.onChange(event); // complete
549
+ if (self.onRegionChangeComplete) self.onRegionChangeComplete(event); // complete
550
+ _isAnimating = NO;
527
551
  }
528
552
 
529
553
  - (void)setMapPadding:(UIEdgeInsets)mapPadding {
@@ -772,8 +796,7 @@ id regionAsJSON(MKCoordinateRegion region) {
772
796
  };
773
797
  }
774
798
 
775
- -(void) takeSnapshotWithConfig:(NSDictionary *)config callback:(RCTPromiseResolveBlock) callback
776
- {
799
+ -(void) takeSnapshotWithConfig:(NSDictionary *)config success:(RCTPromiseResolveBlock)success error:(RCTPromiseRejectBlock)error {
777
800
  /* unused
778
801
  NSNumber *width = [config objectForKey:@"width"];
779
802
  NSNumber *height = [config objectForKey:@"height"];
@@ -782,9 +805,10 @@ id regionAsJSON(MKCoordinateRegion region) {
782
805
 
783
806
  NSString *format = [config objectForKey:@"format"];
784
807
  NSString *result = [config objectForKey:@"result"];
785
- NSString *filePath = [config objectForKey:@"filePath"];
808
+ NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970];
809
+ NSString *pathComponent = [NSString stringWithFormat:@"Documents/snapshot-%.20lf.%@", timeStamp, format];
810
+ NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent: pathComponent];
786
811
 
787
-
788
812
  // TODO: currently we are ignoring width, height, region
789
813
 
790
814
  UIGraphicsBeginImageContextWithOptions(self.frame.size, YES, 0.0f);
@@ -798,14 +822,14 @@ id regionAsJSON(MKCoordinateRegion region) {
798
822
  } else if([format isEqualToString:@"jpg"]) {
799
823
  data = UIImageJPEGRepresentation(image, quality.floatValue);
800
824
  }
801
-
825
+
802
826
  if ([result isEqualToString:@"file"]) {
803
827
  [data writeToFile:filePath atomically:YES];
804
- callback(filePath);
828
+ success(filePath);
805
829
  } else if ([result isEqualToString:@"base64"]) {
806
- callback([data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn]);
830
+ success([data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn]);
807
831
  }
808
-
832
+
809
833
  UIGraphicsEndImageContext();
810
834
  }
811
835
 
@@ -1044,7 +1068,7 @@ id regionAsJSON(MKCoordinateRegion region) {
1044
1068
  }
1045
1069
 
1046
1070
  + (NSString *)GetIconUrl:(GMUPlacemark *) marker parser:(GMUKMLParser *) parser {
1047
- #ifdef HAVE_GOOGLE_MAPS_UTILS
1071
+ #if HAVE_GOOGLE_MAPS_UTILS
1048
1072
  if (marker.style.styleID != nil) {
1049
1073
  for (GMUStyle *style in parser.styles) {
1050
1074
  if (style.styleID == marker.style.styleID) {
@@ -1063,8 +1087,53 @@ id regionAsJSON(MKCoordinateRegion region) {
1063
1087
  return _kmlSrc;
1064
1088
  }
1065
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
+
1066
1135
  - (void)setKmlSrc:(NSString *)kmlUrl {
1067
- #ifdef HAVE_GOOGLE_MAPS_UTILS
1136
+ #if HAVE_GOOGLE_MAPS_UTILS
1068
1137
 
1069
1138
  _kmlSrc = kmlUrl;
1070
1139
 
@@ -1072,53 +1141,28 @@ id regionAsJSON(MKCoordinateRegion region) {
1072
1141
  NSData *urlData = nil;
1073
1142
 
1074
1143
  if ([url isFileURL]) {
1075
- urlData = [NSData dataWithContentsOfURL:url];
1144
+ [self setKMLData:[NSData dataWithContentsOfURL:url]];
1076
1145
  } else {
1077
- urlData = [[NSFileManager defaultManager] contentsAtPath:kmlUrl];
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];
1078
1163
  }
1079
1164
 
1080
- GMUKMLParser *parser = [[GMUKMLParser alloc] initWithData:urlData];
1081
- [parser parse];
1082
1165
 
1083
- NSUInteger index = 0;
1084
- NSMutableArray *markers = [[NSMutableArray alloc]init];
1085
-
1086
- for (GMUPlacemark *place in parser.placemarks) {
1087
-
1088
- CLLocationCoordinate2D location =((GMUPoint *) place.geometry).coordinate;
1089
-
1090
- AIRGoogleMapMarker *marker = (AIRGoogleMapMarker *)[[AIRGoogleMapMarkerManager alloc] view];
1091
- if (!marker.bridge) {
1092
- marker.bridge = _bridge;
1093
- }
1094
- marker.identifier = place.title;
1095
- marker.coordinate = location;
1096
- marker.title = place.title;
1097
- marker.subtitle = place.snippet;
1098
- marker.pinColor = place.style.fillColor;
1099
- marker.imageSrc = [AIRGoogleMap GetIconUrl:place parser:parser];
1100
- marker.layer.backgroundColor = [UIColor clearColor].CGColor;
1101
- marker.layer.position = CGPointZero;
1102
-
1103
- [self insertReactSubview:(UIView *) marker atIndex:index];
1104
-
1105
- [markers addObject:@{@"id": marker.identifier,
1106
- @"title": marker.title,
1107
- @"description": marker.subtitle,
1108
- @"coordinate": @{
1109
- @"latitude": @(location.latitude),
1110
- @"longitude": @(location.longitude)
1111
- }
1112
- }];
1113
-
1114
- index++;
1115
- }
1116
-
1117
- id event = @{@"markers": markers};
1118
- if (self.onKmlReady) self.onKmlReady(event);
1119
- #else
1120
- REQUIRES_GOOGLE_MAPS_UTILS();
1121
- #endif
1122
1166
  }
1123
1167
 
1124
1168
 
@@ -1128,11 +1172,9 @@ id regionAsJSON(MKCoordinateRegion region) {
1128
1172
  return;
1129
1173
  }
1130
1174
  self.onIndoorBuildingFocused(@{
1131
- @"IndoorBuilding": @{
1132
- @"activeLevelIndex": @0,
1133
- @"underground": @false,
1134
- @"levels": [[NSMutableArray alloc]init]
1135
- }
1175
+ @"activeLevelIndex": @0,
1176
+ @"underground": @false,
1177
+ @"levels": [[NSMutableArray alloc]init]
1136
1178
  });
1137
1179
  }
1138
1180
  NSInteger i = 0;
@@ -1149,11 +1191,9 @@ id regionAsJSON(MKCoordinateRegion region) {
1149
1191
  return;
1150
1192
  }
1151
1193
  self.onIndoorBuildingFocused(@{
1152
- @"IndoorBuilding": @{
1153
- @"activeLevelIndex": @(building.defaultLevelIndex),
1154
- @"underground": @(building.underground),
1155
- @"levels": arrayLevels
1156
- }
1194
+ @"activeLevelIndex": @(building.defaultLevelIndex),
1195
+ @"underground": @(building.underground),
1196
+ @"levels": arrayLevels
1157
1197
  });
1158
1198
  }
1159
1199
 
@@ -1169,11 +1209,9 @@ id regionAsJSON(MKCoordinateRegion region) {
1169
1209
  i++;
1170
1210
  }
1171
1211
  self.onIndoorLevelActivated(@{
1172
- @"IndoorLevel": @{
1173
- @"activeLevelIndex": @(i),
1174
- @"name": level.name,
1175
- @"shortName": level.shortName
1176
- }
1212
+ @"activeLevelIndex": @(i),
1213
+ @"name": level.name,
1214
+ @"shortName": level.shortName
1177
1215
  });
1178
1216
  }
1179
1217
  // do nothing, passed as options on initialization
@@ -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
- if(_didMoveToWindow) return;
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
@@ -97,14 +97,13 @@ RCT_EXPORT_VIEW_PROPERTY(showsIndoorLevelPicker, BOOL)
97
97
  RCT_EXPORT_VIEW_PROPERTY(customMapStyleString, NSString)
98
98
  RCT_EXPORT_VIEW_PROPERTY(mapPadding, UIEdgeInsets)
99
99
  RCT_REMAP_VIEW_PROPERTY(paddingAdjustmentBehavior, paddingAdjustmentBehaviorString, NSString)
100
- RCT_EXPORT_VIEW_PROPERTY(onMapReady, RCTBubblingEventBlock)
101
- RCT_EXPORT_VIEW_PROPERTY(onMapLoaded, RCTBubblingEventBlock)
102
- RCT_EXPORT_VIEW_PROPERTY(onKmlReady, RCTBubblingEventBlock)
100
+ RCT_EXPORT_VIEW_PROPERTY(onMapReady, RCTDirectEventBlock)
101
+ RCT_EXPORT_VIEW_PROPERTY(onMapLoaded, RCTDirectEventBlock)
102
+ RCT_EXPORT_VIEW_PROPERTY(onKmlReady, RCTDirectEventBlock)
103
103
  RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock)
104
104
  RCT_EXPORT_VIEW_PROPERTY(onLongPress, RCTBubblingEventBlock)
105
- RCT_EXPORT_VIEW_PROPERTY(onPanDrag, RCTBubblingEventBlock)
106
- RCT_EXPORT_VIEW_PROPERTY(onUserLocationChange, RCTBubblingEventBlock)
107
- RCT_EXPORT_VIEW_PROPERTY(onChange, RCTBubblingEventBlock)
105
+ RCT_EXPORT_VIEW_PROPERTY(onPanDrag, RCTDirectEventBlock)
106
+ RCT_EXPORT_VIEW_PROPERTY(onUserLocationChange, RCTDirectEventBlock)
108
107
  RCT_EXPORT_VIEW_PROPERTY(onMarkerPress, RCTDirectEventBlock)
109
108
  RCT_EXPORT_VIEW_PROPERTY(onMarkerSelect, RCTDirectEventBlock)
110
109
  RCT_EXPORT_VIEW_PROPERTY(onMarkerDeselect, RCTDirectEventBlock)
@@ -266,9 +265,11 @@ RCT_EXPORT_METHOD(takeSnapshot:(nonnull NSNumber *)reactTag
266
265
  } else {
267
266
  AIRGoogleMap *mapView = (AIRGoogleMap *)view;
268
267
  NSMutableDictionary* config = [NSMutableDictionary new];
269
-
270
- [mapView takeSnapshotWithConfig:config callback:callback];
271
-
268
+
269
+ [mapView takeSnapshotWithConfig:config success:callback error:^(NSString *code, NSString *message, NSError *error) {
270
+ callback(@[error]);
271
+ }];
272
+
272
273
  [config setObject:width forKey:@"width"];
273
274
  [config setObject:height forKey:@"height"];
274
275
  [config setObject:format forKey:@"format"];
@@ -53,6 +53,8 @@
53
53
  - (void)didDragMarker:(AIRGMSMarker *)marker;
54
54
  - (id)makeEventData;
55
55
  - (id)makeEventData:(NSString *)action;
56
+ - (UIView *) iconView;
57
+ - (void) didInsertInMap:(AIRGoogleMap *) map;
56
58
  @end
57
59
 
58
60
  #endif