如何按坐标过滤 GeoJSON/TopoJSON 数据?



我有大文件(每个~100mb(带有GeoJSON/TopoJSON数据。

这些有州和县的边界。州层加载得很好,因为它没有那么多数据,但是有县的图层只会在 Chrome 中使页面崩溃。

因此,文件本身从网络加载并正确解析,但是当将它们放在传单地图上时,它会冻结并崩溃。

作为解决方案,我想知道我是否可以按坐标过滤要素? 我可以获取地图的视口边界。

是否有方法可以过滤具有某些边界内坐标的要素?

这样,我可以只过滤那些应该在当前视图中渲染的,而忽略其余的,然后在地图/缩放上重复此例程。

首先,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. 
}

当然,以上只是一种方法。每次地图"移动"时,都会擦除以前的功能并加载新的功能。这可能会导致功能加载缓慢,但对于如此大的文件,您可能不得不忍受它。

此外,您还可以通过加载新功能然后擦除旧功能来试验代码。此外,还可以为大于边界框的框加载要素。

最新更新