From 7e21eebb94db54b189dca2aaeaa3bdc3e5ea28af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Etienne=20Cheri=C3=A8re?= Date: Fri, 23 Oct 2015 10:59:40 +0200 Subject: [PATCH] add setVisibleCoordinateBounds to js module. --- index.ios.js | 3 +++ ios/RCTMapboxGL/RCTMapboxGL.h | 1 + ios/RCTMapboxGL/RCTMapboxGL.m | 5 +++++ ios/RCTMapboxGL/RCTMapboxGLManager.m | 16 ++++++++++++++++ 4 files changed, 25 insertions(+) diff --git a/index.ios.js b/index.ios.js index d4a6241..2070d05 100644 --- a/index.ios.js +++ b/index.ios.js @@ -24,6 +24,9 @@ var MapMixins = { }, removeAnnotation(mapRef, annotationInArray) { NativeModules.MapboxGLManager.removeAnnotation(React.findNodeHandle(this.refs[mapRef]), annotationInArray); + }, + setVisibleCoordinateBoundsAnimated(mapRef, latitudeSW, longitudeSW, latitudeNE, longitudeNE, edge) { + NativeModules.MapboxGLManager.setVisibleCoordinateBoundsAnimated(React.findNodeHandle(this.refs[mapRef]), latitudeSW, longitudeSW, latitudeNE, longitudeNE, edge); } }; diff --git a/ios/RCTMapboxGL/RCTMapboxGL.h b/ios/RCTMapboxGL/RCTMapboxGL.h index db43bb1..c76171b 100644 --- a/ios/RCTMapboxGL/RCTMapboxGL.h +++ b/ios/RCTMapboxGL/RCTMapboxGL.h @@ -34,6 +34,7 @@ - (void)setCenterCoordinateZoomLevelAnimated:(CLLocationCoordinate2D)coordinates zoomLevel:(double)zoomLevel; - (void)selectAnnotationAnimated:(NSUInteger)annotationInArray; - (void)removeAnnotation:(NSUInteger)annotationInArray; +- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)padding animated:(BOOL)animated; @end diff --git a/ios/RCTMapboxGL/RCTMapboxGL.m b/ios/RCTMapboxGL/RCTMapboxGL.m index b4ca862..cb37112 100644 --- a/ios/RCTMapboxGL/RCTMapboxGL.m +++ b/ios/RCTMapboxGL/RCTMapboxGL.m @@ -242,6 +242,11 @@ RCT_EXPORT_MODULE(); [_map setCenterCoordinate:coordinates zoomLevel:zoomLevel animated:YES]; } +- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)padding animated:(BOOL)animated +{ + [_map setVisibleCoordinateBounds:bounds edgePadding:padding animated:animated]; +} + - (void)mapView:(MGLMapView *)mapView didUpdateUserLocation:(MGLUserLocation *)userLocation; { NSDictionary *event = @{ @"target": self.reactTag, diff --git a/ios/RCTMapboxGL/RCTMapboxGLManager.m b/ios/RCTMapboxGL/RCTMapboxGLManager.m index 5754b37..078f096 100644 --- a/ios/RCTMapboxGL/RCTMapboxGLManager.m +++ b/ios/RCTMapboxGL/RCTMapboxGLManager.m @@ -100,6 +100,22 @@ RCT_EXPORT_METHOD(setCenterCoordinateZoomLevelAnimated:(nonnull NSNumber *)react }]; } +RCT_EXPORT_METHOD(setVisibleCoordinateBoundsAnimated:(nonnull NSNumber *)reactTag + latitudeSW:(float) latitudeSW + longitudeSW:(float) longitudeSW + latitudeNE:(float) latitudeNE + longitudeNE:(float) longitudeNE + edgePadding:(double) edgePadding) +{ + [_bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry) { + RCTMapboxGL *mapView = viewRegistry[reactTag]; + if ([mapView isKindOfClass:[RCTMapboxGL class]]) { + MGLCoordinateBounds coordinatesBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(latitudeSW, longitudeSW), CLLocationCoordinate2DMake(latitudeNE, longitudeNE)); + [mapView setVisibleCoordinateBounds:coordinatesBounds edgePadding:UIEdgeInsetsMake(edgePadding, edgePadding, edgePadding, edgePadding) animated:YES]; + } + }]; +} + RCT_EXPORT_METHOD(selectAnnotationAnimated:(nonnull NSNumber *) reactTag annotationInArray:(NSUInteger)annotationInArray) {