【发布时间】:2011-02-26 05:55:03
【问题描述】:
在 Google Maps API v2 中,我使用 map.clearOverlays() 删除标记并重新绘制它们。
如何使用 Google Maps API v3 做到这一点?
谢谢
【问题讨论】:
-
确实,因为它是链接到已接受答案的帖子。
标签: api google-maps google-maps-api-3
在 Google Maps API v2 中,我使用 map.clearOverlays() 删除标记并重新绘制它们。
如何使用 Google Maps API v3 做到这一点?
谢谢
【问题讨论】:
标签: api google-maps google-maps-api-3
overlayMapTypes 对象带来了明确的方法:
map.overlayMapTypes.clear()
而 map 是您的 Google 地图对象。
如果您的 API 版本中找不到该方法,您可以求助于clear 的以下来源:
clear = function() {
for (; this.get("length");) this.pop()
};
【讨论】:
请参阅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(){});
【讨论】:
这个怎么样?我不想使用 .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);
}
}
【讨论】:
我找到了另一个解决方案,效果很好 它将删除地图上存在的所有叠加层
gmap.overlayMapTypes.setAt( 0, null);
虽然 gmap 是您的地图对象
【讨论】:
这个不错:
http://apitricks.blogspot.com/2010/02/clearoverlays-in-v3.html
链接失效时的文章:
clearOverlays() in V3
API v3 中没有 clearOverlays()。已经提出了一些做法。我认为这是迄今为止最简单的。
在创建时将所有叠加层推送到一个数组中(像往常一样)。以下代码将清除地图和数组:
while(overlays[0])
{
overlays.pop().setMap(null);
}
数组的 pop() 方法删除数组的最后一个元素,并返回该元素。只要数组中有元素,'while' 就会保持这种情况。当 overlays[0] 不再存在时,任务完成,代码将继续。
【讨论】:
您可以在此处找到 Google 提供的一个很好的示例: http://code.google.com/p/gmaps-samples-v3/source/browse/trunk/clear-all-overlays/clear-all-overlays.html
基本上这个想法是删除
【讨论】:
您可以查看 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;
}
}
【讨论】: