Jenia Be Nice Please
Jenia Be Nice Please

Reputation: 2693

OpenLayers.Filter.Function is not working as expected. In fact, not at all working

I'm trying to set up a Rule using the Function Filter. But it does not work: the lines on that layer are just black. More importantly, the function that I provide to filter the features, is never called.

Can someone please point out what is the mistake that i'm making?

Here is the code.

Thank you for your time and kind concern.

var my_filter = new OpenLayers.Filter.Function(
    function(attributes) {
       console.log(attributes);
       var x=0; 
       return true; 
});

var ruleLow = new OpenLayers.Rule({
    filter:my_filter ,
  symbolizer: {pointRadius: 10, fillColor: "green",
               fillOpacity: 0.5, strokeColor: "green"}
});


var my_style=new OpenLayers.Style( null,ruleLow);

var my_style_map=new OpenLayers.StyleMap({
    "temporary":my_style,
    "default":my_style,
    "select":my_style
});

this.vectors= new OpenLayers.Layer.Vector(
    "Vector Layer",
    {
        styleMap:my_style_map,
        renderers:this.renderer,
    }
);

Upvotes: 2

Views: 1130

Answers (1)

Jenia Be Nice Please
Jenia Be Nice Please

Reputation: 2693

I'm glad to share with you how to use the OpenLayers.Filter.Function!! (so I solved the problem that I had): that what I had to change basically.

Thanks anyways.

var my_filter = new OpenLayers.Filter.FeatureId({
    **type: OpenLayers.Filter.Function,**
    evaluate:function(attributes) {
       console.log(attributes);
       var x=0; 
       return true;

    }
});
var ruleLow = new OpenLayers.Rule({
    filter:my_filter,
  });


var my_style=new OpenLayers.Style( {pointRadius: 7, fillColor: "#FF3300",
               fillOpacity: 0.5, strokeColor: "#FF3300"},**{rules:[ruleLow]}**);

var my_style_map=new OpenLayers.StyleMap({
    "temporary":my_style,
    "default":my_style,
    "select":my_style

});
this.vectors= new OpenLayers.Layer.Vector(
    "Vector Layer",
    {
        styleMap: my_style_map, 
        renderers:this.renderer,
    }
);

Upvotes: 3

Related Questions