在我的应用程序中,我有一些使用标记在地图上显示其位置的对象。 问题是,我发现处理标记点击的唯一方法是
googleMap.setOnMarkerClickListener(new ... {
@Override
public void onMarkerClick(Marker marker) {
// how to get the object associated to marker???
}
})
换句话说,我得到Marker对象,而我唯一的接口允许我只设置MarkerOptions。
将Marker与对象关联起来的任何方法?
答案 0 :(得分:54)
我认为Android团队的回调并不是很彻底,但是,这就是我们所拥有的。
每当您致电mMap.addMarker();
时,它都会返回生成的标记。然后,您可以使用HashMap或其他一些数据持有者结构来记住它。
// 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);
答案 1 :(得分:31)
Marker amarker = mMap.addMarker(new MarkerOptions().position(lat, lng).title("Hello World"));
amarker.setTag(new SomeData());
要检索与标记关联的数据,只需使用其getTag()读取它,然后将其转换为原始类型。
SomeData adata = (SomeData) amarker.getTag();
答案 2 :(得分:8)