react-native-maps 1.25.0-alpha.7 → 1.25.0

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 (86) hide show
  1. package/README.md +2 -53
  2. package/android/src/main/RCTThirdPartyComponentsProvider.mm +0 -2
  3. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCircleManagerDelegate.java +1 -1
  4. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerDelegate.java +3 -0
  5. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerInterface.java +1 -0
  6. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +6 -0
  7. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +2 -0
  8. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerDelegate.java +1 -1
  9. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +1 -1
  10. package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +41 -5
  11. package/android/src/main/java/com/rnmaps/fabric/PolygonManager.java +9 -2
  12. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +1 -2
  13. package/android/src/main/java/com/rnmaps/maps/MapMarker.java +46 -3
  14. package/android/src/main/java/com/rnmaps/maps/MapPolyline.java +8 -1
  15. package/android/src/main/java/com/rnmaps/maps/MapView.java +104 -51
  16. package/android/src/main/java/com/rnmaps/maps/MapsPackage.java +84 -27
  17. package/android/src/main/java/com/rnmaps/maps/RegionChangeEvent.java +1 -4
  18. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +6 -6
  19. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +6 -6
  20. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.cpp +5 -2
  21. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.h +27 -2
  22. package/ios/AirGoogleMaps/AIRGoogleMap.mm +13 -12
  23. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +4 -0
  24. package/ios/AirGoogleMaps/RNMapsGoogleMapView.h +3 -3
  25. package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +6 -6
  26. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +4 -4
  27. package/ios/AirMaps/AIRMap.h +2 -1
  28. package/ios/AirMaps/AIRMapManager.m +34 -18
  29. package/ios/AirMaps/AIRMapMarker.m +7 -1
  30. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.mm +2 -2
  31. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.mm +1 -1
  32. package/ios/AirMaps/RNMapsAirModule.mm +3 -3
  33. package/ios/AirMaps/RNMapsMapView.h +4 -4
  34. package/ios/AirMaps/RNMapsMapView.mm +55 -10
  35. package/ios/AirMaps/RNMapsMapViewManager.mm +1 -1
  36. package/ios/AirMaps/RNMapsMarkerView.mm +4 -3
  37. package/ios/generated/RNMapsAirModuleDelegate.h +1 -1
  38. package/ios/generated/{RNMapsHostVewDelegate.h → RNMapsHostViewDelegate.h} +1 -1
  39. package/ios/generated/RNMapsSpecs/ComponentDescriptors.cpp +2 -0
  40. package/ios/generated/RNMapsSpecs/ComponentDescriptors.h +2 -0
  41. package/ios/generated/RNMapsSpecs/EventEmitters.cpp +8 -6
  42. package/ios/generated/RNMapsSpecs/EventEmitters.h +20 -6
  43. package/ios/generated/RNMapsSpecs/Props.cpp +37 -2
  44. package/ios/generated/RNMapsSpecs/Props.h +110 -13
  45. package/ios/generated/RNMapsSpecs/ShadowNodes.cpp +2 -0
  46. package/ios/generated/RNMapsSpecs/ShadowNodes.h +22 -0
  47. package/ios/generated/RNMapsSpecs/States.h +24 -0
  48. package/ios/generated/module.modulemap +1 -1
  49. package/package.json +10 -4
  50. package/plugin/build/ios.js +3 -3
  51. package/src/AnimatedRegion.ts +3 -1
  52. package/src/Geojson.tsx +5 -5
  53. package/src/MapCallout.tsx +5 -5
  54. package/src/MapCalloutSubview.tsx +9 -5
  55. package/src/MapCircle.tsx +5 -5
  56. package/src/MapHeatmap.tsx +11 -6
  57. package/src/MapLocalTile.tsx +4 -4
  58. package/src/MapMarker.tsx +38 -17
  59. package/src/MapMarkerNativeComponent.ts +3 -2
  60. package/src/MapOverlay.tsx +10 -10
  61. package/src/MapPolygon.tsx +6 -6
  62. package/src/MapPolygon.types.ts +2 -2
  63. package/src/MapPolyline.tsx +5 -5
  64. package/src/MapUrlTile.tsx +4 -4
  65. package/src/MapView.tsx +34 -37
  66. package/src/MapView.types.ts +2 -3
  67. package/src/MapViewNativeComponent.ts +3 -3
  68. package/src/MapWMSTile.tsx +4 -4
  69. package/src/createFabricMap.tsx +39 -37
  70. package/src/decorateMapComponent.ts +9 -3
  71. package/src/fixImageProp.ts +1 -1
  72. package/src/index.ts +1 -1
  73. package/src/sharedTypes.ts +1 -1
  74. package/src/specs/NativeAirMapsModule.ts +1 -1
  75. package/src/specs/NativeComponentCallout.ts +1 -1
  76. package/src/specs/NativeComponentCircle.ts +3 -2
  77. package/src/specs/NativeComponentGoogleMapView.ts +12 -10
  78. package/src/specs/NativeComponentGooglePolygon.ts +12 -1
  79. package/src/specs/NativeComponentMapView.ts +12 -10
  80. package/src/specs/NativeComponentMarker.ts +26 -2
  81. package/src/specs/NativeComponentOverlay.ts +1 -1
  82. package/src/specs/NativeComponentPolyline.ts +2 -2
  83. package/src/specs/NativeComponentUrlTile.ts +4 -1
  84. package/src/specs/NativeComponentWMSTile.ts +4 -1
  85. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +0 -98
  86. package/ios/AirMaps.xcodeproj/project.pbxproj +0 -627
