diff options
author | Fabian Guerra <fabian.guerra@mapbox.com> | 2017-11-09 13:58:22 -0500 |
---|---|---|
committer | Fabian Guerra <fabian.guerra@mapbox.com> | 2017-11-10 17:43:56 -0500 |
commit | 246d956bad12fdfb87cc74aea137bebd0d5205b0 (patch) | |
tree | 1b55bfbca2d87dd2601b2c9c1ac981c070438a37 | |
parent | a936fd6f8a625e8a95c3d1ab524b8dddbbbb5ccd (diff) | |
download | qtlocation-mapboxgl-246d956bad12fdfb87cc74aea137bebd0d5205b0.tar.gz |
[ios] Fix toCamera.centerCoordinate in shouldChangeFromCamera has same center as oldCamera.
-rw-r--r-- | platform/ios/src/MGLMapView.mm | 14 |
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; } |