以您的经验,可以在不易变慢的OpenLayers矢量层(新的OpenLayers.Layer.Vector(“ Point Layer”))上添加多少点要素?
我的用例是显示数据库表中的点。用户可以决定可视化的时间范围。因此,结果可能从极少到十万分。我想引入一个合理的限制,并警告用户查询是否返回更多功能。
以您的经验,可以在不易变慢的OpenLayers矢量层(新的OpenLayers.Layer.Vector(“ Point Layer”))上添加多少点要素?
我的用例是显示数据库表中的点。用户可以决定可视化的时间范围。因此,结果可能从极少到十万分。我想引入一个合理的限制,并警告用户查询是否返回更多功能。
Answers:
我没有确切的答案,但是您整理了一个页面,可以在OL地图上使用不同数量的点进行游戏:http : //derekswingley.com/lab/olpts/
如果由于功能编号太高而导致显示变慢,则表示要显示的数据不适合缩放级别。通常,当特征密度过高时,显示将不再可读(请参见本示例)。即使没有处理限制,并且所有显示设备都能够在0.001秒内在小屏幕上显示1000000000000个特征,但可视化仍然是不可能的。
Töpfer的基数定律指出,无论缩放级别如何,要素密度都应保持在恒定阈值以下。解决此问题并使数据适应可视化范围的一种方法是使用像这样一个或另一个这样的概括操作来对其进行转换。
在OpenLayers 6中,有一个WebGL点渲染器,该渲染器应允许您使用基于时间的过滤来渲染数十万个要素。您可能想在https://openlayers.org/workshop/zh/webgl/查看官方研讨会的最新版本。
对于我真的不建议再使用的OpenLayers 2,可接受的帧速率的最大值将仅为数百个功能。
我偶然发现了一个类似的用例,不确定它是否适合上述需求,但是Clustering
我在OL 5中采用了这种用例。
顾名思义,聚类需要一组点并将它们合并到一个点中,例如,在特定城市中有100个点,例如,从缩放的角度来看,所有这些点将显示为一个点,而从缩放的角度来看,则是4
单个点10
如此说来,您可以做的就是在缩放时4
可以将这些点合并为一个点,这有助于减少要在特定区域中渲染的点数。
换句话说,假设您要在地图上渲染10,000个点,并且它们彼此之间非常接近,因此您可以将它们组成簇并减少渲染,并且当用户放大时不断破坏簇。这将确保您减少渲染并获得更好的性能。
满意的表现。链接到Openlayers上的集群示例