OpenLayers 4 getGetFeatureInfoUrl 和 HitTollerance

OpenLayers 4 getGetFeatureInfoUrl and HitTollerance

我正在使用这段代码

map.on('singleclick', function(evt) {

...
url = pmfeatlayer.getSource().getGetFeatureInfoUrl(coordinate, viewResolution, projection, {'INFO_FORMAT': 'text/html'});

if (url) {...
}
...
}

这是我的图层:

pmfeatlayer = new ol.layer.Tile({
  extent: ext,
  preload: Infinity,
  source: new ol.source.TileWMS({
    url: Settings.url,
    params: {'LAYERS': sQLayers, MYORDERS: Settings.order, DTO: DTo, format: 'image/png'},
    ratio: 1.1,
    gutter: 40
  })
});

获取 pmfeatlayer 上的特征信息,在所有代码中我还有一个函数显示该像素中的特征列表(如果我有超过 1 个 URL 创建一个他们的名单)

如何增加容忍度?

我找到了这个例子,但我无法让它工作,这是只针对特征还是也针对图层?

https://openlayers.org/en/latest/examples/hit-tolerance.html

这是我的地图的截图。

我有一个 map layer 和一个 featlayers(所有街道限制都在该层上),正如您从那个像素的弹出窗口中看到的那样,我有 2 个限制,我该如何增加例如半径 o 也得到 2 街道标志(因为此时他显示 2 街道线而不是标志)?

您正在查看的示例略有不同,因为它使用的是矢量图层,其中所有几何图形都已添加到地图中。因为您正在制作 getFeatureInfoRequest,所以您无法在 OpenLayers 中应用命中容差。相反,您可以尝试在 getFeatureInfoUrl 函数中添加一个缓冲区参数,如 {'INFO_FORMAT': 'text/html', 'BUFFER': 5}。这请求地图服务器在其响应中包含此缓冲区内的任何几何图形。如果这不起作用,您可以尝试添加一个 maxFeatures 参数,指示您希望从地图服务器取回的最大功能量,因为服务器可能默认只返回一个功能。

最后我让它与 FEATURE_COUNT:10 一起工作,buffer 不工作。

检查请求 WMS URL 我发现 FEATURE_COUNT:10,在另一个版本的项目中有其他类型的数据,旧代码中没有的参数,我仍然无法了解 OL2 如何在 URL

中插入此参数