summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2017-01-05 16:58:41 +0100
committerGitHub <noreply@github.com>2017-01-05 16:58:41 +0100
commite71d9ac2d4b6cc1e6d221618c9139b64035753d9 (patch)
tree52e3dfa1ac89038d7e75a40a6ae4308a2e367b6a
parent20615a2c15a3b7e0a002d98146d25f29c8631ff3 (diff)
downloadqtlocation-mapboxgl-e71d9ac2d4b6cc1e6d221618c9139b64035753d9.tar.gz
[android] - rework MarkerView update mechanism (#7581)
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java17
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java6
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;
}