选择功能具有自己的样式时未使用的交互样式

时间:2016-10-27 16:05:43

标签: javascript openlayers-3

我的问题在于这个问题: OpenLayers 3 select style

当一个特征具有自己的样式(而不是使用其图层的样式)时,不使用ol.interaction.Select“style”属性,或者如果“style”属性是一个函数,则不调用该函数。

http://jsfiddle.net/y13xLmx6/13/OpenLayers 3 select style问题的答案中提供的jfiddle相同,但添加了一个应用于线要素的样式:

featureLine.setStyle(new ol.style.Style({
  stroke: new ol.style.Stroke({
    color: 'rgba(24, 24, 24, 0.8)', 
    width: 8
  })
}))

当选择线要素时,不应用黄色选择交互样式,也不执行console.log()语句。没有为其分配样式的featurePoint确实获得了交互样式和{ {1}}语句已执行。

那么如何将交互样式应用于定义了自己样式的要素?

1 个答案:

答案 0 :(得分:0)

不确定为什么选择行时选择交互不会记录,但您可以在select事件上设置不同的样式:

select.on('select', function(evt){
  evt.selected.forEach(function(each) {
    each.setStyle(styles[each.get('type')]);
  });
  evt.deselected.forEach(function(each) {
    each.setStyle(null); // more likely you want to restore the original style
  });
});