【问题标题】:How to filter layers using forEachFeatureAtPixel method如何使用 forEachFeatureAtPixel 方法过滤图层
【发布时间】:2018-04-05 11:16:32
【问题描述】:

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

在上面的例子中是这样使用来获取特征的:

var feature = map.forEachFeatureAtPixel(pixel, function(feature) {
          return feature;
        });

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

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

然后,我就这样尝试了

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

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

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

【问题讨论】:

    标签: javascript gis openlayers openlayers-3


    【解决方案1】:

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

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

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

    现在工作正常。享受:)

    【讨论】:

      【解决方案2】:

      对于那些像我一样遭受层名称困扰的人,我可以建议您以下方式作为替代方案;

      我已将所有图层存储在变量中,然后像这样过滤它们;

      var countryLayer = new VectorLayer({
        source: countryLayerSource,
        style: //some styling in here
      });
      
      ...
      
      var feature = map.forEachFeatureAtPixel(
        pixel,
        function (feature) {
          return feature;
        },
        {
          layerFilter: function (layer) {
            return layer === countryLayer;
          },
        }
      );
      

      使用的 API:v6.3.1。 Openlayers API

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-21
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多