在OpenLayers中选择覆盖样式属性

时间:2017-08-16 10:09:56

标签: javascript openlayers-3

我想重用我的基本样式函数来通过覆盖某些属性来创建选择样式。 这种方法适用于线串,多边形和文本的填充/描边颜色,但不适用于图像(在我的情况下为圆形)。 我不想创建新图像,因为应该保留其他属性。

var selectStyleFunction = function(feature, resolution) {
  var style = styleFunction(feature, resolution)[0];
  style.getImage().getFill().setColor("magenta");

  console.log(style.getImage().getFill().getColor());

  return [style];
};

在这个fiddle中你可以看到,虽然日志输出是正确的,但上面的代码并没有改变选择的功能样式。

有没有办法覆盖这个属性?

1 个答案:

答案 0 :(得分:0)

我在openlayers的api dokumentation中找到了我的问题的答案。首先找到它是显而易见的。

https://openlayers.org/en/latest/apidoc/ol.style.Style.html

  

ol.style.Style
  矢量特征渲染样式的容器。在重新渲染使用该样式的要素或图层之前,通过set *()方法对样式或其子项所做的任何更改都不会生效。

因此,设置者不会触发渲染。