在Openlayers样式中切换填充颜色

在Openlayers样式中切换填充颜色,openlayers,Openlayers,我想在Openlayers中为特定层切换点的填充颜色?有可能吗?比如眨眼 fillColor:${getFillColor}, context : { getFillColor : function(feature) { if (feature.data.fillColor == 'red') { return 'yellow'; } else { return 'red'; } 这不起作用您应该能够在没有基于上下文的样式设置的情况下完成该任

我想在Openlayers中为特定层切换点的填充颜色?有可能吗?比如眨眼

fillColor:${getFillColor},
context : {
  getFillColor : function(feature) {
    if (feature.data.fillColor == 'red') {
      return 'yellow';
    } else {
      return 'red';
    }

这不起作用

您应该能够在没有基于上下文的样式设置的情况下完成该任务;您只需要定期更改向量层的样式并重新绘制它。尝试以下方法:

window.setInterval(function (){
    var defaultStyle = yourVectorLayer.styleMap.styles['default'].defaultStyle;
    yourVectorLayer.styleMap.styles['default'].defaultStyle = {
        fillColor: defaultStyle.fillColor === 'blue' ? 'green' : 'blue',
        pointRadius: 10
    }
    yourVectorLayer.redraw();
}, 1000);
下面是一个完整的工作示例

var map = new OpenLayers.Map('map', {
    maxResolution:'auto',
    layers: [
        new OpenLayers.Layer.WMS( 
            "OpenLayers WMS",
            "http://vmap0.tiles.osgeo.org/wms/vmap0",
            {layers: 'basic'}
        ),
        new OpenLayers.Layer.Vector('Points', {
            styleMap: new OpenLayers.StyleMap({
                pointRadius: 10, 
                fillColor: "blue"
            })
        })
    ],
    center: [0,0]
});

var features = [];
for (var i=0; i<100; i++) {
    var x = Math.random() * 360 - 180,
        y = Math.random() * 180 - 90;
    features.push(
        new OpenLayers.Feature.Vector(
            new OpenLayers.Geometry.Point(x, y)
        )
    );
}

map.layers[1].addFeatures(features);

window.setInterval(function(){
    var defaultStyle = map.layers[1].styleMap.styles['default'].defaultStyle;
    map.layers[1].styleMap.styles['default'].defaultStyle = {
        fillColor: defaultStyle.fillColor === 'blue' ? 'green' : 'blue',
        pointRadius: 10
    }
    map.layers[1].redraw();
}, 1000);
var-map=new OpenLayers.map('map'){
maxResolution:“自动”,
图层:[
新的OpenLayers.Layer.WMS(
“OpenLayers WMS”,
"http://vmap0.tiles.osgeo.org/wms/vmap0",
{layers:'basic'}
),
新的OpenLayers.Layer.Vector('点'{
styleMap:new OpenLayers.styleMap({
点半径:10,
填充颜色:“蓝色”
})
})
],
中间:[0,0]
});
var特征=[];

对于(var i=0;当我单击地图添加点时,它会起作用。但是,如果以编程方式设置该点,则根据默认设置,项目符号显示为黄色。