如何使用 forEachFeatureAtPixel 方法过滤图层

Svi*_*ica 5 javascript gis openlayers openlayers-3

我很难弄清楚如何使用forEachFeatureAtPixel 方法过滤图层。我正在阅读文档,但到目前为止没有任何成功。我基本上想过滤图层并在事件上应用叠加样式(例如“单击”),或者更准确地说,我想使用此示例实现悬停效果,但使用隔离图层。

在上面的示例中,像这样使用来获取功能:

var feature = map.forEachFeatureAtPixel(pixel, function(feature) {
          return feature;
        });
Run Code Online (Sandbox Code Playgroud)

我想通过使用图层过滤器稍微调整代码,但出现syntax Uncaught SyntaxError: Unexpected token (语法错误:

 var features = map.getFeaturesAtPixel(pixel, function(features) {
        layerFilter: function(layer) {
            return layer.get('layer_name') === 'someName';
        }
    });
Run Code Online (Sandbox Code Playgroud)

然后,我像这样尝试

 var feature = map.forEachFeatureAtPixel(pixel, {
        layerFilter: function(layer) {
            return layer.get('layer_name') === 'someName';
        }
    });
Run Code Online (Sandbox Code Playgroud)

但后来我得到了Uncaught TypeError: d.call is not a function错误

我正在使用文档,但公平地说,我在阅读和实现一些API方法方面有些挣扎

Svi*_*ica 7

好吧,我终于做到了。我在阅读文档时有点仓促,问题出在回调函数中。我需要返回文档中指出的功能。...为了停止检测,回调函数可以返回一个真值。

所以,正确的格式是这样的:(我使用的是 4.5.6 版本)

var feature = map.forEachFeatureAtPixel(pixel, function(feature) {
        return feature;
    }, {
        layerFilter: function(layer) {
            return layer.get('layer_name') === 'someName';
        }
    });
Run Code Online (Sandbox Code Playgroud)

现在工作正常。享受 :)