【问题标题】:Labeling contours in open layers 3.17.1在开放层中标记轮廓 3.17.1
【发布时间】:2016-07-26 16:28:14
【问题描述】:

我正在从服务器端提供的 KML 中绘制一些轮廓。我想做的是为靠近视口边缘的每个轮廓添加一个标签,如下图所示:

我目前的方法是绕过地图的每个边缘并使用 forEachFeatureAtPixel 来确定是否在 [x, y] 处找到轮廓/特征。如果找到轮廓,则相对于当前像素添加标签,并添加特征的“hasLabel”属性(并设置为 true),以便每个轮廓/特征仅添加一个标签。

如果用户更改视口(通过缩放或平移),标签将被移除并重新运行相同的过程以将标签添加到正确的位置。

一些客户抱怨在绘制轮廓和添加标签之间存在明显延迟(约 10 秒) - 我在我的开发机器上没有观察到这一点,但它的规格相当高。

我的问题是,有没有更快的方法来计算标签的位置? (一些内置的 OpenLayers 函数可能会列出超出当前视图的所有功能?)

加法:

我已经在以下位置提供了两组轮廓的 KML 源:

https://lqsts.blob.core.windows.net/temp/DayContours.kml https://lqsts.blob.core.windows.net/temp/MinuteContours.kml

【问题讨论】:

  • 您可以使用jsts lib 执行此操作。运行当前 mbr 与轮廓的交集,并在交点处放置标签。当然,这意味着您必须包含 jsts 库。如果您提供生成轮廓的代码,我将制作一个小提琴来演示。
  • 非常感谢您的提议!我为两组轮廓(绿色和蓝色)添加了指向 KML 源文件的链接。使用 JSTS 对任一组的小提琴确实非常有帮助。

标签: openlayers kml openlayers-3


【解决方案1】:

我提供的解决方案需要使用jsts 库。 为此,只需包含 jsts.js 文件。这是最新版本,老实说是我第一次测试它,似乎表现得很好。

这是您的fiddle 它不是最终的,但大部分工作已经完成,所以你可以测试它是否比你已经拥有的解决方案更快。

【讨论】:

  • 这正是我所需要的。我刚刚将它实施到我的解决方案中,它肯定比我的方法运行得更快。非常感谢!
猜你喜欢
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多