识别标记并获取与之关联的对象的典型方法是什么?

use*_*613 2 android android-maps-v2

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

我一直计划的一天是这样的:

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

ArrayList<MyObject> items = new ArrayList<MyObject>();
HashMap<Marker, MyObject> markersAndObjects = new HashMap<Marker, MyObject>();
Run Code Online (Sandbox Code Playgroud)

现在,我重写onMarkerClick(),像这样

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

有什么想法吗?

aze*_*iti 9

建议的方法是使用带有标记ID和自定义数据的哈希.如果活动被杀死并恢复,Marker对象可能会更改,但ID将保持不变.你的地图看起来像:

HashMap<String, MyObject> markersAndObjects = new HashMap<String, MyObject>();
Run Code Online (Sandbox Code Playgroud)

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

[稍后编辑]

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