diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java index 409b0bf19..ad221691b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java @@ -70,10 +70,20 @@ public class MarkerViewManager implements MapView.OnMapChangedListener { } } + /** + * Called to enable or disable MarkerView management. + * + * @param enabled true if management should be enabled + */ public void setEnabled(boolean enabled) { this.enabled = enabled; } + /** + * Called with true to wait for the next render invocation. + * + * @param waitingForRenderInvoke true if waiting for next render event + */ public void setWaitingForRenderInvoke(boolean waitingForRenderInvoke) { isWaitingForRenderInvoke = waitingForRenderInvoke; } @@ -155,7 +165,7 @@ public class MarkerViewManager implements MapView.OnMapChangedListener { * {@link MarkerView} will be animated to visible using alpha animation. *

*/ - public void update() { + public void updateMarkerViewsPosition() { for (final MarkerView marker : markerViewMap.keySet()) { final View convertView = markerViewMap.get(marker); if (convertView != null) { @@ -421,10 +431,11 @@ public class MarkerViewManager implements MapView.OnMapChangedListener { * once each 250 ms. *

*/ - public void scheduleViewMarkerInvalidation() { + public void update() { if (enabled) { long currentTime = SystemClock.elapsedRealtime(); if (currentTime < updateTime) { + updateMarkerViewsPosition(); return; } invalidateViewMarkersInVisibleRegion(); @@ -509,7 +520,7 @@ public class MarkerViewManager implements MapView.OnMapChangedListener { // trigger update to make newly added ViewMarker visible, // these would only be updated when the map is moved. - update(); + updateMarkerViewsPosition(); } /** diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java index 17317522a..05b37bc80 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java @@ -66,7 +66,7 @@ class AnnotationManager { } void update() { - markerViewManager.scheduleViewMarkerInvalidation(); + markerViewManager.update(); infoWindowManager.update(); } @@ -226,6 +226,7 @@ class AnnotationManager { if (onMarkerViewAddedListener != null) { markerViewManager.addOnMarkerViewAddedListener(marker, onMarkerViewAddedListener); } + markerViewManager.setEnabled(true); markerViewManager.setWaitingForRenderInvoke(true); return marker; } @@ -248,7 +249,8 @@ class AnnotationManager { annotations.put(id, marker); markers.add(marker); } - markerViewManager.invalidateViewMarkersInVisibleRegion(); + markerViewManager.setEnabled(true); + markerViewManager.update(); return markers; }