diff options
author | Fredrik Karlsson <bjorn.fredrik.karlsson@gmail.com> | 2016-11-17 13:25:14 +0100 |
---|---|---|
committer | Fredrik Karlsson <bjorn.fredrik.karlsson@gmail.com> | 2016-11-18 09:21:38 +0100 |
commit | d959fe1522d3a96d85fd03f5a5deee318c733b75 (patch) | |
tree | b38289800ec96f59bc424c46b541ad2c5d7de6ea | |
parent | 97288cae96dd88c48b7e7f13ffe6fcf6bae5942d (diff) | |
download | qtlocation-mapboxgl-d959fe1522d3a96d85fd03f5a5deee318c733b75.tar.gz |
[android] fixed horizontal panning going the opposite direction
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java | 17 | ||||
-rwxr-xr-x | platform/android/src/jni.cpp | 3 |
2 files changed, 8 insertions, 12 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 e5848f5090..a9f2ed23fc 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 @@ -1651,20 +1651,17 @@ public class MapView extends FrameLayout { resetTrackingModesIfRequired(true, false); - // Fling the map - float ease = 0.25f; - - velocityX = velocityX * ease; - velocityY = velocityY * ease; - - double speed = Math.sqrt(velocityX * velocityX + velocityY * velocityY); - double deceleration = 2500; - double duration = speed / (deceleration * ease); + double decelerationRate = 1; // Cancel any animation cancelTransitions(); - nativeMapView.moveBy(velocityX * duration / 2.0 / screenDensity, velocityY * duration / 2.0 / screenDensity, (long) (duration * 1000.0f)); + double offsetX = velocityX * decelerationRate / 4 / screenDensity; + double offsetY = velocityY * decelerationRate / 4 / screenDensity; + + nativeMapView.setGestureInProgress(true); + nativeMapView.moveBy(offsetX, offsetY, (long) (decelerationRate * 1000.0f)); + nativeMapView.setGestureInProgress(false); MapboxMap.OnFlingListener listener = mapboxMap.getOnFlingListener(); if (listener != null) { diff --git a/platform/android/src/jni.cpp b/platform/android/src/jni.cpp index 44a1915b4f..c7f53d028b 100755 --- a/platform/android/src/jni.cpp +++ b/platform/android/src/jni.cpp @@ -471,8 +471,7 @@ void nativeMoveBy(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jdoubl jlong duration) { assert(nativeMapViewPtr != 0); NativeMapView *nativeMapView = reinterpret_cast<NativeMapView *>(nativeMapViewPtr); - mbgl::ScreenCoordinate center(dx, dy); - nativeMapView->getMap().moveBy(center, mbgl::Milliseconds(duration)); + nativeMapView->getMap().moveBy({dx, dy}, mbgl::Milliseconds(duration)); } void nativeSetLatLng(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jdouble latitude, jdouble longitude, jlong duration) { |