如何在openlayers中更改功能的颜色?


11

我正在将geojson文件加载到openlayers中以显示一些多边形。从该文件中,我还创建了这些多边形所有名称的列表。

现在,我想更改从列表中选择的多边形的颜色(单击名称)。

我试过创建一个样式(http://docs.openlayers.org/library/feature_styling.html),但是我找不到如何将此样式添加到多边形中。我怎样才能做到这一点?

Answers:


7

您可能只需要创建样式符号化器哈希集并将其分配给选定的多边形,然后再将其添加到图层即可:

var selected_polygon_style = {
    strokeWidth: 5,
    strokeColor: '#ff0000'
    // add more styling key/value pairs as your need
};

selectedFeature.style = selected_polygon_style;
layer.addFeatures([selectedFeature]);

在此页面(http://docs.openlayers.org/library/feature_styling.html)中,您可以找到有关可以修改的样式属性的许多信息:

  • 填色
  • fillOpacity
  • strokeColor
  • strokeOpacity
  • strokeWidth
  • strokeLinecap
  • strokeDashstyle
  • ...

9
但是,如果已经在该层上怎么办?我找到了这个解决方案:mylayer.drawFeature(mylayer.getFeatureById(id),{fillColor:“#00ffff”,strokeColor:“#00ffff”});
jlai79 2013年

是的,您是对的,只需重新绘制新样式即可。
mfdev

2

在其他答案中使用案例。

只是更改“ setStyle()”的用法

这个案子对我有用。

var selected_polygon_style = {
    strokeWidth: 5,
    strokeColor: '#ff0000'
    // add more styling key/value pairs as your need
};

selectedFeature.setStyle(selected_polygon_style);
layer.addFeatures([selectedFeature]);

这对我不起作用,我收到了“未捕获的TypeError:feature.setStyle不是函数”
Matthew Lock

1

Whit OpenLayers 4.6.5更改颜色我正在使用此:

myLayer.getSource().getFeatures()[1].setStyle(new ol.style.Style({
      image: new ol.style.Icon(/** @type {module:ol/style/Icon~Options} */({ // /** @type {olx.style.IconOptions} */
        color: '#00ffff', //  #FF0000
        crossOrigin: 'anonymous',
        src: '/img/dot.png'
      }))
    }));

getFeatures()[1]是我功能的元素之一。如果我要更改所有功能,那么我将使用循环。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.