From 02feddb816900d025581076bb969c594f527aef8 Mon Sep 17 00:00:00 2001 From: Brad Leege Date: Thu, 3 Dec 2015 14:07:01 -0600 Subject: [PATCH] [android] #2805 - Updating Tilt API to support animation duration time --- .../java/com/mapbox/mapboxsdk/views/MapView.java | 13 +++++++++---- .../com/mapbox/mapboxsdk/views/NativeMapView.java | 6 +++--- .../com/mapbox/mapboxsdk/testapp/TiltActivity.java | 3 ++- platform/android/jni.cpp | 6 +++--- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java index 75a89cda0..f15591b4b 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java @@ -1123,12 +1123,17 @@ public final class MapView extends FrameLayout { } /** - * Sets the Tilt in degrees of the MapView + * Sets the Tilt in degrees of the MapView. * @param pitch New tilt in degrees + * @param duration Animation time in milliseconds. If null then 0 is used, making the animation immediate. */ @FloatRange(from = 0.0, to = 60.0) - public void setTilt(double pitch) { - mNativeMapView.setPitch(pitch); + public void setTilt(Double pitch, @Nullable Long duration) { + long actualDuration = 0; + if (duration != null) { + actualDuration = duration; + } + mNativeMapView.setPitch(pitch, actualDuration); } // @@ -1148,7 +1153,7 @@ public final class MapView extends FrameLayout { setBearing(update.getBearing()); - setTilt(update.getTilt()); + setTilt((double)update.getTilt(), null); } // diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java index 9a5854f5d..f09d0e902 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java @@ -260,8 +260,8 @@ final class NativeMapView { return nativeGetPitch(mNativeMapViewPtr); } - public void setPitch(double pitch) { - nativeSetPitch(mNativeMapViewPtr, pitch); + public void setPitch(double pitch, long duration) { + nativeSetPitch(mNativeMapViewPtr, pitch, duration); } public void scaleBy(double ds) { @@ -543,7 +543,7 @@ final class NativeMapView { private native double nativeGetPitch(long nativeMapViewPtr); - private native void nativeSetPitch(long nativeMapViewPtr, double pitch); + private native void nativeSetPitch(long nativeMapViewPtr, double pitch, long duration); private native void nativeScaleBy(long nativeMapViewPtr, double ds, double cx, double cy, long duration); diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/TiltActivity.java b/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/TiltActivity.java index 7823836bb..07c6625fd 100644 --- a/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/TiltActivity.java +++ b/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/TiltActivity.java @@ -45,7 +45,8 @@ public class TiltActivity extends AppCompatActivity { mMapView.onCreate(savedInstanceState); Log.i(TiltActivity.class.getCanonicalName(), "Original Tilt = " + mMapView.getTilt()); - mMapView.setTilt(45); + // Tilt Map 45 degrees over 10 seconds + mMapView.setTilt(45.0, 10000l); Log.i(TiltActivity.class.getCanonicalName(), "Changed Tilt = " + mMapView.getTilt()); /* diff --git a/platform/android/jni.cpp b/platform/android/jni.cpp index e6cbe8119..acefc87f3 100644 --- a/platform/android/jni.cpp +++ b/platform/android/jni.cpp @@ -671,11 +671,11 @@ jdouble JNICALL nativeGetPitch(JNIEnv *env, jobject obj, jlong nativeMapViewPtr) return nativeMapView->getMap().getPitch(); } -void JNICALL nativeSetPitch(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jdouble pitch) { +void JNICALL nativeSetPitch(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jdouble pitch, jlong duration) { mbgl::Log::Debug(mbgl::Event::JNI, "nativeGetPitch"); assert(nativeMapViewPtr != 0); NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); - nativeMapView->getMap().setPitch(pitch, std::chrono::milliseconds(0)); + nativeMapView->getMap().setPitch(pitch, std::chrono::milliseconds(duration)); } void JNICALL nativeScaleBy(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jdouble ds, jdouble cx, @@ -1903,7 +1903,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { reinterpret_cast(&nativeGetLatLng)}, {"nativeResetPosition", "(J)V", reinterpret_cast(&nativeResetPosition)}, {"nativeGetPitch", "(J)D", reinterpret_cast(&nativeGetPitch)}, - {"nativeSetPitch", "(JD)V", reinterpret_cast(&nativeSetPitch)}, + {"nativeSetPitch", "(JDJ)V", reinterpret_cast(&nativeSetPitch)}, {"nativeScaleBy", "(JDDDJ)V", reinterpret_cast(&nativeScaleBy)}, {"nativeSetScale", "(JDDDJ)V", reinterpret_cast(&nativeSetScale)}, {"nativeGetScale", "(J)D", reinterpret_cast(&nativeGetScale)},