2

我在我的一个应用程序中使用地图。我想知道在点击标记时获取标记的关联对象的常用/有效方法是什么。

我今天的计划是这样的:

mMap.addMarker(...);首先,我使用返回的标记作为索引创建对象的 ArrayList 和这些对象的 HashMap 。

ArrayList<MyObject> items = new ArrayList<MyObject>();
HashMap<Marker, MyObject> markersAndObjects = new HashMap<Marker, MyObject>();

onMarkerClick()现在,我像这样覆盖

public boolean onMarkerClick(Marker clickedMarker) {
    // send the object returned by markersAndObjects.get(clickedMarker) for processing
    return false;
}

对此有什么想法吗?

4

1 回答 1

9

推荐的方法是使用带有标记 ID 和您的自定义数据的哈希。如果 Activity 被终止并恢复,Marker 对象可能会更改,但 ID 将保持不变。你的地图看起来像:

HashMap<String, MyObject> markersAndObjects = new HashMap<String, MyObject>();

标记对象有一个 getId() 方法来获取 ID。

[后期编辑]

截至 2016 年 8 月,有一个新的 API,不再需要 HashMap。请参阅 https://developers.google.com/android/reference/com/google/android/gms/maps/model/Marker.html#setTag(java.lang.Object)

于 2013-03-08T11:05:04.087 回答