将 pointermove 交互限制为 openlayers 3 中的两层

Restricting pointermove interactions to two layers in openlayers 3

在 openlayers 版本 v3.6 运行 在 Chrome 在 Ubuntu

我使用以下语法创建了一个包含多个图层(foo、bar、beltch)的地图:

layers:[foo,bar,beltch],

我想将交互限制在层 foo 和 bar http://openlayers.org/en/master/apidoc/ol.interaction.Select.html 处的 api 文档 建议使用以下语法

var selectPointerMove = new ol.interaction.Select({
    condition: ol.events.condition.pointerMove,
    layers:[foo,bar]
 });

但是我似乎得到了所有层的事件,我已经检查了示例并且似乎没有任何东西涵盖这个区域,除非我忽略了什么。

大家有什么建议吗

使用 filter 而不是 layers。并确保设置图层 属性 以供稍后比较。

var layerFeatures = new ol.layer.Vector({
    name: 'selectable',
    source: sourceFeatures
});

var hoverInteraction = new ol.interaction.Select({
    condition: ol.events.condition.pointerMove,
    filter: function(feature, layer){
        if(layer.get('name') === 'selectable')
            return true;
    }
});