为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

偶然的你 2019-06-25 13:15:08
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();在任何需要的地方发挥作用。

就这样!


查看完整回答
反对 回复 2019-06-25
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

在V3中似乎还没有这样的功能。

人们建议在数组中保留对地图上所有标记的引用。然后,当您想要全部删除em时,只需在数组中循环并在每个引用上调用.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/googlemapstii 3/markerPlugin.html我消除了手动调用addMarker的需要。

行家

  • 这样做,您可以保持代码紧凑,并在一个地方(不会污染名称空间)。
  • 您不再需要自己跟踪标记,您可以通过调用map.getMarkers()来找到地图上的所有标记。

反方

  • 像我现在这样使用原型和包装器会使我的代码依赖于Google代码,如果它们让市长改变了他们的源代码,这将破坏我的代码。
  • 如果你不理解它,那么你将无法修复它,如果真的崩溃。他们改变任何会破坏这一切的可能性很小,但还是.。
  • 如果手动删除一个标记,则它的引用仍在标记数组中。(您可以编辑我的setMap方法来修复它,但代价是循环槽标记数组和删除引用)


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 1045 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信