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