summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--android/cpp/jni.cpp2
-rw-r--r--android/cpp/native_map_view.cpp4
-rw-r--r--android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java82
-rw-r--r--android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java4
4 files changed, 77 insertions, 15 deletions
diff --git a/android/cpp/jni.cpp b/android/cpp/jni.cpp
index b3e9edd044..34bef770d8 100644
--- a/android/cpp/jni.cpp
+++ b/android/cpp/jni.cpp
@@ -1465,7 +1465,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_ERR;
}
- onMapChangedId = env->GetMethodID(nativeMapViewClass, "onMapChanged", "()V");
+ onMapChangedId = env->GetMethodID(nativeMapViewClass, "onMapChanged", "(I)V");
if (onMapChangedId == nullptr) {
env->ExceptionDescribe();
return JNI_ERR;
diff --git a/android/cpp/native_map_view.cpp b/android/cpp/native_map_view.cpp
index 2d2a3b6cf6..f38513b327 100644
--- a/android/cpp/native_map_view.cpp
+++ b/android/cpp/native_map_view.cpp
@@ -637,7 +637,7 @@ void NativeMapView::resume() {
}
}
-void NativeMapView::notifyMapChange(mbgl::MapChange) {
+void NativeMapView::notifyMapChange(mbgl::MapChange change) {
mbgl::Log::Debug(mbgl::Event::Android, "NativeMapView::notifyMapChange()");
assert(vm != nullptr);
@@ -646,7 +646,7 @@ void NativeMapView::notifyMapChange(mbgl::MapChange) {
JNIEnv *env = nullptr;
bool detach = attach_jni_thread(vm, &env, "NativeMapView::notifyMapChange()");
- env->CallVoidMethod(obj, onMapChangedId);
+ env->CallVoidMethod(obj, onMapChangedId, change);
if (env->ExceptionCheck()) {
env->ExceptionDescribe();
}
diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java
index d9bbe1b987..3718a567a8 100644
--- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java
+++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java
@@ -160,6 +160,67 @@ public class MapView extends FrameLayout implements LocationListener {
// Used to manage Event Listeners
private ArrayList<OnMapChangedListener> mOnMapChangedListener;
+ private enum MapChange {
+ MapChangeNullChange(-1),
+ MapChangeRegionWillChange(0),
+ MapChangeRegionWillChangeAnimated(1),
+ MapChangeRegionIsChanging(2),
+ MapChangeRegionDidChange(3),
+ MapChangeRegionDidChangeAnimated(4),
+ MapChangeWillStartLoadingMap(5),
+ MapChangeDidFinishLoadingMap(6),
+ MapChangeDidFailLoadingMap(7),
+ MapChangeWillStartRenderingFrame(8),
+ MapChangeDidFinishRenderingFrame(9),
+ MapChangeDidFinishRenderingFrameFullyRendered(10),
+ MapChangeWillStartRenderingMap(11),
+ MapChangeDidFinishRenderingMap(12),
+ MapChangeDidFinishRenderingMapFullyRendered(13);
+
+ private int value;
+
+ private MapChange(int value) {
+ this.value = value;
+ }
+
+ public static MapChange fromInteger(int value) {
+ switch (value) {
+ case -1:
+ return MapChange.MapChangeNullChange;
+ case 0:
+ return MapChange.MapChangeRegionWillChange;
+ case 1:
+ return MapChange.MapChangeRegionWillChangeAnimated;
+ case 2:
+ return MapChange.MapChangeRegionIsChanging;
+ case 3:
+ return MapChange.MapChangeRegionDidChange;
+ case 4:
+ return MapChange.MapChangeRegionDidChangeAnimated;
+ case 5:
+ return MapChange.MapChangeWillStartLoadingMap;
+ case 6:
+ return MapChange.MapChangeDidFinishLoadingMap;
+ case 7:
+ return MapChange.MapChangeDidFailLoadingMap;
+ case 8:
+ return MapChange.MapChangeWillStartRenderingFrame;
+ case 9:
+ return MapChange.MapChangeDidFinishRenderingFrame;
+ case 10:
+ return MapChange.MapChangeDidFinishRenderingFrameFullyRendered;
+ case 11:
+ return MapChange.MapChangeWillStartRenderingMap;
+ case 12:
+ return MapChange.MapChangeDidFinishRenderingMap;
+ case 13:
+ return MapChange.MapChangeDidFinishRenderingMapFullyRendered;
+ default:
+ return null;
+ }
+ }
+ }
+
public interface OnFlingListener {
void onFling();
}
@@ -705,8 +766,8 @@ public class MapView extends FrameLayout implements LocationListener {
addOnMapChangedListener(new OnMapChangedListener() {
@Override
- public void onMapChanged() {
- updateMap();
+ public void onMapChanged(MapChange change) {
+ updateMap(change);
}
});
}
@@ -1521,7 +1582,7 @@ public class MapView extends FrameLayout implements LocationListener {
* Defines callback for events OnMapChange
*/
public interface OnMapChangedListener {
- void onMapChanged();
+ void onMapChanged(MapChange change);
}
/**
@@ -1547,13 +1608,14 @@ public class MapView extends FrameLayout implements LocationListener {
// Called when the map view transformation has changed
// Called via JNI from NativeMapView
// Need to update anything that relies on map state
- protected void onMapChanged() {
+ protected void onMapChanged(int rawChange) {
+ final MapChange change = MapChange.fromInteger(rawChange);
if (mOnMapChangedListener != null) {
post(new Runnable() {
@Override
public void run() {
for (OnMapChangedListener listener : mOnMapChangedListener) {
- listener.onMapChanged();
+ listener.onMapChanged(change);
}
}
});
@@ -1604,7 +1666,7 @@ public class MapView extends FrameLayout implements LocationListener {
public final void setMyLocationEnabled (boolean enabled) {
mIsMyLocationEnabled = enabled;
toggleGps(enabled);
- updateMap();
+ updateMap(MapChange.MapChangeNullChange);
}
/**
@@ -1670,7 +1732,7 @@ public class MapView extends FrameLayout implements LocationListener {
}
// Update Map
- updateMap();
+ updateMap(MapChange.MapChangeNullChange);
}
// This class handles sensor updates to calculate compass bearing
@@ -1708,7 +1770,7 @@ public class MapView extends FrameLayout implements LocationListener {
}
}
- updateMap();
+ updateMap(MapChange.MapChangeNullChange);
}
@Override
@@ -1740,7 +1802,7 @@ public class MapView extends FrameLayout implements LocationListener {
private void updateLocation(Location location) {
if (location != null) {
mGpsLocation = location;
- updateMap();
+ updateMap(MapChange.MapChangeNullChange);
}
}
@@ -1754,7 +1816,7 @@ public class MapView extends FrameLayout implements LocationListener {
}
// Updates the UI to match the current map's position
- private void updateMap() {
+ private void updateMap(MapChange change) {
// Using direct access to mIsCompassEnabled instead of isCompassEnabled() for
// small performance boost as this method is called rapidly.
if (mIsCompassEnabled) {
diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java
index 56589f479b..ca57049876 100644
--- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java
+++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java
@@ -432,8 +432,8 @@ class NativeMapView {
mMapView.onInvalidate();
}
- protected void onMapChanged() {
- mMapView.onMapChanged();
+ protected void onMapChanged(int rawChange) {
+ mMapView.onMapChanged(rawChange);
}
protected void onFpsChanged(double fps) {