diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2017-01-05 16:58:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-05 16:58:41 +0100 |
commit | e71d9ac2d4b6cc1e6d221618c9139b64035753d9 (patch) | |
tree | 52e3dfa1ac89038d7e75a40a6ae4308a2e367b6a /platform | |
parent | 20615a2c15a3b7e0a002d98146d25f29c8631ff3 (diff) | |
download | qtlocation-mapboxgl-e71d9ac2d4b6cc1e6d221618c9139b64035753d9.tar.gz |
[android] - rework MarkerView update mechanism (#7581)
Diffstat (limited to 'platform')
2 files changed, 18 insertions, 5 deletions
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 409b0bf195..ad221691b4 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. * </p> */ - 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. * </p> */ - 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 17317522a3..05b37bc80d 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; } |