1 | |
---|
2 | // use a CQL parser for easy filter creation |
---|
3 | var format = new OpenLayers.Format.CQL(); |
---|
4 | |
---|
5 | // this rule will get a filter from the CQL text in the form |
---|
6 | var rule = new OpenLayers.Rule({ |
---|
7 | // We could also set a filter here. E.g. |
---|
8 | // filter: format.read("STATE_ABBR >= 'B' AND STATE_ABBR <= 'O'"), |
---|
9 | symbolizer: { |
---|
10 | fillColor: "#ff0000", |
---|
11 | strokeColor: "#ffcccc", |
---|
12 | fillOpacity: "0.5" |
---|
13 | } |
---|
14 | }); |
---|
15 | |
---|
16 | var states = new OpenLayers.Layer.Vector("States", { |
---|
17 | styleMap: new OpenLayers.StyleMap({ |
---|
18 | "default": new OpenLayers.Style(null, {rules: [rule]}) |
---|
19 | }) |
---|
20 | }); |
---|
21 | |
---|
22 | var map = new OpenLayers.Map({ |
---|
23 | div: "map", |
---|
24 | layers: [ |
---|
25 | new OpenLayers.Layer.WMS( |
---|
26 | "OpenLayers WMS", |
---|
27 | "http://maps.opengeo.org/geowebcache/service/wms", |
---|
28 | {layers: "openstreetmap", format: "image/png"} |
---|
29 | ), |
---|
30 | states |
---|
31 | ], |
---|
32 | center: new OpenLayers.LonLat(-101, 39), |
---|
33 | zoom: 3 |
---|
34 | }); |
---|
35 | |
---|
36 | // called when features are fetched |
---|
37 | function loadFeatures(data) { |
---|
38 | var features = new OpenLayers.Format.GeoJSON().read(data); |
---|
39 | states.addFeatures(features); |
---|
40 | } |
---|
41 | |
---|
42 | // update filter and redraw when form is submitted |
---|
43 | var cql = document.getElementById("cql"); |
---|
44 | var output = document.getElementById("output"); |
---|
45 | function updateFilter() { |
---|
46 | var filter; |
---|
47 | try { |
---|
48 | filter = format.read(cql.value); |
---|
49 | } catch (err) { |
---|
50 | output.value = err.message; |
---|
51 | } |
---|
52 | if (filter) { |
---|
53 | output.value = ""; |
---|
54 | rule.filter = filter; |
---|
55 | states.redraw(); |
---|
56 | } |
---|
57 | return false; |
---|
58 | } |
---|
59 | updateFilter(); |
---|
60 | var form = document.getElementById("cql_form"); |
---|
61 | form.onsubmit = updateFilter; |
---|