2

我有一个ActivityListFragment左边有一个SupportMapFragment,右边有一个。

List 和 Map 都由相同的数据支持。地图上数据的可视化表示是Markers.

我希望能够单击列表项或标记,并在其他视觉表示中获取相应的项。

框架和我的数据的限制是:

  1. Marker 类是最终的,并且 Marker 的 id 没有修饰符。这就是为什么我不能使用最简单的方法。

  2. “重要的是不要持有超出视图生命周期的对象(例如标记)。否则会导致内存泄漏,因为视图无法释放。” (参见SupportMapFragment

  3. 标记的标题可以出现多次。这就是为什么昂贵的字符串比较不是我可以采用的方法。

是否有人对此问题有有效的解决方案,或者可以提供正确方向的推动?

4

2 回答 2

3

如果您希望能够注册点击标记,则需要覆盖InfoWindowAdapter.

您可以为标记的标题和片段提供唯一信息,并以这种样式实现接口的方法:

@Override
public View getInfoWindow(Marker marker) {
  // do nothing here in order to obtain the original info window border.
  return null;
}

@Override
public View getInfoContents(Marker marker) {
  // Create your own view here. Obtain the unique information stored
  //  in title / snippet of the current marker.
  return createdView;
}

现在您可以设置OnInfoWindowClickListener并使用存储在那里的唯一信息。

于 2013-01-15T15:45:22.047 回答
0

这是另一种选择。最新的 API 提供了OnMarkerClickListener接口。

https://developers.google.com/maps/documentation/android/marker#marker_click_events

于 2014-03-08T23:56:56.007 回答