diff options
Diffstat (limited to 'platform/android/src/native_map_view.cpp')
-rwxr-xr-x | platform/android/src/native_map_view.cpp | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/platform/android/src/native_map_view.cpp b/platform/android/src/native_map_view.cpp index 04cbb21927..36a73fee35 100755 --- a/platform/android/src/native_map_view.cpp +++ b/platform/android/src/native_map_view.cpp @@ -856,9 +856,7 @@ jni::Array<jni::Object<Source>> NativeMapView::getSources(JNIEnv& env) { jni::Array<jni::Object<Source>> jSources = jni::Array<jni::Object<Source>>::New(env, sources.size(), Source::javaClass); int index = 0; for (auto source : sources) { - auto jSource = jni::Object<Source>(createJavaSourcePeer(env, *rendererFrontend, *source)); - jSources.Set(env, index, jSource); - jni::DeleteLocalRef(env, jSource); + jSources.Set(env, index, Source::peerForCoreSource(env, *source, *rendererFrontend)); index++; } @@ -874,38 +872,25 @@ jni::Object<Source> NativeMapView::getSource(JNIEnv& env, jni::String sourceId) } // Create and return the source's native peer - return jni::Object<Source>(createJavaSourcePeer(env, *rendererFrontend, *coreSource)); + return Source::peerForCoreSource(env, *coreSource, *rendererFrontend); } -void NativeMapView::addSource(JNIEnv& env, jni::jlong sourcePtr) { +void NativeMapView::addSource(JNIEnv& env, jni::Object<Source> obj, jlong sourcePtr) { assert(sourcePtr != 0); Source *source = reinterpret_cast<Source *>(sourcePtr); try { - source->addToMap(*map); - source->setRendererFrontend(*rendererFrontend); + source->addToMap(env, obj, *map, *rendererFrontend); } catch (const std::runtime_error& error) { jni::ThrowNew(env, jni::FindClass(env, "com/mapbox/mapboxsdk/style/sources/CannotAddSourceException"), error.what()); } } -jni::Object<Source> NativeMapView::removeSourceById(JNIEnv& env, jni::String id) { - std::unique_ptr<mbgl::style::Source> coreSource = map->getStyle().removeSource(jni::Make<std::string>(env, id)); - if (coreSource) { - return jni::Object<Source>(createJavaSourcePeer(env, *rendererFrontend, *coreSource)); - } else { - return jni::Object<Source>(); - } -} - -void NativeMapView::removeSource(JNIEnv&, jlong sourcePtr) { +void NativeMapView::removeSource(JNIEnv& env, jni::Object<Source> obj, jlong sourcePtr) { assert(sourcePtr != 0); mbgl::android::Source *source = reinterpret_cast<mbgl::android::Source *>(sourcePtr); - std::unique_ptr<mbgl::style::Source> coreSource = map->getStyle().removeSource(source->get().getID()); - if (coreSource) { - source->setSource(std::move(coreSource)); - } + source->removeFromMap(env, obj, *map); } void NativeMapView::addImage(JNIEnv& env, jni::String name, jni::jint w, jni::jint h, jni::jfloat scale, jni::Array<jbyte> pixels) { @@ -1048,7 +1033,6 @@ void NativeMapView::registerNative(jni::JNIEnv& env) { METHOD(&NativeMapView::getSources, "nativeGetSources"), METHOD(&NativeMapView::getSource, "nativeGetSource"), METHOD(&NativeMapView::addSource, "nativeAddSource"), - METHOD(&NativeMapView::removeSourceById, "nativeRemoveSourceById"), METHOD(&NativeMapView::removeSource, "nativeRemoveSource"), METHOD(&NativeMapView::addImage, "nativeAddImage"), METHOD(&NativeMapView::addImages, "nativeAddImages"), |