From ad0b37fcfdd77d6b9b1ad1a2f6e62b539cb6e592 Mon Sep 17 00:00:00 2001 From: Braden Ewing Date: Mon, 23 Nov 2015 18:10:28 -0700 Subject: [PATCH] Don't double-tap zoom when quickzooming on Android --- .../com/mapbox/mapboxsdk/views/MapView.java | 35 +++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java index 884418414..c1b720cf2 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java @@ -180,6 +180,7 @@ public final class MapView extends FrameLayout { private RotateGestureDetector mRotateGestureDetector; private boolean mTwoTap = false; private boolean mZoomStarted = false; + private boolean mQuickZoom = false; // Shows zoom buttons private ZoomButtonsController mZoomButtonsController; @@ -2369,20 +2370,34 @@ public final class MapView extends FrameLayout { // Called for double taps @Override - public boolean onDoubleTap(MotionEvent e) { + public boolean onDoubleTapEvent(MotionEvent e) { if (!mZoomEnabled) { return false; } - // Single finger double tap - // Zoom in - if (mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) { - // Zoom in on gesture - zoom(true, e.getX(), e.getY()); - } else { - // Zoom in on center map - zoom(true, getWidth() / 2, getHeight() / 2); + switch (e.getAction()) { + case MotionEvent.ACTION_DOWN: + mQuickZoom = false; + break; + case MotionEvent.ACTION_MOVE: + mQuickZoom = true; + break; + case MotionEvent.ACTION_UP: + if (mQuickZoom) { + break; + } + + // Single finger double tap + if (mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) { + // Zoom in on gesture + zoom(true, e.getX(), e.getY()); + } else { + // Zoom in on center map + zoom(true, getWidth() / 2, getHeight() / 2); + } + break; } + return true; } @@ -2596,7 +2611,7 @@ public final class MapView extends FrameLayout { mNativeMapView.cancelTransitions(); // Scale the map - if (mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) { + if (!mQuickZoom && mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) { // around gesture mNativeMapView.scaleBy(detector.getScaleFactor(), detector.getFocusX() / mScreenDensity, detector.getFocusY() / mScreenDensity); } else {