如何从谷歌地图中删除标记

时间:2017-09-12 17:29:23

标签: javascript google-maps

我想从谷歌地图中删除一个标记,想象我有一个带有两个对象的json对象:

markers: [
  { lat:"35.554588", lng:"-5.325555" },
  { lat:"35.594588", lng:"-5.327555" }
]

以下方法将此对象添加到地图中:

getAddressOnChangeDepart(event){
  this.myLatLngDepart = event.geometry.location;
  this.markers.push(this.myLatLngDepart);
  for(var i = 0; i < this.markers.length; i++){
     var marker = new google.maps.Marker({
       position: new google.maps.LatLng(this.markers[i].lat(),this.markers[i].lng()),
       map: this.map,
       title: 'Hello World!'
     }); 
   }
 }

它运作良好,但我的问题是当我从标记对象中删除一个对象时,属于它的标记仍然出现在地图中。如何从地图中删除(已删除对象的)标记?

1 个答案:

答案 0 :(得分:0)

首先,您需要维护每个标记的引用。使用var marker =即表示marker变量只会是您创建的最后一个标记。

一旦您有对每个标记的引用,您就可以通过调用marker.setMap(null);轻松地从地图中删除标记,如下例所示:https://developers.google.com/maps/documentation/javascript/examples/marker-remove

示例:

var markerReference = [];

getAddressOnChangeDepart(event){
  this.myLatLngDepart = event.geometry.location;
  this.markers.push(this.myLatLngDepart);
  for(var i = 0; i < this.markers.length; i++){
     markerReference[i] = new google.maps.Marker({
       position: new google.maps.LatLng(this.markers[i].lat(),this.markers[i].lng()),
       map: this.map,
       title: 'Hello World!'
     }); 
   }
 }

removeMarker(index) {
    markerReference[index].setMap(null);
}