summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFredrik Karlsson <bjorn.fredrik.karlsson@gmail.com>2016-11-17 13:25:14 +0100
committerFredrik Karlsson <bjorn.fredrik.karlsson@gmail.com>2016-11-18 09:21:38 +0100
commitd959fe1522d3a96d85fd03f5a5deee318c733b75 (patch)
treeb38289800ec96f59bc424c46b541ad2c5d7de6ea
parent97288cae96dd88c48b7e7f13ffe6fcf6bae5942d (diff)
downloadqtlocation-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.java17
-rwxr-xr-xplatform/android/src/jni.cpp3
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) {