1

Openlayers で特定のレイヤーのポイントの fillColor を切り替えたいですか? それは可能ですか?瞬きみたいなもの?

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

動作していない

4

1 に答える 1

3

コンテキストベースのスタイリングがなくても、そのタスクを達成できるはずです。ベクターレイヤーのスタイルを定期的に変更して再描画するだけです。次のようなものを試してください:

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);
于 2012-10-10T08:15:29.497 に答える