From a07e6aee045b82e8695616fbd4b08107ddb34f75 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Mon, 13 Mar 2017 16:22:07 +0200 Subject: [android] Support mbgl::MapObserver --- platform/android/src/native_map_view.cpp | 64 ++++++++++++++++++++++++++++++++ platform/android/src/native_map_view.hpp | 19 +++++++++- 2 files changed, 82 insertions(+), 1 deletion(-) (limited to 'platform') diff --git a/platform/android/src/native_map_view.cpp b/platform/android/src/native_map_view.cpp index d6307ad80d..864d4c9abb 100755 --- a/platform/android/src/native_map_view.cpp +++ b/platform/android/src/native_map_view.cpp @@ -181,6 +181,70 @@ void NativeMapView::notifyMapChange(mbgl::MapChange change) { javaPeer->Call(*_env, onMapChanged, (int) change); } +void NativeMapView::onCameraWillChange(MapObserver::CameraChangeMode mode) { + if (mode == MapObserver::CameraChangeMode::Immediate) { + notifyMapChange(MapChange::MapChangeRegionWillChange); + } else { + notifyMapChange(MapChange::MapChangeRegionWillChangeAnimated); + } +} + +void NativeMapView::onCameraIsChanging() { + notifyMapChange(MapChange::MapChangeRegionIsChanging); +} + +void NativeMapView::onCameraDidChange(MapObserver::CameraChangeMode mode) { + if (mode == MapObserver::CameraChangeMode::Immediate) { + notifyMapChange(MapChange::MapChangeRegionDidChange); + } else { + notifyMapChange(MapChange::MapChangeRegionDidChangeAnimated); + } +} + +void NativeMapView::onWillStartLoadingMap() { + notifyMapChange(MapChange::MapChangeWillStartLoadingMap); +} + +void NativeMapView::onDidFinishLoadingMap() { + notifyMapChange(MapChange::MapChangeDidFinishLoadingMap); +} + +void NativeMapView::onDidFailLoadingMap() { + notifyMapChange(MapChange::MapChangeDidFailLoadingMap); +} + +void NativeMapView::onWillStartRenderingFrame() { + notifyMapChange(MapChange::MapChangeWillStartRenderingFrame); +} + +void NativeMapView::onDidFinishRenderingFrame(MapObserver::RenderMode mode) { + if (mode == MapObserver::RenderMode::Partial) { + notifyMapChange(MapChange::MapChangeDidFinishRenderingFrame); + } else { + notifyMapChange(MapChange::MapChangeDidFinishRenderingFrameFullyRendered); + } +} + +void NativeMapView::onWillStartRenderingMap() { + notifyMapChange(MapChange::MapChangeWillStartRenderingMap); +} + +void NativeMapView::onDidFinishRenderingMap(MapObserver::RenderMode mode) { + if (mode == MapObserver::RenderMode::Partial) { + notifyMapChange(MapChange::MapChangeDidFinishRenderingMap); + } else { + notifyMapChange(MapChange::MapChangeDidFinishRenderingMapFullyRendered); + } +} + +void NativeMapView::onDidFinishLoadingStyle() { + notifyMapChange(MapChange::MapChangeDidFinishLoadingStyle); +} + +void NativeMapView::onSourceDidChange() { + notifyMapChange(MapChange::MapChangeSourceDidChange); +} + // JNI Methods // void NativeMapView::initializeDisplay(jni::JNIEnv&) { diff --git a/platform/android/src/native_map_view.hpp b/platform/android/src/native_map_view.hpp index b7bf03402e..3b2610c76d 100755 --- a/platform/android/src/native_map_view.hpp +++ b/platform/android/src/native_map_view.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include #include @@ -51,7 +52,23 @@ public: // mbgl::Backend // void invalidate() override; - void notifyMapChange(mbgl::MapChange) override; + + // Deprecated // + void notifyMapChange(mbgl::MapChange); + + // mbgl::Backend (mbgl::MapObserver) // + void onCameraWillChange(MapObserver::CameraChangeMode) override; + void onCameraIsChanging() override; + void onCameraDidChange(MapObserver::CameraChangeMode) override; + void onWillStartLoadingMap() override; + void onDidFinishLoadingMap() override; + void onDidFailLoadingMap() override; + void onWillStartRenderingFrame() override; + void onDidFinishRenderingFrame(MapObserver::RenderMode) override; + void onWillStartRenderingMap() override; + void onDidFinishRenderingMap(MapObserver::RenderMode) override; + void onDidFinishLoadingStyle() override; + void onSourceDidChange() override; // JNI // -- cgit v1.2.1