Hi Christian,

I would seem that even thought you send the feature itself as context, it will ends up using the feature.attributes hash anyway. You can see for yourself by loading an uncompressed version of OpenLayers, put a breakpoint inside your context method until you get to that line :

    OpenLayers/Filter/Comparison.js :

    evaluate: function(context) {
        if (context instanceof OpenLayers.Feature.Vector) {
            context = context.attributes;
        }
    ...

So, because 'fid' is not one of the attributes, the evaluation fails and no style is applied.

In order to evaluate on the feature fid, you can use the OpenLayers.Filter.FeatureId instead and create your own rules. If you're not familiar with filters, you can take a look at this example:
    http://openlayers.org/dev/examples/filter.html

Once you get that filter working, you'll see your point turn green when selected.

Lastly, when you use rules, you need to cover all possibilities for all features to render. If you only specify one rule with "property equal something", all features that evaluates the rule correctly will render, but not the others. A quick way to make sure the other at least render, you can specify an elseFilter :

    styleMap.styles["select"].addRules([new OpenLayers.Rule({
        symbolizer: {strokeColor:"black",strokeWidth: 10},
        elseFilter: true
    })]);

  Try that and see how it goes.

HTH,

Alexandre


On 12-08-09 12:46 PM, Christian Benke wrote:
Hello!

I'm having difficulties to understand how addUniqueValueRules is applied.

http://poab.org/openlayers/stylerule.html fetches data from a GeoJSON-file and draws a point and a line according to the styling in styleMap.

My goal is to have the Point and the Line drawn in different colors. To achieve this goal i try to add a "Unique Value Rule" with the property set to "fid" and a symbolizer matching the value "999", which should draw the strokeColor of the point as green when selected.

However, the Point simply disappears when selected.

I've been banging my head against this problem for hours, i just don't see why the rule doesn't seem to match any attribute i try to feed it, while the attribute exists in the vector-object i'm matching it against. I also don't understand why the feature i'm selecting actually disappears - if the rule does not match, the selected feature should actually not be changed?!

How can i debug the addUniqueValueRules-function?

I'm not asking to solve the issue for me, but if anyone could take a look at my example and help me understand where i'm misunderstanding the concept, it would help me sleep better tonight :-)

Best regards,
Christian


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


--
Alexandre Dubé
Mapgears
www.mapgears.com

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

Reply via email to