Hi,

[email protected] wrote:
> I use a styleMap that contains a user style, so I thought that this style 
> should be accessible.
>   

Ah, I see. This is not the case. The styleMap does not write style 
properties on the feature.

> The strange thing for me is that with my custom functions e.g.: getChartURL 
> or getSizeH I am able to set and influence the styling prameters but 
> afterwards I´m not able to access their values.  
>   

This is expected behavior.

> var template = {
>       fillOpacity: "${getOpacity}",
>       externalGraphic: "${getChartURL}",
>       graphicWidth: "${getSizeW}",
>       graphicHeight: "${getSizeH}",
>       strokeWidth: 0,
>       graphicXOffset: "${getXOffset}",
>       graphicYOffset: "${getYOffset}"
> };
> style = new OpenLayers.Style(template, {context: context});
> styleMap = new OpenLayers.StyleMap({'default': style, 'select': {fillOpacity: 
> 0.7}});
>                       
> With this style template I define the functions that calculate the styling 
> parameters. E.g. the getSizeH function looks something like this:
>
> getSizeH: function(feature) {
>       setDefaultValues(feature);
>       var Sum = getSum(feature);
>       var size = calcSize(feature,Sum);
>       // Size for pin icons
>       if (Sum==1) {
>               if (feature.attributes.hover==1) {size=48} else {size=32}
>       }
>       return size;
> }
>
> This function works fine and sets the graphicHeight to the needed value. 
> Somehow internally in OpenLayers this information must be stored, otherwise 
> the features couldn´t be drawn correctly, but how can I access this 
> information? I thought this should be in my user style 

This information is stored in the DOM of the renderer and not meant to 
be accessed.

> Maybe my problem is that the features themselfs never get a style assigned in 
> my code.

Exactly.

>  They seem to get their styling information from the layers styleMap. But 
> again the information about each individual symbols size in the map must be 
> stored somewhere, but where??
>   

It is calculated from the styleMap when drawing the layer. You can 
access these properties like this. Let's say "layer" is your layer, and 
"feature" a feature you are interested in:

var symbolizer = layer.styleMap.createSymbolizer(feature, 
feature.renderIntent);

Now if you want to know your graphicWidth, you can access

symbolizer.graphicWidth

Note that createSymbolizer also takes the current scale into account for 
calculating the symbolizer. And don't expect this technique to help if 
you have a graphicHeight and want to know the graphicWidth. Some 
renderers do not need the other value, and some calculate it before 
rendering the feature, based on the size of the externalGraphic image.

Does this help?

Regards,
Andreas.

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

_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to