@@ -61,7 +61,7 @@ class RNMapsCircleProps final : public ViewProps {
61
61
  SharedColor fillColor{};
62
62
  double radius{0.0};
63
63
  SharedColor strokeColor{};
64
- Float strokeWidth{0.0};
64
+ Float strokeWidth{1.0};
65
65
  bool tappable{false};
66
66
  };
67
67
 
@@ -478,6 +478,7 @@ class RNMapsGooglePolygonProps final : public ViewProps {
478
478
  std::vector<RNMapsGooglePolygonCoordinatesStruct> coordinates{};
479
479
  SharedColor fillColor{};
480
480
  SharedColor strokeColor{};
481
+ Float strokeWidth{1.0};
481
482
  bool geodesic{false};
482
483
  std::vector<std::vector<RNMapsGooglePolygonHolesStruct>> holes{};
483
484
  bool tappable{false};
@@ -1048,6 +1049,28 @@ static inline std::string toString(const RNMapsMarkerCalloutOffsetStruct &value)
1048
1049
  return "[Object RNMapsMarkerCalloutOffsetStruct]";
1049
1050
  }
1050
1051
 
1052
+ struct RNMapsMarkerCenterOffsetStruct {
1053
+ double x{0.0};
1054
+ double y{0.0};
1055
+ };
1056
+
1057
+ static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, RNMapsMarkerCenterOffsetStruct &result) {
1058
+ auto map = (std::unordered_map<std::string, RawValue>)value;
1059
+
1060
+ auto tmp_x = map.find("x");
1061
+ if (tmp_x != map.end()) {
1062
+ fromRawValue(context, tmp_x->second, result.x);
1063
+ }
1064
+ auto tmp_y = map.find("y");
1065
+ if (tmp_y != map.end()) {
1066
+ fromRawValue(context, tmp_y->second, result.y);
1067
+ }
1068
+ }
1069
+
1070
+ static inline std::string toString(const RNMapsMarkerCenterOffsetStruct &value) {
1071
+ return "[Object RNMapsMarkerCenterOffsetStruct]";
1072
+ }
1073
+
1051
1074
  struct RNMapsMarkerCoordinateStruct {
1052
1075
  double latitude{0.0};
1053
1076
  double longitude{0.0};
@@ -1081,10 +1104,12 @@ class RNMapsMarkerProps final : public ViewProps {
1081
1104
  ImageSource image{};
1082
1105
  RNMapsMarkerCalloutOffsetStruct calloutOffset{};
1083
1106
  RNMapsMarkerDisplayPriority displayPriority{RNMapsMarkerDisplayPriority::Required};
1107
+ RNMapsMarkerCenterOffsetStruct centerOffset{};
1084
1108
  RNMapsMarkerCoordinateStruct coordinate{};
1085
1109
  std::string description{};
1086
1110
  bool draggable{false};
1087
1111
  std::string title{};
1112
+ bool tracksViewChanges{true};
1088
1113
  std::string identifier{};
1089
1114
  bool isPreselected{false};
1090
1115
  double opacity{1.0};
@@ -1252,7 +1277,7 @@ class RNMapsPolylineProps final : public ViewProps {
1252
1277
  RNMapsPolylineLineJoin lineJoin{RNMapsPolylineLineJoin::Miter};
1253
1278
  SharedColor strokeColor{};
1254
1279
  std::vector<SharedColor> strokeColors{};
1255
- Float strokeWidth{0.0};
1280
+ Float strokeWidth{1.0};
1256
1281
  bool tappable{false};
1257
1282
  };
1258
1283
 
@@ -519,17 +519,19 @@ id regionAsJSON(MKCoordinateRegion region) {
519
519
 
520
520
  - (void)willMove:(BOOL)gesture {
521
521
  _isAnimating = YES;
522
- id event = @{@"isGesture": [NSNumber numberWithBool:gesture]};
523
- if (self.onRegionChangeStart) self.onRegionChangeStart(event);
522
+ GMSCameraPosition *position = self.camera;
523
+ id event = @{@"region": regionAsJSON([AIRGoogleMap makeGMSCameraPositionFromMap:self andGMSCameraPosition:position]),
524
+ @"isGesture": [NSNumber numberWithBool:gesture],
525
+ };
526
+ if (self.onRegionChangeStart) self.onRegionChangeStart(event);
524
527
  }
525
528
 
526
529
  - (void)didChangeCameraPosition:(GMSCameraPosition *)position isGesture:(BOOL)isGesture{
527
- id event = @{@"continuous": @YES,
528
- @"region": regionAsJSON([AIRGoogleMap makeGMSCameraPositionFromMap:self andGMSCameraPosition:position]),
529
- @"isGesture": [NSNumber numberWithBool:isGesture],
530
- };
531
-
532
- if (self.onRegionChange) self.onRegionChange(event);
530
+ id event = @{@"region": regionAsJSON([AIRGoogleMap makeGMSCameraPositionFromMap:self andGMSCameraPosition:position]),
531
+ @"isGesture": [NSNumber numberWithBool:isGesture],
532
+ };
533
+
534
+ if (self.onRegionChange) self.onRegionChange(event);
533
535
  }
534
536
 
535
537
  - (void)didTapPOIWithPlaceID:(NSString *)placeID
@@ -547,10 +549,9 @@ id regionAsJSON(MKCoordinateRegion region) {
547
549
  }
548
550
 
549
551
  - (void)idleAtCameraPosition:(GMSCameraPosition *)position isGesture:(BOOL)isGesture{
550
- id event = @{@"continuous": @NO,
551
- @"region": regionAsJSON([AIRGoogleMap makeGMSCameraPositionFromMap:self andGMSCameraPosition:position]),
552
- @"isGesture": [NSNumber numberWithBool:isGesture],
553
- };
552
+ id event = @{@"region": regionAsJSON([AIRGoogleMap makeGMSCameraPositionFromMap:self andGMSCameraPosition:position]),
553
+ @"isGesture": [NSNumber numberWithBool:isGesture],
554
+ };
554
555
  if (self.onRegionChangeComplete) self.onRegionChangeComplete(event); // complete
555
556
  _isAnimating = NO;
556
557
  }
@@ -78,6 +78,10 @@
78
78
  _polyline.strokeWidth = strokeWidth;
79
79
  }
80
80
 
81
+ - (void)setFillColor:(UIColor *)fillColor {
82
+ // fillColor not support
83
+ }
84
+
81
85
  - (void)setLineDashPattern:(NSArray<NSNumber *> *)lineDashPattern {
82
86
  _lineDashPattern = lineDashPattern;
83
87
  [self configureStyleSpansIfNeeded];
@@ -11,15 +11,15 @@
11
11
  #import <React/RCTViewComponentView.h>
12
12
  #import <UIKit/UIKit.h>
13
13
  #if __has_include(<ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>)
14
- #import <ReactNativeMaps/generated/RNMapsHostVewDelegate.h>
14
+ #import <ReactNativeMaps/generated/RNMapsHostViewDelegate.h>
15
15
  #else
16
- #import "RNMapsHostVewDelegate.h"
16
+ #import "RNMapsHostViewDelegate.h"
17
17
  #endif
18
18
  @class AIRGoogleMap;
19
19
 
20
20
  NS_ASSUME_NONNULL_BEGIN
21
21
 
22
- @interface RNMapsGoogleMapView : RCTViewComponentView<RNMapsHostVewDelegate>
22
+ @interface RNMapsGoogleMapView : RCTViewComponentView<RNMapsHostViewDelegate>
23
23
 
24
24
  @end
25
25
 
@@ -13,7 +13,7 @@
13
13
  #import "AIRGoogleMapManager.h"
14
14
  #if __has_include(<ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>)
15
15
  #import <ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>
16
- #import <ReactNativeMaps/generated/RNMapsHostVewDelegate.h>
16
+ #import <ReactNativeMaps/generated/RNMapsHostViewDelegate.h>
17
17
  #import <ReactNativeMaps/generated/ComponentDescriptors.h>
18
18
  #import <ReactNativeMaps/generated/EventEmitters.h>
19
19
  #import <ReactNativeMaps/generated/Props.h>
@@ -265,7 +265,7 @@ using namespace facebook::react;
265
265
  .region.longitude = [regionDict[@"longitude"] doubleValue],
266
266
  .region.latitudeDelta = [regionDict[@"latitudeDelta"] doubleValue],
267
267
  .region.longitudeDelta = [regionDict[@"longitudeDelta"] doubleValue],
268
- .continuous = [dictionary[@"continuous"] boolValue],
268
+ .isGesture = [dictionary[@"isGesture"] boolValue],
269
269
  };
270
270
  mapViewEventEmitter->onRegionChange(data);
271
271
  }
@@ -358,8 +358,6 @@ using namespace facebook::react;
358
358
  }
