在Google Maps API v2中,我使用map.clearOverlays()
删除标记并再次绘制它们。
如何使用Google Maps API v3完成此操作?
由于
答案 0 :(得分:34)
这很好:
http://apitricks.blogspot.com/2010/02/clearoverlays-in-v3.html
链接死亡的文章:
clearOverlays() in V3
API v3中没有clearOverlays()。已经介绍了一些做法。我认为到目前为止这是最简单的。
创建时将所有叠加层推送到数组中(像往常一样)。以下代码将清除map和数组:
while(overlays[0])
{
overlays.pop().setMap(null);
}
数组的pop()方法删除数组的最后一个元素,并返回该元素。只要数组中有元素,'while'就会发生这种情况。当覆盖[0]不再存在时,任务完成,代码将继续。
答案 1 :(得分:14)
有关您可以使用的各种选项的详细信息,请参阅here,但您现在必须遍历标记并单独删除它们。您的代码应如下所示:
var markers = [];
function clearOverlays() {
while(markers.length) { markers.pop().setMap(null); }
markers.length = 0;
}
markers.push(marker);
google.maps.event.addListener(marker,"click",function(){});
答案 2 :(得分:2)
我找到了另一种解决方案,它的效果非常好 它将删除地图上存在的所有叠加层
gmap.overlayMapTypes.setAt( 0, null);
而gmap是你的地图对象
答案 3 :(得分:1)
您可以查看Google地图文档,因为它显示了简单的deleteOverLays方法http://code.google.com/apis/maps/documentation/javascript/overlays.html
// Deletes all markers in the array by removing references to them
function deleteOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
}
答案 4 :(得分:1)
这个怎么样?我不想使用.setMap(null),因为我不知道再次启动polyShape的更好方法。
polyShape = new google.maps.Polygon(
{
strokeColor : '#000000',
strokeOpacity : 0.3,
strokeWeight : 1,
fillColor : "#000000",
fillOpacity : 0.26,
geodesic : true
});
然后..遍历路径将其删除。
var path = new google.maps.MVCArray;
/**
* Delete all points inside Map
*/
function clearMap()
{
//clear markers
for (var i = 0; i < markers.length; i++)
{
markers[i].setMap(null);
}
markers = [];
//clear polygon, still finding more elegant way
while (polyShape.getPath().length)
{
path.removeAt(0);
}
}
答案 5 :(得分:1)
overlayMapTypes
对象带来了一个明确的方法:
map.overlayMapTypes.clear()
地图是您的Google地图对象。
如果在API版本中找不到该方法,可以使用以下clear
来源:
clear = function() {
for (; this.get("length");) this.pop()
};
答案 6 :(得分:0)
您可以在此处找到Google提供的一个很好的示例: http://code.google.com/p/gmaps-samples-v3/source/browse/trunk/clear-all-overlays/clear-all-overlays.html
基本上这个想法是删除