Google Maps API v3 - 如何清除叠加层?

时间:2010-06-01 08:03:21

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

在Google Maps API v2中,我使用map.clearOverlays()删除标记并再次绘制它们。

如何使用Google Maps API v3完成此操作?

由于

7 个答案:

答案 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

基本上这个想法是删除

  • Markers
  • 多边形
  • 和Polylines分开