359
359
  };
360
360
 
361
-
362
-
363
361
  _view.onRegionChangeStart = [self](NSDictionary* dictionary) {
364
362
  if (_eventEmitter) {
365
363
 
@@ -370,7 +368,7 @@ using namespace facebook::react;
370
368
  .region.longitude = [regionDict[@"longitude"] doubleValue],
371
369
  .region.latitudeDelta = [regionDict[@"latitudeDelta"] doubleValue],
372
370
  .region.longitudeDelta = [regionDict[@"longitudeDelta"] doubleValue],
373
- .continuous = [dictionary[@"continuous"] boolValue],
371
+ .isGesture = [dictionary[@"isGesture"] boolValue],
374
372
  };
375
373
  mapViewEventEmitter->onRegionChangeStart(data);
376
374
  }
@@ -386,7 +384,7 @@ using namespace facebook::react;
386
384
  .region.longitude = [regionDict[@"longitude"] doubleValue],
387
385
  .region.latitudeDelta = [regionDict[@"latitudeDelta"] doubleValue],
388
386
  .region.longitudeDelta = [regionDict[@"longitudeDelta"] doubleValue],
389
- .continuous = [dictionary[@"continuous"] boolValue],
387
+ .isGesture = [dictionary[@"isGesture"] boolValue],
390
388
  };
391
389
  mapViewEventEmitter->onRegionChangeComplete(data);
392
390
  }
@@ -595,6 +593,8 @@ using namespace facebook::react;
595
593
 
596
594
  REMAP_MAPVIEW_STRING_PROP(kmlSrc)
597
595
  REMAP_MAPVIEW_STRING_PROP(customMapStyleString)
596
+ REMAP_MAPVIEW_PROP(showsBuildings)
597
+ REMAP_MAPVIEW_PROP(rotateEnabled)
598
598
 
599
599
 
