OpenLayers 3交互样式与ol.feature.setStyle冲突

时间:2016-06-11 19:39:03

标签: javascript openlayers-3

在OpenLayers 3中,如果我使用setStyle(...insert style...)设置功能样式,则不再显示与ol.interaction.select的默认交互样式。如果我尝试定义样式或样式函数,那么:

var select = new ol.interaction.Select({
    style: ...insert style here...
});
map.addInteraction(select);

它无效。如果我删除使用ol.feature.setStyle(...insert style...)设置的自定义样式,则可以正常使用。这有意义吗?我想知道用setStyle()设置一个功能样式是否会覆盖默认的交互样式......

任何线索?

1 个答案:

答案 0 :(得分:1)

在实例化ol.interaction.select时,我没有使用样式或样式函数,而是使用select事件来处理选定和取消选择的样式。

var select = ol.interaction.select();
select.on('select', function (e) {
    if(e.selected.length > 0) {
        e.selected[0].setStyle(...insert selected style here...);
    }

    if(e.deselected.length > 0) {
        e.deselected[0].setStyle(..insert original style here...);
    }
});

出于某种原因,当最初使用setStyle定义要素的样式时,在创建交互时不能使用构造函数样式或样式函数。以上工作正常,但它只是一些额外的代码。