【问题标题】:Is Displaying 1000+ Feature Footprint Vectors on OpenLayers Map with Good Performance Possible? [closed]在 OpenLayers 地图上显示 1000 多个特征足迹向量是否可能具有良好的性能? [关闭]
【发布时间】:2018-02-01 23:34:07
【问题描述】:

在地图上加载许多特征足迹向量时,openlayers 地图和 Web 应用程序变得无响应。有没有什么办法可以提高带有许多向量的 openlayers 地图的性能?

我们希望能够一次在地图上支持至少 1000 个向量。

我们正在使用 openlayers 4。

据我所知,OpenLayers 3+ 使用 HTML5 画布来渲染图像和矢量。我已经看到用于制作视频游戏和其他高性能图形应用程序的画布。我不明白为什么它会导致 OpenLayers 出现这种反应迟钝的问题。

编辑:当我说“向量”时,我指的是正方形多边形。此应用程序将在具有平均计算能力的桌面上运行。

【问题讨论】:

  • 当你说矢量时,你是指特征吗?此外,这基本上是一个是/否的问题。如果您确实需要帮助,请提供代码
  • 一千个什么?积分?由数千个顶点组成的复杂多边形?在低端手机还是高端台式机上运行?等等。在您的特定情况下,未知数太多,无法回答。
  • 已更新。我们正在处理来自特征的方形多边形。使用该应用程序的桌面可能是 i3 的。
  • 我有一张地图,它显示了 3 个图层,每个图层最多有 25'000 个多点几何图形(tm.ti8m.ch“Zürich HB”,所有滑块都已最大化)。所以这个模糊问题的答案是“是”。

标签: javascript gis openlayers geospatial openlayers-3


【解决方案1】:

TL/DR:是的。

如果不是,那很可能是你自己的错。但是,当 OL 应用程序变得缓慢/无响应时,有一些简单的修复方法。

  1. 对大型矢量图层使用image render mode(以前称为ImageVector)。 ol.layer.Vector({ renderMode: 'image', ... })

出色的性能,但点符号和文本始终随视图旋转,并且在缩放动画期间像素会缩放。

  1. 当您有许多功能时,不要使用 styleFunction 为每个功能创建新样式。在 JavaScript 中实例化对象是昂贵的。尝试切换到静态样式。

  2. 如果您只显示点,请使用 cluster layer 。无论如何,显示四亿分并不是很有帮助

  3. 试试webgl renderer。它可能更快,但也可能看起来有点不同

.

if (ol.has.WEBGL) {
  var map2 = new ol.Map({
    renderer: (['webgl', 'canvas']),
    ....
  });
} else { 
  // fallback
}

【讨论】:

  • 谢谢!图像渲染模式带来了巨大的变化!
猜你喜欢
  • 2013-11-25
  • 2012-05-15
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多