Adding a parser for reading and writing CQL. This can be used to create filters to be used in rules when styling or it can be used to serialize filters when making requests to services that supprot CQL. p=dwinslow, r=me (closes #2522)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@11065 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
61
examples/cql-format.js
Normal file
61
examples/cql-format.js
Normal file
@@ -0,0 +1,61 @@
|
||||
|
||||
// use a CQL parser for easy filter creation
|
||||
var format = new OpenLayers.Format.CQL();
|
||||
|
||||
// this rule will get a filter from the CQL text in the form
|
||||
var rule = new OpenLayers.Rule({
|
||||
// We could also set a filter here. E.g.
|
||||
// filter: format.read("STATE_ABBR >= 'B' AND STATE_ABBR <= 'O'"),
|
||||
symbolizer: {
|
||||
fillColor: "#ff0000",
|
||||
strokeColor: "#ffcccc",
|
||||
fillOpacity: "0.5"
|
||||
}
|
||||
});
|
||||
|
||||
var states = new OpenLayers.Layer.Vector("States", {
|
||||
styleMap: new OpenLayers.StyleMap({
|
||||
"default": new OpenLayers.Style(null, {rules: [rule]})
|
||||
})
|
||||
});
|
||||
|
||||
var map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
layers: [
|
||||
new OpenLayers.Layer.WMS(
|
||||
"OpenLayers WMS",
|
||||
"http://maps.opengeo.org/geowebcache/service/wms",
|
||||
{layers: "openstreetmap", format: "image/png"}
|
||||
),
|
||||
states
|
||||
],
|
||||
center: new OpenLayers.LonLat(-101, 39),
|
||||
zoom: 3
|
||||
});
|
||||
|
||||
// called when features are fetched
|
||||
function loadFeatures(data) {
|
||||
var features = new OpenLayers.Format.GeoJSON().read(data);
|
||||
states.addFeatures(features);
|
||||
};
|
||||
|
||||
// update filter and redraw when form is submitted
|
||||
var cql = document.getElementById("cql");
|
||||
var output = document.getElementById("output");
|
||||
function updateFilter() {
|
||||
var filter;
|
||||
try {
|
||||
filter = format.read(cql.value);
|
||||
} catch (err) {
|
||||
output.value = err.message;
|
||||
}
|
||||
if (filter) {
|
||||
output.value = "";
|
||||
rule.filter = filter;
|
||||
states.redraw();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
updateFilter();
|
||||
var form = document.getElementById("cql_form");
|
||||
form.onsubmit = updateFilter;
|
||||
Reference in New Issue
Block a user