массив слоев маркеров не удаляется с карты листовки

Я использую следующий код для удаления кругов с карты перед добавлением новых кругов в зависимости от местоположения.

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

Но предыдущие круги не добавляются. Новые круги добавляются рядом со старыми кругами. Как удалить предыдущие круги?


person Md Johirul Islam    schedule 16.02.2015    source источник
comment
Не очень понятно, что вы пытаетесь сделать. Вы должны опубликовать jsfiddle с примером.   -  person pk.    schedule 16.02.2015
comment
Привет, у меня есть функция. Я вызываю эту функцию из изменения поля со списком. Если я изменю выбор поля со списком, то на карте должно отображаться несколько местоположений в выбранной области в поле со списком. Поэтому, когда я меняю свой выбор в поле со списком, местоположения на карте должны обновляться, удаляя предыдущие местоположения.   -  person Md Johirul Islam    schedule 16.02.2015
comment
Какая функция? Я не вижу функции? Вы должны опубликовать весь соответствующий код, если хотите получить достойные ответы.   -  person iH8    schedule 16.02.2015
comment
весь этот код находится внутри функции function updateMap(data){...}   -  person Md Johirul Islam    schedule 16.02.2015


Ответы (1)


Старые маркеры перерисовываются, потому что вы не очищаете массив маркеров после очистки слоев на карте. После вашего первого оператора if вам нужно очистить переменную маркеров, установив markers = []. Таким образом, когда marker.push вызывается в вашем цикле forEach, они добавляются в новый массив без старых кругов.

person jwhazel    schedule 18.02.2015