diff options
author | Aleksandar Stojiljkovic <aleksandar.stojiljkovic@mapbox.com> | 2019-07-11 00:28:57 +0300 |
---|---|---|
committer | Aleksandar Stojiljkovic <aleksandar.stojiljkovic@mapbox.com> | 2019-07-19 14:23:11 +0300 |
commit | dc393fd45c9cc708270171db02b0f49c163ee197 (patch) | |
tree | 85280749aaf9e4ced3ebb84320714bae282d8930 | |
parent | 5f38438074e5eefd5ce4ac95c1ed8f5d2216d233 (diff) | |
download | qtlocation-mapboxgl-dc393fd45c9cc708270171db02b0f49c163ee197.tar.gz |
[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
-rw-r--r-- | platform/ios/src/MGLMapView.mm | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 85a2e3be92..72ea8fac3d 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; @@ -1679,11 +1679,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]; @@ -1741,7 +1737,7 @@ public: [self unrotateIfNeededForGesture]; } - _previousPinchCenterCoordinate = [self convertPoint:centerPoint toCoordinateFromView:self]; + _previousPinchCenterPoint = centerPoint; _previousPinchNumberOfTouches = pinch.numberOfTouches; } |