标记层数组未从传单地图中删除

array of marker layers is not being deleted from leaflet map

我使用以下代码从地图中删除圈子,然后根据位置添加新圈子。

if(markers.length>0)
    {
    for (var i = 0; i < markers.length; i++) {
        map.removeLayer(markers[i]);
    }
    }

var lat,lon;
var road;
var detector;
//var svg=d3.select("#map").append("svg");
data.forEach(function(d)
        {
    lat=d.lat;
    lon=d.lon;
    road=d.road;
    detector=d.detectorid;
    markers.push((new L.circle([lat, lon], 500, {
        color: 'yellow',
        fillColor: '#f0f',
        fillOpacity: 0.5
    })).bindPopup("Road Name:"+road+"<br>Detector ID: "+detector))

        });
for (var i = 0; i < markers.length; i++) {
    map.addLayer(markers[i]);
}
map.setView([lat, lon],13);
map.dragging.enable();

但是之前的圈子没有添加。新圈子并排添加,旧圈子保留。如何删除之前的圈子?

旧标记正在重新绘制,因为您在清除地图上的图层后没有清空标记数组。在您的第一个 if 语句之后,您需要通过设置 markers = [] 来清空标记变量。这样,当在您的 forEach 循环中调用 marker.push 时,它们会被添加到没有旧圆圈的新数组中。