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

时间:2015-02-16 17:51:13

标签: javascript leaflet mapbox

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

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();

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

1 个答案:

答案 0 :(得分:1)

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