我使用以下代码从地图中删除圆圈,然后根据位置添加新圆圈。
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();
但之前的圈子没有被添加。新圈子被并排添加旧圈子。如何删除之前的圈子?
答案 0 :(得分:1)
旧标记正在重绘,因为在清除地图上的图层后,您没有清空标记数组。在您的第一个if
语句后,您需要通过设置markers = []
来清空标记变量。这样,当您在forEach循环中调用marker.push
时,它们会被添加到没有旧圆圈的新数组中。