Hom*_*ata 7 javascript mapbox mapbox-gl-js
我创建了一个MapBox实例:
var map = new mapboxgl.Map({
container : 'map',
style : 'mapbox://styles/mapbox/streets-v9'
});
Run Code Online (Sandbox Code Playgroud)
我需要清除所有标记,并尝试使用map.remove(marker)等每个标记,以及其他一些东西,但似乎没有任何效果.
是否有一个简单的函数调用来清除地图上的所有标记?
编辑:不同于如何从地图中删除所有图层和功能?因为我在控制台中得到"eachLayer不是一个公认的功能"(或类似的功能).
AIT*_*med 26
如果您添加了多个标记,并且想要清除地图上的所有标记,则必须遍历所有标记,并逐一删除它们,您将得到如下内容:
if (currentMarkers!==null) {
for (var i = currentMarkers.length - 1; i >= 0; i--) {
currentMarkers[i].remove();
}
}
Run Code Online (Sandbox Code Playgroud)
考虑到thar var currentMarkers包含所有标记,您可以使用以下方法执行此操作:
oneMarker= new mapboxgl.Marker(currentMarkerDiv)
.setLngLat(marker.geometry.coordinates)
.addTo(mapboxMap);
currentMarkers.push(oneMarker);
Run Code Online (Sandbox Code Playgroud)
其中 var currentMarkers是一个全局变量:
var currentMarkers=[];
Run Code Online (Sandbox Code Playgroud)
完整示例:
// 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();
}
}
Run Code Online (Sandbox Code Playgroud)
And*_*-lo 16
你看到了吗?https://www.mapbox.com/mapbox-gl-js/api/#marker#remove
而不是map.remove可能尝试marker.remove:
var marker = new mapboxgl.Marker().addTo(map);
marker.remove();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11968 次 |
| 最近记录: |