react-native-maps 1.21.0-alpha.27 → 1.21.0-alpha.29

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.
@@ -517,13 +517,9 @@ using namespace facebook::react;
517
517
 
518
518
 
519
519
  REMAP_MAPVIEW_PROP(pitchEnabled)
520
-
521
520
  REMAP_MAPVIEW_PROP(zoomTapEnabled)
522
-
523
521
  REMAP_MAPVIEW_PROP(scrollEnabled)
524
- if (_view.scrollEnabled != newViewProps.scrollEnabled){
525
- [_view setScrollEnabled:newViewProps.scrollEnabled];
526
- }
522
+
527
523
 
528
524
  if (newViewProps.minZoom != oldViewProps.minZoom || newViewProps.maxZoom != oldViewProps.maxZoom){
529
525
  [_view setMinZoom:newViewProps.minZoom maxZoom:newViewProps.maxZoom];
@@ -90,6 +90,7 @@ const NSInteger AIRMapMaxZoomLevel = 20;
90
90
  self.compassOffset = CGPointMake(0, 0);
91
91
  self.legacyZoomConstraintsEnabled = YES;
92
92
  _initialized = YES;
93
+ [self listenToMemoryWarnings];
93
94
  }
94
95
  return self;
95
96
  }
@@ -735,6 +736,35 @@ const NSInteger AIRMapMaxZoomLevel = 20;
735
736
  }
736
737
  }
737
738
 
