0

我有一个很长的、可变的Markers 和Polylines 列表,我从我的服务器获取。在某些情况下,Markers 必须更改其图标,Polylines 必须更改其颜色。

我的对象有 id,所以我应该能够知道我必须更新哪个折线/标记。但是,Markers 和 Polylines 没有setId()orgetId()方法,它们会在服务器请求时动态更新(和添加)。

我考虑过使用 aHashMap<Integer, Marker>和 aHashMap<Integer, Polyline>来了解应该删除然后添加哪些项目。我想过这个:

  • 我收到一个项目。我得到了它的 ID。
  • 我查询正确HashMap的具有相同 ID 的项目。
  • 如果 HashMap 不返回 null,我调用Marker.remove()or Polyline.remove(),然后从HashMap
  • 现在hashMap.get(id)无论如何都应该返回 null,所以我PolylineMarkerGoogleMap项目添加到HashMap.

但是在我开始实施之前,我想知道是否有任何方法可以不涉及使用 Giant HashMaps。

有没有其他方法可以在不使用HashMaps、SparseArrays 或类似的东西的情况下实现这种行为?

4

1 回答 1

1

我只使用过一次适用于 Android 的 Google Map API,但我很确定,在检查了与之相关的文档后,应该可以添加一些 Listeners。

您能否提供信息应在哪些条件下更改?例如,如果单击时标记发生变化,则可以使用 GoogleMap.OnMarkerClickListener https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener

无论如何,如果您有标记的引用,带有 Java 变量,您不能更改该信息吗?或者简单地说,当你所说的这种“条件”发生时,你不能清除地图上的标记并再次添加它们吗?您不会有相同的标记,但结果将是相同的。当标记已经附加到地图上时,恐怕您无法修改它们,但您可以尝试一下。

于 2013-03-19T16:59:48.337 回答