Google Maps API v3:如何删除所有标记?

在Google Maps API v2中,如果我想删除所有地图标记,我可以简单地执行以下操作:

map.clearOverlays();

我如何在Google Maps API v3中执行此操作?

查看Reference API,我不清楚。


只需执行以下操作:

I.声明一个全局变量:

var markersArray = [];

II。 定义一个函数:

function clearOverlays() {
  for (var i = 0; i < markersArray.length; i++ ) {
    markersArray[i].setMap(null);
  }
  markersArray.length = 0;
}

要么

google.maps.Map.prototype.clearOverlays = function() {
  for (var i = 0; i < markersArray.length; i++ ) {
    markersArray[i].setMap(null);
  }
  markersArray.length = 0;
}

III。 在调用以下命令之前,请在'markerArray'中按下标记:

markersArray.push(marker);
google.maps.event.addListener(marker,"click",function(){});

IV。 调用clearOverlays();map.clearOverlays(); 功能在任何地方。

而已!!


同样的问题。 此代码不再有效。

我已经纠正它,以这种方式更改clearMarkers方法:

set_map(null)---> setMap(null)

google.maps.Map.prototype.clearMarkers = function() {
    for(var i=0; i < this.markers.length; i++){
        this.markers[i].setMap(null);
    }
    this.markers = new Array();
};

文档已更新,其中包含以下主题的详细信息:https://developers.google.com/maps/documentation/javascript/markers#remove


看来V3还没有这样的功能。

人们建议在数组中保留对地图上所有标记的引用。 然后当你想删除em all时,只需循环数组,并在每个引用上调用.setMap(null)方法。

看到这个问题的更多信息/代码。

我的版本:

google.maps.Map.prototype.markers = new Array();

google.maps.Map.prototype.getMarkers = function() {
    return this.markers
};

google.maps.Map.prototype.clearMarkers = function() {
    for(var i=0; i<this.markers.length; i++){
        this.markers[i].setMap(null);
    }
    this.markers = new Array();
};

google.maps.Marker.prototype._setMap = google.maps.Marker.prototype.setMap;

google.maps.Marker.prototype.setMap = function(map) {
    if (map) {
        map.markers[map.markers.length] = this;
    }
    this._setMap(map);
}

该代码是此代码的编辑版本http://www.lootogo.com/googlemapsapi3/markerPlugin.html我删除了需要手动调用addMarker。

优点

  • 这样做可以让代码紧凑并放在一个地方(不会污染名称空间)。
  • 您不必随时跟踪标记,您可以通过调用map.getMarkers()来始终查找地图上的所有标记。
  • 缺点

  • 像我这样使用原型和包装器现在使我的代码依赖于Google代码,如果他们在源代码中进行市长更改,将会中断。
  • 如果你不理解它,那么如果破坏,你将无法修复它。 机会很低,他们会改变任何会破坏这一点,但仍然..
  • 如果您手动删除了一个标记,它的引用仍将位于标记数组中。 (你可以编辑我的setMap方法来修复它,但是以循环槽标记数组和删除引用为代价)
  • 链接地址: http://www.djcxy.com/p/14297.html

    上一篇: Google Maps API v3: How to remove all markers?

    下一篇: STM with partial atomicity for certain TVars