2017-06-29 98 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. 
} 

当然,以上仅仅是一种方法。每次地图“移动”时,先前的特征都将被删除,新的特征将被加载。这可能会导致加载功能变慢,但您可能必须忍受这么大的文件。

此外,您可以尝试使用代码,例如,加载新功能,然后擦除旧的。另外,您可以为大于边界框的框加载功能。