[GIS] How to make a WFS request to GeoServer with OpenLayers 3

getfeatureopenlayersrequestwfs

This is OpenLayers 2 code I'm upgrading to OpenLayers 3 (OL3).
A set of filters (for example fromDate and toDate to for query) are created and inserted. How can I do this in OpenLayers 3?

I have a set of parameters which the user changes before the query. Filter is not a part of OL3, so how can I create such request to GeoServer with my parameters? Can anyone provide an example of OL3 syntax?

       // create filter
        var dateFilter = new OL.Filter.Comparison({
        type : OL.Filter.Comparison.BETWEEN,
        property : "stdate",
        lowerBoundary : date.fromDate,
        upperBoundary : date.toDate
    });

        var filter = ns.query.constructFilterString(filterBbox, date, attr);

This is where the request is created.

    // GetFeature request with filter, callback handles result from server
       ns.WebFeatureService.getFeature({
        TYPENAME : "floats",
        FILTER : filter
    }, displayFeatures);



    // fires a GetFeature WFS request to server
       function getFeature(callback) {
    // some default parameters that will be set automatically if not
       var parameters = {
        REQUEST : "GetFeature",
        SERVICE : "WFS",
        VERSION : "1.0",
        OUTPUTFORMAT : "json",
        TYPENAME : "floats",
        FILTER : filter
    };

      asyncGetRequest(parameters, callback);
}

Best Answer

Since OL3 does not have filter I used CQL filter. I exchanged FILTER : filter with CQL_FILTER : filter in the parameterlist. See http://docs.geoserver.org/stable/en/user/tutorials/cql/cql_tutorial.html

The differense is that CQL Filter has to be build in SQL syntax before added to the parameterlist.

Ex:

var filter_list = [];    
var dateFilterString = 'stdate BETWEEN ' + formFactory.getFromDate() + ' AND ' + formFactory.getToDate();
      filter_list.push(dateFilterString);

*******add more filters********
var filter =  filter_list.join(' AND ');
Related Question