Javascript Mapboxgl JS不';不要删除标记

Javascript Mapboxgl JS不';不要删除标记,javascript,mapbox-gl-js,Javascript,Mapbox Gl Js,我正试图删除MapboxGL地图中的标记,但它不起作用,它抛出: var marker = new mapboxgl.Marker().addTo(map); marker.remove(); TypeError: e is undefined 我的工作流程是抛出一个javascript函数来删除标记并添加新标记: geojson.features=新功能; /*这里是要删除的代码*/ 这里是要删除的代码! /*向地图添加标记*/ geojson.features.forEach(函数(标记)

我正试图删除MapboxGL地图中的标记,但它不起作用,它抛出:

var marker = new mapboxgl.Marker().addTo(map);
marker.remove();
TypeError: e is undefined
我的工作流程是抛出一个javascript函数来删除标记并添加新标记:

geojson.features=新功能;
/*这里是要删除的代码*/
这里是要删除的代码!
/*向地图添加标记*/
geojson.features.forEach(函数(标记){
//为每个功能创建一个HTML元素
var el=document.createElement('div');
el.className='marker';
//为每个要素制作一个标记,并将其添加到地图中
var new_marker=新mapboxgl.marker(el)
.setLngLat(标记、几何、坐标)
.setPopup(新的mapboxgl.Popup({offset:25})//添加弹出窗口
.setHTML(“”+marker.properties.title+''+marker.properties.description+'

')) .addTo(地图); });
在我的上一次尝试中,我尝试用此删除此项,但效果不好(工作流会随机更新):

/*删除标记*/
var markers=document.getElementsByClassName('marker');
对于(i=0;i
更新

我尝试了建议的解决方案,但不起作用……:

        let markers = [];
        geojson.features.forEach((feature) => {
          let marker = new mapboxgl.Marker().setLngLat(feature.geometry.coordinates).addTo(map);
          markers.push(marker);
        });

        // clear markers array
        markers.forEach((marker) => marker.remove())


        geojson.features = features;

        geojson.features.forEach(function(marker) {
          // create a HTML element for each feature
          var el = document.createElement('div');
          el.className = 'marker';
          //el.setAttribute("longitude",marker.geometry.coordinates[0].toString());
          //el.setAttribute("latitude",marker.geometry.coordinates[1].toString());

          // make a marker for each feature and add it to the map
          var new_marker = new mapboxgl.Marker(el)
              .setLngLat(marker.geometry.coordinates)
              .setPopup(new mapboxgl.Popup({offset: 25}) // add popups
                  .setHTML('<h3>' + marker.properties.title + '</h3><p>' + marker.properties.description + '</p>'))
              .addTo(map);
        });
let markers=[];
geojson.features.forEach((feature)=>{
让marker=new mapboxgl.marker().setLngLat(feature.geometry.coordinates).addTo(map);
标记器。推(标记器);
});
//清除标记数组
markers.forEach((marker)=>marker.remove())
geojson.features=特征;
geojson.features.forEach(函数(标记){
//为每个功能创建一个HTML元素
var el=document.createElement('div');
el.className='marker';
//el.setAttribute(“经度”,marker.geometry.coordinates[0].toString());
//el.setAttribute(“纬度”,marker.geometry.coordinates[1].toString());
//为每个要素制作一个标记,并将其添加到地图中
var new_marker=新mapboxgl.marker(el)
.setLngLat(标记、几何、坐标)
.setPopup(新的mapboxgl.Popup({offset:25})//添加弹出窗口
.setHTML(“”+marker.properties.title+''+marker.properties.description+'

')) .addTo(地图); });
发生错误是因为您需要指定标记的坐标:

let marker = new mapboxgl.Marker().setLngLat([30.5, 50.5]).addTo(map);
marker.remove();
之后,您可以删除标记:

let marker = new mapboxgl.Marker().setLngLat([30.5, 50.5]).addTo(map);
marker.remove();
在您的情况下,您可以将所有标记保存到阵列,然后删除每个标记:

var markers = [];

function drawMarkers(features){
  clearMarkers();
  features.forEach((feature) => {
    let marker = new mapboxgl.Marker()
      .setLngLat(feature.geometry.coordinates)
      .setPopup(new mapboxgl.Popup()
        .setHTML(`<h3>${feature.properties.title}</h3><p>${feature.properties.description}</p>`))
      .addTo(map);
    markers.push(marker)
  });
}

function clearMarkers(){
  markers.forEach((marker) => marker.remove());
  markers = [];
}

drawMarkers(<YOUR FEAUTURES>);
var标记=[];
功能标记(特性){
clearMarkers();
features.forEach((feature)=>{
let marker=new mapboxgl.marker()
.setLngLat(特征、几何、坐标)
.setPopup(新的mapboxgl.Popup()
.setHTML(`${feature.properties.title}${feature.properties.description}

`)) .addTo(地图); 标记器。推(标记器) }); } 函数clearMarkers(){ markers.forEach((marker)=>marker.remove()); 标记=[]; } 绘图标记();
我发布了更新后的代码。。。对不起,它不起作用了。。。奇怪的是,如果我像在第二个代码片段中那样从
document
对象中删除dom元素,它会删除标记,但它是随机工作的……请尝试以下操作: