Implemented -setVisibleCoordinateBounds:

Followup to #1783: Implemented the non-animated version of fit to bounds and makes it a KVO-compliant property.
This commit is contained in:
Minh Nguyễn
2015-06-25 22:26:35 -07:00
parent bcbb56c188
commit 29fd554c32
2 changed files with 12 additions and 3 deletions

View File

@@ -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. */

View File

@@ -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];