我正在从服务器端提供的KML绘制一些轮廓。我想要做的是为视口边缘附近的每个轮廓添加一个标签,如下图所示:
我目前的方法是遍历地图的每个边缘并使用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