MapBox 清除所有当前标记

新手上路,请多包涵

我创建了一个 MapBox 实例:

 var map = new mapboxgl.Map({
    container : 'map',
    style : 'mapbox://styles/mapbox/streets-v9'
});

我需要清除所有标记,并在每个标记上尝试过 map.remove(marker) 之类的操作,以及其他一些操作,但似乎没有任何效果。

是否有一个简单的函数调用来清除地图上的所有标记?

编辑:不同于 How to remove all layers and features from map? 因为我在控制台中得到“eachLayer 不是公认的功能”(或类似的)。

原文由 HomerPlata 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
2 个回答

如果你添加了多个标记,并且你想清除地图上的所有标记,你必须遍历所有标记,然后一个一个地删除它们,你会得到这样的东西:

 if (currentMarkers!==null) {
    for (var i = currentMarkers.length - 1; i >= 0; i--) {
      currentMarkers[i].remove();
    }
}

考虑到 var currentMarkers 包含所有标记,您可以使用类似的方法来执行此操作:

 oneMarker= new mapboxgl.Marker(currentMarkerDiv)
    .setLngLat(marker.geometry.coordinates)
    .addTo(mapboxMap);
    currentMarkers.push(oneMarker);

其中 var currentMarkers 是一个全局变量:

 var currentMarkers=[];

完整示例:

 // markers saved here
var currentMarkers=[];

// tmp marker
var oneMarker= new mapboxgl.Marker(currentMarkerDiv)
    .setLngLat(marker.geometry.coordinates)
    .addTo(mapboxMap);

// save tmp marker into currentMarkers
currentMarkers.push(oneMarker);

// remove markers
if (currentMarkers!==null) {
    for (var i = currentMarkers.length - 1; i >= 0; i--) {
      currentMarkers[i].remove();
    }
}

原文由 AIT MANSOUR Mohamed 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题