标记层数组未从传单地图中删除
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
时,它们会被添加到没有旧圆圈的新数组中。
我使用以下代码从地图中删除圈子,然后根据位置添加新圈子。
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
时,它们会被添加到没有旧圆圈的新数组中。