GoogleMaps API v3:如何删除所有标记?在GoogleMaps API v2中,如果我想删除所有的地图标记,我可以简单地这样做:map.clearOverlays();如何在GoogleMaps API中做到这一点?V3?看着参考API我不清楚。
3 回答
慕森卡
TA贡献1806条经验 获得超8个赞
var markersArray = [];
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;}
markersArray.push(marker);google.maps.event.addListener(marker,"click",function(){});
clearOverlays();
map.clearOverlays();
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
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);}
这样做,您可以保持代码紧凑,并在一个地方(不会污染名称空间)。 您不再需要自己跟踪标记,您可以通过调用map.getMarkers()来找到地图上的所有标记。
像我现在这样使用原型和包装器会使我的代码依赖于Google代码,如果它们让市长改变了他们的源代码,这将破坏我的代码。 如果你不理解它,那么你将无法修复它,如果真的崩溃。他们改变任何会破坏这一切的可能性很小,但还是.。 如果手动删除一个标记,则它的引用仍在标记数组中。(您可以编辑我的setMap方法来修复它,但代价是循环槽标记数组和删除引用)
添加回答
举报
0/150
提交
取消