我有包含GeoJSON/TopoJSON数据的大文件(每个约100MB)。
这些都有州和县的边界。状态层加载很好,因为它没有太多的数据,但是有县的层在Chrome中会导致页面崩溃。
因此,文件本身从网络加载,并被正确解析,但当涉及到将它们放在传单地图上时,它会冻结并崩溃。
作为解决方案,我想知道是否可以根据要素的坐标过滤要素?我可以得到地图的视口边界。
有没有方法可以过滤坐标在某些边界内的要素?
这样,我可以只过滤那些应该在当前视图中渲染的内容,而忽略其余的内容,然后在地图/缩放上重复此例程。
发布于 2017-06-29 23:13:38
首先,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.
}当然,以上只是一种方法。每次地图“移动”时,先前的特征都会被删除并加载新的特征。这可能会导致功能加载速度变慢,但对于如此大的文件,您可能不得不接受它。
此外,您还可以尝试使用代码,例如,加载新功能,然后删除旧功能。此外,您可以加载比边界框大的长方体的特征。
https://stackoverflow.com/questions/44828677
复制相似问题