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。
优点
缺点