summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2017-01-03 20:27:44 +0100
committerGitHub <noreply@github.com>2017-01-03 20:27:44 +0100
commit654061c7d1596a3de0a40233c08ccea007ffc2e5 (patch)
tree5e58478d30b4f927b565caf3a45bba5a23ad616d /platform
parent5ac72ce8bf382ec4259e357770a252192560c7df (diff)
downloadqtlocation-mapboxgl-654061c7d1596a3de0a40233c08ccea007ffc2e5.tar.gz
[android] - limit the scale factor for double tap zoom (#7580)
* [android] - limit the scale factor to avoid accelerating the double tap zoom gesture * clamp values
Diffstat (limited to 'platform')
-rw-r--r--platform/android/CHANGELOG.md1
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java10
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java7
3 files changed, 17 insertions, 1 deletions
diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md
index e176810277..97d8b931c8 100644
--- a/platform/android/CHANGELOG.md
+++ b/platform/android/CHANGELOG.md
@@ -4,6 +4,7 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to
## 5.0.0 - TBA
+* Consistent double tap zoom acceleration [#7514](https://github.com/mapbox/mapbox-gl-native/issues/7514)
* Support for Android Nougat [#5910](5910-move-listener-logic-for-nougat) & [#6390](https://github.com/mapbox/mapbox-gl-native/pull/6390)
## 4.2.1 - December 22, 2016
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java
index e2a5d40795..689b596f98 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java
@@ -83,6 +83,16 @@ public class MapboxConstants {
public static final double MINIMUM_DIRECTION = 0;
/**
+ * The currently used minimun scale factor to clamp to when a quick zoom gesture occurs
+ */
+ public static final float MINIMUM_SCALE_FACTOR_CLAMP = 0.65f;
+
+ /**
+ * The currently used maximum scale factor to clamp to when a quick zoom gesture occurs
+ */
+ public static final float MAXIMUM_SCALE_FACTOR_CLAMP = 1.35f;
+
+ /**
* Fragment Argument Key for MapboxMapOptions
*/
public static final String FRAG_ARG_MAPBOXMAPOPTIONS = "MapboxMapOptions";
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java
index 93422b1837..053aa72fdf 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java
@@ -16,6 +16,7 @@ import com.almeros.android.multitouch.gesturedetectors.ShoveGestureDetector;
import com.almeros.android.multitouch.gesturedetectors.TwoFingerGestureDetector;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
import com.mapbox.mapboxsdk.telemetry.MapboxEvent;
+import com.mapbox.mapboxsdk.utils.MathUtils;
/**
* Manages gestures events on a MapView.
@@ -427,8 +428,12 @@ final class MapGestureDetector {
// arround user provided focal point
transform.zoomBy(detector.getScaleFactor(), focalPoint.x, focalPoint.y);
} else if (quickZoom) {
+ // clamp scale factors we feed to core #7514
+ float scaleFactor = MathUtils.clamp(detector.getScaleFactor(),
+ MapboxConstants.MINIMUM_SCALE_FACTOR_CLAMP,
+ MapboxConstants.MAXIMUM_SCALE_FACTOR_CLAMP);
// around center map
- transform.zoomBy(detector.getScaleFactor(), uiSettings.getWidth() / 2, uiSettings.getHeight() / 2);
+ transform.zoomBy(scaleFactor, uiSettings.getWidth() / 2, uiSettings.getHeight() / 2);
} else {
// around gesture
transform.zoomBy(detector.getScaleFactor(), detector.getFocusX(), detector.getFocusY());