From d968cbba15927d63545ad2069101a054eab4b826 Mon Sep 17 00:00:00 2001 From: Aleksandar Stojiljkovic Date: Thu, 11 Jul 2019 00:28:57 +0300 Subject: [ios][macos] Fix center coordinate incorrect after pinch gesture To changelog: Fixed incorrect center coordinate after pinch regression caused by edge insets fix (#14664). While working on #14664, missed to understand the logic used in ``` CLLocationCoordinate2D centerCoordinate = _previousPinchCenterCoordinate; mbgl::EdgeInsets padding { centerPoint.y, centerPoint.x, self.size.height - centerPoint.y, self.size.width - centerPoint.x }; self.mbglMap.jumpTo(mbgl::CameraOptions() .withCenter(MGLLatLngFromLocationCoordinate2D(centerCoordinate)) .withPadding(padding)); ``` Replacing this code by moveBy achieves the required translation. Fixes: #14977, #15082 --- platform/ios/src/MGLMapView.mm | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index d027f616bd..d77f94d8ba 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -297,8 +297,8 @@ public: NSInteger _changeDelimiterSuppressionDepth; - /// Center coordinate of the pinch gesture on the previous iteration of the gesture. - CLLocationCoordinate2D _previousPinchCenterCoordinate; + /// Center of the pinch gesture on the previous iteration of the gesture. + CGPoint _previousPinchCenterPoint; NSUInteger _previousPinchNumberOfTouches; CLLocationDistance _distanceFromOldUserLocation; @@ -1643,11 +1643,7 @@ public: // meaningless. if (self.userTrackingMode == MGLUserTrackingModeNone && pinch.numberOfTouches == _previousPinchNumberOfTouches) { - CLLocationCoordinate2D centerCoordinate = _previousPinchCenterCoordinate; - mbgl::EdgeInsets padding { centerPoint.y, centerPoint.x, self.size.height - centerPoint.y, self.size.width - centerPoint.x }; - self.mbglMap.jumpTo(mbgl::CameraOptions() - .withCenter(MGLLatLngFromLocationCoordinate2D(centerCoordinate)) - .withPadding(padding)); + self.mbglMap.moveBy({centerPoint.x - _previousPinchCenterPoint.x, centerPoint.y - _previousPinchCenterPoint.y}); } } [self cameraIsChanging]; @@ -1705,7 +1701,7 @@ public: [self unrotateIfNeededForGesture]; } - _previousPinchCenterCoordinate = [self convertPoint:centerPoint toCoordinateFromView:self]; + _previousPinchCenterPoint = centerPoint; _previousPinchNumberOfTouches = pinch.numberOfTouches; } -- cgit v1.2.1