Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 816
leshka Avatar asked Dec 27 '12 11:12

leshka


2 Answers

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); 
like image 175
Budius Avatar answered Sep 30 '22 21:09

Budius


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

like image 40
Zamrony P. Juhara Avatar answered Sep 30 '22 23:09

Zamrony P. Juhara