studio setoncameramovelistener newlatlngzoom google animatecamera android overlay zoom android-mapview

setoncameramovelistener - zoom google maps android studio



Comportamiento extraño de dibujo de superposición al hacer zoom en el MapView (6)

Creé muchos dibujables personalizados en mi vista de mapa. Desafortunadamente, los elementos extraíbles se expandieron cuando se redujo (cuando deberían haberse reducido). Para solucionar esto, supervisé al usuario acercando o alejando el zoom en un runnable. Si el zoom cambia, vuelvo a dibujar 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 } };

He extendido Overlay e implementado draw() para dibujar algunas cosas en el mapa. Cuando el zoom se realiza a través de mapController.zoomIn() (se llama al hacer doble clic en el mapa), la superposición se dibuja correctamente en el mapa.

Pero cada vez que me acerco / acerco con el controlador de zoom incorporado, la superposición no se dibuja correctamente y se necesita una panorámica del mapa para actualizar la superposición.


He encontrado en mi aplicación mapview que quiero rastrear mi propia posición, por lo que en el código establezco un punto geográfico en mi posición actual de gps, luego uso el siguiente código para mover el centro del mapa a ese punto y encontré que funciona maravillosamente

MapController mc = mapView.getController(); mc.animateTo(point);

Podría crear una función que amplíe y anime al punto de superposición. Espero que ayude.


He estado usando controladores de zoom sin ningún problema en absoluto. incluso haber dibujado varias capas en el mapa y acercar / alejar no tiene ningún efecto negativo.

Sugiero usar como se muestra abajo

mapController = mapView.getController(); mapController.zoomIn();// or .zoomOut()

en lugar de usar setZoom (XX), use zoomIn () / zoomOut () que hace que el zoom sea más suave, esto puede ayudar a que funcione mejor, especialmente con múltiples superposiciones.



public class MyMap_MapControllerActivity extends MapActivity { private MapView mapView; //private MapController mapController; MapView.LayoutParams lp; int y = 10; int x = 10; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mapView = (MapView)findViewById(R.id.map_view); mapView.setSatellite(true); mapView.setStreetView(true); mapView.setTraffic(true); GeoPoint center = mapView.getMapCenter(); int latSpan = mapView.getLatitudeSpan(); int longSpan = mapView.getLongitudeSpan(); lp = new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT, x, y, MapView.LayoutParams.TOP_LEFT); View zoomControls = mapView.getZoomControls(); mapView.addView(zoomControls, lp); mapView.displayZoomControls(true); } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } }


mapView.setBuiltInZoomControls(true); mapView.getController().setZoom(15); controller = mapView.getController(); mapOverlays = mapView.getOverlays();

esta.