【问题标题】:How To clear all the markers from google map using v3 api [closed]如何使用 v3 api 从谷歌地图中清除所有标记 [关闭]
【发布时间】:2012-08-21 08:33:26
【问题描述】:

我想在单击提交按钮时清除所有标记。如果我有纬度和经度并想清除该标记,我该怎么做。此外,如果我搜索任何路线,我想清除所有已加载的标记。

【问题讨论】:

  • 您的问题中没有足够的信息来提供帮助。标记是如何添加的?显示问题的地图(或 jsfiddle)链接会很有用。通常,我会在数组中保留对已添加到地图中的标记的引用。

标签: javascript google-maps-api-3 map


【解决方案1】:

为了在插入后从地图中删除标记,您应该使用全局变量来跟踪它们:

var markers = [];

然后,每当您向地图添加标记时,也将标记添加到 markers 数组中:

markers.push(new google.maps.Marker({
    map: map,
    position: new google.maps.LatLng(20, 20)
});

要清除地图上的所有标记,您可以使用以下命令:

for (var i = 0; i < markers.length; i++)
    markers[i].setMap(null);

如果您想同时清除 markers 数组,可以使用:

for (var i = markers.length-1; i >= 0; i++) {
    markers[i].setMap(null);
    markers.pop();
}

或者这个:

for (var i = 0; i < markers.length; i++)
    markers[i].setMap(null);
markers = [];


如果您想删除基于纬度和经度值的标记作为LatLng 对象,您可以使用以下内容:
for (var i = 0; i < markers.length; i++) {
    if (markers[i].getPosition().equals(latLng)
        markers[i].setMap(null);
}

如果你只是有坐标,你可以使用以下:

for (var i = 0; i < markers.length; i++) {
    var latLng = new google.maps.LatLng(lat, lng);
    if (markers[i].getPosition().equals(latLng)
        markers[i].setMap(null);
}

【讨论】:

  • 不管怎样,在您的“同时清除所有标记”选项中,您的意思是 i--(不过感谢您的提示!)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 2011-03-25
  • 1970-01-01
  • 2012-12-10
  • 2013-10-04
相关资源
最近更新 更多