Max Stephan wrote:
> Hi list,
>
> I have a vectorlayer to which the user can add features and modify those
> features. The user can change the attributes for the features like
> fillColor, strokeColor etc. in a form. A javascript-method is executed by a
> button-click and saves those attributes as vectorattributes (e.g.
> feature.attributes.fillColor).
>
> In the styleMap I´m reading those values from the vectorattributes to change
> the styling. The stylemap-Code looks like this:
> var pointStyleMap = new OpenLayers.StyleMap({
>       "default": new OpenLayers.Style({
>       fillColor: "${fillColor}",
>       fillOpacity: 0.5,
>       strokeColor: "${strokeColor}",
>       strokeWidth: "${strokeWidth}",
>       pointRadius: 10,
>       graphicZIndex: "${graphicZIndex}"
>       }
>       ),
>       "select": new OpenLayers.Style({
>       pointRadius: 10,
>       strokeColor: '#FF3333',
>       strokeWidth: "${strokeWidth}"
>       }
>       )
> });This works so far. But now I want to add 2 to the strokeWidth when the
> feature is selected, so I tried it like this:
> strokeWidth: "${strokeWidth}" + 2The effect is that the 2 is only appended
> (the code seems to interprete strokeWidth as a String although I parsed it
> to an Int via parseInt(), e.g. for a strokeWidth of 2 I get 22 as a result).
> It´s possible to solve this problem by defining a context for the style but
> in my opinion that´s a little overkill for such a simple task.
> {context:
>       {strokeWidth: function (feature){return (feature.attributes.strokeWidth 
> +
> 2)}}
> }Now I want to get the pointRadius from the attributes but no matter which
> method I try, it always ends in the error message: "Line: 625 Column: 408,
> invalid Argument (OpenLayer.js)". Also tried to parse it to an Int again
> directly in the styleMap .. no effect.
> I have to use IE for this project so no further debug information is
> available (I´m also not able to install IE8 with it´s debugging features due
> to limited admin rights at my workstation).
>
> Any idea how I could solve this problem?
>   

As soon as you define a context, feature.attributes will no longer be 
what is available in the template. So you should define your context 
like this:

context: {
    strokeWidth: function(feature){...},
    strokeColor: function(feature){...},
    fillColor: function(feature){...},
    graphicZIndex: function(feature){...},
    pointRadius: function(feature){...}
}

Regards,
Andreas.

> Thx in advance
> Max Stephan
>
>   


-- 
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.

_______________________________________________
Users mailing list
Users@openlayers.org
http://openlayers.org/mailman/listinfo/users

Reply via email to