【发布时间】:2012-08-21 08:33:26
【问题描述】:
我想在单击提交按钮时清除所有标记。如果我有纬度和经度并想清除该标记,我该怎么做。此外,如果我搜索任何路线,我想清除所有已加载的标记。
【问题讨论】:
-
您的问题中没有足够的信息来提供帮助。标记是如何添加的?显示问题的地图(或 jsfiddle)链接会很有用。通常,我会在数组中保留对已添加到地图中的标记的引用。
标签: javascript google-maps-api-3 map
我想在单击提交按钮时清除所有标记。如果我有纬度和经度并想清除该标记,我该怎么做。此外,如果我搜索任何路线,我想清除所有已加载的标记。
【问题讨论】:
标签: javascript google-maps-api-3 map
为了在插入后从地图中删除标记,您应该使用全局变量来跟踪它们:
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--(不过感谢您的提示!)。