2017-02-23 34 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] 
    }); 
}); 

我有郵編下拉,我想在小冊子地圖上顯示選定的郵政編碼邊界。問題是當用戶被選中另一個郵政編碼時,新的多邊形正在顯示,但是舊的也正在顯示,如下圖所示。

enter image description here

任何人都可以請幫助我,我應該在哪裏寫removeLayers()。請建議我。

回答

0

問題是,通過使用var重新聲明您的變量,對前一個對象的引用將丟失。

這意味着,首先,您必須在get調用之外聲明您的變量。只是在你的JavaScript文件的頂部。

var polyLayer; 

然後就從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

時,我想這一點,仍然呈現出以往多邊形 –

相關問題