summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Guerra <fabian.guerra@mapbox.com>2017-11-09 13:58:22 -0500
committerFabian Guerra <fabian.guerra@mapbox.com>2017-11-10 17:43:56 -0500
commit246d956bad12fdfb87cc74aea137bebd0d5205b0 (patch)
tree1b55bfbca2d87dd2601b2c9c1ac981c070438a37
parenta936fd6f8a625e8a95c3d1ab524b8dddbbbb5ccd (diff)
downloadqtlocation-mapboxgl-246d956bad12fdfb87cc74aea137bebd0d5205b0.tar.gz
[ios] Fix toCamera.centerCoordinate in shouldChangeFromCamera has same center as oldCamera.
-rw-r--r--platform/ios/src/MGLMapView.mm14
1 files changed, 8 insertions, 6 deletions
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm
index c960c60c78..ad4a251e05 100644
--- a/platform/ios/src/MGLMapView.mm
+++ b/platform/ios/src/MGLMapView.mm
@@ -1816,16 +1816,18 @@ public:
return panCamera;
}
-- (MGLMapCamera *)cameraByZoomingToZoomLevel:(double)zoom aroundAnchorPoint:(CGPoint)anchorPoint
+- (MGLMapCamera *)cameraByZoomingToZoomLevel:(double)zoom aroundAnchorPoint:(CGPoint)anchorPoint
{
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
- mbgl::CameraOptions currentCameraOptions = _mbglMap->getCameraOptions(padding);
- MGLMapCamera *camera;
-
mbgl::ScreenCoordinate anchor = mbgl::ScreenCoordinate { anchorPoint.x, anchorPoint.y };
+ mbgl::EdgeInsets padding = mbgl::EdgeInsets(anchor.y, anchor.x, self.size.height - anchor.y, self.size.width - anchor.x);
+ mbgl::CameraOptions currentCameraOptions = _mbglMap->getCameraOptions(padding);
+
currentCameraOptions.zoom = mbgl::util::clamp(zoom, self.minimumZoomLevel, self.maximumZoomLevel);
currentCameraOptions.anchor = anchor;
- camera = [self cameraForCameraOptions:currentCameraOptions];
+ MGLCoordinateBounds bounds = MGLCoordinateBoundsFromLatLngBounds(_mbglMap->latLngBoundsForCamera(currentCameraOptions));
+
+ MGLMapCamera *camera;
+ camera = [self cameraThatFitsCoordinateBounds:bounds];
return camera;
}