600
600
  if (newViewProps.minZoom != oldViewProps.minZoom || newViewProps.maxZoom != oldViewProps.maxZoom){
@@ -12,7 +12,7 @@
12
12
  #import "AIRGoogleMap.h"
13
13
  #if __has_include(<ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>)
14
14
  #import <ReactNativeMaps/generated/RNMapsSpecs.h>
15
- #import <ReactNativeMaps/generated/RNMapsHostVewDelegate.h>
15
+ #import <ReactNativeMaps/generated/RNMapsHostViewDelegate.h>
16
16
  #import <ReactNativeMaps/generated/ComponentDescriptors.h>
17
17
  #import <ReactNativeMaps/generated/EventEmitters.h>
18
18
  #import <ReactNativeMaps/generated/Props.h>
@@ -206,9 +206,9 @@ bool areHolesEqual(const std::vector<std::vector<RNMapsGooglePolygonHolesStruct>
206
206
  if (newViewProps.strokeColor){
207
207
  _view.strokeColor = RCTUIColorFromSharedColor(newViewProps.strokeColor);
208
208
  }
209
-
210
-
211
-
209
+ if (newViewProps.strokeWidth != oldViewProps.strokeWidth){
210
+ _view.strokeWidth = newViewProps.strokeWidth;
211
+ }
212
212
 
213
213
  [super updateProps:props oldProps:oldProps];
214
214
  }
@@ -57,7 +57,9 @@ extern const NSInteger AIRMapMaxZoomLevel;
57
57
  @property (nonatomic, assign) BOOL ignoreRegionChanges;
58
58
 
59
59
  @property (nonatomic, copy) RCTDirectEventBlock onMapReady;
60
+ @property (nonatomic, copy) RCTDirectEventBlock onRegionChangeStart;
60
61
  @property (nonatomic, copy) RCTDirectEventBlock onRegionChange;
62
+ @property (nonatomic, copy) RCTDirectEventBlock onRegionChangeComplete;
61
63
  @property (nonatomic, copy) RCTBubblingEventBlock onPress;
62
64
  @property (nonatomic, copy) RCTBubblingEventBlock onLongPress;
63
65
  @property (nonatomic, copy) RCTDirectEventBlock onPanDrag;
@@ -70,7 +72,6 @@ extern const NSInteger AIRMapMaxZoomLevel;
70
72
  @property (nonatomic, copy) RCTDirectEventBlock onMarkerDragEnd;
71
73
 
72
74
  @property (nonatomic, copy) RCTDirectEventBlock onCalloutPress;
73
- @property (nonatomic, copy) RCTDirectEventBlock onRegionChangeStart;
74
75
  @property (nonatomic, copy) RCTDirectEventBlock onUserLocationChange;
75
76
 
76
77
  - (void)cacheViewIfNeeded;
@@ -112,8 +112,9 @@ RCT_EXPORT_VIEW_PROPERTY(mapPadding, UIEdgeInsets)
112
112
  RCT_EXPORT_VIEW_PROPERTY(mapType, MKMapType)
113
113
  RCT_EXPORT_VIEW_PROPERTY(cameraZoomRange, NSDictionary)
114
114
  RCT_EXPORT_VIEW_PROPERTY(onMapReady, RCTDirectEventBlock)
115
- RCT_EXPORT_VIEW_PROPERTY(onRegionChange, RCTDirectEventBlock)
116
115
  RCT_EXPORT_VIEW_PROPERTY(onRegionChangeStart, RCTDirectEventBlock)
116
+ RCT_EXPORT_VIEW_PROPERTY(onRegionChange, RCTDirectEventBlock)
117
+ RCT_EXPORT_VIEW_PROPERTY(onRegionChangeComplete, RCTDirectEventBlock)
117
118
  RCT_EXPORT_VIEW_PROPERTY(onPanDrag, RCTDirectEventBlock)
118
119
  RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock)
119
120
  RCT_EXPORT_VIEW_PROPERTY(onLongPress, RCTBubblingEventBlock)
@@ -912,12 +913,24 @@ static int kDragCenterContext;
912
913
 
913
914
  - (void)mapView:(AIRMap *)mapView regionWillChangeAnimated:(BOOL)animated
914
915
  {
915
- if (mapView.onRegionChangeStart) mapView.onRegionChangeStart(@{});
916
+ MKCoordinateRegion region = mapView.region;
917
+ if (!CLLocationCoordinate2DIsValid(region.center)) {
918
+ return;
919
+ }
920
+ #define FLUSH_NAN(value) (isnan(value) ? 0 : value)
921
+ if (mapView.onRegionChangeStart) mapView.onRegionChangeStart(@{
922
+ @"region": @{
923
+ @"latitude": @(FLUSH_NAN(region.center.latitude)),
924
+ @"longitude": @(FLUSH_NAN(region.center.longitude)),
925
+ @"latitudeDelta": @(FLUSH_NAN(region.span.latitudeDelta)),
926
+ @"longitudeDelta": @(FLUSH_NAN(region.span.longitudeDelta)),
927
+ }
928
+ });
916
929
  }
917
930
 
918
931
  - (void)mapViewDidChangeVisibleRegion:(AIRMap *)mapView
919
932
  {
920
- [self _regionChanged:mapView];
933
+ [self _regionChanged:mapView continuous:YES];
921
934
  }
922
935
 
923
936
  - (void)mapView:(AIRMap *)mapView regionDidChangeAnimated:(__unused BOOL)animated