739
+ - (void) listenToMemoryWarnings
740
+ {
741
+ __weak typeof(self) weakSelf = self;
742
+ static dispatch_once_t onceToken;
743
+ static dispatch_source_t source;
744
+ dispatch_once(&onceToken, ^{
745
+ source = dispatch_source_create(DISPATCH_SOURCE_TYPE_MEMORYPRESSURE, 0, DISPATCH_MEMORYPRESSURE_WARN|DISPATCH_MEMORYPRESSURE_CRITICAL, dispatch_get_main_queue());
746
+ dispatch_source_set_event_handler(source, ^{
747
+ [weakSelf handleMemoryWarning];
748
+ });
749
+ dispatch_resume(source);
750
+ });
751
+ }
752
+ /*
753
+ hacky way to release all cache
754
+ this is our last chance to release cache before app crash
755
+ */
756
+ - (void) handleMemoryWarning
757
+ {
758
+ NSLog(@"handleMemoryWarning warning");
759
+ MKMapType type = self.mapType;
760
+ if (type == MKMapTypeSatellite){
761
+ self.mapType = MKMapTypeStandard;
762
+ } else {
763
+ self.mapType = MKMapTypeSatellite;
764
+ }
765
+ self.mapType = type;
766
+ }
767
+
738
768
  - (void)updateLegalLabelInsets {
739
769
  if (_legalLabel) {
740
770
  dispatch_async(dispatch_get_main_queue(), ^{
@@ -30,7 +30,7 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
30
30
  BOOL _calloutIsOpen;
31
31
  NSInteger _zIndexBeforeOpen;
32
32
  BOOL _useLegacyPinView;
33
-
33
+
34
34
  CADisplayLink *_displayLink;
35
35
  CLLocationCoordinate2D _startCoordinate;
36
36
  CLLocationCoordinate2D _endCoordinate;
@@ -52,22 +52,22 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
52
52
  // Make sure we use the image size when available
53
53
  CGSize size = self.image ? self.image.size : frame.size;
54
54
  CGRect bounds = {CGPointZero, size};
55
-
55
+
56
56
  // The MapView is basically in charge of figuring out the center position of the marker view. If the view changed in
57
57
  // height though, we need to compensate in such a way that the bottom of the marker stays at the same spot on the
58
58
  // map.
59
59
  CGFloat dy = (bounds.size.height - self.bounds.size.height) / 2;
60
60
  CGPoint center = (CGPoint){ self.center.x, self.center.y - dy };
61
-
61
+
62
62
  // Avoid crashes due to nan coords
63
63
  if (isnan(center.x) || isnan(center.y) ||
64
- isnan(bounds.origin.x) || isnan(bounds.origin.y) ||
65
- isnan(bounds.size.width) || isnan(bounds.size.height)) {
64
+ isnan(bounds.origin.x) || isnan(bounds.origin.y) ||
65
+ isnan(bounds.size.width) || isnan(bounds.size.height)) {
66
66
  RCTLogError(@"Invalid layout for (%@)%@. position: %@. bounds: %@",
67
- self.reactTag, self, NSStringFromCGPoint(center), NSStringFromCGRect(bounds));
67
+ self.reactTag, self, NSStringFromCGPoint(center), NSStringFromCGRect(bounds));
68
68
  return;
69
69
  }
70
-
70
+
71
71
  self.center = center;
72
72
  self.bounds = bounds;
73
73
  }
@@ -102,36 +102,36 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
102
102
  {
103
103
  if ([self shouldUsePinView]) {
104
104
  // In this case, we want to render a platform "default" legacy marker.
105
-
106
-
105
+
106
+
107
107
  if (_pinView == nil && _useLegacyPinView) {
108
108
  _pinView = [[MKPinAnnotationView alloc] initWithAnnotation:self reuseIdentifier: nil];
109
109
  [self addGestureRecognizerToView:_pinView];
110
110
  _pinView.annotation = self;
111
-
111
+
112
112
  if ([_pinView respondsToSelector:@selector(setPinTintColor:)]) {
113
113
  _pinView.pinTintColor = self.pinColor;
114
114
  }
115
-
115
+
116
116
  _pinView.draggable = self.draggable;
117
117
  _pinView.layer.zPosition = self.zIndex;
118
-
118
+
119
119
  return _pinView;
120
120
  }
121
-
122
-
123
-
121
+
122
+
123
+
124
124
  if (_markerView == nil && !_useLegacyPinView) {
125
125
  _markerView = [[MKMarkerAnnotationView alloc] initWithAnnotation:self reuseIdentifier: nil];
126
126
  [self addGestureRecognizerToView:_markerView];
127
127
  _markerView.annotation = self;
128
-
129
- _markerView.draggable = self.draggable;
130
- _markerView.layer.zPosition = self.zIndex;
131
- _markerView.markerTintColor = self.pinColor;
132
- _markerView.titleVisibility = self.titleVisibility ?: MKFeatureVisibilityHidden;
133
- _markerView.subtitleVisibility = self.subtitleVisibility ?: MKFeatureVisibilityHidden;
134
-
128
+
129
+ _markerView.draggable = self.draggable;
130
+ _markerView.layer.zPosition = self.zIndex;
131
+ _markerView.markerTintColor = self.pinColor;
132
+ _markerView.titleVisibility = self.titleVisibility ?: MKFeatureVisibilityHidden;
133
+ _markerView.subtitleVisibility = self.subtitleVisibility ?: MKFeatureVisibilityHidden;
134
+
135
135
  }
136
136
  return _markerView ?: _pinView;
137
137
  } else {
@@ -147,14 +147,14 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
147
147
  - (void)fillCalloutView:(SMCalloutView *)calloutView
148
148
  {
149
149
  // Set everything necessary on the calloutView before it becomes visible.
150
-
150
+
151
151
  // Apply the MKAnnotationView's desired calloutOffset (from the top-middle of the view)
152
- if ([self shouldUsePinView] && !_hasSetCalloutOffset && _useLegacyPinView) {
152
+ if ([self shouldUsePinView] && !_hasSetCalloutOffset && _useLegacyPinView) {
153
153
  calloutView.calloutOffset = CGPointMake(-8,0);
154
154
  } else {
155
155
  calloutView.calloutOffset = self.calloutOffset;
156
156
  }
157
-
157
+
158
158
  if (self.calloutView) {
159
159
  calloutView.title = nil;
160
160
  calloutView.subtitle = nil;
@@ -167,13 +167,13 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
167
167
  // as a result, we use the default "masked" background view.
168
168
  calloutView.backgroundView = [SMCalloutMaskedBackgroundView new];
169
169
  }
170
-
170
+
171
171
  // when this is set, the callout's content will be whatever react views the user has put as the callout's
172
172
  // children.
173
173
  calloutView.contentView = self.calloutView;
174
-
174
+
175
175
  } else {
176
-
176
+
177
177
  // if there is no calloutView, it means the user wants to use the default callout behavior with title/subtitle
178
178
  // pairs.
179
179
  calloutView.title = self.title;
@@ -187,37 +187,37 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
187
187
  {
188
188
  _calloutIsOpen = YES;
189
189
  [self setZIndex:_zIndexBeforeOpen];
190
-
190
+
191
191
  MKAnnotationView *annotationView = [self getAnnotationView];
192
-
192
+
193
193
  [self setSelected:YES animated:NO];
194
194
  [self.map selectAnnotation:self animated:NO];
195
-
195
+
196
196
  id event = @{
197
- @"action": @"marker-select",
198
- @"id": self.identifier ?: @"unknown",
199
- @"coordinate": @{
200
- @"latitude": @(self.coordinate.latitude),
201
- @"longitude": @(self.coordinate.longitude)
202
- }
197
+ @"action": @"marker-select",
198
+ @"id": self.identifier ?: @"unknown",
199
+ @"coordinate": @{
200
+ @"latitude": @(self.coordinate.latitude),
201
+ @"longitude": @(self.coordinate.longitude)
202
+ }
203
203
  };
204
-
204
+
205
205
  if (self.map.onMarkerSelect) self.map.onMarkerSelect(event);
206
206
  if (self.onSelect) self.onSelect(event);
207
-
207
+
208
208
  if (![self shouldShowCalloutView]) {
209
209
  // no callout to show
210
210
  return;
211
211
  }
212
-
212
+
213
213
  [self fillCalloutView:self.map.calloutView];
214
-
214
+
215
215
  // This is where we present our custom callout view... MapKit's built-in callout doesn't have the flexibility
216
216
  // we need, but a lot of work was done by Nick Farina to make this identical to MapKit's built-in.
217
217
  [self.map.calloutView presentCalloutFromRect:annotationView.bounds
218
- inView:annotationView
219
- constrainedToView:self.map
220
- animated:YES];
218
+ inView:annotationView
219
+ constrainedToView:self.map
220
+ animated:YES];
221
221
  }
222
222
 
223
223
  #pragma mark - Tap Gesture & Events.
@@ -239,12 +239,12 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
239
239
  - (void)_handleTap:(UITapGestureRecognizer *)recognizer {
240
240
  AIRMapMarker *marker = self;
241
241
  if (!marker) return;
242
-
242
+
243
243
  if (marker.selected) {
244
244
  CGPoint touchPoint = [recognizer locationInView:marker.map.calloutView];
245
245
  CGRect bubbleFrame = [self.calloutView convertRect:marker.map.calloutView.bounds toView:marker.map];
246
246
  CGPoint touchPointReal = [recognizer locationInView:self.calloutView];
247
-
247
+
248
248
  UIView *calloutView = [marker.map.calloutView hitTest:touchPoint withEvent:nil];
249
249
  if (calloutView) {
250
250
  // the callout (or its subview) got clicked, not the marker
@@ -258,22 +258,22 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
258
258
  }
259
259
  tmp = tmp.superview;
260
260
  }
261
-
261
+
262
262
  id event = @{
263
- @"action": calloutSubview ? @"callout-inside-press" : @"callout-press",
264
- @"id": marker.identifier ?: @"unknown",
265
- @"point": @{
266
- @"x": @(touchPointReal.x),
267
- @"y": @(touchPointReal.y),
268
- },
269
- @"frame": @{
270
- @"x": @(bubbleFrame.origin.x),
271
- @"y": @(bubbleFrame.origin.y),
272
- @"width": @(bubbleFrame.size.width),
273
- @"height": @(bubbleFrame.size.height),
274
- }
275
- };
276
-
263
+ @"action": calloutSubview ? @"callout-inside-press" : @"callout-press",
264
+ @"id": marker.identifier ?: @"unknown",
265
+ @"point": @{
266
+ @"x": @(touchPointReal.x),
267
+ @"y": @(touchPointReal.y),
268
+ },
269
+ @"frame": @{
270
+ @"x": @(bubbleFrame.origin.x),
271
+ @"y": @(bubbleFrame.origin.y),
272
+ @"width": @(bubbleFrame.size.width),
273
+ @"height": @(bubbleFrame.size.height),
274
+ }
275
+ };
276
+
277
277
  if (calloutSubview) calloutSubview.onPress(event);
278
278
  if (marker.onCalloutPress) marker.onCalloutPress(event);
279
279
  if (marker.calloutView && marker.calloutView.onPress) marker.calloutView.onPress(event);
@@ -281,25 +281,25 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
281
281
  return;
282
282
  }
283
283
  }
284
-
284
+
285
285
  // the actual marker got clicked
286
286
  CGPoint touchPointReal = [recognizer locationInView:self.calloutView];
287
287
  id event = @{
288
- @"action": @"marker-press",
289
- @"id": marker.identifier ?: @"unknown",
290
- @"coordinate": @{
291
- @"latitude": @(marker.coordinate.latitude),
292
- @"longitude": @(marker.coordinate.longitude)
293
- },
294
- @"position": @{
295
- @"x": @(touchPointReal.x),
296
- @"y": @(touchPointReal.y),
297
- }
298
- };
299
-
288
+ @"action": @"marker-press",
289
+ @"id": marker.identifier ?: @"unknown",
290
+ @"coordinate": @{
291
+ @"latitude": @(marker.coordinate.latitude),
292
+ @"longitude": @(marker.coordinate.longitude)
293
+ },
294
+ @"position": @{
295
+ @"x": @(touchPointReal.x),
296
+ @"y": @(touchPointReal.y),
297
+ }
298
+ };
299
+
300
300
  if (marker.onPress) marker.onPress(event);
301
301
  if (marker.map.onMarkerPress) marker.map.onMarkerPress(event);
302
-
302
+
303
303
  [marker.map selectAnnotation:marker animated:NO];
304
304
  }
305
305
 
@@ -309,19 +309,19 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
309
309
  [self setZIndex:_zIndexBeforeOpen];
310
310
  // hide the callout view
311
311
  [self.map.calloutView dismissCalloutAnimated:YES];
312
-
312
+
313
313
  [self setSelected:NO animated:NO];
314
314
  [self.map deselectAnnotation:self animated:NO];
315
-
315
+
316
316
  id event = @{
317
- @"action": @"marker-deselect",
318
- @"id": self.identifier ?: @"unknown",
319
- @"coordinate": @{
320
- @"latitude": @(self.coordinate.latitude),
321
- @"longitude": @(self.coordinate.longitude)
322
- }
317
+ @"action": @"marker-deselect",
318
+ @"id": self.identifier ?: @"unknown",
319
+ @"coordinate": @{
320
+ @"latitude": @(self.coordinate.latitude),
321
+ @"longitude": @(self.coordinate.longitude)
322
+ }
323
323
  };
324
-
324
+
325
325
  if (self.map.onMarkerDeselect) self.map.onMarkerDeselect(event);
326
326
  if (self.onDeselect) self.onDeselect(event);
327
327
  }
