diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-02-24 16:35:27 +0200 |
---|---|---|
committer | Ivo van Dongen <ivovandongen@users.noreply.github.com> | 2017-02-28 09:33:04 -0800 |
commit | 3040d407723ed8a8e2dfa27ad0ba49f534772342 (patch) | |
tree | 2bf6c57ebf06efd3a6f9029fd72e0a6b04ca3b0d | |
parent | fedb21e35b53347f8ba741f2f02b84f1a48be50e (diff) | |
download | qtlocation-mapboxgl-3040d407723ed8a8e2dfa27ad0ba49f534772342.tar.gz |
[android] remove source returns reference
5 files changed, 26 insertions, 14 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 033986eed9..ecea6b2244 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -350,20 +350,24 @@ public final class MapboxMap { * Removes the source. Any references to the source become invalid and should not be used anymore * * @param sourceId the source to remove + * @return the source handle or null if the source was not present */ @UiThread - public void removeSource(@NonNull String sourceId) { - nativeMapView.removeSource(sourceId); + @Nullable + public Source removeSource(@NonNull String sourceId) { + return nativeMapView.removeSource(sourceId); } /** * Removes the source, preserving the reverence for re-use * * @param source the source to remove + * @return the source */ @UiThread - public void removeSource(@NonNull Source source) { - nativeMapView.removeSource(source); + @Nullable + public Source removeSource(@NonNull Source source) { + return nativeMapView.removeSource(source); } /** diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java index 2e495a25c2..47f4ad722e 100755 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java @@ -806,18 +806,20 @@ final class NativeMapView { nativeAddSource(source.getNativePtr()); } - public void removeSource(@NonNull String sourceId) { + @Nullable + public Source removeSource(@NonNull String sourceId) { if (isDestroyedOn("removeSource")) { - return; + return null; } - nativeRemoveSourceById(sourceId); + return nativeRemoveSourceById(sourceId); } - public void removeSource(@NonNull Source source) { + public Source removeSource(@NonNull Source source) { if (isDestroyedOn("removeSource")) { - return; + return null; } nativeRemoveSource(source.getNativePtr()); + return source; } public void addImage(@NonNull String name, @NonNull Bitmap image) { @@ -1087,7 +1089,7 @@ final class NativeMapView { private native void nativeAddSource(long nativeSourcePtr) throws CannotAddSourceException; - private native void nativeRemoveSourceById(String sourceId); + private native Source nativeRemoveSourceById(String sourceId); private native void nativeRemoveSource(long sourcePtr); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java index 30d7c9a376..cda4b62d58 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java @@ -192,7 +192,8 @@ public class RuntimeStyleTests { mapboxMap.addSource(new VectorSource("my-source", "mapbox://mapbox.mapbox-terrain-v2")); // Remove - mapboxMap.removeSource("my-source"); + Source mySource = mapboxMap.removeSource("my-source"); + assertNotNull(mySource); assertNull(mapboxMap.getLayer("my-source")); // Add diff --git a/platform/android/src/native_map_view.cpp b/platform/android/src/native_map_view.cpp index e188a98c6e..5587300c1c 100755 --- a/platform/android/src/native_map_view.cpp +++ b/platform/android/src/native_map_view.cpp @@ -844,8 +844,13 @@ void NativeMapView::addSource(JNIEnv& env, jni::jlong sourcePtr) { } } -void NativeMapView::removeSourceById(JNIEnv& env, jni::String id) { - map->removeSource(jni::Make<std::string>(env, id)); +jni::Object<Source> NativeMapView::removeSourceById(JNIEnv& env, jni::String id) { + std::unique_ptr<mbgl::style::Source> coreSource = map->removeSource(jni::Make<std::string>(env, id)); + if (coreSource) { + return jni::Object<Source>(createJavaSourcePeer(env, *map, *coreSource)); + } else { + return jni::Object<Source>(); + } } void NativeMapView::removeSource(JNIEnv&, jlong sourcePtr) { diff --git a/platform/android/src/native_map_view.hpp b/platform/android/src/native_map_view.hpp index 968c98bd6e..7b3694e73c 100755 --- a/platform/android/src/native_map_view.hpp +++ b/platform/android/src/native_map_view.hpp @@ -217,7 +217,7 @@ public: void addSource(JNIEnv&, jni::jlong); - void removeSourceById(JNIEnv&, jni::String); + jni::Object<Source> removeSourceById(JNIEnv&, jni::String); void removeSource(JNIEnv&, jlong); |