@@ -927,9 +940,6 @@ static int kDragCenterContext;
927
940
  if (animated && mapView.ignoreRegionChanges){
928
941
  mapView.ignoreRegionChanges = false;
929
942
  }
930
- if(mapView.hasStartedRendering){
931
- [self _regionChanged:mapView];
932
- }
933
943
 
934
944
  if (mapView.legacyZoomConstraintsEnabled == YES) {
935
945
  [self applyLegacyZoomConstrains:mapView];
@@ -964,7 +974,7 @@ static int kDragCenterContext;
964
974
 
965
975
  #pragma mark Private
966
976
 
967
- - (void)_regionChanged:(AIRMap *)mapView
977
+ - (void)_regionChanged:(AIRMap *)mapView continuous:(BOOL)continuous
968
978
  {
969
979
  BOOL needZoom = NO;
970
980
  CGFloat newLongitudeDelta = 0.0f;
@@ -990,7 +1000,7 @@ static int kDragCenterContext;
990
1000
  }
991
1001
 
992
1002
  // Continuously observe region changes
993
- [self _emitRegionChangeEvent:mapView continuous:YES];
1003
+ [self _emitRegionChangeEvent:mapView continuous:continuous];
994
1004
  }
995
1005
 
996
1006
  - (void)_emitRegionChangeEvent:(AIRMap *)mapView continuous:(BOOL)continuous
@@ -1000,17 +1010,23 @@ static int kDragCenterContext;
1000
1010
  if (!CLLocationCoordinate2DIsValid(region.center)) {
1001
1011
  return;
1002
1012
  }
1003
-
1013
+
1004
1014
  #define FLUSH_NAN(value) (isnan(value) ? 0 : value)
1005
- mapView.onRegionChange(@{
1006
- @"continuous": @(continuous),
1007
- @"region": @{
1008
- @"latitude": @(FLUSH_NAN(region.center.latitude)),
1009
- @"longitude": @(FLUSH_NAN(region.center.longitude)),
1010
- @"latitudeDelta": @(FLUSH_NAN(region.span.latitudeDelta)),
1011
- @"longitudeDelta": @(FLUSH_NAN(region.span.longitudeDelta)),
1012
- }
1013
- });
1015
+ NSDictionary *payload = @{
1016
+ @"region": @{
1017
+ @"latitude": @(FLUSH_NAN(region.center.latitude)),
1018
+ @"longitude": @(FLUSH_NAN(region.center.longitude)),
1019
+ @"latitudeDelta": @(FLUSH_NAN(region.span.latitudeDelta)),
1020
+ @"longitudeDelta": @(FLUSH_NAN(region.span.longitudeDelta)),
1021
+ }
1022
+ };
1023
+
1024
+
1025
+ if (continuous && mapView.onRegionChange) {
1026
+ mapView.onRegionChange(payload);
1027
+ } else if (mapView.onRegionChangeComplete) {
1028
+ mapView.onRegionChangeComplete(payload);
1029
+ }
1014
1030
  }
1015
1031
  }
1016
1032
 
@@ -117,6 +117,7 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
117
117
  _pinView.layer.zPosition = self.zIndex;
118
118
  _pinView.displayPriority = self.displayPriority;
119
119
  _pinView.zPriority = self.zIndex;
120
+ _pinView.centerOffset = self.centerOffset;
120
121
  return _pinView;
121
122
  }
122
123
 
@@ -134,7 +135,7 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
134
135
  _markerView.subtitleVisibility = self.subtitleVisibility ?: MKFeatureVisibilityHidden;
135
136
  _markerView.displayPriority = self.displayPriority;
136
137
  _markerView.zPriority = self.zIndex;
137
-
138
+ _markerView.centerOffset = self.centerOffset;
138
139
 
139
140
  }
140
141
  return _markerView ?: _pinView;
@@ -337,6 +338,11 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
337
338
  [super setCalloutOffset:calloutOffset];
338
339
  }
339
340
 
341
+ - (void) setCenterOffset:(CGPoint)centerOffset
342
+ {
343
+ [super setCenterOffset:centerOffset];
344
+ }
345
+
340
346
  - (BOOL)shouldShowCalloutView