@@ -344,41 +344,42 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
344
344
 
345
345
  - (void)setOpacity:(double)opacity
346
346
  {
347
- [self setAlpha:opacity];
347
+ [self setAlpha:opacity];
348
348
  }
349
349
 
350
350
  - (void)setImageSrc:(NSString *)imageSrc
351
351
  {
352
352
  _imageSrc = imageSrc;
353
-
353
+
354
354
  if (_reloadImageCancellationBlock) {
355
355
  _reloadImageCancellationBlock();
356
356
  _reloadImageCancellationBlock = nil;
357
357
  }
358
-
358
+ __weak __typeof(self) weakSelf = self;
359
+
359
360
  _reloadImageCancellationBlock = [[[RCTBridge currentBridge] moduleForName:@"ImageLoader"] loadImageWithURLRequest:[RCTConvert NSURLRequest:_imageSrc]
360
- size:self.bounds.size
361
- scale:RCTScreenScale()
362
- clipped:YES
363
- resizeMode:RCTResizeModeCenter
364
- progressBlock:nil
365
- partialLoadBlock:nil
366
- completionBlock:^(NSError *error, UIImage *image) {
367
- NSLog(@"image load completed");
368
- if (error) {
369
- // TODO(lmr): do something with the error?
370
- NSLog(@"failed to load image: %@", error);
371
- }
372
- dispatch_async(dispatch_get_main_queue(), ^{
373
- self.image = image;
374
- });
375
- }];
361
+ size:self.bounds.size
362
+ scale:RCTScreenScale()
363
+ clipped:YES
364
+ resizeMode:RCTResizeModeCenter
365
+ progressBlock:nil
366
+ partialLoadBlock:nil
367
+ completionBlock:^(NSError *error, UIImage *image) {
368
+ if (error) {
369
+ // TODO(lmr): do something with the error?
370
+ NSLog(@"failed to load image: %@", error);
371
+ }
372
+ dispatch_async(dispatch_get_main_queue(), ^{
373
+ __strong __typeof(weakSelf) strongSelf = weakSelf;
374
+ strongSelf.image = image;
375
+ });
376
+ }];
376
377
  }
