我刚接触OpenLayers,因为hitTolerance
正是我想要的,所以我今天才尝试将我的地图从Leaflet移植到OL。另外,我了解v5是相当新的,因此根据我的经验,这些文档并未完全更新。
我似乎无法让hitTolerance
用于WMS图层。
我知道,从v5开始,您现在可以在hitTolerance
中指定forEachLayerAtPixel
,但是我仍然必须非常准确地击中该层,才能被forEachLayerAtPixel
拾取。
我也尝试过forEachFeatureAtPixel
,但那一无所获。 WMS图层是否具有功能?
我已经尝试了TileLayer/TileWMS
和ImageLayer/ImageWMS
。两者的行为相同。即使在forEachLayerAtPixel
为hitTolerance
的情况下也使用100
,我仍然必须非常精确才能击中该层。
难道我做错了什么?我不知道这是否是错误,或者hitTolerance
根本不适用于WMS图层。任何帮助,将不胜感激。谢谢。
最佳答案
hitTolerance
适用于矢量数据。 OL获取您的点击坐标并搜索附近的特征。
在处理WMS时,OL不了解这些功能,而只是显示图像。它只是将点击坐标发送到地图服务器,后者可能会或可能不会对其应用缓冲区,并返回找到的要素信息。
因此,对于WMS,命中公差是服务器设置,而不是客户端设置。
例如,这是与Geoserver相对应的doc。
关于javascript - OpenLayers5:hitTolerance似乎不适用于WMS层,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51189011/