我有大文件(每个约100mb)和GeoJSON / TopoJSON数据。
这些有州和县的边界。状态层加载很好,因为它没有那么多数据,但是有一个县只会使Chrome中的页面崩溃。
因此,文件本身从网络加载并正确解析,但是当它们放在Leaflet地图上时,它会冻结并崩溃。
作为解决方案,我想知道我是否可以按坐标过滤功能? 我可以获得地图的视口边界。
是否有方法可以过滤某些边界内坐标的要素?
这样我只能过滤那些应该在当前视图中渲染并忽略其余部分,然后在地图/缩放上重复此例程。
答案 0 :(得分:0)
首先,Leaflet有一个getBounds()方法,您可以使用该方法仅加载Bounding Box内的功能。这可以通过在地图"移动时触发getBounds()方法来完成。 (缩放,拖动),使用moveend事件。
所以,基本上:
if (mode == "DAILY")
{
//Get the Scheduled Time from AppSettings.
scheduledTime = DateTime.Parse(System.Configuration.ConfigurationManager.AppSettings["ScheduledTime"]);
if (DateTime.Now > scheduledTime)
{
//If Scheduled Time is passed set Schedule for the next day.
scheduledTime = scheduledTime.AddDays(7);
}
}
当然,以上只是一种方法。每次地图"移动"时,先前的特征被删除并且新的特征被加载。这可能会导致功能加载速度变慢,但您可能不得不忍受这么大的文件。
此外,您可以通过加载新功能然后删除旧功能来试验代码。此外,您可以加载比边界框大的Box的功能。