将对象与Marker关联(google map v2)

时间:2012-12-27 11:43:22

标签: android android-maps google-maps-android-api-2

在我的应用程序中,我有一些使用标记在地图上显示其位置的对象。 问题是,我发现处理标记点击的唯一方法是

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

换句话说,我得到Marker对象,而我唯一的接口允许我只设置MarkerOptions。

将Marker与对象关联起来的任何方法?

3 个答案:

答案 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)

您可以使用MarkersetTag()方法

关联任意对象
Marker amarker = mMap.addMarker(new MarkerOptions().position(lat, lng).title("Hello World"));
amarker.setTag(new SomeData());

要检索与标记关联的数据,只需使用其getTag()读取它,然后将其转换为原始类型。

SomeData adata = (SomeData) amarker.getTag();

More information

答案 2 :(得分:8)

另一种选择是创建一个Map,其键是marker.getId(),值是我们的对象。

通过这种方式,我们不会在内存中保留对标记的引用,也不必担心垃圾收集标记。

您可以在此处查看more answers