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?
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);
You can associate arbitrary object by using Marker's setTag() method
Marker amarker = mMap.addMarker(new MarkerOptions().position(lat, lng).title("Hello World")); amarker.setTag(new SomeData());
To retrieve data associated with marker, you simply read it using its getTag() and then cast it to its original type.
SomeData adata = (SomeData) amarker.getTag();
More information
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With