在openlayers 3中,将指向性交互限制为两层

Restricting pointermove interactions to two layers in openlayers 3

本文关键字:两层 交互 openlayers 指向性      更新时间:2023-09-26

在Ubuntu 上的Chrome中运行的openlayers版本v3.6

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

layers:[foo,bar,beltch],

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

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;
    }
});