如何在 android 上使用 google 地图 api v2 很好地管理标记

How to manage Markers well using google maps api v2 on android

我正在尝试实现一个应用程序,您可以在其中添加自己的标记,该标记将被赋予关闭时间。为此,我需要知道如何管理我的标记。假设我有分配了唯一 ID 的用户数组列表。

    private ArrayList<User> userList = new ArrayList<>();

然后我将创建标记数组列表,其中包含纬度、经度、标题、所有者 ID 和截止日期等信息。

    private ArrayList<MyMarker> mMarkersArray = new ArrayList<MyMarker>();

接下来,只要用户激活添加标记方法,新标记就会被推送到我的标记列表中。从意识形态上讲,一切看起来都很好很容易,而且创建新的 object 看起来像这样:

    Marker mMarker = mMap.addMarker(new MarkerOptions() (...) );

但在管理特定标记时,我似乎遗漏了一些东西。将有一些触发方法将检查所有标记的截止日期(或者更确切地说是 'sorted by deadline' 列表中的第一个标记)然后它应该删除(而不是隐藏,因为我认为从内存的角度来看它是低效的).如何做到这一点?我无法将一些自定义变量(如 ID)添加到标记(这样我就可以找到我感兴趣的那个),我有点迷路了。

有一种方法可以通过清除整个地图然后再次渲染除非活动标记之外的所有标记来实现此目的,但就我而言,它非常低效,必须有更好的解决方案。

如果你想从地图上删除一个特定的标记,你可以调用remove()。方法。

从 MapView 和 HashMap 中删除标记的示例代码:

 for (Marker marker : hm.keySet()) {
      if (hm.get(marker).equals(deadline)) {
        marker.remove();
        hm.remove(marker);
      }
  }

如果你只是在特定标记上调用 remove() 方法,你不需要清除整个 MapView。