leshka leshka - 3 months ago 22
Android Question

Associate an object with Marker (google map v2)

In my app I have some objects that have their location displayed on the map using markers.
The problem is that the only way I've found to handle marker clicks is

googleMap.setOnMarkerClickListener(new ... {
@Override
public void onMarkerClick(Marker marker) {
// how to get the object associated to marker???
}
})


In other words I get the Marker object while the only interface that I have allows me to set just MarkerOptions.

Any way to associate Marker with an object?

Answer

I reckon this callback was not very thoroughly though by the Android team, but, it's what we have.

Whenever you call mMap.addMarker(); it returns the generated marker. You can then use a HashMap or some other data holder structure to remember it.

// 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);