diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2017-01-03 20:27:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-03 20:27:44 +0100 |
commit | 654061c7d1596a3de0a40233c08ccea007ffc2e5 (patch) | |
tree | 5e58478d30b4f927b565caf3a45bba5a23ad616d /platform | |
parent | 5ac72ce8bf382ec4259e357770a252192560c7df (diff) | |
download | qtlocation-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')
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()); |