From d959fe1522d3a96d85fd03f5a5deee318c733b75 Mon Sep 17 00:00:00 2001 From: Fredrik Karlsson Date: Thu, 17 Nov 2016 13:25:14 +0100 Subject: [PATCH] [android] fixed horizontal panning going the opposite direction --- .../java/com/mapbox/mapboxsdk/maps/MapView.java | 17 +++++++---------- 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 e5848f509..a9f2ed23f 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 44a1915b4..c7f53d028 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(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) {