[OpenLayers-Users] changing style of a WFS layer

Lehtonen, Mika mika at digikartta.net
Tue Nov 25 10:33:18 EST 2008


I can't believe my eyes!
You're absolutely right. With this, I get exactly what I wanted to get:
    var shpStyle = new OpenLayers.Style({
            pointRadius: "${radius}",
            strokeColor: "red",
            strokeWidth: 1,
            strokeOpacity: 1,
            fillColor: 'black',
            fillOpacity: 0.2
            }, {
            context: {
            radius: function() {
                        return  map.getZoom() + 2;
                         }
                  }
            });
And then I add only 'styleMap: shpStyle' to my wfs layer and that's it. 
Spots are 2 pixels at the initial level and finally at the zoom level 7, 
they are 9 pixels.

Thanks!
- mika -

Alexandre Dube kirjoitti:
> Hi Mika,
>
>  Try to remove all listeners, you don't need them.  There's no need to 
> force of a new style, the context should already change the radius  
> value before drawing each features ( didn't try, but I think it should 
> do it ).
>
> Best of luck,
>
> Alexandre
>
> Lehtonen, Mika wrote:
>> Hi Alexandre,
>> interesting example.
>> My problem is that I can't figure out how to force the wfs layer to 
>> read the new style parameters after the user has clicked zoom button. 
>> I have tried all sorts of, occassionaly desperate, methods for make 
>> it to do that. Like mergeNewParams and redraw. I switched them for 
>> example to map.event listener and tried to listen to any "sounds" of 
>> zooming; like zoomend. And those listeners sure did trigger the 
>> functions they were to, but the wfs layer stayed with the same style. 
>> I guess the easiest variable to use here, would be map.getZoom( ).
>> - mika -
>>
>> Alexandre Dube kirjoitti:
>>> Hi,
>>>
>>> Take a look at this example :
>>>
>>> http://dev.openlayers.org/sandbox/vector-behavior/examples/strategy-cluster.html 
>>>
>>>
>>> You could try to change the radius : function(feature) using 
>>> feature.layer.map.zoom
>>>
>>> Alexandre
>>>
>>> Lehtonen, Mika wrote:
>>>> Hi,
>>>>
>>>> probably I'm asking something that's been asked for several times, 
>>>> but I just couldn't find the answer.
>>>>
>>>> I have a WFS layer which has points. My intention is to render 
>>>> those points with a style depending on the zoom level. So more you 
>>>> zoom in, bigger the points should be. I have styleMap defined in my 
>>>> wfs layer definition. I tried to do dynamic out of it, but didn't 
>>>> succeed. Even if I redraw my wfs layer, the styles defined at the 
>>>> first place stays.
>>>>
>>>> So, what would be a proper approach in this challenge?
>>>>
>>>> Here's my "static" code:
>>>>
>>>>             shpStyle = new OpenLayers.StyleMap({
>>>>         pointRadius: 3,
>>>> strokeColor: "red",
>>>> strokeWidth: 1,
>>>> strokeOpacity: 1,
>>>>         fillColor: 'black',
>>>> fillOpacity: 0.2
>>>>             });
>>>>
>>>>
>>>>     fserver = new OpenLayers.Layer.WFS("Uploaded SHP", 
>>>> "http://10.8.0.1:8080/cgi-bin/featureserver-1.12/featureserver.cgi/shape?format=WFS", 
>>>>
>>>>     {typename: "KUNTA"},{extractAttributes: false, projection: new 
>>>> OpenLayers.Projection("EPSG:2393"), styleMap: shpStyle});
>>>>
>>>> - mika -
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at openlayers.org
>>>> http://openlayers.org/mailman/listinfo/users
>>>>   
>>>
>>>
>
>



More information about the Users mailing list