在开放层中标记轮廓3.17.1

时间:2016-07-26 16:28:15

标签: openlayers kml openlayers-3

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

enter image description here

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

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

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

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

增加:

我已经为两组轮廓制作了KML源:

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

1 个答案:

答案 0 :(得分:2)

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

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