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

时间:2017-06-29 14:58:58

标签: javascript leaflet geojson topojson

我有大文件(每个约100mb)和GeoJSON / TopoJSON数据。

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

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

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

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

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

1 个答案:

答案 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的功能。