Creé muchos objetos personalizados en mi vista del mapa. Lamentablemente, los objetos desplegables se expandieron cuando se redujeron (cuando deberían haberse reducido). Para evitar esto, monitoreé al usuario acercándose o alejándose en un ejecutable. Si el zoom cambió, rediseñé el mapa. Aquí está mi código:
private Runnable zoomChecker = new Runnable()
{
public void run()
{
//check for updates
if((mLastUpdate>UPDATE_INTERVAL)&&(!DISPLAY_RED_CIRCLE)&&(!DISPLAY_ROUTE_LAYOUT)){
updateRouteInformation();
mLastUpdate = 0;
}else{
mLastUpdate += 200;
}
//check for zoom level changes
int testZoomLevel = mMapView.getZoomLevel();
if((testZoomLevel!=mZoomLevel)&&(DISPLAY_RED_CIRCLE)){
//set that user is zooming
mStillZooming = true;
//remove overlays and clear map
removeOverlayItems();
mMapView.invalidate();
//set zoom level as same
mZoomLevel = testZoomLevel;
}
if((testZoomLevel==mZoomLevel)&&(mStillZooming)){
displayDriverBoundaries(MAP_DRIVER);
}
handler.removeCallbacks(zoomChecker); // remove the old callback
handler.postDelayed(zoomChecker, zoomCheckingDelay); // register a new one
}
};
¿Usted (o cualquier otro) encontrar una solución a esto? Me ha estado volviendo loco por meses. –
La solución alternativa que encontré fue actualizar el mapa solo después de 500 ms de que el mapa se amplió, de esta forma se dibuja la superposición después de que el mapa ya se haya ampliado. Agrego el evento con Handler.postDelayed(). Espero que esto ayude – Itsik
He estado usando MapView durante bastante tiempo, sin haber notado este problema. Si es posible, publique su código/flujo para comprender mejor la lógica. – arcamax