studio - google maps android sgoliver
Asociar un objeto con un marcador(google map v2) (3)
Considero que esta devolución de llamada no fue muy exhaustiva por parte del equipo de Android, pero es lo que tenemos.
Siempre que llame a mMap.addMarker();
devuelve el marcador generado. Luego puede usar un HashMap o alguna otra estructura de titular de datos para recordarlo.
// Create the hash map on the beginning
WeakHashMap <Marker, Object> haspMap = new WeakHashMap <Marker, Object>();
// whenever adding your marker
Marker m = mMap.addMarker(new MarkerOptions().position(lat, lng).title("Hello World").icon(icon_bmp));
haspMap.put(m, your_data);
En mi aplicación, tengo algunos objetos que muestran su ubicación en el mapa usando marcadores. El problema es que la única forma que he encontrado para manejar los clics de marcadores es
googleMap.setOnMarkerClickListener(new ... {
@Override
public void onMarkerClick(Marker marker) {
// how to get the object associated to marker???
}
})
En otras palabras, obtengo el objeto Marker mientras que la única interfaz que tengo me permite configurar solo MarkerOptions.
¿Alguna forma de asociar marcador con un objeto?
Otra opción sería crear un Mapa cuyas claves son marker.getId () y el valor es nuestro objeto.
De esta manera, no guardaríamos una referencia a un marcador en la memoria, y no tendríamos que preocuparnos por los marcadores de recolección de basura.
Aquí puedes ver más respuestas .
Puede asociar un objeto arbitrario utilizando el método setTag() Marker .
Marker amarker = mMap.addMarker(new MarkerOptions().position(lat, lng).title("Hello World"));
amarker.setTag(new SomeData());
Para recuperar los datos asociados con el marcador, simplemente getTag() usando su getTag() y luego getTag() a su tipo original.
SomeData adata = (SomeData) amarker.getTag();