android - trazar - marcadores multiples desde una base de datos en google maps
No ajustar a marcador después de hacer clic en el mapa de Android v2 (2)
Basado en lo que leí de los Marcadores - API de Android de Google Maps ( https://developers.google.com/maps/documentation/android/marker#marker_click_events )
Eventos de clic de marcador
Puede usar OnMarkerClickListener para escuchar eventos de clics en el marcador. Para configurar este oyente en el mapa, llame a GoogleMap.setOnMarkerClickListener (OnMarkerClickListener). Cuando un usuario hace clic en un marcador, se llamará a MarkerClick (Marker) y el marcador se pasará como un argumento. Este método devuelve un valor booleano que indica si ha consumido el evento (es decir, desea suprimir el comportamiento predeterminado). Si devuelve falso, entonces se producirá el comportamiento predeterminado además de su comportamiento personalizado. El comportamiento predeterminado para un evento de clic de marcador es mostrar su ventana de información (si está disponible) y mover la cámara de manera que el marcador esté centrado en el mapa.
Es probable que pueda anular este método y que solo abra el marcador y devuelva verdadero para consumir el evento.
// Since we are consuming the event this is necessary to
// manage closing opened markers before opening new ones
Marker lastOpened = null;
mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
// Check if there is an open info window
if (lastOpened != null) {
// Close the info window
lastOpened.hideInfoWindow();
// Is the marker the same marker that was already open
if (lastOpened.equals(marker)) {
// Nullify the lastOpened object
lastOpened = null;
// Return so that the info window isn''t opened again
return true;
}
}
// Open the info window for the marker
marker.showInfoWindow();
// Re-assign the last opened such that we can close it later
lastOpened = marker;
// Event was handled by our code do not launch default behaviour.
return true;
}
});
Este es un código no probado pero puede ser una solución viable.
Gracias, DMan
Actualmente Android Map v2 se ajusta a la ubicación del marcador después de hacer clic. Quiero desactivar este comportamiento, pero no veo ninguna opción para hacerlo.
¿Alguien sabe cómo arreglar eso?
Parece que deberíamos poder hacer lo siguiente, pero debido a este error , no funciona porque marker.isInfoWindowShown()
siempre devuelve falso:
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
if (marker.isInfoWindowShown()) {
marker.hideInfoWindow();
} else {
marker.showInfoWindow();
}
return true;
}
});
Sin embargo, lo siguiente tiene el mismo efecto y funciona:
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
Marker currentShown;
public boolean onMarkerClick(Marker marker) {
if (marker.equals(currentShown)) {
marker.hideInfoWindow();
currentShown = null;
} else {
marker.showInfoWindow();
currentShown = marker;
}
return true;
}
});
Como solo se muestra una ventana de información a la vez (como se indica en la Guía del desarrollador de Google Maps API v2 ), solo tenemos que preocuparnos de ocultar la ventana de información si se hace clic en el marcador cuya ventana de información está actualmente abierta.