summaryrefslogtreecommitdiff
path: root/platform/android/src/native_map_view.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/native_map_view.cpp')
-rwxr-xr-xplatform/android/src/native_map_view.cpp116
1 files changed, 74 insertions, 42 deletions
diff --git a/platform/android/src/native_map_view.cpp b/platform/android/src/native_map_view.cpp
index adcc54ea4f..7b22e1e81b 100755
--- a/platform/android/src/native_map_view.cpp
+++ b/platform/android/src/native_map_view.cpp
@@ -95,82 +95,114 @@ NativeMapView::~NativeMapView() {
vm = nullptr;
}
-/**
- * From mbgl::RendererBackend. Callback to java NativeMapView#onMapChanged(int).
- *
- * May be called from any thread
- */
-void NativeMapView::notifyMapChange(mbgl::MapChange change) {
+void NativeMapView::onCameraWillChange(MapObserver::CameraChangeMode mode) {
assert(vm != nullptr);
android::UniqueEnv _env = android::AttachEnv();
static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
- static auto onMapChanged = javaClass.GetMethod<void (int)>(*_env, "onMapChanged");
- javaPeer.get(*_env).Call(*_env, onMapChanged, (int) change);
-}
-
-void NativeMapView::onCameraWillChange(MapObserver::CameraChangeMode mode) {
- if (mode == MapObserver::CameraChangeMode::Immediate) {
- notifyMapChange(MapChange::MapChangeRegionWillChange);
- } else {
- notifyMapChange(MapChange::MapChangeRegionWillChangeAnimated);
- }
+ static auto onCameraWillChange = javaClass.GetMethod<void (jboolean)>(*_env, "onCameraWillChange");
+ javaPeer.get(*_env).Call(*_env, onCameraWillChange, (jboolean) (mode != MapObserver::CameraChangeMode::Immediate));
}
void NativeMapView::onCameraIsChanging() {
- notifyMapChange(MapChange::MapChangeRegionIsChanging);
+ assert(vm != nullptr);
+
+ android::UniqueEnv _env = android::AttachEnv();
+ static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
+ static auto onCameraIsChanging = javaClass.GetMethod<void ()>(*_env, "onCameraIsChanging");
+ javaPeer.get(*_env).Call(*_env, onCameraIsChanging);
}
void NativeMapView::onCameraDidChange(MapObserver::CameraChangeMode mode) {
- if (mode == MapObserver::CameraChangeMode::Immediate) {
- notifyMapChange(MapChange::MapChangeRegionDidChange);
- } else {
- notifyMapChange(MapChange::MapChangeRegionDidChangeAnimated);
- }
+ assert(vm != nullptr);
+
+ android::UniqueEnv _env = android::AttachEnv();
+ static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
+ static auto onCameraDidChange = javaClass.GetMethod<void (jboolean)>(*_env, "onCameraDidChange");
+ javaPeer.get(*_env).Call(*_env, onCameraDidChange, (jboolean) (mode != MapObserver::CameraChangeMode::Immediate));
}
void NativeMapView::onWillStartLoadingMap() {
- notifyMapChange(MapChange::MapChangeWillStartLoadingMap);
+ assert(vm != nullptr);
+
+ android::UniqueEnv _env = android::AttachEnv();
+ static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
+ static auto onWillStartLoadingMap = javaClass.GetMethod<void ()>(*_env, "onWillStartLoadingMap");
+ javaPeer.get(*_env).Call(*_env, onWillStartLoadingMap);
}
void NativeMapView::onDidFinishLoadingMap() {
- notifyMapChange(MapChange::MapChangeDidFinishLoadingMap);
-}
+ assert(vm != nullptr);
+
+ android::UniqueEnv _env = android::AttachEnv();
+ static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
+ static auto onDidFinishLoadingMap = javaClass.GetMethod<void ()>(*_env, "onDidFinishLoadingMap");
+ javaPeer.get(*_env).Call(*_env, onDidFinishLoadingMap);}
-void NativeMapView::onDidFailLoadingMap(std::exception_ptr) {
- notifyMapChange(MapChange::MapChangeDidFailLoadingMap);
+void NativeMapView::onDidFailLoadingMap(std::exception_ptr exceptionPtr) {
+ assert(vm != nullptr);
+
+ android::UniqueEnv _env = android::AttachEnv();
+ static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
+ static auto onDidFailLoadingMap = javaClass.GetMethod<void (jni::String)>(*_env, "onDidFailLoadingMap");
+ std::string error = mbgl::util::toString(exceptionPtr);
+ javaPeer.get(*_env).Call(*_env, onDidFailLoadingMap, jni::Make<jni::String>(*_env, error));
}
void NativeMapView::onWillStartRenderingFrame() {
- notifyMapChange(MapChange::MapChangeWillStartRenderingFrame);
+ assert(vm != nullptr);
+
+ android::UniqueEnv _env = android::AttachEnv();
+ static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
+ static auto onWillStartRenderingFrame = javaClass.GetMethod<void ()>(*_env, "onWillStartRenderingFrame");
+ javaPeer.get(*_env).Call(*_env, onWillStartRenderingFrame);
}
void NativeMapView::onDidFinishRenderingFrame(MapObserver::RenderMode mode) {
- if (mode == MapObserver::RenderMode::Partial) {
- notifyMapChange(MapChange::MapChangeDidFinishRenderingFrame);
- } else {
- notifyMapChange(MapChange::MapChangeDidFinishRenderingFrameFullyRendered);
- }
+ assert(vm != nullptr);
+
+ android::UniqueEnv _env = android::AttachEnv();
+ static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
+ static auto onDidFinishRenderingFrame = javaClass.GetMethod<void (jboolean)>(*_env, "onDidFinishRenderingFrame");
+ javaPeer.get(*_env).Call(*_env, onDidFinishRenderingFrame, (jboolean) (mode != MapObserver::RenderMode::Partial));
}
+
void NativeMapView::onWillStartRenderingMap() {
- notifyMapChange(MapChange::MapChangeWillStartRenderingMap);
+ assert(vm != nullptr);
+
+ android::UniqueEnv _env = android::AttachEnv();
+ static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
+ static auto onWillStartRenderingMap = javaClass.GetMethod<void ()>(*_env, "onWillStartRenderingMap");
+ javaPeer.get(*_env).Call(*_env, onWillStartRenderingMap);
}
void NativeMapView::onDidFinishRenderingMap(MapObserver::RenderMode mode) {
- if (mode == MapObserver::RenderMode::Partial) {
- notifyMapChange(MapChange::MapChangeDidFinishRenderingMap);
- } else {
- notifyMapChange(MapChange::MapChangeDidFinishRenderingMapFullyRendered);
- }
+ assert(vm != nullptr);
+
+ android::UniqueEnv _env = android::AttachEnv();
+ static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
+ static auto onDidFinishRenderingMap = javaClass.GetMethod<void (jboolean)>(*_env, "onDidFinishRenderingMap");
+ javaPeer.get(*_env).Call(*_env, onDidFinishRenderingMap, (jboolean) (mode != MapObserver::RenderMode::Partial));
}
void NativeMapView::onDidFinishLoadingStyle() {
- notifyMapChange(MapChange::MapChangeDidFinishLoadingStyle);
+ assert(vm != nullptr);
+
+ android::UniqueEnv _env = android::AttachEnv();
+ static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
+ static auto onDidFinishLoadingStyle = javaClass.GetMethod<void ()>(*_env, "onDidFinishLoadingStyle");
+ javaPeer.get(*_env).Call(*_env, onDidFinishLoadingStyle);
}
-void NativeMapView::onSourceChanged(mbgl::style::Source&) {
- notifyMapChange(MapChange::MapChangeSourceDidChange);
+void NativeMapView::onSourceChanged(mbgl::style::Source& source) {
+ assert(vm != nullptr);
+
+ android::UniqueEnv _env = android::AttachEnv();
+ static auto& javaClass = jni::Class<NativeMapView>::Singleton(*_env);
+ static auto onSourceChanged = javaClass.GetMethod<void (jni::String)>(*_env, "onSourceChanged");
+ auto sourceId = jni::Make<jni::String>(*_env, source.getID());
+ javaPeer.get(*_env).Call(*_env, onSourceChanged, sourceId);
}
// JNI Methods //