1

I'm running into an issue.

I have an array of value coming from a JSON POST.
After retrieving these values and storing them into a var, I need to filter an OpenLayers layer with this values.

I'm using this :

mapFilterbyStation = new OpenLayers.Filter.Logical({
        type: OpenLayers.Filter.Logical.AND,
        filters: [
            new OpenLayers.Filter.Comparison({
                type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "id4geoserv",
                value: stationsParse
            })
        ]
    });

where stationsParse is an array of values.

Problem, is that the value to filter can only contains : number or string, according to the OpenLayers docs : http://dev.openlayers.org/releases/OpenLayers-2.10/doc/apidocs/files/OpenLayers/Filter/Comparison-js.html

Is there a way to achieve what I want using filters ?

I was thinking about iterate on each value stored in my array, and create a filter for each of them, but this solution looks ugly for me.

I'm surprised there is nothing to filter on multiple values from the same parameters in OpenLayers.

So if anyone has a tips ;) !

1 Answer 1

4

You're going to have to iterate. It's a logical AND and it takes an array of filters.

If you think it looks ugly create a function that will return the array of filters given your values.

2
  • Yep, I guess this is what I am going to do. Anyway, I'm surprised you can't pass several values inside one EQUAL_TO filter. I think I'm gonna check if OpenLayers3 has this feature availible. Feb 7, 2014 at 20:45
  • 2
    In a way, this makes sense. Most programming languages require the programmer to specify the relationship between every parameter and value. (side note: in some instances, you can use the mergeNewParams function to apply a CQL filter encoded as a string).
    – Emily
    Feb 7, 2014 at 23:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.