[android] - rework MarkerView update mechanism (#7581)
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user