377
378
 
378
379
  - (void)setPinColor:(UIColor *)pinColor
379
380
  {
380
381
  _pinColor = pinColor;
381
-
382
+
382
383
  if(_useLegacyPinView && [_pinView respondsToSelector:@selector(setPinTintColor:)]) {
383
384
  _pinView.pinTintColor = _pinColor;
384
385
  } else {
@@ -394,7 +395,7 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
394
395
  }
395
396
 
396
397
  - (BOOL)isSelected {
397
- return _isPreselected || [super isSelected];
398
+ return _isPreselected || [super isSelected];
398
399
  }
399
400
 
400
401
  - (void)dealloc {
@@ -416,16 +417,16 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
416
417
  NSLog(@"Animation already in progress. Rejecting new animation request.");
417
418
  return;
418
419
  }
419
-
420
+
420
421
  // Mark as animating
421
422
  _isAnimating = YES;
422
-
423
+
423
424
  // Store animation parameters
424
425
  _startCoordinate = self.coordinate;
425
426
  _endCoordinate = newCoordinate;
426
427
  _animationDuration = duration;
427
428
  _animationStartTime = [NSDate timeIntervalSinceReferenceDate];
428
-
429
+
429
430
  // Start a CADisplayLink
430
431
  if (_displayLink) {
431
432
  [_displayLink invalidate];
@@ -437,15 +438,15 @@ NSInteger const AIR_CALLOUT_OPEN_ZINDEX_BASELINE = 999;
437
438
  - (void)updatePosition {
438
439
  NSTimeInterval elapsed = [NSDate timeIntervalSinceReferenceDate] - _animationStartTime;
439
440
  CGFloat progress = MIN(elapsed / _animationDuration, 1.0);
440
-
441
+
441
442
  // Interpolate coordinates
442
443
  CLLocationDegrees currentLatitude = _startCoordinate.latitude + progress * (_endCoordinate.latitude - _startCoordinate.latitude);
443
444
  CLLocationDegrees currentLongitude = _startCoordinate.longitude + progress * (_endCoordinate.longitude - _startCoordinate.longitude);
444
-
445
+
445
446
  // Update annotation's coordinate
446
447
  CLLocationCoordinate2D currentCoordinate = CLLocationCoordinate2DMake(currentLatitude, currentLongitude);
447
448
  [self setValue:[NSValue valueWithMKCoordinate:currentCoordinate] forKey:@"coordinate"];
448
-
449
+
449
450
  // Stop the animation when complete
450
451
  if (progress == 1.0) {
451
452
  [_displayLink invalidate];
@@ -517,7 +517,7 @@ export interface MapFabricNativeProps extends ViewProps {
517
517
  * @platform iOS: Google Maps only
518
518
  * @platform Android: Supported
519
519
  */
520
- pitchEnabled?: boolean;
520
+ pitchEnabled?: WithDefault<boolean, true>;
521
521
  /**
522
522
  * The region to be displayed by the map.
523
523
  * The region is defined by the center coordinates and the span of coordinates to display.
@@ -533,7 +533,7 @@ export interface MapFabricNativeProps extends ViewProps {
533
533
  * @platform iOS: Google Maps only
534
534
  * @platform Android: Supported
535
535
  */
536
- rotateEnabled?: boolean;
536
+ rotateEnabled?: WithDefault<boolean, true>;
537
537
  /**
538
538
  * If `false` the map will stay centered while rotating or zooming.
539
539
  *
@@ -541,7 +541,7 @@ export interface MapFabricNativeProps extends ViewProps {
541
541
  * @platform iOS: Google Maps only
542
542
  * @platform Android: Supported
543
543
  */
544
- scrollDuringRotateOrZoomEnabled?: boolean;
544
+ scrollDuringRotateOrZoomEnabled?: WithDefault<boolean, true>;
545
545
  /**
546
546
  * If `false` the user won't be able to change the map region being displayed.
547
547
  *
@@ -549,7 +549,7 @@ export interface MapFabricNativeProps extends ViewProps {
549
549
  * @platform iOS: Supported
550
550
  * @platform Android: Supported
551
551
  */
552
- scrollEnabled?: boolean;
552
+ scrollEnabled?: WithDefault<boolean, true>;
553
553
  /**
554
554
  * A Boolean indicating whether the map displays extruded building information.
555
555
  *
@@ -557,7 +557,7 @@ export interface MapFabricNativeProps extends ViewProps {
557
557
  * @platform iOS: Not supported
558
558
  * @platform Android: Supported
559
559
  */
560
- showsBuildings?: boolean;
560
+ showsBuildings?: WithDefault<boolean, true>;
561
561
  /**
562
562
  * If `false` compass won't be displayed on the map.
563
563
  *
@@ -565,7 +565,7 @@ export interface MapFabricNativeProps extends ViewProps {
565
565
  * @platform iOS: Supported
566
566
  * @platform Android: Supported
567
567
  */
568
- showsCompass?: boolean;
568
+ showsCompass?: WithDefault<boolean, true>;
569
569
  /**
570
570
  * A Boolean indicating whether indoor level picker should be enabled.
571
571
  *
@@ -581,7 +581,7 @@ export interface MapFabricNativeProps extends ViewProps {
581
581
  * @platform iOS: Google Maps only
582
582
  * @platform Android: Supported
583
583
  */
584
- showsIndoors?: boolean;
584
+ showsIndoors?: WithDefault<boolean, true>;
585
585
  /**
586
586
  * If `false` hide the button to move map to the current user's location.
587
587
  *
@@ -589,7 +589,7 @@ export interface MapFabricNativeProps extends ViewProps {
589
589
  * @platform iOS: Google Maps only
590
590
  * @platform Android: Supported
591
591
  */
592
- showsMyLocationButton?: boolean;
592
+ showsMyLocationButton?: WithDefault<boolean, true>;
593
593
  /**
594
594
  * If `false` points of interest won't be displayed on the map.
595
595
  * TODO: DEPRECATED? Doesn't seem to do anything
@@ -689,7 +689,7 @@ export interface MapFabricNativeProps extends ViewProps {
689
689
  * @platform iOS: Supported
690
690
  * @platform Android: Supported
691
691
  */
692
- zoomEnabled?: boolean;
692
+ zoomEnabled?: WithDefault<boolean, true>;
693
693
  /**
694
694
  * If `false` the user won't be able to double tap to zoom the map.
695
695
  * **Note:** But it will greatly decrease delay of tap gesture recognition.
@@ -698,7 +698,7 @@ export interface MapFabricNativeProps extends ViewProps {
698
698
  * @platform iOS: Google Maps only
699
699
  * @platform Android: Not supported
700
700
  */
701
- zoomTapEnabled?: boolean;
701
+ zoomTapEnabled?: WithDefault<boolean, true>;
702
702
  }
703
703
  export interface NativeCommands {
704
704
  animateToRegion: (viewRef: React.ElementRef<React.ComponentType>, regionJSON: string, duration: Int32) => void;
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "main": "lib/index.js",
6
6
  "author": "Leland Richardson <leland.m.richardson@gmail.com>",
7
7
  "homepage": "https://github.com/react-native-maps/react-native-maps#readme",
8
- "version": "1.21.0-alpha.27",
8
+ "version": "1.21.0-alpha.29",
9
9
  "license": "MIT",
10
10
  "scripts": {
11
11
  "lint": "eslint . --max-warnings 0",