diff --git a/android/cpp/jni.cpp b/android/cpp/jni.cpp index 497091832..010b90c8e 100644 --- a/android/cpp/jni.cpp +++ b/android/cpp/jni.cpp @@ -371,6 +371,15 @@ void JNICALL nativeSetDefaultTransitionDuration(JNIEnv* env, jobject obj, jlong COFFEE_TRY_JNI(env, native_map_view->getMap().setDefaultTransitionDuration(duration_milliseconds)); } +jlong JNICALL nativeGetDefaultTransitionDuration(JNIEnv* env, jobject obj, jlong native_map_view_ptr) { + mbgl::Log::Debug(mbgl::Event::JNI, "nativeGetDefaultTransitionDuration"); + assert(native_map_view_ptr != 0); + NativeMapView* native_map_view = reinterpret_cast(native_map_view_ptr); + jlong ret = 0.0; + COFFEE_TRY_JNI(env, ret = native_map_view->getMap().getDefaultTransitionDuration()); + return ret; +} + void JNICALL nativeSetStyleURL(JNIEnv* env, jobject obj, jlong native_map_view_ptr, jstring url) { mbgl::Log::Debug(mbgl::Event::JNI, "nativeSetStyleURL"); assert(native_map_view_ptr != 0); @@ -816,7 +825,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { } // NOTE: if you get java.lang.UnsatisfiedLinkError you likely forgot to set the size of the array correctly (too large) - std::array methods = {{ // Can remove the extra brace in C++14 + std::array methods = {{ // Can remove the extra brace in C++14 { "nativeCreate", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)J", reinterpret_cast(&nativeCreate) }, { "nativeDestroy", "(J)V", reinterpret_cast(&nativeDestroy) }, { "nativeInitializeDisplay", "(J)V", reinterpret_cast(&nativeInitializeDisplay) }, @@ -841,6 +850,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { { "nativeSetAppliedClasses", "(JLjava/util/List;)V", reinterpret_cast(&nativeSetAppliedClasses) }, { "nativeGetAppliedClasses", "(J)Ljava/util/List;", reinterpret_cast(&nativeGetAppliedClasses) }, { "nativeSetDefaultTransitionDuration", "(JJ)V", reinterpret_cast(&nativeSetDefaultTransitionDuration) }, + { "nativeGetDefaultTransitionDuration", "(J)J", reinterpret_cast(&nativeGetDefaultTransitionDuration) }, { "nativeSetStyleUrl", "(JLjava/lang/String;)V", reinterpret_cast(&nativeSetStyleURL) }, { "nativeSetStyleJson", "(JLjava/lang/String;Ljava/lang/String;)V", reinterpret_cast(&nativeSetStyleJSON) }, { "nativeGetStyleJson", "(J)Ljava/lang/String;", reinterpret_cast(&nativeGetStyleJSON) }, diff --git a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java index 55f96ce3d..19997d24b 100644 --- a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java +++ b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java @@ -416,7 +416,7 @@ public class MapView extends SurfaceView { if (!appliedClasses.isEmpty()) { setAppliedStyleClasses(appliedClasses); } - //mNativeMapView.setDefaultTransitionDuration(savedInstanceState.getLong(STATE_DEFAULT_TRANSITION_DURATION)); // TODO + mNativeMapView.setDefaultTransitionDuration(savedInstanceState.getLong(STATE_DEFAULT_TRANSITION_DURATION)); } mNativeMapView.initializeDisplay(); @@ -438,7 +438,7 @@ public class MapView extends SurfaceView { outState.putString(STATE_STYLE_URL, getStyleUrl()); outState.putString(STATE_ACCESS_TOKEN, getAccessToken()); outState.putStringArrayList(STATE_APPLIED_CLASSES, new ArrayList(getAppliedStyleClasses())); - //outState.putLong(STATE_DEFAULT_TRANSITION_DURATION, mNativeMapView. // TODO + outState.putLong(STATE_DEFAULT_TRANSITION_DURATION, mNativeMapView.getDefaultTransitionDuration()); } // Called when we need to clean up diff --git a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/NativeMapView.java b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/NativeMapView.java index 7d24abf44..1598d29f8 100644 --- a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/NativeMapView.java +++ b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/NativeMapView.java @@ -184,6 +184,10 @@ class NativeMapView { setDefaultTransitionDuration(0); } + public long getDefaultTransitionDuration() { + return nativeGetDefaultTransitionDuration(mNativeMapViewPtr); + } + public void setDefaultTransitionDuration(long durationMilliseconds) { if (durationMilliseconds < 0) { throw new IllegalArgumentException( @@ -456,6 +460,8 @@ class NativeMapView { private native void nativeSetDefaultTransitionDuration( long nativeMapViewPtr, long durationMilliseconds); + private native long nativeGetDefaultTransitionDuration(long nativeMapViewPtr); + private native void nativeSetStyleUrl(long nativeMapViewPtr, String url); private native void nativeSetStyleJson(long nativeMapViewPtr, diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp index 5c6302a5d..bf425cb59 100644 --- a/include/mbgl/map/map.hpp +++ b/include/mbgl/map/map.hpp @@ -82,6 +82,7 @@ public: void toggleClass(const std::string &name); const std::vector &getAppliedClasses() const; void setDefaultTransitionDuration(uint64_t duration_milliseconds = 0); + uint64_t getDefaultTransitionDuration(); void setStyleURL(const std::string &url); void setStyleJSON(std::string newStyleJSON, const std::string &base = ""); std::string getStyleJSON() const; @@ -227,6 +228,9 @@ private: std::string styleURL; std::string styleJSON = ""; std::string accessToken = ""; + + std::atomic_uint_fast64_t defaultTransitionDuration; + util::ptr> appliedClasses; std::mutex appliedClassesMutex; diff --git a/src/map/map.cpp b/src/map/map.cpp index 682731f0c..6ce38863d 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -438,6 +438,8 @@ void Map::setStyleJSON(std::string newStyleJSON, const std::string &base) { fileSource->setBase(base); glyphStore->setURL(util::mapbox::normalizeGlyphsURL(style->glyph_url, getAccessToken())); + style->setDefaultTransitionDuration(defaultTransitionDuration); + // set applied classes if theys were set while the style was loading appliedClassesMutex.lock(); util::ptr> classes = appliedClasses; @@ -698,7 +700,14 @@ const std::vector &Map::getAppliedClasses() const { } void Map::setDefaultTransitionDuration(uint64_t duration_milliseconds) { - style->setDefaultTransitionDuration(duration_milliseconds); + defaultTransitionDuration = duration_milliseconds; + if (style) { + style->setDefaultTransitionDuration(duration_milliseconds); + } +} + +uint64_t Map::getDefaultTransitionDuration() { + return defaultTransitionDuration; } void Map::updateSources() {