341
347
  {
342
348
  return self.calloutView != nil || self.title != nil || self.subtitle != nil;
@@ -10,7 +10,7 @@
10
10
  #if HAVE_GOOGLE_MAPS == 0
11
11
 
12
12
  #if __has_include(<ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>)
13
- #import <ReactNativeMaps/generated/RNMapsHostVewDelegate.h>
13
+ #import <ReactNativeMaps/generated/RNMapsHostViewDelegate.h>
14
14
  #import <ReactNativeMaps/generated/ComponentDescriptors.h>
15
15
  #import <ReactNativeMaps/generated/EventEmitters.h>
16
16
  #import <ReactNativeMaps/generated/Props.h>
@@ -20,7 +20,7 @@
20
20
  #import "../../generated/RNMapsSpecs/EventEmitters.h"
21
21
  #import "../../generated/RNMapsSpecs/Props.h"
22
22
  #import "../../generated/RNMapsSpecs/RCTComponentViewHelpers.h"
23
- #import "../../generated/RNMapsHostVewDelegate.h"
23
+ #import "../../generated/RNMapsHostViewDelegate.h"
24
24
  #endif
25
25
  #import "RCTFabricComponentsPlugins.h"
26
26
  #import <React/RCTConversions.h>
@@ -10,7 +10,7 @@
10
10
  #if HAVE_GOOGLE_MAPS == 0
11
11
 
12
12
  #if __has_include(<ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>)
13
- #import <ReactNativeMaps/generated/RNMapsHostVewDelegate.h>
13
+ #import <ReactNativeMaps/generated/RNMapsHostViewDelegate.h>
14
14
  #import <ReactNativeMaps/generated/ComponentDescriptors.h>
15
15
  #import <ReactNativeMaps/generated/EventEmitters.h>
16
16
  #import <ReactNativeMaps/generated/Props.h>
@@ -19,10 +19,10 @@
19
19
 
20
20
  #if __has_include(<ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>)
21
21
  #import <ReactNativeMaps/generated/RNMapsSpecs.h>
22
- #import <ReactNativeMaps/generated/RNMapsHostVewDelegate.h>
22
+ #import <ReactNativeMaps/generated/RNMapsHostViewDelegate.h>
23
23
  #else
24
24
  #import "RNMapsSpecs.h"
25
- #import "RNMapsHostVewDelegate.h"
25
+ #import "RNMapsHostViewDelegate.h"
26
26
  #endif
27
27
  @interface RNMapsAirModule()<NativeAirMapsModuleSpec>
28
28
  @end
@@ -36,7 +36,7 @@
36
36
  reject:(RCTPromiseRejectBlock)reject {
37
37
  dispatch_async(dispatch_get_main_queue(), ^{
38
38
  id view = [_viewRegistry_DEPRECATED viewForReactTag:[NSNumber numberWithDouble:tag]];
39
- if ([view conformsToProtocol:@protocol(RNMapsHostVewDelegate)]) {
39
+ if ([view conformsToProtocol:@protocol(RNMapsHostViewDelegate)]) {
40
40
  id<RNMapsAirModuleDelegate> mapViewDelegate = [view mapView];
41
41
  success(mapViewDelegate);
42
42
  } else {
@@ -9,16 +9,16 @@
9
9
 
10
10
  #import <React/RCTViewComponentView.h>
11
11
  #import <UIKit/UIKit.h>
12
- #if __has_include(<ReactNativeMaps/generated/RNMapsHostVewDelegate.h>)
13
- #import <ReactNativeMaps/generated/RNMapsHostVewDelegate.h>
12
+ #if __has_include(<ReactNativeMaps/generated/RNMapsHostViewDelegate.h>)
13
+ #import <ReactNativeMaps/generated/RNMapsHostViewDelegate.h>
14
14
  #else
15
- #import "RNMapsHostVewDelegate.h"
15
+ #import "RNMapsHostViewDelegate.h"
16
16
  #endif
17
17
  @class AIRMap;
18
18
 
19
19
  NS_ASSUME_NONNULL_BEGIN
20
20
 
21
- @interface RNMapsMapView : RCTViewComponentView<RNMapsHostVewDelegate>
21
+ @interface RNMapsMapView : RCTViewComponentView<RNMapsHostViewDelegate>
22
22
 
23
23
  @end
24
24
 
@@ -12,13 +12,15 @@
12
12
  #import "AIRMapManager.h"
13
13
  #import "RNMapsMarkerView.h"
14
14
  #if __has_include(<ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>)
15
+ #import <ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>
15
16
  #import <ReactNativeMaps/generated/RNMapsSpecs.h>
16
- #import <ReactNativeMaps/generated/RNMapsHostVewDelegate.h>
17
+ #import <ReactNativeMaps/generated/RNMapsHostViewDelegate.h>
17
18
  #import <ReactNativeMaps/generated/ComponentDescriptors.h>
18
19
  #import <ReactNativeMaps/generated/EventEmitters.h>
19
20
  #import <ReactNativeMaps/generated/Props.h>
20
21
  #import <ReactNativeMaps/generated/RCTComponentViewHelpers.h>
21
22
  #else
23
+ #import "../generated/RNMapsAirModuleDelegate.h"
22
24
  #import "../generated/RNMapsSpecs/RNMapsSpecs.h"
23
25
  #import "../generated/RNMapsSpecs/ComponentDescriptors.h"
24
26
  #import "../generated/RNMapsSpecs/EventEmitters.h"
@@ -41,7 +43,7 @@ using namespace facebook::react;
41
43
 
42
44
 
43
45
  - (id<RNMapsAirModuleDelegate>) mapView {
44
- return nil;
46
+ return (id<RNMapsAirModuleDelegate>)_view;
45
47
  }
46
48
 
47
49
  - (void) prepareForRecycle
@@ -129,6 +131,34 @@ using namespace facebook::react;
129
131
  _view = (AIRMap *)[_legacyMapManager view];
130
132
 
131
133
  self.contentView = _view;
134
+
135
+ _view.onLongPress = [self](NSDictionary* dictionary) {
136
+ if (_eventEmitter) {
137
+ // Extract values from the NSDictionary
138
+ NSDictionary* coordinateDict = dictionary[@"coordinate"];
139
+ NSDictionary* positionDict = dictionary[@"position"];
140
+
141
+ // Populate the OnMapPressCoordinate struct
142
+ facebook::react::RNMapsMapViewEventEmitter::OnLongPressCoordinate coordinate = {
143
+ .latitude = [coordinateDict[@"latitude"] doubleValue],
144
+ .longitude = [coordinateDict[@"longitude"] doubleValue],
145
+ };
146
+
147
+ // Populate the OnMapPressPosition struct
148
+ facebook::react::RNMapsMapViewEventEmitter::OnLongPressPosition position = {
149
+ .x = [positionDict[@"x"] doubleValue],
150
+ .y = [positionDict[@"y"] doubleValue],
151
+ };
152
+
153
+ auto mapViewEventEmitter = std::static_pointer_cast<RNMapsMapViewEventEmitter const>(_eventEmitter);
154
+ facebook::react::RNMapsMapViewEventEmitter::OnLongPress data = {
155
+ .action = std::string([@"long-press" UTF8String]),
156
+ .position = position,
157
+ .coordinate = coordinate
158
+ };
159
+ mapViewEventEmitter->onLongPress(data);
160
+ }
161
+ };
132
162
 
133
163
  _view.onPress = [self](NSDictionary* dictionary) {
134
164
  if (_eventEmitter) {
@@ -176,7 +206,7 @@ using namespace facebook::react;
176
206
  .region.longitude = [regionDict[@"longitude"] doubleValue],
177
207
  .region.latitudeDelta = [regionDict[@"latitudeDelta"] doubleValue],
178
208
  .region.longitudeDelta = [regionDict[@"longitudeDelta"] doubleValue],
179
- .continuous = [dictionary[@"continuous"] boolValue],
209
+ .isGesture = [dictionary[@"isGesture"] boolValue],
180
210
  };
181
211
  mapViewEventEmitter->onRegionChange(data);
182
212
  }
@@ -309,12 +339,28 @@ using namespace facebook::react;
309
339
  .region.longitude = [regionDict[@"longitude"] doubleValue],
310
340
  .region.latitudeDelta = [regionDict[@"latitudeDelta"] doubleValue],
311
341
  .region.longitudeDelta = [regionDict[@"longitudeDelta"] doubleValue],
312
- .continuous = [dictionary[@"continuous"] boolValue],
342
+ .isGesture = [dictionary[@"isGesture"] boolValue],
313
343
  };
314
344
  mapViewEventEmitter->onRegionChangeStart(data);
315
345
  }
316
346
  };
317
347
 
348
+ _view.onRegionChangeComplete = [self](NSDictionary* dictionary) {
349
+ if (_eventEmitter) {
350
+
351
+ NSDictionary* regionDict = dictionary[@"region"];
352
+ auto mapViewEventEmitter = std::static_pointer_cast<RNMapsMapViewEventEmitter const>(_eventEmitter);
353
+ facebook::react::RNMapsMapViewEventEmitter::OnRegionChangeComplete data = {
354
+ .region.latitude = [regionDict[@"latitude"] doubleValue],
355
+ .region.longitude = [regionDict[@"longitude"] doubleValue],
356
+ .region.latitudeDelta = [regionDict[@"latitudeDelta"] doubleValue],
357
+ .region.longitudeDelta = [regionDict[@"longitudeDelta"] doubleValue],
358
+ .isGesture = [dictionary[@"isGesture"] boolValue],
359
+ };
360
+ mapViewEventEmitter->onRegionChangeComplete(data);
361
+ }
362
+ };
363
+
318
364
 
319
365
  #define HANDLE_MARKER_DRAG_EVENT(eventName, emitterFunction) \
320
366
  if (_eventEmitter) { \
@@ -498,26 +544,25 @@ newViewProps.name.right); \
498
544
 
499
545
  #define REMAP_MAPVIEW_MAPTYPE(rnMapType) MKMapType##rnMapType
500
546
 
501
-
502
547
  REMAP_MAPVIEW_PROP(cacheEnabled)
503
-
504
548
  REMAP_MAPVIEW_PROP(followsUserLocation)
505
549
  REMAP_MAPVIEW_PROP(loadingEnabled)
506
-
507
550
  REMAP_MAPVIEW_PROP(scrollEnabled)
508
551
  REMAP_MAPVIEW_PROP(handlePanDrag)
509
-
510
552
  REMAP_MAPVIEW_PROP(maxDelta)
511
553
  REMAP_MAPVIEW_PROP(maxZoom)
512
554
  REMAP_MAPVIEW_PROP(minDelta)
513
555
  REMAP_MAPVIEW_PROP(minZoom)
514
-
515
556
  REMAP_MAPVIEW_PROP(showsCompass)
516
557
  REMAP_MAPVIEW_PROP(showsScale)
517
558
  REMAP_MAPVIEW_PROP(showsUserLocation)
518
559
  REMAP_MAPVIEW_PROP(userLocationCalloutEnabled)
519
560
  REMAP_MAPVIEW_PROP(zoomEnabled)
520
-
561
+ REMAP_MAPVIEW_PROP(loadingEnabled)
562
+ REMAP_MAPVIEW_PROP(showsTraffic)
563
+ REMAP_MAPVIEW_PROP(pitchEnabled)
564
+ REMAP_MAPVIEW_PROP(showsBuildings)
565
+ REMAP_MAPVIEW_PROP(rotateEnabled)
521
566
 
522
567
  REMAP_MAPVIEW_POINT_PROP(compassOffset)
523
568
 
@@ -33,8 +33,8 @@ RCT_EXPORT_VIEW_PROPERTY(onMarkerDrag, RCTDirectEventBlock)
33
33
  RCT_EXPORT_VIEW_PROPERTY(onMarkerDragEnd, RCTDirectEventBlock)
34
34
 
35
35
  RCT_EXPORT_VIEW_PROPERTY(onRegionChangeStart, RCTDirectEventBlock)
36
- RCT_EXPORT_VIEW_PROPERTY(onRegionChangeComplete, RCTDirectEventBlock)
37
36
  RCT_EXPORT_VIEW_PROPERTY(onRegionChange, RCTDirectEventBlock)
37
+ RCT_EXPORT_VIEW_PROPERTY(onRegionChangeComplete, RCTDirectEventBlock)
38
38
  RCT_EXPORT_VIEW_PROPERTY(onUserLocationChange, RCTDirectEventBlock)
39
39
 
40
40
 
@@ -11,13 +11,13 @@
11
11
  #import "AIRMapMarker.h"
12
12
  #import "AIRMapMarkerManager.h"
13
13
  #if __has_include(<ReactNativeMaps/generated/RNMapsAirModuleDelegate.h>)
14
- #import <ReactNativeMaps/generated/RNMapsHostVewDelegate.h>
14
+ #import <ReactNativeMaps/generated/RNMapsHostViewDelegate.h>
15
15
  #import <ReactNativeMaps/generated/ComponentDescriptors.h>
16
16
  #import <ReactNativeMaps/generated/EventEmitters.h>
17
17
  #import <ReactNativeMaps/generated/Props.h>
18
18
  #import <ReactNativeMaps/generated/RCTComponentViewHelpers.h>
19
19
  #else
20
- #import "../generated/RNMapsHostVewDelegate.h"
20
+ #import "../generated/RNMapsHostViewDelegate.h"
21
21
  #import "../generated/RNMapsSpecs/ComponentDescriptors.h"
22
22
  #import "../generated/RNMapsSpecs/EventEmitters.h"
23
23
  #import "../generated/RNMapsSpecs/Props.h"
@@ -367,8 +367,9 @@ _view.name = CGPointMake(newViewProps.name.x, newViewProps.name.y); \
367
367
 
368
368
  REMAP_MAPVIEW_COLOR_PROP(pinColor)
369
369
 
370
-
371
370
  REMAP_MAPVIEW_POINT_PROP(calloutOffset)
371
+ REMAP_MAPVIEW_POINT_PROP(centerOffset)
372
+
372
373
  if (newViewProps.coordinate.latitude != oldViewProps.coordinate.latitude ||
373
374
  newViewProps.coordinate.longitude != oldViewProps.coordinate.longitude) {
374
375
  CLLocationCoordinate2D coordinates = CLLocationCoordinate2DMake(
@@ -17,7 +17,7 @@
17
17
  success:(RCTPromiseResolveBlock) success error:(RCTPromiseRejectBlock) error;
18
18
 
19
19
  - (NSDictionary *) getCameraDic;
20
- - (NSDictionary*) getMarkersFramesWithOnlyVisible:(BOOL)onlyVisible;
20
+ - (NSDictionary *) getMarkersFramesWithOnlyVisible:(BOOL)onlyVisible;
21
21
  - (NSDictionary *) getMapBoundaries;
22
22
  - (NSDictionary *) getPointForCoordinates:(CLLocationCoordinate2D) location;
23
23
  - (NSDictionary *) getCoordinatesForPoint:(CGPoint) point;
@@ -9,7 +9,7 @@
9
9
  #import <Foundation/Foundation.h>
10
10
  #import "RNMapsAirModuleDelegate.h"
11
11
 
12
- @protocol RNMapsHostVewDelegate <NSObject>
12
+ @protocol RNMapsHostViewDelegate <NSObject>
13
13
  @required
14
14
 
15
15
  - (id<RNMapsAirModuleDelegate>) mapView;
@@ -24,6 +24,8 @@ registry->add(concreteComponentDescriptorProvider<RNMapsMapViewComponentDescript
24
24
  registry->add(concreteComponentDescriptorProvider<RNMapsMarkerComponentDescriptor>());
25
25
  registry->add(concreteComponentDescriptorProvider<RNMapsOverlayComponentDescriptor>());
26
26
  registry->add(concreteComponentDescriptorProvider<RNMapsPolylineComponentDescriptor>());
27
+ registry->add(concreteComponentDescriptorProvider<RNMapsUrlTileComponentDescriptor>());
28
+ registry->add(concreteComponentDescriptorProvider<RNMapsWMSTileComponentDescriptor>());
27
29
  }
28
30
 
29
31
  } // namespace facebook::react
@@ -24,6 +24,8 @@ using RNMapsMapViewComponentDescriptor = ConcreteComponentDescriptor<RNMapsMapVi
24
24
  using RNMapsMarkerComponentDescriptor = ConcreteComponentDescriptor<RNMapsMarkerShadowNode>;
25
25
  using RNMapsOverlayComponentDescriptor = ConcreteComponentDescriptor<RNMapsOverlayShadowNode>;
26
26
  using RNMapsPolylineComponentDescriptor = ConcreteComponentDescriptor<RNMapsPolylineShadowNode>;
27
+ using RNMapsUrlTileComponentDescriptor = ConcreteComponentDescriptor<RNMapsUrlTileShadowNode>;
28
+ using RNMapsWMSTileComponentDescriptor = ConcreteComponentDescriptor<RNMapsWMSTileShadowNode>;
27
29
 
28
30
  void RNMapsSpecs_registerComponentDescriptorsFromCodegen(
29
31
  std::shared_ptr<const ComponentDescriptorProviderRegistry> registry);