如何在Android上使用谷歌地图api v2很好地管理标记

时间:2015-06-05 01:02:20

标签: android google-maps google-maps-markers marker markers

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

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

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

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

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

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

但是当涉及到管理特定标记时,我似乎错过了一些东西。会有一些触发方法会检查所有标记的截止日期(或者更确切地说是按截止日期排序的第一个标记),然后它应该删除(不要隐藏,因为我认为这样做效率很低记忆的观点)。怎么做到这一点?我无法在标记中添加ID之类的自定义变量(这样我就可以找到我感兴趣的那个)并且我有点迷失了。

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

1 个答案:

答案 0 :(得分:1)

如果您想从地图中删除特定标记,只需拨打remove()即可。方法

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

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

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