From ab8441ebdc122c071cbaeaaba72f44b0c02b1f01 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Mon, 22 Feb 2016 09:18:38 +0100 Subject: [PATCH] [android] #4057 - quick zoom fix --- .../com/mapbox/mapboxsdk/maps/MapView.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 040a2bcba..4edeb08bc 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -1797,7 +1797,8 @@ public class MapView extends FrameLayout { // Called for pinch zooms and quickzooms/quickscales @Override public boolean onScale(ScaleGestureDetector detector) { - if (!mMapboxMap.getUiSettings().isZoomGesturesEnabled()) { + UiSettings uiSettings = mMapboxMap.getUiSettings(); + if (!uiSettings.isZoomGesturesEnabled()) { return false; } @@ -1825,14 +1826,21 @@ public class MapView extends FrameLayout { // Gesture is a quickzoom if there aren't two fingers mQuickZoom = !mTwoTap; + TrackingSettings trackingSettings = mMapboxMap.getTrackingSettings(); + // Scale the map - if (mMapboxMap.getUiSettings().isScrollGesturesEnabled() && !mQuickZoom && mMapboxMap.getTrackingSettings().isLocationTrackingDisabled()) { + if (uiSettings.isScrollGesturesEnabled() && !mQuickZoom && trackingSettings.isLocationTrackingDisabled()) { // around gesture mNativeMapView.scaleBy(detector.getScaleFactor(), detector.getFocusX() / mScreenDensity, detector.getFocusY() / mScreenDensity); } else { - // around center map - PointF centerPoint = mUserLocationView.getMarkerScreenPoint(); - mNativeMapView.scaleBy(detector.getScaleFactor(), centerPoint.x / mScreenDensity, centerPoint.y / mScreenDensity); + if(trackingSettings.isLocationTrackingDisabled()) { + // around center map + mNativeMapView.scaleBy(detector.getScaleFactor(), (getWidth() / 2) / mScreenDensity, (getHeight() / 2) / mScreenDensity); + }else { + // around user location view + PointF centerPoint = mUserLocationView.getMarkerScreenPoint(); + mNativeMapView.scaleBy(detector.getScaleFactor(), centerPoint.x / mScreenDensity, centerPoint.y / mScreenDensity); + } } return true; }