diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2015-06-25 22:26:35 -0700 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2015-06-25 22:26:35 -0700 |
commit | 29fd554c326da14badf9531aa5d5eaf7ed7c4c50 (patch) | |
tree | 4559d2984a1cdda21c3d179e8b01f6565623a577 | |
parent | bcbb56c1886ef1f369c50ea675a97c48718e78ce (diff) | |
download | qtlocation-mapboxgl-29fd554c326da14badf9531aa5d5eaf7ed7c4c50.tar.gz |
Implemented -setVisibleCoordinateBounds:
Followup to #1783: Implemented the non-animated version of fit to bounds and makes it a KVO-compliant property.
-rw-r--r-- | include/mbgl/ios/MGLMapView.h | 8 | ||||
-rw-r--r-- | platform/ios/MGLMapView.mm | 7 |
2 files changed, 12 insertions, 3 deletions
diff --git a/include/mbgl/ios/MGLMapView.h b/include/mbgl/ios/MGLMapView.h index 1d4f5b4ac2..d426fd0869 100644 --- a/include/mbgl/ios/MGLMapView.h +++ b/include/mbgl/ios/MGLMapView.h @@ -118,15 +118,17 @@ IB_DESIGNABLE * @param animated Specify `YES` if you want the map view to animate scrolling and zooming to the new location or `NO` if you want the map to display the new location immediately. */ - (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel animated:(BOOL)animated; -/** Returns the coordinate bounds visible in the receiver’s viewport. */ -- (MGLCoordinateBounds)visibleCoordinateBounds; +/** The coordinate bounds visible in the receiver’s viewport. +* +* Changing the value of this property updates the receiver immediately. If you want to animate the change, call `setVisibleCoordinateBounds:animated:` instead. */ +@property (nonatomic) MGLCoordinateBounds visibleCoordinateBounds; /** Changes the receiver’s viewport to fit the given coordinate bounds, optionally animating the change. * @param bounds The bounds that the viewport will show in its entirety. * @param animated Specify `YES` to animate the change by smoothly scrolling and zooming or `NO` to immediately display the given bounds. */ - (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds animated:(BOOL)animated; -/** Changes the receiver’s viewport to fit the given coordinate bounds, optionally animating the change. +/** Changes the receiver’s viewport to fit the given coordinate bounds and optionally some additional padding on each side. * @param bounds The bounds that the viewport will show in its entirety. * @param insets The minimum padding (in screen points) that will be visible around the given coordinate bounds. * @param animated Specify `YES` to animate the change by smoothly scrolling and zooming or `NO` to immediately display the given bounds. */ diff --git a/platform/ios/MGLMapView.mm b/platform/ios/MGLMapView.mm index 8fdfa294aa..50f5a1f867 100644 --- a/platform/ios/MGLMapView.mm +++ b/platform/ios/MGLMapView.mm @@ -1461,6 +1461,11 @@ mbgl::LatLngBounds MGLLatLngBoundsFromCoordinateBounds(MGLCoordinateBounds coord return MGLCoordinateBoundsFromLatLngBounds(self.viewportBounds); } +- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds +{ + [self setVisibleCoordinateBounds:bounds animated:NO]; +} + - (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds animated:(BOOL)animated { [self setVisibleCoordinateBounds:bounds edgePadding:UIEdgeInsetsZero animated:animated]; @@ -1471,8 +1476,10 @@ mbgl::LatLngBounds MGLLatLngBoundsFromCoordinateBounds(MGLCoordinateBounds coord // NOTE: does not disrupt tracking mode CGFloat duration = animated ? MGLAnimationDuration : 0; + [self willChangeValueForKey:@"visibleCoordinateBounds"]; mbgl::EdgeInsets mbglInsets = {insets.top, insets.left, insets.bottom, insets.right}; _mbglMap->fitBounds(MGLLatLngBoundsFromCoordinateBounds(bounds), mbglInsets, secondsAsDuration(duration)); + [self didChangeValueForKey:@"visibleCoordinateBounds"]; [self unrotateIfNeededAnimated:animated]; |