Openlayers 3 使用十六进制颜色时设置矢量要素填充不透明度

Openlayers 3 使用十六进制颜色时设置矢量要素填充不透明度,openlayers-3,Openlayers 3,我试图在OL3中设置矢量特征的填充不透明度,但如果我有一个十六进制值,我想不出该怎么做……我已经看到了rgba的示例。有什么建议吗 以下是我所拥有的: style : function(feature, resolution) { return [new ol.style.Style( { stroke : new ol.style.Stroke( { color : featur

我试图在OL3中设置矢量特征的填充不透明度,但如果我有一个十六进制值,我想不出该怎么做……我已经看到了rgba的示例。有什么建议吗

以下是我所拥有的:

style : function(feature, resolution) {
          return [new ol.style.Style(
          {
            stroke : new ol.style.Stroke(
            {
              color : feature.get('color'),  
              width : 2
            }),
            fill : new ol.style.Fill(
            {
              color : feature.get('color'), //'#FF0000'
              opacity : 0.2   // I thought this would work, but it's not an option
            })
          })]
        }

您可以使用
ol.color.asArray
功能。该函数用于将颜色字符串转换为颜色数组

这就是你可以使用的:

var hexColor=feature.get('color');
var color=ol.color.asArray(hexColor);
color=color.slice();
颜色[3]=0.2;//更改颜色的alpha
slice()
用于创建新的颜色数组。这是为了避免损坏
ol.color.asArray
函数维护的“颜色字符串到颜色数组”缓存


请参阅。

这已经很晚了,但可能会对某人有所帮助。 使用属性也是可能的

fill: new ol.style.Fill({color: 'rgba(255, 255, 0, 0.63)'}),
import ol_color from 'ol/color';

 colorWithAlpha(color, alpha) {
    const [r, g, b] = Array.from(ol_color.asArray(color));
    return ol_color.asString([r, g, b, alpha]);
 }