2017-02-23 21 views
0

следующий код позволит создать многоугольник на карте. Это работает отлично, но предыдущий слой geojson также отображается при добавлении нового слоя.удалить предыдущий многоугольник (слой geojson) автоматически листовка при добавлении другого слоя?

$http.get("./json/sf.geo.json").success(function(data, status) { 
    leafletData.getMap('lfdt').then(function(map){  
    var polyLayer = L.geoJson(data, {filter: layerFilter}).addTo(map); 
    function clear_polygon() { 
     map.removeLayer(polyLayer); 
      } 

    function layerFilter(feature) { 
      if (feature.properties.zip === $scope.code) return true; 
     } 
     map.fitBounds(polyLayer.getBounds(), { 
     padding: [40, 40] 
    }); 
}); 

У меня есть раскрывающийся список zipcodes, и я хочу показать выбранные границы почтового индекса на карте лифтов. проблема заключается в том, когда пользователю выбран другой zipcode, отображается новый многоугольник, но старый также отображается, как вы можете видеть на изображении ниже.

enter image description here

Может кто-нибудь, пожалуйста, помогите мне, где я должен написать removeLayers(). Пожалуйста, предложите мне.

ответ

0

Проблема заключается в том, что с помощью var для повторного объявления вашей переменной ссылка на предыдущий объект теряется.

Это означает, что во-первых, вы должны объявить свою переменную за пределами вызова get. просто в верхней части вашего файла javascript.

var polyLayer; 

затем просто удалите var из этой строки в функции get. изменить

var polyLayer = L.geoJson(data, {filter: layerFilter}).addTo(map); 

в

if(polyLayer) 
{ 
    map.removeLayer(polyLayer); // remove the old polygon... 
} 
polyLayer = L.geoJson(data, {filter: layerFilter}).addTo(map); // ...then add the new polygon 
+0

, когда я попытался это, все еще показывает предыдущий многоугольник –

Смежные вопросы