【问题标题】:Angular 6 Remove all markers from google mapAngular 6从谷歌地图中删除所有标记
【发布时间】:2019-06-20 13:47:04
【问题描述】:
<div #gmap class="map"></div>

for (let marker of this.markersDisplay) {
          let markerColor = (marker.MarkerType == MarkerType.Ok) ? "green" : (marker.MarkerType == MarkerType.Warning) ? "yellow" : "red";
          let markerClick = new google.maps.Marker(
            {
              position: new google.maps.LatLng(marker.Latitude, marker.Longitude),
              map: this.map,
              title: marker.Title,
              visible: marker.Visible,
              clickable: marker.Clickable,
              icon: 'http://maps.google.com/mapfiles/ms/icons/' + markerColor + '-dot.png',
            });
          markerClick.addListener('click', () => { this.MarkerClick(marker); });
        }
      }

我需要过滤地图上的标记。在添加新的之前,我想清除地图上的所有标记。该怎么做?

【问题讨论】:

    标签: javascript angular google-maps-api-3 google-maps-markers


    【解决方案1】:

    如何一次性全部删除?

    你不能。将每个 Marker 对象推入一个数组:

    // Create empty markers array    
    var markers = [];
    
    for (let marker of this.markersDisplay) {
      let markerColor = (marker.MarkerType == MarkerType.Ok) ? "green" : (marker.MarkerType == MarkerType.Warning) ? "yellow" : "red";
      let markerClick = new google.maps.Marker({
        position: new google.maps.LatLng(marker.Latitude, marker.Longitude),
        map: this.map,
        title: marker.Title,
        visible: marker.Visible,
        clickable: marker.Clickable,
        icon: 'http://maps.google.com/mapfiles/ms/icons/' + markerColor + '-dot.png',
      });
      markerClick.addListener('click', () => {
        this.MarkerClick(marker);
      });
    
      // Push marker to markers array
      markers.push(markerClick);
    }
    

    稍后当您想将它们全部删除时,循环遍历数组并在每个标记上调用setMap(null)

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

    【讨论】:

      【解决方案2】:

      你可以尝试在标记上运行 foreach 然后设置:

      marker.setMap(null);
      marker = null;
      

      【讨论】:

      • 我的标记有自定义类型,所以我没有方法 setMap :/
      • 你正在创建 new google.maps.Marker() 那么为什么它没有 setMap 方法呢?
      • @MrUpsidown 你是对的!我重新排序代码并编写 this.markerClick.setMap(null);此行仅删除一个标记。如何一次全部删除?
      猜你喜欢
      • 1970-01-01
      • 2013-04-10
      • 2015-04-09
      • 2012-10-17
      • 2013-09-29
      • 2015-06-05
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      相关资源
      最近更新 更多