diff options
-rw-r--r-- | android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java | 35 |
1 files 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 8844184142..c1b720cf27 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 { |