猿问

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

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

在GoogleMaps API v2中,如果我想删除所有的地图标记,我可以简单地这样做:

map.clearOverlays();

如何在GoogleMaps API中做到这一点?V3?

看着参考API我不清楚。


偶然的你
浏览 1046回答 3
3回答

慕森卡

只需执行以下操作:一.宣布一个全局变量:var&nbsp;markersArray&nbsp;=&nbsp;[];二.界定一项职能:function&nbsp;clearOverlays()&nbsp;{ &nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;markersArray.length;&nbsp;i++&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;markersArray[i].setMap(null); &nbsp;&nbsp;} &nbsp;&nbsp;markersArray.length&nbsp;=&nbsp;0;}或google.maps.Map.prototype.clearOverlays&nbsp;=&nbsp;function()&nbsp;{ &nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;markersArray.length;&nbsp;i++&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;markersArray[i].setMap(null); &nbsp;&nbsp;} &nbsp;&nbsp;markersArray.length&nbsp;=&nbsp;0;}在调用以下内容之前,在“标记阵列”中推送标记:markersArray.push(marker);google.maps.event.addListener(marker,"click",function(){});四.打电话给clearOverlays();或map.clearOverlays();在任何需要的地方发挥作用。就这样!

犯罪嫌疑人X

在V3中似乎还没有这样的功能。人们建议在数组中保留对地图上所有标记的引用。然后,当您想要全部删除em时,只需在数组中循环并在每个引用上调用.setMap(NULL)方法。有关更多信息/代码,请参见此问题。我的版本:google.maps.Map.prototype.markers&nbsp;=&nbsp;new&nbsp;Array();google.maps.Map.prototype.getMarkers&nbsp;=&nbsp;function()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this.markers};google.maps.Map.prototype.clearMarkers&nbsp;=&nbsp;function()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;i=0;&nbsp;i<this.markers.length;&nbsp;i++){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.markers[i].setMap(null); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;this.markers&nbsp;=&nbsp;new&nbsp;Array();};google.maps.Marker.prototype._setMap&nbsp;=&nbsp;google.maps.Marker.prototype.setMap; &nbsp;&nbsp;&nbsp;&nbsp;google.maps.Marker.prototype.setMap&nbsp;=&nbsp;function(map)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(map)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.markers[map.markers.length]&nbsp;=&nbsp;this; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;this._setMap(map);}代码是此代码的编辑版本。http:/www.lootogo.com/googlemapstii 3/markerPlugin.html我消除了手动调用addMarker的需要。行家这样做,您可以保持代码紧凑,并在一个地方(不会污染名称空间)。您不再需要自己跟踪标记,您可以通过调用map.getMarkers()来找到地图上的所有标记。反方像我现在这样使用原型和包装器会使我的代码依赖于Google代码,如果它们让市长改变了他们的源代码,这将破坏我的代码。如果你不理解它,那么你将无法修复它,如果真的崩溃。他们改变任何会破坏这一切的可能性很小,但还是.。如果手动删除一个标记,则它的引用仍在标记数组中。(您可以编辑我的setMap方法来修复它,但代价是循环槽标记数组和删除引用)
随时随地看视频慕课网APP
我要回答