OpenLayers5:hitTolerance 似乎不适用于 WMS 层

OpenLayers5: hitTolerance doesn't seem to work with WMS layer

我是 OpenLayers 的新手,因为我今天刚尝试将我的地图从 Leaflet 移植到 OL,因为 hitTolerance 正是我想要的。另外,我知道 v5 很新,所以根据我的经验,文档没有完全更新。

我似乎无法 hitTolerance 使用 WMS 图层。

我知道自 v5 以来,您现在可以在 forEachLayerAtPixel 中指定 hitTolerance,但我仍然必须非常准确地击中图层才能被 forEachLayerAtPixel 拾取。

我也试过 forEachFeatureAtPixel,但那一无所获。 WMS 图层是否具有特征?

TileLayer/TileWMSImageLayer/ImageWMS 我都试过了。两者的行为相同。使用 forEachLayerAtPixel 即使 hitTolerance100 我仍然必须非常精确才能击中图层。

我是不是做错了什么?我不知道这是不是一个错误,或者 hitTolerance 是否根本不适用于 WMS 图层。任何帮助,将不胜感激。谢谢。

hitTolerance适用于矢量数据。 OL 获取您的点击坐标并搜索附近的功能。

OL在处理WMS时,对特征一无所知,只是展示一张图片。它只是将点击坐标发送到地图服务器,地图服务器可能会或不会对其应用缓冲区,以及 return 找到的要素信息。

因此,对于 WMS,命中容忍度是服务器设置,而不是客户端设置。

例如,这里是Geoserver对应的doc