[android] Support mbgl::MapObserver

This commit is contained in:
Bruno de Oliveira Abinader
2017-03-13 16:22:07 +02:00
parent 25f48a913d
commit a07e6aee04
2 changed files with 82 additions and 1 deletions

View File

@@ -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&) {

View File

@@ -1,6 +1,7 @@
#pragma once
#include <mbgl/map/backend.hpp>
#include <mbgl/map/change.hpp>
#include <mbgl/map/camera.hpp>
#include <mbgl/map/map.hpp>
#include <mbgl/map/view.hpp>
@@ -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 //