Google maps 谷歌地图API-删除标记

Google maps 谷歌地图API-删除标记,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,我在这里和GoogleMapsAPI文档中查看了大量的代码块,但仍然无法找出如何隐藏标记 这是我正在使用的当前代码,它在一个实例中工作。一旦我在带有标记的函数中添加了“for”循环。setMap(null)Firefox将显示以下错误: 错误:TypeError:markers.setMap不是函数 function removeMarkers(){ var markers; alert(markers); alert(locations.length); for

我在这里和GoogleMapsAPI文档中查看了大量的代码块,但仍然无法找出如何隐藏标记

这是我正在使用的当前代码,它在一个实例中工作。一旦我在带有标记的函数中添加了“for”循环。setMap(null)Firefox将显示以下错误:

错误:TypeError:markers.setMap不是函数

function removeMarkers(){
    var markers;
    alert(markers);
    alert(locations.length);
    for (i = 0; i<locations.length; i++){
        markers = locations[i];
        alert(markers.title);
        markers.setMap(null);
    }
}
函数removeMarkers(){
var标记;
警报(标记);
警报(位置、长度);
对于(i=0;i你可以试试这个

    markers[markers.length-1].setMap(null);

希望它能起作用。

您需要保留一个
google.maps.Marker
对象数组来隐藏(或删除或运行其他操作)

在全球范围内:

var gmarkers = [];
然后,在创建标记时在该阵列上推送标记:

var marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i].latitude, locations[i].longitude),
    title: locations[i].title,
    icon: icon,
    map:map
});

// Push your newly created marker into the array:
gmarkers.push(marker);
然后,要删除它们:

function removeMarkers(){
    for(i=0; i<gmarkers.length; i++){
        gmarkers[i].setMap(null);
    }
}

根据谷歌文档,他们说这是最好的方法。 首先创建此函数以了解有多少个标记/

   function setMapOnAll(map1) {
    for (var i = 0; i < markers.length; i++) {
      markers[i].setMap(map1);
    }
  }
然后创建最后一个函数,以便在调用该函数时删除所有标记

 function delateMarkers(){
clearMarker()
markers = []
//console.log(markers) This is just if you want to
}


希望有助于好运

如果有人正在使用React,并且具有不同的Marker组件,并且希望从地图中删除Marker,那么下面的代码可能会很有用

export default function useGoogleMapMarker(props) {
  const [marker, setMarker] = useState();

  useEffect(() => {
    // ...code
    const marker = new maps.Marker({ position, map, title, icon });
    // ...code
    setMarker(marker);
    return () => marker.setMap(null); // to remove markers when unmounts
  }, []);

  return marker;
}

可能重复I did
为了防止地图上的标记闪烁,请在使用.setMap(map)之前使用.getMap()检查现有地图。
export default function useGoogleMapMarker(props) {
  const [marker, setMarker] = useState();

  useEffect(() => {
    // ...code
    const marker = new maps.Marker({ position, map, title, icon });
    // ...code
    setMarker(marker);
    return () => marker.setMap(null); // to remove markers when unmounts
  }, []);

  return marker;
}