2017-06-29 102 views
1

我有GeoJSON/TopoJSON數據的大文件(每個約100MB)。如何通過座標過濾GeoJSON/TopoJSON數據?

這些有州和縣界限。國家層加載正常,因爲它沒有太多的數據,但縣的只是使頁面崩潰在Chrome中。

因此,文件本身從網絡加載並正確解析,但是當將它們放在Leaflet地圖上時,它會凍結並崩潰。

作爲解決方案,我想知道我是否可以通過座標過濾特徵? 我可以獲取地圖的視口邊界。

有沒有方法可以過濾座標在某些邊界內的特徵?

這樣我就可以只過濾那些應該在當前視圖中呈現的視圖並忽略其餘部分,然後在地圖/縮放上重複這個例程。

+0

我對'GeoJSON'上的所有地理空間計算都使用'TufJS'。查看'inside'函數:http://turfjs.org/docs/#inside – shotor

回答

0

首先,Leaflet有一個getBounds()方法,您可以使用該方法僅加載邊界框內的要素。這可以通過在地圖「移動」(縮放,拖動)時使用moveend事件觸發getBounds()方法來完成。

因此,基本上:

map.on('moveend', function() { 
map.getBounds() 
//erase the features you had on the map 
//Then load on the map only the features with coordinates inside the Bounging Box. 
} 

當然,以上僅僅是一種方法。每次地圖「移動」時,先前的特徵都將被刪除,新的特徵將被加載。這可能會導致加載功能變慢,但您可能必須忍受這麼大的文件。

此外,您可以嘗試使用代碼,例如,加載新功能,然後擦除舊的。另外,您可以爲大於邊界框的框加載功能。