OpenLayers WFS with OpenLayers.StrategyFilter and Filter Logical
HTML
<script src="http://cdnjs.cloudflare.com/ajax/libs/openlayers/2.11/OpenLayers.js"></script>
<body onload="init()">
<p>OpenLayers WFS with OpenLayers.StrategyFilter and Filter Logical <br/>
OpenLayers.Filter.Comparison, OpenLayers.Filter.Logical, OpenLayers.Filter.Comparison.IS_NULL</p>
<div id="button1">Click to filter layer</div>Features before filtering:
<span id="before">xx</span>
<br />Features after filtering: <span id="after">xx</span>
<br />
<div id="map"></div>
</body>
CSS
#map {
width: 100%;
height: 400px;
}
#button1 {
width:150px;
background: yellow;
border:1px solid red;
}
JavaScript
var map;
var layer, wms, filterStrategy;
function init() {
map = new OpenLayers.Map('map');
wms = new OpenLayers.Layer.WMS(
"OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {
layers: 'basic'
});
filterStrategy = new OpenLayers.Strategy.Filter();
console.log(filterStrategy);
layer = new OpenLayers.Layer.Vector("WFS", {
strategies: [filterStrategy]
});
map.addLayers([wms, layer]);
map.setCenter(new OpenLayers.LonLat(146.7, -41.8), 6);
OpenLayers.Request.GET({
url: 'http://demo.opengeo.org/geoserver/wfs',
params: {
service: 'WFS',
version: '1.0.0',
request: 'GetFeature',
typeName: 'ne_10m_populated_places',
featureNS: "http://openstreemap.org",
bbox: '137.9109375,-54.98359375,155.4890625,-28.61640625'
},
success: function (response) {
var gmlReader = new OpenLayers.Format.GML({
extractAttributes: true
});
var features = gmlReader.read(response.responseText);
layer.addFeatures(features);
}
});
}
function updateFilter(station_id) {
document.getElementById("before").innerHTML = map.layers[1].features.length;
var attribute = "MAX_POP50";
var filter_featureclass= new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: "FEATURECLA",
value: 'Populated place' });
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
});
var filter_not_null= new OpenLayers.Filter.Logical({
type: OpenLayers.Filter.Logical.NOT,
...