diff --git a/lang/de.json b/lang/de.json
index 4584dd53..2b1ffe34 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -16,6 +16,7 @@
"export:OSMJSON": "",
"export:OSMXML": null,
"facilities": "Einrichtungen",
+ "filter_results": "Ergebnisse einschränken",
"header:attributes": "Attribute",
"header:export": "Export",
"header:osm_meta": "OSM Meta",
diff --git a/lang/en.json b/lang/en.json
index e12e7304..4f0cd3ea 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -16,6 +16,7 @@
"export:OSMJSON": "Download as OSM JSON",
"export:OSMXML": "Download as OSM XML",
"facilities": "Facilities",
+ "filter_results": "Filter results",
"header:attributes": "Attributes",
"header:export": "Export",
"header:osm_meta": "OSM Meta",
diff --git a/src/CategoryOverpass.js b/src/CategoryOverpass.js
index 7725dcd7..43e4daa2 100644
--- a/src/CategoryOverpass.js
+++ b/src/CategoryOverpass.js
@@ -108,7 +108,48 @@ function CategoryOverpass (options, data) {
this.layer.on('remove', (ob, data) => this.emit('remove', ob, data))
this.layer.on('zoomChange', (ob, data) => this.emit('remove', ob, data))
- p = document.createElement('div')
+ if (this.data.filter) {
+ this.domFilter = document.createElement('form')
+
+ this.formFilter = new form(this.id, this.data.filter,
+ {
+ 'type': 'form_chooser',
+ 'button:add_element': '-- ' + lang('filter_results') + ' --',
+ 'order': false
+ }
+ )
+ this.formFilter.show(this.domFilter)
+ this.formFilter.onchange = function () {
+ var data = this.formFilter.get_data()
+
+ this.additionalFilter = []
+ for (var k in data) {
+ if (data[k] === null) {
+ continue
+ }
+
+ var d = this.data.filter[k]
+
+ var v = {
+ key: k,
+ value: data[k],
+ op: '='
+ }
+
+ if ('op' in d) {
+ v.op = d.op
+ }
+
+ this.additionalFilter.push(v)
+ }
+
+ this.layer.options.queryOptions.filter = this.additionalFilter
+ this.layer.check_update_map()
+ }.bind(this)
+ this.dom.insertBefore(this.domFilter, this.domContent)
+ }
+
+ var p = document.createElement('div')
p.className = 'loadingIndicator'
p.innerHTML = '' + lang('loading') + ''
this.dom.appendChild(p)
@@ -193,6 +234,14 @@ CategoryOverpass.prototype.load = function (callback) {
}.bind(this))
}
+CategoryOverpass.prototype.setParentDom = function (parentDom) {
+ CategoryBase.prototype.setParentDom.call(this, parentDom)
+
+ if (this.formFilter) {
+ this.formFilter.resize()
+ }
+}
+
CategoryOverpass.prototype.setMap = function (map) {
CategoryBase.prototype.setMap.call(this, map)