在谷歌地图API v2,如果我想删除所有的地图标记,我可以简单地做:
map.clearOverlays();
我如何做到这一点在谷歌地图API v3?
看看参考API,我不清楚。
在谷歌地图API v2,如果我想删除所有的地图标记,我可以简单地做:
map.clearOverlays();
我如何做到这一点在谷歌地图API v3?
看看参考API,我不清楚。
当前回答
你也可以这样做:
function clearMarkers(category){
var i;
for (i = 0; i < markers.length; i++) {
markers[i].setVisible(false);
}
}
其他回答
我发现使用google-maps-utility-library-v3项目中的markermanager库是最简单的方法。
1. 设置标记管理器
mgr = new MarkerManager(map);
google.maps.event.addListener(mgr, 'loaded', function () {
loadMarkers();
});
2. 向MarkerManager添加标记
function loadMarkers() {
var marker = new google.maps.Marker({
title: title,
position: latlng,
icon: icon
});
mgr.addMarker(marker);
mgr.refresh();
}
3.要清除标记,只需要调用MarkerManger的clearMarkers()函数
mgr.clearMarkers();
我找到了一个简单的解决方法(我认为):
var marker = new google.maps.Marker();
function Clear(){
marker.setMap(null);
}
我使用的速记法很好地完成了这项工作。只做
map.clear();
清空Googlemap
mGoogle_map.clear();
谷歌的Demo Gallery有一个关于他们如何做到这一点的演示:
http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html
您可以查看源代码以查看它们如何添加标记。
长话短说,他们把标记保存在一个全局数组中。当清除/删除它们时,它们循环遍历数组,并在给定的标记对象上调用". setmap (null)"。
然而,这个例子展示了一个“技巧”。对于本例,“清除”意味着将它们从映射中删除,但将它们保留在数组中,这允许应用程序快速将它们重新添加到映射中。在某种意义上,这就像“隐藏”它们。
“Delete”也会清除数组。