[OpenLayers-Users] Help to create FeatureId filter & OpenLayers.Filter.Logical.NOT

Ivan Grcic ivan.grcic at geofoto.hr
Thu Dec 10 08:10:07 EST 2009


Hi,

I need to make a filter that combines Layers.Filter.Logical.NOT with FeatureId.
Filter structure  should  be like:

<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<And>
<Not><ogc:FeatureId fid="Feature.1"/></Not>
<Not><ogc:FeatureId fid="Feature.2"/></Not>
</And>
...
...
</Not>
</ogc:Filter>


I tried creating one like this:

var filter_1_1 = new OpenLayers.Format.Filter({version: "1.1.0"});
var xml = new OpenLayers.Format.XML();

var featIdsFilter = [];

//iterate trough features and make  arrays of <Not><ogc:FeatureId
fid="Feature.1"/></Not> filters
for(var i=0, len=wfsLayer.features.length; i<len; i++){
    featIdsFilter.push(
        new OpenLayers.Filter.Logical({
            type: OpenLayers.Filter.Logical.NOT,
            filters: [new OpenLayers.Filter.FeatureId({fids:
[wfsLayer.features[i].fid]})]
        })
    );
}

//combines previous array with AND filter
var filterObj = new OpenLayers.Filter.Logical({
    type: OpenLayers.Filter.Logical.AND,
    filters: featIdsFilter
});

try{
    var filter = xml.write(filter_1_1.write(filterObj));
} catch(err) {
    alert(err);
}


filterObj gets created but when I try to write filter I get error:
Filter writing not supported for rule type: undefined

I used FIlters a lot before but for some reason I cant make Logical.NOT to work.
Apparently im not using OpenLayers.Filter.Logical.NOT in the right way...

Anybody had case like this?

Thanx,

Cheers

-- 
Ivan Grcic



More information about the Users mailing list