diff options
author | Dave Arter <davea@mysociety.org> | 2018-03-29 12:59:40 +0100 |
---|---|---|
committer | Dave Arter <davea@mysociety.org> | 2018-04-03 11:08:22 +0100 |
commit | a719de88c7b11d3259d229fae2eb37f747ced0b1 (patch) | |
tree | 6b4d897e94ab78e84bfdb3007df2c260e044c0c4 | |
parent | 06bda08b298ecaff67d05c24d8ef222d6289eeed (diff) |
Allow WFS layers to be filtered on more than one matching filter_value attribute
Requires the OpenLayers build to include Strategy.Filter.
-rw-r--r-- | web/cobrands/fixmystreet/assets.js | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/web/cobrands/fixmystreet/assets.js b/web/cobrands/fixmystreet/assets.js index 3016a381c..dd51242fb 100644 --- a/web/cobrands/fixmystreet/assets.js +++ b/web/cobrands/fixmystreet/assets.js @@ -481,11 +481,21 @@ fixmystreet.assets = { layer_options.projection = new OpenLayers.Projection(fixmystreet.wmts_config.map_projection); } if (options.filter_key) { - layer_options.filter = new OpenLayers.Filter.Comparison({ - type: OpenLayers.Filter.Comparison.EQUAL_TO, - property: options.filter_key, - value: options.filter_value - }); + if (OpenLayers.Util.isArray(options.filter_value)) { + layer_options.filter = new OpenLayers.Filter.FeatureId({ + type: OpenLayers.Filter.Function, + evaluate: function(f) { + return options.filter_value.indexOf(f.attributes[options.filter_key]) != -1; + } + }); + layer_options.strategies.push(new OpenLayers.Strategy.Filter({filter: layer_options.filter})); + } else { + layer_options.filter = new OpenLayers.Filter.Comparison({ + type: OpenLayers.Filter.Comparison.EQUAL_TO, + property: options.filter_key, + value: options.filter_value + }); + } } var asset_layer = new OpenLayers.Layer.Vector(options.name || "WFS", layer_options); |