OpenLayers WFS with OpenLayers.StrategyFilter and Filter Logical
by Thomas B.
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/openlayers/2.13.1/OpenLayers.js"></script>
<body onload="init()">
<p>OpenLayers Rule and OpenLayers.Filter...</p>
<div id="button1">Click to set an other filter for rule nr.1</div>Features Count: <span id="before">xx</span>
<br />
<div id="map"></div>
</body>
CSS
#map {
width: 100%;
height: 400px;
}
#button1 {
width:400px;
background: yellow;
border:1px solid red;
}
JavaScript
var map;
var layer, rule, wms, refresh, parent_type_filter, filter_featureclass,filter_not_null, parent_type_filter;
function init() {
map = new OpenLayers.Map('map');
wms = new OpenLayers.Layer.WMS(
"OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {
layers: 'basic'
});
var attribute = "MAX_POP50";
var filter_zero = new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: attribute,
value: 0
});
var filter_null = new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.IS_NULL,
property: attribute
});
filter_not_null = new OpenLayers.Filter.Logical({
type: OpenLayers.Filter.Logical.NOT
});
filter_not_null.filters.push(filter_null);
parent_type_filter = new OpenLayers.Filter.Logical({
type: OpenLayers.Filter.Logical.OR,
filters: [filter_zero, filter_featureclass]
});
var wfsNameIsNotNullFilter = new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
property: attribute,
value: ""
});
var wfsTypeFilters = [
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: "NAME",
value: 'Nowra'
}),
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: "NAME",
value: 'Ulladulla'
}),
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: "NAME",
value: 'Batemans Bay'
})];
parent_type_filter = new OpenLayers.Filter.Logical({
type: OpenLayers.Filter.Logical.OR,
filters: wfsTypeFilters
});
refresh = new OpenLayers.Strategy.Refresh({
force: true,
active: true
});
var rule_filters = [
new OpenLayers.Filter.Comparison({
type:...