From 2cb3e5849df38b5d2705bd30d32aaf1ddad297f3 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Wed, 30 Jan 2013 17:30:04 -0500 Subject: [PATCH 01/30] First shot at presets This includes a first JSON scheme and a bad-looking UI currently in inspector. --- index.html | 13 +- js/id/connection.js | 7 + js/id/modes/select.js | 4 +- js/id/presets.js | 18 + js/id/ui/inspector.js | 16 + js/id/ui/preset.js | 63 + presets/josm.xml | 5819 +++++++++++++++++++++++++++++++++++++++++ presets/presets.json | 58 + 8 files changed, 5993 insertions(+), 5 deletions(-) create mode 100644 js/id/presets.js create mode 100644 js/id/ui/preset.js create mode 100755 presets/josm.xml create mode 100644 presets/presets.json diff --git a/index.html b/index.html index fae1fc940..5caa49254 100644 --- a/index.html +++ b/index.html @@ -31,6 +31,7 @@ + @@ -71,6 +72,7 @@ + @@ -133,10 +135,13 @@
diff --git a/js/id/connection.js b/js/id/connection.js index 0460b09ab..07cd332b7 100644 --- a/js/id/connection.js +++ b/js/id/connection.js @@ -5,6 +5,7 @@ iD.Connection = function() { connection = {}, user = {}, version, + presetData, keys, inflight = {}, loadedTiles = {}, @@ -314,6 +315,12 @@ iD.Connection = function() { return connection; }; + connection.presetData = function(_) { + if (!arguments.length) return presetData; + presetData = _; + return connection; + }; + connection.authenticate = function(callback) { function done(err, res) { event.auth(); diff --git a/js/id/modes/select.js b/js/id/modes/select.js index ad06bda35..3b1fca4b2 100644 --- a/js/id/modes/select.js +++ b/js/id/modes/select.js @@ -24,7 +24,9 @@ iD.modes.Select = function(entity, initial) { history = map.history(), surface = mode.map.surface; - inspector.graph(graph); + inspector + .graph(graph) + .presetData(map.connection().presetData()); behaviors = [ iD.behavior.Hover(), diff --git a/js/id/presets.js b/js/id/presets.js new file mode 100644 index 000000000..694f7cae4 --- /dev/null +++ b/js/id/presets.js @@ -0,0 +1,18 @@ +iD.presetData = function() { + var presets = {}, + data = []; + + presets.data = function(_) { + if (!arguments.length) return data; + data = _; + return presets; + }; + + presets.match = function(entity) { + return data.filter(function(d) { + return _.contains(d.match.type, entity.type); + }); + }; + + return presets; +}; diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index 9612cadd9..bd099d35a 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -1,6 +1,7 @@ iD.ui.inspector = function() { var event = d3.dispatch('changeTags', 'close'), taginfo = iD.taginfo(), + presetData, initial = false, graph, tagList; @@ -8,6 +9,8 @@ iD.ui.inspector = function() { function inspector(selection) { var entity = selection.datum(); + var possiblePresets = presetData.match(entity); + var inspector = selection.append('div') .attr('class','inspector content'); @@ -21,6 +24,14 @@ iD.ui.inspector = function() { var inspectorwrap = inspectorbody.append('div') .attr('class', 'inspector-inner tag-wrap fillL2'); + if (possiblePresets.length) { + var inspectorpreset = inspectorwrap.append('div') + .attr('class', 'inspector-preset') + .call(iD.ui.preset() + .preset(possiblePresets[0])); + } + + inspectorwrap.append('h4') .text(t('edit_tags')); @@ -275,6 +286,11 @@ iD.ui.inspector = function() { return inspector; }; + inspector.presetData = function(_) { + presetData = _; + return inspector; + }; + inspector.graph = function(_) { graph = _; return inspector; diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js new file mode 100644 index 000000000..beac0d8f3 --- /dev/null +++ b/js/id/ui/preset.js @@ -0,0 +1,63 @@ +iD.ui.preset = function() { + var preset; + + // generate form fields for a given field. + function input(d) { + switch (d.type) { + + case 'tel': + this.append('input') + .attr('type', 'tel') + .attr('placeholder', '1-555-555-5555'); + break; + + case 'email': + this.append('input') + .attr('type', 'email') + .attr('placeholder', 'email@domain.com'); + break; + + case 'url': + this.append('input') + .attr('type', 'url') + .attr('placeholder', 'http://example.com/'); + break; + + case 'select': + var select = this.append('select'); + var options = d.option.slice(); + options.unshift(''); + select.selectAll('option') + .data(options) + .enter() + .append('option') + .text(String); + break; + } + } + + function presets(selection) { + var sections = selection.selectAll('div.preset-section') + .data(preset.form) + .enter() + .append('div') + .attr('class', 'preset-section'); + + sections.each(function(d) { + var s = d3.select(this); + + s.append('h4') + .text(d.title || d.tag); + + input.call(s, d); + }); + } + + presets.preset = function(_) { + if (!arguments.length) return preset; + preset = _; + return presets; + }; + + return presets; +}; diff --git a/presets/josm.xml b/presets/josm.xml new file mode 100755 index 000000000..c6d8952fc --- /dev/null +++ b/presets/josm.xml @@ -0,0 +1,5819 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/presets/presets.json b/presets/presets.json new file mode 100644 index 000000000..af7efaaa5 --- /dev/null +++ b/presets/presets.json @@ -0,0 +1,58 @@ +[ + { + "name": "highway", + "match": { + "type": ["line"], + "tags": { + "highway": "*" + } + }, + "form": [ + { + "tag": "highway", + "title": "Highway Type", + "type": "select", + "option": ["primary", "secondary", "tertiary"] + } + ] + }, + { + "name": "cafe", + "match": { + "type": ["node", "area"], + "tags": { + "amenity": "cafe" + } + }, + "form": [ + { + "tag": "phone", + "type": "tel" + }, + { + "tag": "fax", + "type": "tel" + }, + { + "tag": "website", + "type": "url" + }, + { + "tag": "email", + "type": "email" + }, + { + "tag": "internet_access", + "title": "Internet Access", + "type": "select", + "option": ["yes", "wlan","wired","terminal","no"] + }, + { + "tag": "internet_access:fee", + "title": "Internet Access Fee", + "type": "select", + "option": ["yes", "no"] + } + ] + } +] From e63434f437f0017c08b1493e7e8d27a4cdc594ae Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Wed, 30 Jan 2013 17:41:06 -0500 Subject: [PATCH 02/30] Rename, titles, edit distance --- index.html | 2 +- js/id/{presets.js => presetdata.js} | 6 ++++++ js/id/util.js | 20 ++++++++++++++++++++ presets/presets.json | 2 ++ 4 files changed, 29 insertions(+), 1 deletion(-) rename js/id/{presets.js => presetdata.js} (69%) diff --git a/index.html b/index.html index 5caa49254..438b54e90 100644 --- a/index.html +++ b/index.html @@ -31,7 +31,7 @@ - + diff --git a/js/id/presets.js b/js/id/presetdata.js similarity index 69% rename from js/id/presets.js rename to js/id/presetdata.js index 694f7cae4..df07e732b 100644 --- a/js/id/presets.js +++ b/js/id/presetdata.js @@ -8,6 +8,12 @@ iD.presetData = function() { return presets; }; + presets.search = function(str) { + var edits = _.sortBydata.map(function(d) { + return iD.util.editDistance(d.title, str); + }); + }; + presets.match = function(entity) { return data.filter(function(d) { return _.contains(d.match.type, entity.type); diff --git a/js/id/util.js b/js/id/util.js index da31a162b..fac92fba0 100644 --- a/js/id/util.js +++ b/js/id/util.js @@ -74,3 +74,23 @@ iD.util.getStyle = function(selector) { } } }; + +iD.util.editDistance = function(a, b) { + if (a.length === 0) return b.length; + if (b.length === 0) return a.length; + var matrix = []; + for (var i = 0; i <= b.length; i++) { matrix[i] = [i]; } + for (var j = 0; j <= a.length; j++) { matrix[0][j] = j; } + for (i = 1; i <= b.length; i++) { + for (j = 1; j <= a.length; j++) { + if (b.charAt(i-1) == a.charAt(j-1)) { + matrix[i][j] = matrix[i-1][j-1]; + } else { + matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, // substitution + Math.min(matrix[i][j-1] + 1, // insertion + matrix[i-1][j] + 1)); // deletion + } + } + } + return matrix[b.length][a.length]; +}; diff --git a/presets/presets.json b/presets/presets.json index af7efaaa5..a4f25bd42 100644 --- a/presets/presets.json +++ b/presets/presets.json @@ -1,5 +1,6 @@ [ { + "title": "Highway", "name": "highway", "match": { "type": ["line"], @@ -17,6 +18,7 @@ ] }, { + "title": "Cafe", "name": "cafe", "match": { "type": ["node", "area"], From 4e7ed7250be07514a7bc30d965aa6b54b0204155 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 31 Jan 2013 12:18:06 -0500 Subject: [PATCH 03/30] Add josm converter and converted, switch to it. --- index.html | 2 +- js/id/presetdata.js | 2 +- js/id/ui/preset.js | 2 +- presets/convert_josm.py | 44 + presets/presets_josm.json | 12281 ++++++++++++++++++++++++++++++++++++ 5 files changed, 12328 insertions(+), 3 deletions(-) create mode 100644 presets/convert_josm.py create mode 100644 presets/presets_josm.json diff --git a/index.html b/index.html index 9606fe7b6..2ec9d79ee 100644 --- a/index.html +++ b/index.html @@ -136,7 +136,7 @@
+ diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index eae7da717..25eafe747 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -9,8 +9,6 @@ iD.ui.inspector = function() { function inspector(selection) { var entity = selection.datum(); - var possiblePresets = presetData.match(entity); - var inspector = selection.append('div') .attr('class','inspector content'); @@ -24,12 +22,18 @@ iD.ui.inspector = function() { var inspectorwrap = inspectorbody.append('div') .attr('class', 'inspector-inner tag-wrap fillL2'); - if (possiblePresets.length) { - var inspectorpreset = inspectorwrap.append('div') - .attr('class', 'inspector-preset cf') - .call(iD.ui.preset() - .preset(possiblePresets[0])); - } + var inspectorpresetsearch = inspectorwrap.append('div') + .attr('class', 'inspector-preset cf') + .call(iD.ui.presetsearch() + .entity(entity) + .presetData(presetData) + .on('choose', function(preset) { + inspectorpreset.call(iD.ui.preset() + .preset(preset)); + })); + + var inspectorpreset = inspectorwrap.append('div') + .attr('class', 'inspector-preset cf'); inspectorwrap.append('h4') diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index 0521580f4..173599a01 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -66,8 +66,7 @@ iD.ui.preset = function() { var wrap = s.append('div') .attr('class', 'preset-section-input cf'); - wrap - .append('div') + wrap.append('div') .attr('class', 'col6') .text(d.text); diff --git a/js/id/ui/presetsearch.js b/js/id/ui/presetsearch.js new file mode 100644 index 000000000..c1861e67b --- /dev/null +++ b/js/id/ui/presetsearch.js @@ -0,0 +1,61 @@ +iD.ui.presetsearch = function() { + var event = d3.dispatch('choose'), + presetData; + + function search(selection) { + var viable = presetData.match(entity); + + function filter(value) { + value = value.toLowerCase(); + return viable.filter(function(v) { + return v.name.toLowerCase().indexOf(value) !== -1; + }); + } + + function showResults() { + var values = filter(this.value).slice(0, 10); + + var res = search_output.selectAll('div.preset-search-result') + .data(values, function(d) { return d.name; }); + + res.exit().remove(); + + res.enter() + .append('button') + .attr('class', 'preset-search-result') + .text(function(d) { + return d.name; + }) + .on('click', function(d) { + search_output + .selectAll('button.preset-search-result') + .remove(); + event.choose(d); + }); + } + + selection.append('div') + .attr('class', 'preset-search-input') + .append('h3') + .append('input') + .on('keyup', showResults) + .on('change', showResults); + + var search_output = selection.append('div') + .attr('class', 'preset-search-output'); + } + + search.presetData = function(_) { + if (!arguments.length) return presetData; + presetData = _; + return search; + }; + + search.entity = function(_) { + if (!arguments.length) return entity; + entity = _; + return search; + }; + + return d3.rebind(search, event, 'on'); +}; From 28ba323e9da900074286a47228f030f80ec5239c Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 31 Jan 2013 13:55:52 -0500 Subject: [PATCH 06/30] Fix preset filtering --- js/id/ui/presetsearch.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/id/ui/presetsearch.js b/js/id/ui/presetsearch.js index c1861e67b..c543089c9 100644 --- a/js/id/ui/presetsearch.js +++ b/js/id/ui/presetsearch.js @@ -15,7 +15,7 @@ iD.ui.presetsearch = function() { function showResults() { var values = filter(this.value).slice(0, 10); - var res = search_output.selectAll('div.preset-search-result') + var res = search_output.selectAll('button.preset-search-result') .data(values, function(d) { return d.name; }); res.exit().remove(); @@ -38,6 +38,7 @@ iD.ui.presetsearch = function() { .attr('class', 'preset-search-input') .append('h3') .append('input') + .attr('placeholder', 'preset search') .on('keyup', showResults) .on('change', showResults); From 60c14dc7ac3074c7d39c025dd037a2e6170dfb61 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 31 Jan 2013 14:24:05 -0500 Subject: [PATCH 07/30] Use typeahead for preset search, support changing presets. Fixes #577 --- js/id/ui/preset.js | 2 ++ js/id/ui/presetsearch.js | 45 +++++++++++++++++----------------------- js/lib/d3.typeahead.js | 25 ++++++++++++++++++---- 3 files changed, 42 insertions(+), 30 deletions(-) diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index 173599a01..4badadaf5 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -54,6 +54,8 @@ iD.ui.preset = function() { } function presets(selection) { + selection.html(''); + var sections = selection.selectAll('div.preset-section') .data(preset.main) .enter() diff --git a/js/id/ui/presetsearch.js b/js/id/ui/presetsearch.js index c543089c9..7e888e3a1 100644 --- a/js/id/ui/presetsearch.js +++ b/js/id/ui/presetsearch.js @@ -9,41 +9,34 @@ iD.ui.presetsearch = function() { value = value.toLowerCase(); return viable.filter(function(v) { return v.name.toLowerCase().indexOf(value) !== -1; + }).map(function(v) { + return { + title: v.name, + value: v.name + }; }); } - function showResults() { - var values = filter(this.value).slice(0, 10); - - var res = search_output.selectAll('button.preset-search-result') - .data(values, function(d) { return d.name; }); - - res.exit().remove(); - - res.enter() - .append('button') - .attr('class', 'preset-search-result') - .text(function(d) { - return d.name; - }) - .on('click', function(d) { - search_output - .selectAll('button.preset-search-result') - .remove(); - event.choose(d); - }); + function find(value) { + value = value; + return _.find(viable, function(v) { + return v.name == value; + }); } - selection.append('div') + var preset_search_input = selection.append('div') .attr('class', 'preset-search-input') .append('h3') .append('input') .attr('placeholder', 'preset search') - .on('keyup', showResults) - .on('change', showResults); - - var search_output = selection.append('div') - .attr('class', 'preset-search-output'); + .call(d3.typeahead() + .autohighlight(true) + .data(function(_, callback) { + callback(filter(preset_search_input.property('value'))); + }) + .on('accept', function() { + event.choose(find(preset_search_input.property('value'))); + })); } search.presetData = function(_) { diff --git a/js/lib/d3.typeahead.js b/js/lib/d3.typeahead.js index 08a1a36ec..249512730 100644 --- a/js/lib/d3.typeahead.js +++ b/js/lib/d3.typeahead.js @@ -1,8 +1,12 @@ d3.typeahead = function() { - var data; + var event = d3.dispatch('accept'), + autohighlight = false, + data; var typeahead = function(selection) { - var container, hidden, idx = -1; + var container, + hidden, + idx = autohighlight ? 0 : -1; function setup() { var rect = selection.node().getBoundingClientRect(); @@ -20,11 +24,17 @@ d3.typeahead = function() { function hide() { container.remove(); - idx = -1; + idx = autohighlight ? 0 : -1; hidden = true; } function slowHide() { + if (autohighlight) { + if (container.select('a.selected').node()) { + select(container.select('a.selected').datum()); + event.accept(); + } + } window.setTimeout(hide, 150); } @@ -44,6 +54,7 @@ d3.typeahead = function() { if (container.select('a.selected').node()) { select(container.select('a.selected').datum()); } + event.accept(); hide(); } else { update(); @@ -95,5 +106,11 @@ d3.typeahead = function() { return typeahead; }; - return typeahead; + typeahead.autohighlight = function(_) { + if (!arguments.length) return autohighlight; + autohighlight = _; + return typeahead; + }; + + return d3.rebind(typeahead, event, 'on'); }; From 095ed4b48656200406b912251ec42cffefcd8f3d Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 31 Jan 2013 14:38:24 -0500 Subject: [PATCH 08/30] Pay attention to field types, style things a little bit better. --- css/app.css | 13 ++- js/id/ui/preset.js | 4 +- presets/convert_josm.py | 21 ++++- presets/presets_josm.json | 186 +++++++++++++++++++------------------- 4 files changed, 125 insertions(+), 99 deletions(-) diff --git a/css/app.css b/css/app.css index 329e57d0d..6f5771643 100644 --- a/css/app.css +++ b/css/app.css @@ -94,7 +94,10 @@ a:hover { textarea, -input[type=text] { +input[type=text], +input[type=url], +input[type=tel], +input[type=email] { background-color: white; border:1px solid #ccc; padding:10px; @@ -1288,3 +1291,11 @@ a.success-action { height:30px; margin: 5px; } + +.preset-label { + padding: 5px; +} + +.preset-input input { + width: 100%; +} diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index 4badadaf5..df9026739 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -69,11 +69,11 @@ iD.ui.preset = function() { .attr('class', 'preset-section-input cf'); wrap.append('div') - .attr('class', 'col6') + .attr('class', 'col4 preset-label') .text(d.text); input.call(wrap.append('div') - .attr('class', 'col6'), d); + .attr('class', 'col8 preset-input'), d); }); } diff --git a/presets/convert_josm.py b/presets/convert_josm.py index 220b383f6..382256368 100644 --- a/presets/convert_josm.py +++ b/presets/convert_josm.py @@ -1,16 +1,23 @@ from xml.dom.minidom import parse -import os +import os, re, json dirr = os.path.dirname(__file__) -import json def relative(x): return os.path.join(dirr, x) + dom1 = parse(relative('./josm.xml')) items = dom1.getElementsByTagName('item') jsonOutput = [] +def isemail(x): + return re.search('email', x, flags=re.IGNORECASE) +def iswebsite(x): + return re.search('web', x, flags=re.IGNORECASE) +def istel(x): + return re.search('phone|tel|fax', x, flags=re.IGNORECASE) + for item in items: jitem = { "name": item.getAttribute('name'), @@ -20,8 +27,16 @@ for item in items: for n in item.childNodes: if n.nodeType != n.TEXT_NODE and n.nodeType != n.COMMENT_NODE: if n.tagName == 'text': + txt = n.getAttribute('text') + type = 'text' + if isemail(txt): + type = 'email' + if iswebsite(txt): + type = 'url' + if istel(txt): + type = 'tel' jitem['main'].append({ - 'type': 'text', + 'type': type, 'key': n.getAttribute('key'), 'text': n.getAttribute('text') }) diff --git a/presets/presets_josm.json b/presets/presets_josm.json index 7baacaf4d..f823a372d 100644 --- a/presets/presets_josm.json +++ b/presets/presets_josm.json @@ -2893,22 +2893,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -2981,7 +2981,7 @@ }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" } ], @@ -3132,22 +3132,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -3607,22 +3607,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -3702,22 +3702,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -3792,22 +3792,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -3882,22 +3882,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -3977,22 +3977,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -4063,22 +4063,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -4180,22 +4180,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -4270,22 +4270,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -4381,22 +4381,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -4498,22 +4498,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -4584,22 +4584,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -4683,22 +4683,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -4780,22 +4780,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -4866,22 +4866,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -4952,22 +4952,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -5017,22 +5017,22 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" } ], @@ -5315,7 +5315,7 @@ }, { "text": "Phone number", - "type": "text", + "type": "tel", "key": "phone" } ], @@ -5795,12 +5795,12 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" } ], @@ -6228,7 +6228,7 @@ }, { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" } ], @@ -10730,7 +10730,7 @@ }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" } ], @@ -10764,7 +10764,7 @@ }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" } ], @@ -10798,7 +10798,7 @@ }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" } ], @@ -10832,7 +10832,7 @@ }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" } ], @@ -10866,7 +10866,7 @@ }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" } ], @@ -10900,7 +10900,7 @@ }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" } ], @@ -10934,7 +10934,7 @@ }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" } ], @@ -10963,7 +10963,7 @@ }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" } ], @@ -11785,22 +11785,22 @@ "main": [ { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "email" }, { @@ -11826,22 +11826,22 @@ "main": [ { "text": "Phone Number", - "type": "text", + "type": "tel", "key": "contact:phone" }, { "text": "Fax Number", - "type": "text", + "type": "tel", "key": "contact:fax" }, { "text": "Website", - "type": "text", + "type": "url", "key": "contact:website" }, { "text": "Email Address", - "type": "text", + "type": "email", "key": "contact:email" }, { From 5bd95f6e6a468b1dc6e88df869b51ed28d85c1bc Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 31 Jan 2013 14:59:59 -0500 Subject: [PATCH 09/30] Grab favorites, display them. Show stuff nested in optional tags. Fixes #582 --- css/app.css | 6 + index.html | 1 + js/id/presetdata.js | 6 +- js/id/ui/inspector.js | 13 +- js/id/ui/presetfavs.js | 30 + js/id/ui/presetsearch.js | 1 - presets/convert_josm.py | 63 +- presets/prefs.json | 3 + presets/presets_josm.json | 5975 ++++++++++++++++++++++++++++++++----- 9 files changed, 5328 insertions(+), 770 deletions(-) create mode 100644 js/id/ui/presetfavs.js create mode 100644 presets/prefs.json diff --git a/css/app.css b/css/app.css index 6f5771643..d4c92ec9e 100644 --- a/css/app.css +++ b/css/app.css @@ -1296,6 +1296,12 @@ a.success-action { padding: 5px; } +.preset-fav button.fav { + height: 30px; + margin: 5px; + padding: 0 10px; +} + .preset-input input { width: 100%; } diff --git a/index.html b/index.html index 26a78a853..cb788ae18 100644 --- a/index.html +++ b/index.html @@ -74,6 +74,7 @@ + diff --git a/js/id/presetdata.js b/js/id/presetdata.js index 9c301c799..09191282c 100644 --- a/js/id/presetdata.js +++ b/js/id/presetdata.js @@ -8,9 +8,9 @@ iD.presetData = function() { return presets; }; - presets.search = function(str) { - var edits = _.sortBydata.map(function(d) { - return iD.util.editDistance(d.title, str); + presets.favs = function() { + return data.filter(function(d) { + return d.favorite; }); }; diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index 25eafe747..8b17595dc 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -32,10 +32,21 @@ iD.ui.inspector = function() { .preset(preset)); })); + var inspectorpresetfavs = inspectorwrap.append('div') + .attr('class', 'inspector-preset cf') + .call(iD.ui.presetfavs() + .presetData(presetData) + .on('choose', function(preset) { + inspectorpreset.call(iD.ui.preset() + .preset(preset)); + inspectorpresetsearch + .select('input') + .property('value', preset.name); + })); + var inspectorpreset = inspectorwrap.append('div') .attr('class', 'inspector-preset cf'); - inspectorwrap.append('h4') .text(t('edit_tags')); diff --git a/js/id/ui/presetfavs.js b/js/id/ui/presetfavs.js new file mode 100644 index 000000000..610a16ac7 --- /dev/null +++ b/js/id/ui/presetfavs.js @@ -0,0 +1,30 @@ +iD.ui.presetfavs = function() { + var event = d3.dispatch('choose'), + presetData; + + function favs(selection) { + var favData = presetData.favs(); + + selection.append('div') + .attr('class', 'preset-fav') + .selectAll('button.fav') + .data(favData) + .enter() + .append('button') + .attr('class', 'fav') + .text(function(d) { + return d.name; + }) + .on('click', function(d) { + event.choose(d); + }); + } + + favs.presetData = function(_) { + if (!arguments.length) return presetData; + presetData = _; + return favs; + }; + + return d3.rebind(favs, event, 'on'); +}; diff --git a/js/id/ui/presetsearch.js b/js/id/ui/presetsearch.js index 7e888e3a1..6098bcb4c 100644 --- a/js/id/ui/presetsearch.js +++ b/js/id/ui/presetsearch.js @@ -18,7 +18,6 @@ iD.ui.presetsearch = function() { } function find(value) { - value = value; return _.find(viable, function(v) { return v.name == value; }); diff --git a/presets/convert_josm.py b/presets/convert_josm.py index 382256368..2d9b17ccd 100644 --- a/presets/convert_josm.py +++ b/presets/convert_josm.py @@ -5,6 +5,7 @@ dirr = os.path.dirname(__file__) def relative(x): return os.path.join(dirr, x) +prefs = json.load(open(relative('prefs.json'))) dom1 = parse(relative('./josm.xml')) items = dom1.getElementsByTagName('item') @@ -17,6 +18,8 @@ def iswebsite(x): return re.search('web', x, flags=re.IGNORECASE) def istel(x): return re.search('phone|tel|fax', x, flags=re.IGNORECASE) +def isfav(x): + return x in prefs for item in items: jitem = { @@ -24,36 +27,36 @@ for item in items: "type": item.getAttribute('type').split(','), "main": [] } - for n in item.childNodes: - if n.nodeType != n.TEXT_NODE and n.nodeType != n.COMMENT_NODE: - if n.tagName == 'text': - txt = n.getAttribute('text') - type = 'text' - if isemail(txt): - type = 'email' - if iswebsite(txt): - type = 'url' - if istel(txt): - type = 'tel' - jitem['main'].append({ - 'type': type, - 'key': n.getAttribute('key'), - 'text': n.getAttribute('text') - }) - if n.tagName == 'combo': - jitem['main'].append({ - 'type': 'select', - 'key': n.getAttribute('key'), - 'text': n.getAttribute('text'), - 'values': n.getAttribute('values').split(',') - }) - if n.tagName == 'check': - jitem['main'].append({ - 'type': 'check', - 'key': n.getAttribute('key'), - 'text': n.getAttribute('text'), - 'default': (n.getAttribute('check') == 'true') - }) + if isfav(jitem['name']): + jitem['favorite'] = True + for n in item.getElementsByTagName('text'): + txt = n.getAttribute('text') + type = 'text' + if isemail(txt): + type = 'email' + if iswebsite(txt): + type = 'url' + if istel(txt): + type = 'tel' + jitem['main'].append({ + 'type': type, + 'key': n.getAttribute('key'), + 'text': n.getAttribute('text') + }) + for n in item.getElementsByTagName('combo'): + jitem['main'].append({ + 'type': 'select', + 'key': n.getAttribute('key'), + 'text': n.getAttribute('text'), + 'values': n.getAttribute('values').split(',') + }) + for n in item.getElementsByTagName('check'): + jitem['main'].append({ + 'type': 'check', + 'key': n.getAttribute('key'), + 'text': n.getAttribute('text'), + 'default': (n.getAttribute('check') == 'true') + }) jsonOutput.append(jitem) json.dump(jsonOutput, open(relative('presets_josm.json'), 'w'), indent=4) diff --git a/presets/prefs.json b/presets/prefs.json new file mode 100644 index 000000000..11195ea01 --- /dev/null +++ b/presets/prefs.json @@ -0,0 +1,3 @@ +[ + "Cafe", "Restaurant", "Bus Station", "Hospital", "Bar", "Place of Worship" +] diff --git a/presets/presets_josm.json b/presets/presets_josm.json index f823a372d..2fb57035b 100644 --- a/presets/presets_josm.json +++ b/presets/presets_josm.json @@ -5,6 +5,104 @@ "text": "Reference", "type": "text", "key": "ref" + }, + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" } ], "type": [ @@ -13,7 +111,101 @@ "name": "Motorway" }, { - "main": [], + "main": [ + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + } + ], "type": [ "way" ], @@ -25,6 +217,110 @@ "text": "Reference", "type": "text", "key": "ref" + }, + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Motorroad", + "type": "check", + "key": "motorroad" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" } ], "type": [ @@ -38,6 +334,105 @@ "text": "Reference", "type": "text", "key": "ref" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Motorroad", + "type": "check", + "key": "motorroad" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" } ], "type": [ @@ -51,6 +446,123 @@ "text": "Reference", "type": "text", "key": "ref" + }, + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Motorroad", + "type": "check", + "key": "motorroad" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" } ], "type": [ @@ -59,7 +571,120 @@ "name": "Primary" }, { - "main": [], + "main": [ + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Motorroad", + "type": "check", + "key": "motorroad" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + } + ], "type": [ "way" ], @@ -71,6 +696,117 @@ "text": "Reference", "type": "text", "key": "ref" + }, + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" } ], "type": [ @@ -79,7 +815,114 @@ "name": "Secondary" }, { - "main": [], + "main": [ + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + } + ], "type": [ "way" ], @@ -91,6 +934,117 @@ "text": "Reference", "type": "text", "key": "ref" + }, + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" } ], "type": [ @@ -99,14 +1053,244 @@ "name": "Tertiary" }, { - "main": [], + "main": [ + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + } + ], "type": [ "way" ], "name": "Tertiary Link" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + }, + { + "default": false, + "text": "Passing Places", + "type": "check", + "key": "passing_places" + } + ], "type": [ "way" ], @@ -118,6 +1302,117 @@ "text": "Name", "type": "text", "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" } ], "type": [ @@ -131,6 +1426,100 @@ "text": "Name", "type": "text", "key": "name" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" } ], "type": [ @@ -144,6 +1533,100 @@ "text": "Name", "type": "text", "key": "name" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" } ], "type": [ @@ -153,36 +1636,86 @@ ], "name": "Pedestrian" }, - { - "main": [], - "type": [ - "way" - ], - "name": "Service" - }, - { - "main": [], - "type": [ - "way" - ], - "name": "Parking Aisle" - }, - { - "main": [], - "type": [ - "way" - ], - "name": "Road (Unknown Type)" - }, - { - "main": [], - "type": [ - "way" - ], - "name": "Construction" - }, { "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "alley", + "driveway", + "parking_aisle" + ], + "text": "Serviceway type", + "type": "select", + "key": "service" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, { "default": false, "text": "Oneway", @@ -191,15 +1724,358 @@ }, { "default": false, - "text": "Toll", + "text": "Bridge", "type": "check", - "key": "toll" + "key": "bridge" }, { "default": false, - "text": "No exit (cul-de-sac)", + "text": "Tunnel", "type": "check", - "key": "noexit" + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + }, + { + "default": false, + "text": "Passing Places", + "type": "check", + "key": "passing_places" + } + ], + "type": [ + "way" + ], + "name": "Service" + }, + { + "main": [ + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + } + ], + "type": [ + "way" + ], + "name": "Parking Aisle" + }, + { + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + } + ], + "type": [ + "way" + ], + "name": "Road (Unknown Type)" + }, + { + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "roundabout", + "jughandle", + "yes" + ], + "text": "Junction", + "type": "select", + "key": "junction" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + } + ], + "type": [ + "way" + ], + "name": "Construction" + }, + { + "main": [ + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "text": "Min. speed (km/h)", + "type": "text", + "key": "minspeed" + }, + { + "text": "Max. weight (tonnes)", + "type": "text", + "key": "maxweight" + }, + { + "text": "Max. axleload (tonnes)", + "type": "text", + "key": "maxaxleload" + }, + { + "text": "Max. height (meters)", + "type": "text", + "key": "maxheight" + }, + { + "text": "Max. width (meters)", + "type": "text", + "key": "maxwidth" + }, + { + "text": "Max. length (meters)", + "type": "text", + "key": "maxlength" }, { "values": [ @@ -415,41 +2291,6 @@ "type": "select", "key": "psv" }, - { - "text": "Max. speed (km/h)", - "type": "text", - "key": "maxspeed" - }, - { - "text": "Min. speed (km/h)", - "type": "text", - "key": "minspeed" - }, - { - "text": "Max. weight (tonnes)", - "type": "text", - "key": "maxweight" - }, - { - "text": "Max. axleload (tonnes)", - "type": "text", - "key": "maxaxleload" - }, - { - "text": "Max. height (meters)", - "type": "text", - "key": "maxheight" - }, - { - "text": "Max. width (meters)", - "type": "text", - "key": "maxwidth" - }, - { - "text": "Max. length (meters)", - "type": "text", - "key": "maxlength" - }, { "values": [ "yes", @@ -461,6 +2302,24 @@ "text": "Overtaking", "type": "select", "key": "overtaking" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Toll", + "type": "check", + "key": "toll" + }, + { + "default": false, + "text": "No exit (cul-de-sac)", + "type": "check", + "key": "noexit" } ], "type": [ @@ -471,6 +2330,16 @@ }, { "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, { "values": [ "motorway", @@ -491,6 +2360,79 @@ "text": "Type", "type": "select", "key": "highway" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5" + ], + "text": "Lanes", + "type": "select", + "key": "lanes" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" } ], "type": [ @@ -501,6 +2443,26 @@ }, { "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "text": "Max. weight (tonnes)", + "type": "text", + "key": "maxweight" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, { "values": [ "yes", @@ -511,6 +2473,37 @@ "text": "Bridge", "type": "select", "key": "bridge" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" } ], "type": [ @@ -519,14 +2512,80 @@ "name": "Bridge" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + } + ], "type": [ "way" ], "name": "Tunnel" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + } + ], "type": [ "node", "way" @@ -534,21 +2593,534 @@ "name": "Ford" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "grade1", + "grade2", + "grade3", + "grade4", + "grade5" + ], + "text": "Tracktype", + "type": "select", + "key": "tracktype" + }, + { + "values": [ + "paved", + "concrete", + "cobblestone", + "gravel", + "ground", + "grass", + "sand" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "0", + "1", + "2", + "3", + "4", + "5" + ], + "text": "MTB Scale", + "type": "select", + "key": "mtb:scale" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "yes", + "official", + "designated", + "destination", + "delivery", + "permissive", + "private", + "agricultural", + "forestry", + "no" + ], + "text": "General access", + "type": "select", + "key": "access" + }, + { + "values": [ + "yes", + "official", + "designated", + "destination", + "delivery", + "permissive", + "private", + "agricultural", + "forestry", + "no" + ], + "text": "Motor vehicles", + "type": "select", + "key": "motor_vehicle" + }, + { + "values": [ + "yes", + "official", + "designated", + "destination", + "delivery", + "permissive", + "private", + "agricultural", + "forestry", + "no" + ], + "text": "Motorcycle", + "type": "select", + "key": "motorcycle" + }, + { + "values": [ + "yes", + "official", + "designated", + "destination", + "delivery", + "permissive", + "private", + "agricultural", + "forestry", + "no" + ], + "text": "Motorcar", + "type": "select", + "key": "motorcar" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + } + ], "type": [ "way" ], "name": "Track" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "" + ], + "text": "SAC Scale", + "type": "select", + "key": "sac_scale" + }, + { + "values": [ + "0", + "1", + "2", + "3", + "4", + "5" + ], + "text": "MTB Scale", + "type": "select", + "key": "mtb:scale" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "excellent", + "good", + "intermediate", + "bad", + "horrible", + "no" + ], + "text": "Visibility", + "type": "select", + "key": "trail_visibility" + }, + { + "values": [ + "yes", + "official", + "designated", + "permissive", + "destination", + "delivery", + "private", + "no" + ], + "text": "Foot", + "type": "select", + "key": "foot" + }, + { + "values": [ + "yes", + "official", + "designated", + "permissive", + "destination", + "delivery", + "private", + "no" + ], + "text": "Bicycle", + "type": "select", + "key": "bicycle" + }, + { + "values": [ + "yes", + "official", + "designated", + "permissive", + "destination", + "delivery", + "private", + "no" + ], + "text": "Horse", + "type": "select", + "key": "horse" + }, + { + "values": [ + "unknown", + "yes", + "official", + "no" + ], + "text": "Wheelchairs", + "type": "select", + "key": "wheelchair" + }, + { + "values": [ + "yes", + "official", + "designated", + "permissive", + "private", + "no" + ], + "text": "Ski", + "type": "select", + "key": "ski" + }, + { + "values": [ + "yes", + "official", + "designated", + "permissive", + "destination", + "delivery", + "private", + "no" + ], + "text": "Snowmobile", + "type": "select", + "key": "snowmobile" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + } + ], "type": [ "way" ], "name": "Path" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + } + ], "type": [ "way" ], @@ -598,12 +3170,6 @@ "type": "select", "key": "cycleway:right" }, - { - "default": false, - "text": "Oneway (bicycle)", - "type": "check", - "key": "oneway:bicycle" - }, { "values": [ "motorway", @@ -625,6 +3191,12 @@ "type": "select", "key": "highway" }, + { + "default": false, + "text": "Oneway (bicycle)", + "type": "check", + "key": "oneway:bicycle" + }, { "default": false, "text": "Oneway", @@ -638,35 +3210,543 @@ "name": "Cycle Lane" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "unknown", + "yes", + "no" + ], + "text": "Pedestrians", + "type": "select", + "key": "foot" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + } + ], "type": [ "way" ], "name": "Dedicated Cycleway" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + } + ], "type": [ "way" ], "name": "Segregated Foot- and Cycleway" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + }, + { + "default": false, + "text": "Passing Places", + "type": "check", + "key": "passing_places" + } + ], "type": [ "way" ], "name": "Combined Foot- and Cycleway" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + }, + { + "default": false, + "text": "Passing Places", + "type": "check", + "key": "passing_places" + } + ], "type": [ "way" ], "name": "Dedicated Footway" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "text": "Amount of Steps", + "type": "text", + "key": "step_count" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + }, + { + "default": false, + "text": "Lit", + "type": "check", + "key": "lit" + } + ], "type": [ "way" ], @@ -696,7 +3776,24 @@ "name": "Motorway Junction" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" + }, + { + "default": false, + "text": "Toilets", + "type": "check", + "key": "toilets" + } + ], "type": [ "node", "closedway", @@ -705,7 +3802,19 @@ "name": "Services" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "default": false, + "text": "Toilets", + "type": "check", + "key": "toilets" + } + ], "type": [ "node", "closedway" @@ -720,7 +3829,52 @@ "name": "Emergency Phone" }, { - "main": [], + "main": [ + { + "values": [ + "uncontrolled", + "traffic_signals", + "island", + "unmarked", + "no", + "unknown" + ], + "text": "Pedestrian crossing type", + "type": "select", + "key": "crossing" + }, + { + "values": [ + "zebra", + "pelican", + "toucan", + "puffin", + "pegasus", + "tiger" + ], + "text": "Crossing type name (UK)", + "type": "select", + "key": "crossing_ref" + }, + { + "default": false, + "text": "Cross on horseback", + "type": "check", + "key": "horse" + }, + { + "default": false, + "text": "Cross by bicycle", + "type": "check", + "key": "bicycle" + }, + { + "default": false, + "text": "Crossing attendant", + "type": "check", + "key": "supervised" + } + ], "type": [ "node" ], @@ -764,6 +3918,19 @@ "type": "select", "key": "crossing" }, + { + "values": [ + "zebra", + "pelican", + "toucan", + "puffin", + "pegasus", + "tiger" + ], + "text": "Type name (UK)", + "type": "select", + "key": "crossing_ref" + }, { "default": false, "text": "Cross by bicycle", @@ -781,19 +3948,6 @@ "text": "Crossing attendant", "type": "check", "key": "supervised" - }, - { - "values": [ - "zebra", - "pelican", - "toucan", - "puffin", - "pegasus", - "tiger" - ], - "text": "Type name (UK)", - "type": "select", - "key": "crossing_ref" } ], "type": [ @@ -870,7 +4024,23 @@ "name": "Grit Bin" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Elevation", + "type": "text", + "key": "ele" + }, + { + "text": "Wikipedia", + "type": "text", + "key": "wikipedia" + } + ], "type": [ "node" ], @@ -1053,7 +4223,18 @@ "name": "Spikes" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" + } + ], "type": [ "node", "closedway" @@ -1108,7 +4289,22 @@ "name": "Hedge" }, { - "main": [], + "main": [ + { + "values": [ + "barbed_wire", + "chain", + "electric", + "hedge", + "pole", + "split_rail", + "wood" + ], + "text": "Type", + "type": "select", + "key": "fence_type" + } + ], "type": [ "way", "closedway" @@ -1140,7 +4336,13 @@ "name": "Retaining Wall" }, { - "main": [], + "main": [ + { + "text": "Width (meters)", + "type": "text", + "key": "width" + } + ], "type": [ "way" ], @@ -1534,6 +4736,11 @@ "type": "text", "key": "name" }, + { + "text": "Wikipedia", + "type": "text", + "key": "wikipedia" + }, { "values": [ "5", @@ -1551,11 +4758,6 @@ "text": "Layer", "type": "select", "key": "layer" - }, - { - "text": "Wikipedia", - "type": "text", - "key": "wikipedia" } ], "type": [ @@ -1570,6 +4772,11 @@ "type": "text", "key": "name" }, + { + "text": "Wikipedia", + "type": "text", + "key": "wikipedia" + }, { "values": [ "5", @@ -1587,11 +4794,6 @@ "text": "Layer", "type": "select", "key": "layer" - }, - { - "text": "Wikipedia", - "type": "text", - "key": "wikipedia" } ], "type": [ @@ -1916,7 +5118,13 @@ "name": "Ferry Terminal" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + } + ], "type": [ "way", "closedway" @@ -2007,56 +5215,622 @@ "name": "Dock" }, { - "main": [], + "main": [ + { + "values": [ + "main", + "branch", + "industrial", + "military", + "tourism" + ], + "text": "Usage", + "type": "select", + "key": "usage" + }, + { + "values": [ + "yard", + "siding", + "spur" + ], + "text": "Service/Type", + "type": "select", + "key": "service" + }, + { + "values": [ + "1668", + "1676", + "1674", + "1600", + "1524", + "1520", + "1495", + "1435", + "1067", + "1000", + "914", + "762", + "760", + "750" + ], + "text": "Gauge (mm)", + "type": "select", + "key": "gauge" + }, + { + "values": [ + "contact_line", + "no", + "yes", + "rail" + ], + "text": "Electrified", + "type": "select", + "key": "electrified" + }, + { + "values": [ + "600", + "650", + "750", + "1500", + "3000", + "15000", + "25000" + ], + "text": "Voltage", + "type": "select", + "key": "voltage" + }, + { + "values": [ + "0", + "16.7", + "50", + "60" + ], + "text": "Frequency (Hz)", + "type": "select", + "key": "frequency" + } + ], "type": [ "way" ], "name": "Rail" }, { - "main": [], + "main": [ + { + "values": [ + "1668", + "1676", + "1674", + "1600", + "1524", + "1520", + "1495", + "1435", + "1067", + "1000", + "914", + "762", + "760", + "750" + ], + "text": "Gauge (mm)", + "type": "select", + "key": "gauge" + }, + { + "values": [ + "yard", + "siding", + "spur" + ], + "text": "Types", + "type": "select", + "key": "service" + }, + { + "values": [ + "contact_line", + "no", + "yes", + "rail" + ], + "text": "Electrified", + "type": "select", + "key": "electrified" + }, + { + "values": [ + "600", + "650", + "750", + "1500", + "3000", + "15000", + "25000" + ], + "text": "Voltage", + "type": "select", + "key": "voltage" + }, + { + "values": [ + "0", + "16.7", + "50", + "60" + ], + "text": "Frequency (Hz)", + "type": "select", + "key": "frequency" + } + ], "type": [ "way" ], "name": "Narrow Gauge Rail" }, { - "main": [], + "main": [ + { + "values": [ + "yard", + "siding", + "spur" + ], + "text": "Types", + "type": "select", + "key": "service" + }, + { + "values": [ + "contact_line", + "no", + "yes", + "rail" + ], + "text": "Electrified", + "type": "select", + "key": "electrified" + }, + { + "values": [ + "600", + "650", + "750", + "1500", + "3000", + "15000", + "25000" + ], + "text": "Voltage", + "type": "select", + "key": "voltage" + }, + { + "values": [ + "0", + "16.7", + "50", + "60" + ], + "text": "Frequency (Hz)", + "type": "select", + "key": "frequency" + } + ], "type": [ "way" ], "name": "Monorail" }, { - "main": [], + "main": [ + { + "values": [ + "1668", + "1676", + "1674", + "1600", + "1524", + "1520", + "1495", + "1435", + "1067", + "1000", + "914", + "762", + "760", + "750" + ], + "text": "Gauge (mm)", + "type": "select", + "key": "gauge" + }, + { + "values": [ + "yard", + "siding", + "spur" + ], + "text": "Types", + "type": "select", + "key": "service" + }, + { + "values": [ + "contact_line", + "no", + "yes", + "rail" + ], + "text": "Electrified", + "type": "select", + "key": "electrified" + }, + { + "values": [ + "600", + "650", + "750", + "1500", + "3000", + "15000", + "25000" + ], + "text": "Voltage", + "type": "select", + "key": "voltage" + }, + { + "values": [ + "0", + "16.7", + "50", + "60" + ], + "text": "Frequency (Hz)", + "type": "select", + "key": "frequency" + } + ], "type": [ "way" ], "name": "Preserved" }, { - "main": [], + "main": [ + { + "values": [ + "1668", + "1676", + "1674", + "1600", + "1524", + "1520", + "1495", + "1435", + "1067", + "1000", + "914", + "762", + "760", + "750" + ], + "text": "Gauge (mm)", + "type": "select", + "key": "gauge" + }, + { + "values": [ + "yard", + "siding", + "spur" + ], + "text": "Types", + "type": "select", + "key": "service" + }, + { + "values": [ + "contact_line", + "no", + "yes", + "rail" + ], + "text": "Electrified", + "type": "select", + "key": "electrified" + }, + { + "values": [ + "600", + "650", + "750", + "1500", + "3000", + "15000", + "25000" + ], + "text": "Voltage", + "type": "select", + "key": "voltage" + }, + { + "values": [ + "0", + "16.7", + "50", + "60" + ], + "text": "Frequency (Hz)", + "type": "select", + "key": "frequency" + } + ], "type": [ "way" ], "name": "Light Rail" }, { - "main": [], + "main": [ + { + "values": [ + "1668", + "1676", + "1674", + "1600", + "1524", + "1520", + "1495", + "1435", + "1067", + "1000", + "914", + "762", + "760", + "750" + ], + "text": "Gauge (mm)", + "type": "select", + "key": "gauge" + }, + { + "values": [ + "yard", + "siding", + "spur" + ], + "text": "Types", + "type": "select", + "key": "service" + }, + { + "values": [ + "contact_line", + "no", + "yes", + "rail" + ], + "text": "Electrified", + "type": "select", + "key": "electrified" + }, + { + "values": [ + "600", + "650", + "750", + "1500", + "3000", + "15000", + "25000" + ], + "text": "Voltage", + "type": "select", + "key": "voltage" + }, + { + "values": [ + "0", + "16.7", + "50", + "60" + ], + "text": "Frequency (Hz)", + "type": "select", + "key": "frequency" + } + ], "type": [ "way" ], "name": "Subway" }, { - "main": [], + "main": [ + { + "values": [ + "1668", + "1676", + "1674", + "1600", + "1524", + "1520", + "1495", + "1435", + "1067", + "1000", + "914", + "762", + "760", + "750" + ], + "text": "Gauge (mm)", + "type": "select", + "key": "gauge" + }, + { + "values": [ + "yard", + "siding", + "spur" + ], + "text": "Types", + "type": "select", + "key": "service" + }, + { + "values": [ + "contact_line", + "no", + "yes", + "rail" + ], + "text": "Electrified", + "type": "select", + "key": "electrified" + }, + { + "values": [ + "600", + "650", + "750", + "1500", + "3000", + "15000", + "25000" + ], + "text": "Voltage", + "type": "select", + "key": "voltage" + }, + { + "values": [ + "0", + "16.7", + "50", + "60" + ], + "text": "Frequency (Hz)", + "type": "select", + "key": "frequency" + } + ], "type": [ "way" ], "name": "Tram" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Max. speed (km/h)", + "type": "text", + "key": "maxspeed" + }, + { + "text": "Width (meters)", + "type": "text", + "key": "width" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" + }, + { + "values": [ + "paved", + "unpaved", + "asphalt", + "concrete", + "metal", + "wood", + "paving_stones", + "cobblestone", + "gravel", + "pebblestone", + "compacted", + "grass_paver", + "grass", + "sand", + "ground" + ], + "text": "Surface", + "type": "select", + "key": "surface" + }, + { + "values": [ + "10%", + "-10%", + "10\u00b0", + "-10\u00b0", + "up", + "down" + ], + "text": "Incline", + "type": "select", + "key": "incline" + }, + { + "default": false, + "text": "Oneway", + "type": "check", + "key": "oneway" + }, + { + "default": false, + "text": "Bridge", + "type": "check", + "key": "bridge" + }, + { + "default": false, + "text": "Tunnel", + "type": "check", + "key": "tunnel" + }, + { + "default": false, + "text": "Cutting", + "type": "check", + "key": "cutting" + }, + { + "default": false, + "text": "Embankment", + "type": "check", + "key": "embankment" + } + ], "type": [ "way" ], @@ -2095,7 +5869,39 @@ "name": "Level Crossing" }, { - "main": [], + "main": [ + { + "values": [ + "uncontrolled", + "traffic_signals", + "island", + "unmarked", + "no", + "unknown" + ], + "text": "Crossing type", + "type": "select", + "key": "crossing" + }, + { + "default": false, + "text": "Cross on horseback", + "type": "check", + "key": "horse" + }, + { + "default": false, + "text": "Cross by bicycle", + "type": "check", + "key": "bicycle" + }, + { + "default": false, + "text": "Crossing attendant", + "type": "check", + "key": "supervised" + } + ], "type": [ "node" ], @@ -2127,6 +5933,33 @@ "text": "Reference number", "type": "text", "key": "ref" + }, + { + "text": "Number of people per hour", + "type": "text", + "key": "aerialway:capacity" + }, + { + "text": "Number of people per chair", + "type": "text", + "key": "aerialway:occupancy" + }, + { + "text": "Typical journey time in minutes", + "type": "text", + "key": "aerialway:duration" + }, + { + "default": false, + "text": "Has bubble?", + "type": "check", + "key": "aerialway:bubble" + }, + { + "default": false, + "text": "Has heating?", + "type": "check", + "key": "aerialway:heating" } ], "type": [ @@ -2145,6 +5978,16 @@ "text": "Reference number", "type": "text", "key": "ref" + }, + { + "text": "Number of people per hour", + "type": "text", + "key": "aerialway:capacity" + }, + { + "text": "Typical journey time in minutes", + "type": "text", + "key": "aerialway:duration" } ], "type": [ @@ -2163,6 +6006,27 @@ "text": "Reference number", "type": "text", "key": "ref" + }, + { + "text": "Number of people per hour", + "type": "text", + "key": "aerialway:capacity" + }, + { + "text": "Number of people per car", + "type": "text", + "key": "aerialway:occupancy" + }, + { + "text": "Typical journey time in minutes", + "type": "text", + "key": "aerialway:duration" + }, + { + "default": false, + "text": "Has heating?", + "type": "check", + "key": "aerialway:heating" } ], "type": [ @@ -2181,6 +6045,27 @@ "text": "Reference number", "type": "text", "key": "ref" + }, + { + "text": "Number of people per hour", + "type": "text", + "key": "aerialway:capacity" + }, + { + "text": "Number of people per gondola", + "type": "text", + "key": "aerialway:occupancy" + }, + { + "text": "Typical journey time in minutes", + "type": "text", + "key": "aerialway:duration" + }, + { + "default": false, + "text": "Has heating?", + "type": "check", + "key": "aerialway:heating" } ], "type": [ @@ -2199,6 +6084,33 @@ "text": "Reference number", "type": "text", "key": "ref" + }, + { + "text": "Number of people per hour", + "type": "text", + "key": "aerialway:capacity" + }, + { + "text": "Number of people per gondola/chair", + "type": "text", + "key": "aerialway:occupancy" + }, + { + "text": "Typical journey time in minutes", + "type": "text", + "key": "aerialway:duration" + }, + { + "default": false, + "text": "Has bubble?", + "type": "check", + "key": "aerialway:bubble" + }, + { + "default": false, + "text": "Has heating?", + "type": "check", + "key": "aerialway:heating" } ], "type": [ @@ -2217,6 +6129,16 @@ "text": "Reference number", "type": "text", "key": "ref" + }, + { + "text": "Number of people per hour", + "type": "text", + "key": "aerialway:capacity" + }, + { + "text": "Typical journey time in minutes", + "type": "text", + "key": "aerialway:duration" } ], "type": [ @@ -2235,6 +6157,16 @@ "text": "Reference number", "type": "text", "key": "ref" + }, + { + "text": "Number of people per hour", + "type": "text", + "key": "aerialway:capacity" + }, + { + "text": "Typical journey time in minutes", + "type": "text", + "key": "aerialway:duration" } ], "type": [ @@ -2253,6 +6185,16 @@ "text": "Reference number", "type": "text", "key": "ref" + }, + { + "text": "Number of people per hour", + "type": "text", + "key": "aerialway:capacity" + }, + { + "text": "Typical journey time in minutes", + "type": "text", + "key": "aerialway:duration" } ], "type": [ @@ -2271,6 +6213,16 @@ "text": "Reference number", "type": "text", "key": "ref" + }, + { + "text": "Number of people per hour", + "type": "text", + "key": "aerialway:capacity" + }, + { + "text": "Typical journey time in minutes", + "type": "text", + "key": "aerialway:duration" } ], "type": [ @@ -2289,6 +6241,16 @@ "text": "Reference number", "type": "text", "key": "ref" + }, + { + "text": "Number of people per hour", + "type": "text", + "key": "aerialway:capacity" + }, + { + "text": "Typical journey time in minutes", + "type": "text", + "key": "aerialway:duration" } ], "type": [ @@ -2307,6 +6269,11 @@ "text": "Reference number", "type": "text", "key": "ref" + }, + { + "text": "Typical journey time in minutes", + "type": "text", + "key": "aerialway:duration" } ], "type": [ @@ -2353,6 +6320,21 @@ "type": "text", "key": "ref" }, + { + "text": "Max. height (meters)", + "type": "text", + "key": "maxheight" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" + }, + { + "text": "Capacity (overall)", + "type": "text", + "key": "capacity" + }, { "values": [ "multi-storey", @@ -2363,11 +6345,6 @@ "type": "select", "key": "parking" }, - { - "text": "Max. height (meters)", - "type": "text", - "key": "maxheight" - }, { "values": [ "yes", @@ -2398,16 +6375,6 @@ "type": "select", "key": "fee" }, - { - "text": "Operator", - "type": "text", - "key": "operator" - }, - { - "text": "Capacity (overall)", - "type": "text", - "key": "capacity" - }, { "values": [ "yes", @@ -2466,6 +6433,16 @@ "type": "text", "key": "ref" }, + { + "text": "Capacity", + "type": "text", + "key": "capacity" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" + }, { "values": [ "multi-storey", @@ -2477,11 +6454,6 @@ "type": "select", "key": "parking" }, - { - "text": "Capacity", - "type": "text", - "key": "capacity" - }, { "values": [ "yes", @@ -2504,11 +6476,6 @@ "type": "select", "key": "fee" }, - { - "text": "Operator", - "type": "text", - "key": "operator" - }, { "values": [ "paved", @@ -2600,6 +6567,11 @@ "type": "text", "key": "ref" }, + { + "text": "Operator", + "type": "text", + "key": "operator" + }, { "values": [ "multi-storey", @@ -2633,11 +6605,6 @@ "type": "select", "key": "fee" }, - { - "text": "Operator", - "type": "text", - "key": "operator" - }, { "values": [ "paved", @@ -2718,6 +6685,16 @@ }, { "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" + }, { "values": [ "Agip", @@ -2746,6 +6723,123 @@ "text": "Brand", "type": "select", "key": "brand" + }, + { + "values": [ + "24/7", + "Mo-Fr 08:30-20:00", + "Tu-Su 08:00-15:00;Sa 08:00-12:00" + ], + "text": "Opening Hours", + "type": "select", + "key": "opening_hours" + }, + { + "values": [ + "yes", + "convenience", + "kiosk", + "no" + ], + "text": "With shop", + "type": "select", + "key": "shop" + }, + { + "default": false, + "text": "Diesel", + "type": "check", + "key": "fuel:diesel" + }, + { + "default": false, + "text": "Bio Diesel", + "type": "check", + "key": "fuel:biodiesel" + }, + { + "default": false, + "text": "Diesel (Gas To Liquid - ultimate diesel)", + "type": "check", + "key": "fuel:GTL_diesel" + }, + { + "default": false, + "text": "Diesel for Heavy Good Vehicles", + "type": "check", + "key": "fuel:HGV_diesel" + }, + { + "default": false, + "text": "Octane 80", + "type": "check", + "key": "fuel:octane_80" + }, + { + "default": false, + "text": "Octane 91", + "type": "check", + "key": "fuel:octane_91" + }, + { + "default": false, + "text": "Octane 92", + "type": "check", + "key": "fuel:octane_92" + }, + { + "default": false, + "text": "Octane 95", + "type": "check", + "key": "fuel:octane_95" + }, + { + "default": false, + "text": "Octane 98", + "type": "check", + "key": "fuel:octane_98" + }, + { + "default": false, + "text": "Octane 100", + "type": "check", + "key": "fuel:octane_100" + }, + { + "default": false, + "text": "E10 (10% Ethanol mix)", + "type": "check", + "key": "fuel:e10" + }, + { + "default": false, + "text": "E85 (85% Ethanol mix)", + "type": "check", + "key": "fuel:e85" + }, + { + "default": false, + "text": "LPG (Liquefied petroleum gas)", + "type": "check", + "key": "fuel:lpg" + }, + { + "default": false, + "text": "CNG (Compressed Natural Gas)", + "type": "check", + "key": "fuel:cng" + }, + { + "default": false, + "text": "1/25 mix (mofa/moped)", + "type": "check", + "key": "fuel:1_25" + }, + { + "default": false, + "text": "1/50 mix (mofa/moped)", + "type": "check", + "key": "fuel:1_50" } ], "type": [ @@ -2881,16 +6975,6 @@ "type": "text", "key": "operator" }, - { - "values": [ - "24/7", - "Mo-Fr 08:30-20:00", - "Tu-Su 08:00-15:00;Sa 08:00-12:00" - ], - "text": "Opening Hours", - "type": "select", - "key": "opening_hours" - }, { "text": "Phone Number", "type": "tel", @@ -2910,6 +6994,16 @@ "text": "Email Address", "type": "email", "key": "email" + }, + { + "values": [ + "24/7", + "Mo-Fr 08:30-20:00", + "Tu-Su 08:00-15:00;Sa 08:00-12:00" + ], + "text": "Opening Hours", + "type": "select", + "key": "opening_hours" } ], "type": [ @@ -2969,6 +7063,11 @@ "type": "text", "key": "name" }, + { + "text": "Website", + "type": "url", + "key": "website" + }, { "values": [ "24/7", @@ -2978,11 +7077,6 @@ "text": "Opening Hours", "type": "select", "key": "opening_hours" - }, - { - "text": "Website", - "type": "url", - "key": "website" } ], "type": [ @@ -3036,6 +7130,36 @@ "type": "text", "key": "name" }, + { + "text": "Operator", + "type": "text", + "key": "operator" + }, + { + "text": "Other", + "type": "text", + "key": "services" + }, + { + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" + }, { "values": [ "independent" @@ -3044,11 +7168,6 @@ "type": "select", "key": "brand" }, - { - "text": "Operator", - "type": "text", - "key": "operator" - }, { "values": [ "24/7", @@ -3124,31 +7243,6 @@ "text": "Clothes", "type": "select", "key": "clothes" - }, - { - "text": "Other", - "type": "text", - "key": "services" - }, - { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" } ], "type": [ @@ -3279,7 +7373,18 @@ "name": "Rental" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "UIC-Reference", + "type": "text", + "key": "uic_ref" + } + ], "type": [ "node", "closedway" @@ -3287,14 +7392,26 @@ "name": "Station" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + } + ], "type": [ "node" ], "name": "Railway Halt" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + } + ], "type": [ "node" ], @@ -3326,14 +7443,39 @@ "name": "Railway Platform" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "default": false, + "text": "Wheelchair", + "type": "check", + "key": "wheelchair" + }, + { + "default": false, + "text": "Bicycle", + "type": "check", + "key": "bicycle" + } + ], "type": [ "node" ], "name": "Subway Entrance" }, { - "main": [], + "favorite": true, + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + } + ], "type": [ "node", "closedway" @@ -3341,7 +7483,40 @@ "name": "Bus Station" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "values": [ + "yes", + "no" + ], + "text": "Shelter", + "type": "select", + "key": "shelter" + }, + { + "values": [ + "yes", + "no" + ], + "text": "Bench", + "type": "select", + "key": "bench" + }, + { + "values": [ + "yes", + "no" + ], + "text": "Tactile Paving", + "type": "select", + "key": "tactile_paving" + } + ], "type": [ "node" ], @@ -3451,6 +7626,21 @@ "text": "Name", "type": "text", "key": "name" + }, + { + "text": "IATA", + "type": "text", + "key": "iata" + }, + { + "text": "ICAO", + "type": "text", + "key": "icao" + }, + { + "text": "Wikipedia", + "type": "text", + "key": "wikipedia" } ], "type": [ @@ -3460,21 +7650,39 @@ "name": "Airport Ground" }, { - "main": [], + "main": [ + { + "text": "Reference", + "type": "text", + "key": "ref" + } + ], "type": [ "way" ], "name": "Runway" }, { - "main": [], + "main": [ + { + "text": "Reference", + "type": "text", + "key": "ref" + } + ], "type": [ "way" ], "name": "Taxiway" }, { - "main": [], + "main": [ + { + "text": "Reference", + "type": "text", + "key": "ref" + } + ], "type": [ "node", "closedway" @@ -3549,6 +7757,26 @@ "type": "text", "key": "operator" }, + { + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" + }, { "values": [ "1", @@ -3604,26 +7832,6 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" - }, - { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" } ], "type": [ @@ -3644,6 +7852,26 @@ "type": "text", "key": "operator" }, + { + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" + }, { "values": [ "1", @@ -3699,26 +7927,6 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" - }, - { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" } ], "type": [ @@ -3734,6 +7942,26 @@ "type": "text", "key": "name" }, + { + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" + }, { "values": [ "1", @@ -3789,26 +8017,6 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" - }, - { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" } ], "type": [ @@ -3824,6 +8032,26 @@ "type": "text", "key": "name" }, + { + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" + }, { "values": [ "1", @@ -3879,26 +8107,6 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" - }, - { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" } ], "type": [ @@ -3919,6 +8127,26 @@ "type": "text", "key": "operator" }, + { + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" + }, { "values": [ "1", @@ -3974,26 +8202,6 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" - }, - { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" } ], "type": [ @@ -4019,6 +8227,26 @@ "type": "text", "key": "ele" }, + { + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" + }, { "values": [ "yes", @@ -4060,6 +8288,25 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" + } + ], + "type": [ + "node", + "closedway" + ], + "name": "Alpine Hut" + }, + { + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Number of places", + "type": "text", + "key": "capacity" }, { "text": "Phone Number", @@ -4080,20 +8327,6 @@ "text": "Email Address", "type": "email", "key": "email" - } - ], - "type": [ - "node", - "closedway" - ], - "name": "Alpine Hut" - }, - { - "main": [ - { - "text": "Name", - "type": "text", - "key": "name" }, { "values": [ @@ -4151,11 +8384,6 @@ "type": "select", "key": "wheelchair" }, - { - "text": "Number of places", - "type": "text", - "key": "capacity" - }, { "values": [ "yes", @@ -4177,6 +8405,20 @@ "text": "Tents allowed", "type": "check", "key": "tents" + } + ], + "type": [ + "node", + "closedway" + ], + "name": "Caravan Site" + }, + { + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" }, { "text": "Phone Number", @@ -4197,20 +8439,6 @@ "text": "Email Address", "type": "email", "key": "email" - } - ], - "type": [ - "node", - "closedway" - ], - "name": "Caravan Site" - }, - { - "main": [ - { - "text": "Name", - "type": "text", - "key": "name" }, { "values": [ @@ -4267,6 +8495,26 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" + } + ], + "type": [ + "node", + "closedway" + ], + "name": "Camping Site" + }, + { + "favorite": true, + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" }, { "text": "Phone Number", @@ -4287,31 +8535,6 @@ "text": "Email Address", "type": "email", "key": "email" - } - ], - "type": [ - "node", - "closedway" - ], - "name": "Camping Site" - }, - { - "main": [ - { - "text": "Name", - "type": "text", - "key": "name" - }, - { - "text": "Operator", - "type": "text", - "key": "operator" - }, - { - "default": false, - "text": "Microbrewery", - "type": "check", - "key": "microbrewery" }, { "values": [ @@ -4380,24 +8603,10 @@ "key": "wheelchair" }, { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" + "default": false, + "text": "Microbrewery", + "type": "check", + "key": "microbrewery" } ], "type": [ @@ -4418,6 +8627,26 @@ "type": "text", "key": "operator" }, + { + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" + }, { "values": [ "italian", @@ -4495,6 +8724,20 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" + } + ], + "type": [ + "node", + "closedway" + ], + "name": "Fast Food" + }, + { + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" }, { "text": "Phone Number", @@ -4515,20 +8758,6 @@ "text": "Email Address", "type": "email", "key": "email" - } - ], - "type": [ - "node", - "closedway" - ], - "name": "Fast Food" - }, - { - "main": [ - { - "text": "Name", - "type": "text", - "key": "name" }, { "values": [ @@ -4581,6 +8810,26 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" + } + ], + "type": [ + "node", + "closedway" + ], + "name": "Food Court" + }, + { + "favorite": true, + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" }, { "text": "Phone Number", @@ -4601,25 +8850,6 @@ "text": "Email Address", "type": "email", "key": "email" - } - ], - "type": [ - "node", - "closedway" - ], - "name": "Food Court" - }, - { - "main": [ - { - "text": "Name", - "type": "text", - "key": "name" - }, - { - "text": "Operator", - "type": "text", - "key": "operator" }, { "values": [ @@ -4680,26 +8910,6 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" - }, - { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" } ], "type": [ @@ -4721,10 +8931,24 @@ "key": "operator" }, { - "default": false, - "text": "Microbrewery", - "type": "check", - "key": "microbrewery" + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" }, { "values": [ @@ -4779,24 +9003,10 @@ "key": "wheelchair" }, { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" + "default": false, + "text": "Microbrewery", + "type": "check", + "key": "microbrewery" } ], "type": [ @@ -4812,6 +9022,26 @@ "type": "text", "key": "name" }, + { + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" + }, { "values": [ "24/7", @@ -4863,26 +9093,6 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" - }, - { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" } ], "type": [ @@ -4892,12 +9102,33 @@ "name": "Biergarten" }, { + "favorite": true, "main": [ { "text": "Name", "type": "text", "key": "name" }, + { + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" + }, { "values": [ "24/7", @@ -4949,26 +9180,6 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" - }, - { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" } ], "type": [ @@ -4984,6 +9195,26 @@ "type": "text", "key": "name" }, + { + "text": "Phone Number", + "type": "tel", + "key": "phone" + }, + { + "text": "Fax Number", + "type": "tel", + "key": "fax" + }, + { + "text": "Website", + "type": "url", + "key": "website" + }, + { + "text": "Email Address", + "type": "email", + "key": "email" + }, { "values": [ "24/7", @@ -5014,26 +9245,6 @@ "text": "Wheelchairs", "type": "select", "key": "wheelchair" - }, - { - "text": "Phone Number", - "type": "tel", - "key": "phone" - }, - { - "text": "Fax Number", - "type": "tel", - "key": "fax" - }, - { - "text": "Website", - "type": "url", - "key": "website" - }, - { - "text": "Email Address", - "type": "email", - "key": "email" } ], "type": [ @@ -5106,6 +9317,11 @@ "type": "text", "key": "name" }, + { + "text": "Closer Description", + "type": "text", + "key": "description" + }, { "values": [ "topo", @@ -5126,11 +9342,6 @@ "type": "select", "key": "map_size" }, - { - "text": "Closer Description", - "type": "text", - "key": "description" - }, { "default": false, "text": "Hiking", @@ -5174,6 +9385,11 @@ "type": "text", "key": "name" }, + { + "text": "Closer Description", + "type": "text", + "key": "description" + }, { "values": [ "notice", @@ -5185,11 +9401,6 @@ "text": "Board Content", "type": "select", "key": "board_type" - }, - { - "text": "Closer Description", - "type": "text", - "key": "description" } ], "type": [ @@ -5304,6 +9515,11 @@ "type": "text", "key": "ref" }, + { + "text": "Phone number", + "type": "tel", + "key": "phone" + }, { "values": [ "yes", @@ -5312,11 +9528,6 @@ "text": "Fee", "type": "select", "key": "fee" - }, - { - "text": "Phone number", - "type": "tel", - "key": "phone" } ], "type": [ @@ -5365,6 +9576,11 @@ "type": "text", "key": "name" }, + { + "text": "Wikipedia", + "type": "text", + "key": "wikipedia" + }, { "values": [ "24/7", @@ -5374,11 +9590,6 @@ "text": "Opening Hours", "type": "select", "key": "opening_hours" - }, - { - "text": "Wikipedia", - "type": "text", - "key": "wikipedia" } ], "type": [ @@ -5394,12 +9605,6 @@ "type": "text", "key": "name" }, - { - "default": false, - "text": "Area", - "type": "check", - "key": "area" - }, { "values": [ "fence", @@ -5419,6 +9624,12 @@ "type": "select", "key": "opening_hours" }, + { + "default": false, + "text": "Area", + "type": "check", + "key": "area" + }, { "default": false, "text": "Lit", @@ -5604,6 +9815,11 @@ "type": "text", "key": "name" }, + { + "text": "Wikipedia", + "type": "text", + "key": "wikipedia" + }, { "values": [ "24/7", @@ -5613,11 +9829,6 @@ "text": "Opening Hours", "type": "select", "key": "opening_hours" - }, - { - "text": "Wikipedia", - "type": "text", - "key": "wikipedia" } ], "type": [ @@ -5697,6 +9908,7 @@ "name": "Artwork" }, { + "favorite": true, "main": [ { "text": "Name", @@ -5784,15 +9996,6 @@ "type": "text", "key": "operator" }, - { - "values": [ - "audio", - "video" - ], - "text": "Type", - "type": "select", - "key": "type" - }, { "text": "Phone Number", "type": "tel", @@ -5802,6 +10005,15 @@ "text": "Website", "type": "url", "key": "website" + }, + { + "values": [ + "audio", + "video" + ], + "text": "Type", + "type": "select", + "key": "type" } ], "type": [ @@ -6048,6 +10260,7 @@ "name": "Driving School" }, { + "favorite": true, "main": [ { "text": "Name", @@ -6130,6 +10343,11 @@ }, { "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, { "values": [ "yes", @@ -6139,11 +10357,6 @@ "type": "select", "key": "dispensing" }, - { - "text": "Name", - "type": "text", - "key": "name" - }, { "values": [ "24/7", @@ -6274,6 +10487,11 @@ "type": "text", "key": "ref" }, + { + "text": "Note", + "type": "text", + "key": "note" + }, { "values": [ "yes", @@ -6292,11 +10510,6 @@ "text": "Wheelchair", "type": "select", "key": "wheelchair" - }, - { - "text": "Note", - "type": "text", - "key": "note" } ], "type": [ @@ -6368,7 +10581,64 @@ "name": "Telephone" }, { - "main": [], + "main": [ + { + "values": [ + "analog", + "digital", + "sundial", + "unorthodox" + ], + "text": "Display", + "type": "select", + "key": "display" + }, + { + "values": [ + "pole", + "wall_mounted", + "billboard", + "ground" + ], + "text": "Support", + "type": "select", + "key": "support" + }, + { + "values": [ + "house", + "street", + "area" + ], + "text": "Visibility/readability", + "type": "select", + "key": "visibility" + }, + { + "default": false, + "text": "Shows current date", + "type": "check", + "key": "date" + }, + { + "default": false, + "text": "Shows temperature", + "type": "check", + "key": "thermometer" + }, + { + "default": false, + "text": "Shows barometric pressure", + "type": "check", + "key": "barometer" + }, + { + "default": false, + "text": "Shows humidity", + "type": "check", + "key": "hygrometer" + } + ], "type": [ "node" ], @@ -6376,6 +10646,15 @@ }, { "main": [ + { + "values": [ + "container", + "centre" + ], + "text": "Type", + "type": "select", + "key": "recycling_type" + }, { "default": false, "text": "Batteries", @@ -6411,15 +10690,6 @@ "text": "Scrap Metal", "type": "check", "key": "recycling:scrap_metal" - }, - { - "values": [ - "container", - "centre" - ], - "text": "Type", - "type": "select", - "key": "recycling_type" } ], "type": [ @@ -6507,12 +10777,6 @@ "type": "text", "key": "name" }, - { - "default": false, - "text": "Fireplace", - "type": "check", - "key": "fireplace" - }, { "values": [ "weather_shelter", @@ -6523,6 +10787,12 @@ "text": "Type of shelter", "type": "select", "key": "shelter_type" + }, + { + "default": false, + "text": "Fireplace", + "type": "check", + "key": "fireplace" } ], "type": [ @@ -6598,6 +10868,26 @@ }, { "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Reference", + "type": "text", + "key": "ref" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" + }, + { + "text": "Count", + "type": "text", + "key": "fire_hydrant:count" + }, { "values": [ "underground", @@ -6624,21 +10914,6 @@ "type": "select", "key": "fire_hydrant:diameter" }, - { - "text": "Name", - "type": "text", - "key": "name" - }, - { - "text": "Reference", - "type": "text", - "key": "ref" - }, - { - "text": "Operator", - "type": "text", - "key": "operator" - }, { "values": [ "lane", @@ -6660,11 +10935,6 @@ "text": "Pressure (in bar)", "type": "select", "key": "fire_hydrant:pressure" - }, - { - "text": "Count", - "type": "text", - "key": "fire_hydrant:count" } ], "type": [ @@ -7496,6 +11766,30 @@ "text": "type", "type": "select", "key": "leisure" + }, + { + "default": false, + "text": "Hurling", + "type": "check", + "key": "gaelic_games:hurling" + }, + { + "default": false, + "text": "Football", + "type": "check", + "key": "gaelic_games:football" + }, + { + "default": false, + "text": "Camogie", + "type": "check", + "key": "gaelic_games:camogie" + }, + { + "default": false, + "text": "Rounders", + "type": "check", + "key": "gaelic_games:rounders" } ], "type": [ @@ -8071,6 +12365,11 @@ }, { "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, { "values": [ "yes", @@ -8090,11 +12389,6 @@ "text": "Building", "type": "select", "key": "building" - }, - { - "text": "Name", - "type": "text", - "key": "name" } ], "type": [ @@ -8106,6 +12400,11 @@ }, { "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, { "values": [ "residential", @@ -8119,11 +12418,6 @@ "text": "Building", "type": "select", "key": "building" - }, - { - "text": "Name", - "type": "text", - "key": "name" } ], "type": [ @@ -8140,6 +12434,16 @@ "type": "text", "key": "name" }, + { + "text": "Height (meters)", + "type": "text", + "key": "height" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" + }, { "values": [ "communication", @@ -8284,15 +12588,6 @@ "type": "text", "key": "name" }, - { - "values": [ - "winding", - "air" - ], - "text": "Function", - "type": "select", - "key": "mineshaft_type" - }, { "text": "Depth in meters", "type": "text", @@ -8303,6 +12598,15 @@ "type": "text", "key": "operator" }, + { + "values": [ + "winding", + "air" + ], + "text": "Function", + "type": "select", + "key": "mineshaft_type" + }, { "values": [ "aggregate", @@ -8874,15 +13178,6 @@ }, { "main": [ - { - "values": [ - "line", - "minor_line" - ], - "text": "Line type", - "type": "select", - "key": "power" - }, { "text": "Operator", "type": "text", @@ -8893,6 +13188,20 @@ "type": "text", "key": "ref" }, + { + "text": "Amount of Cables", + "type": "text", + "key": "cables" + }, + { + "values": [ + "line", + "minor_line" + ], + "text": "Line type", + "type": "select", + "key": "power" + }, { "values": [ "3000", @@ -8908,11 +13217,6 @@ "type": "select", "key": "voltage" }, - { - "text": "Amount of Cables", - "type": "text", - "key": "cables" - }, { "values": [ "single", @@ -11753,6 +16057,41 @@ "text": "House number", "type": "text", "key": "addr:housenumber" + }, + { + "text": "House name", + "type": "text", + "key": "addr:housename" + }, + { + "text": "Street name", + "type": "text", + "key": "addr:street" + }, + { + "text": "City name", + "type": "text", + "key": "addr:city" + }, + { + "text": "Post code", + "type": "text", + "key": "addr:postcode" + }, + { + "values": [ + "AT", + "CH", + "DE", + "FR", + "GB", + "IT", + "RS", + "US" + ], + "text": "Country code", + "type": "select", + "key": "addr:country" } ], "type": [ @@ -11864,7 +16203,13 @@ "name": "Contact (schema with 'contact:*' prefix)" }, { - "main": [], + "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + } + ], "type": [ "relation" ], @@ -11876,6 +16221,34 @@ "text": "Name", "type": "text", "key": "name" + }, + { + "values": [ + "administrative", + "national", + "civil", + "political" + ], + "text": "Boundary type", + "type": "select", + "key": "boundary" + }, + { + "values": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10" + ], + "text": "Administrative level", + "type": "select", + "key": "admin_level" } ], "type": [ @@ -11898,6 +16271,11 @@ }, { "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, { "values": [ "no_left_turn", @@ -11920,19 +16298,6 @@ }, { "main": [ - { - "values": [ - "maxheight", - "maxweight", - "maxspeed", - "mindistance", - "traffic_signals", - "check " - ], - "text": "Type of enforcement", - "type": "select", - "key": "enforcement" - }, { "text": "Max. height (meters, only if enforcement=maxheight)", "type": "text", @@ -11947,6 +16312,19 @@ "text": "Max. speed (km/h, only if enforcement=maxspeed)", "type": "text", "key": "maxspeed" + }, + { + "values": [ + "maxheight", + "maxweight", + "maxspeed", + "mindistance", + "traffic_signals", + "check " + ], + "text": "Type of enforcement", + "type": "select", + "key": "enforcement" } ], "type": [ @@ -11956,24 +16334,6 @@ }, { "main": [ - { - "values": [ - "bicycle", - "bus", - "road", - "ferry", - "ski", - "foot", - "hiking", - "tram", - "detour", - "railway", - "subway" - ], - "text": "Route type", - "type": "select", - "key": "route" - }, { "text": "Name", "type": "text", @@ -11993,6 +16353,60 @@ "text": "Description", "type": "text", "key": "description" + }, + { + "text": "From (initial stop)", + "type": "text", + "key": "from" + }, + { + "text": "To (terminal stop)", + "type": "text", + "key": "to" + }, + { + "text": "Network", + "type": "text", + "key": "network" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" + }, + { + "text": "Color (hex)", + "type": "text", + "key": "color" + }, + { + "values": [ + "bicycle", + "bus", + "road", + "ferry", + "ski", + "foot", + "hiking", + "tram", + "detour", + "railway", + "subway" + ], + "text": "Route type", + "type": "select", + "key": "route" + }, + { + "values": [ + "proposed", + "alternate", + "temporary", + "connection" + ], + "text": "Route state", + "type": "select", + "key": "state" } ], "type": [ @@ -12002,6 +16416,31 @@ }, { "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Reference", + "type": "text", + "key": "ref" + }, + { + "text": "Network", + "type": "text", + "key": "network" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" + }, + { + "text": "Color (hex)", + "type": "text", + "key": "color" + }, { "values": [ "train", @@ -12016,16 +16455,6 @@ "text": "Route type", "type": "select", "key": "route" - }, - { - "text": "Name", - "type": "text", - "key": "name" - }, - { - "text": "Reference", - "type": "text", - "key": "ref" } ], "type": [ @@ -12035,24 +16464,6 @@ }, { "main": [ - { - "values": [ - "bicycle", - "bus", - "road", - "ferry", - "ski", - "foot", - "hiking", - "tram", - "detour", - "railway", - "subway" - ], - "text": "Route type", - "type": "select", - "key": "route" - }, { "text": "Name", "type": "text", @@ -12072,6 +16483,50 @@ "text": "Description", "type": "text", "key": "description" + }, + { + "text": "Network", + "type": "text", + "key": "network" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" + }, + { + "text": "Color (hex)", + "type": "text", + "key": "color" + }, + { + "values": [ + "bicycle", + "bus", + "road", + "ferry", + "ski", + "foot", + "hiking", + "tram", + "detour", + "railway", + "subway" + ], + "text": "Route type", + "type": "select", + "key": "route" + }, + { + "values": [ + "proposed", + "alternate", + "temporary", + "connection" + ], + "text": "Route state", + "type": "select", + "key": "state" } ], "type": [ @@ -12085,6 +16540,16 @@ "text": "Name", "type": "text", "key": "name" + }, + { + "text": "Network", + "type": "text", + "key": "network" + }, + { + "text": "Operator", + "type": "text", + "key": "operator" } ], "type": [ @@ -12158,6 +16623,51 @@ }, { "main": [ + { + "text": "Name", + "type": "text", + "key": "name" + }, + { + "text": "Name of river/sea/ocean", + "type": "text", + "key": "destination" + }, + { + "text": "Reference", + "type": "text", + "key": "ref" + }, + { + "text": "Reference Sandre (FR)", + "type": "text", + "key": "ref:sandre" + }, + { + "text": "Reference FGKZ (DE)", + "type": "text", + "key": "ref:fgkz" + }, + { + "text": "Reference REGINE (NO)", + "type": "text", + "key": "ref:regine" + }, + { + "text": "Reference GNIS (USA)", + "type": "text", + "key": "ref:gnis" + }, + { + "text": "Reference GNBC (CA)", + "type": "text", + "key": "ref:gnbc" + }, + { + "text": "Wikipedia", + "type": "text", + "key": "wikipedia" + }, { "values": [ "river", @@ -12169,11 +16679,6 @@ "text": "Subtype of waterway (largest one of members)", "type": "select", "key": "waterway" - }, - { - "text": "Name", - "type": "text", - "key": "name" } ], "type": [ @@ -12183,24 +16688,6 @@ }, { "main": [ - { - "values": [ - "5", - "4", - "3", - "2", - "1", - "0", - "-1", - "-2", - "-3", - "-4", - "-5" - ], - "text": "Layer", - "type": "select", - "key": "layer" - }, { "text": "Name", "type": "text", @@ -12225,15 +16712,7 @@ "text": "Operator", "type": "text", "key": "operator" - } - ], - "type": [ - "relation" - ], - "name": "Bridge" - }, - { - "main": [ + }, { "values": [ "5", @@ -12251,7 +16730,15 @@ "text": "Layer", "type": "select", "key": "layer" - }, + } + ], + "type": [ + "relation" + ], + "name": "Bridge" + }, + { + "main": [ { "text": "Name", "type": "text", @@ -12271,6 +16758,24 @@ "text": "Operator", "type": "text", "key": "operator" + }, + { + "values": [ + "5", + "4", + "3", + "2", + "1", + "0", + "-1", + "-2", + "-3", + "-4", + "-5" + ], + "text": "Layer", + "type": "select", + "key": "layer" } ], "type": [ From 9741d28493b257112137212ffcf65f81a88aa509 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 31 Jan 2013 15:09:07 -0500 Subject: [PATCH 10/30] Fixing tests --- js/id/connection.js | 2 +- js/id/ui/inspector.js | 2 +- test/index.html | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/js/id/connection.js b/js/id/connection.js index d91d3388d..d0e08db97 100644 --- a/js/id/connection.js +++ b/js/id/connection.js @@ -5,7 +5,7 @@ iD.Connection = function() { connection = {}, user = {}, version, - presetData, + presetData = iD.presetData(), keys, inflight = {}, loadedTiles = {}, diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index 8b17595dc..574928f0d 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -1,7 +1,7 @@ iD.ui.inspector = function() { var event = d3.dispatch('changeTags', 'close'), taginfo = iD.taginfo(), - presetData, + presetData = iD.presetData(), initial = false, graph, tagList; diff --git a/test/index.html b/test/index.html index d8d3f8f6f..f52f95543 100644 --- a/test/index.html +++ b/test/index.html @@ -34,6 +34,7 @@ + @@ -66,6 +67,9 @@ + + + From 681bf7c724a3cce5b1afdf5c387dcc281b69103c Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 31 Jan 2013 15:24:45 -0500 Subject: [PATCH 11/30] Be more specific in tests about which form we are interested in --- js/id/ui/inspector.js | 3 ++- test/spec/ui/inspector.js | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index 574928f0d..16a1d6a7c 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -50,7 +50,8 @@ iD.ui.inspector = function() { inspectorwrap.append('h4') .text(t('edit_tags')); - tagList = inspectorwrap.append('ul'); + tagList = inspectorwrap.append('ul') + .attr('class', 'tag-list'); var newTag = inspectorwrap.append('button') .attr('class', 'add-tag'); diff --git a/test/spec/ui/inspector.js b/test/spec/ui/inspector.js index eb5ea6be1..ec257b407 100644 --- a/test/spec/ui/inspector.js +++ b/test/spec/ui/inspector.js @@ -43,14 +43,14 @@ describe("iD.ui.inspector", function () { element.remove(); entity = entity.update({tags: {}}); render(); - expect(element.selectAll("input.value").property('value')).to.be.empty; - expect(element.selectAll("input.key").property('value')).to.be.empty; + expect(element.select('.tag-list').selectAll("input.value").property('value')).to.be.empty; + expect(element.select('.tag-list').selectAll("input.key").property('value')).to.be.empty; }); it("adds tags when clicking the add button", function () { element.selectAll("button.add-tag").trigger('click'); - expect(element.selectAll("input")[0][2].value).to.be.empty; - expect(element.selectAll("input")[0][3].value).to.be.empty; + expect(element.select('.tag-list').selectAll("input")[0][2].value).to.be.empty; + expect(element.select('.tag-list').selectAll("input")[0][3].value).to.be.empty; }); it("removes tags when clicking the remove button", function () { From 3755d8077814b5b6c188f08ce1ae47bbf49941ad Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 31 Jan 2013 16:38:31 -0500 Subject: [PATCH 12/30] Editable name field for the inspector --- js/id/ui/inspector.js | 68 +++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index 16a1d6a7c..10b7f4d5f 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -1,5 +1,5 @@ iD.ui.inspector = function() { - var event = d3.dispatch('changeTags', 'close'), + var event = d3.dispatch('changeTags', 'close', 'change'), taginfo = iD.taginfo(), presetData = iD.presetData(), initial = false, @@ -9,14 +9,32 @@ iD.ui.inspector = function() { function inspector(selection) { var entity = selection.datum(); - var inspector = selection.append('div') + var iwrap = selection.append('div') .attr('class','inspector content'); - inspector.append('div') - .attr('class', 'head inspector-inner fillL') - .call(drawHead); + var head = iwrap.append('div') + .attr('class', 'head inspector-inner fillL'); - var inspectorbody = inspector.append('div') + var h2 = head.append('h2'); + h2.append('span') + .attr('class', 'icon big icon-pre-text big-' + entity.geometry(graph)); + var name = h2.append('input') + .attr('placeholder', 'name') + .property('value', function(d) { + return entity.tags.name || ''; + }) + .on('keyup', function() { + var tags = inspector.tags(); + tags.name = this.value; + inspector.tags(tags); + event.change(); + }); + event.on('change', function() { + var tags = inspector.tags(); + name.property('value', tags.name); + }); + + var inspectorbody = iwrap.append('div') .attr('class', 'inspector-body'); var inspectorwrap = inspectorbody.append('div') @@ -56,13 +74,13 @@ iD.ui.inspector = function() { var newTag = inspectorwrap.append('button') .attr('class', 'add-tag'); - newTag.on('click', function() { - addTag(); - focusNewKey(); - }); + newTag.on('click', function() { + addTag(); + focusNewKey(); + }); - newTag.append('span').attr('class', 'icon icon-pre-text plus'); - newTag.append('span').attr('class','label').text('New tag'); + newTag.append('span').attr('class', 'icon icon-pre-text plus'); + newTag.append('span').attr('class','label').text('New tag'); drawTags(entity.tags); @@ -71,18 +89,6 @@ iD.ui.inspector = function() { .call(drawButtons); } - function drawHead(selection) { - var entity = selection.datum(); - - var h2 = selection.append('h2'); - - h2.append('span') - .attr('class', 'icon big icon-pre-text big-' + entity.geometry(graph)); - - h2.append('span') - .text(entity.friendlyName()); - } - function drawButtons(selection) { var entity = selection.datum(); @@ -90,14 +96,14 @@ iD.ui.inspector = function() { .attr('class', 'apply action') .on('click', apply); - inspectorButton.append('span').attr('class','label').text('Okay'); + inspectorButton.append('span').attr('class','label').text('Okay'); var minorButtons = selection.append('div').attr('class','minor-buttons fl'); - minorButtons.append('a') - .attr('href', 'http://www.openstreetmap.org/browse/' + entity.type + '/' + entity.osmId()) - .attr('target', '_blank') - .text('View on OSM'); + minorButtons.append('a') + .attr('href', 'http://www.openstreetmap.org/browse/' + entity.type + '/' + entity.osmId()) + .attr('target', '_blank') + .text('View on OSM'); } function drawTags(tags) { @@ -126,14 +132,14 @@ iD.ui.inspector = function() { .attr('class', 'key') .attr('maxlength', 255) .property('value', function(d) { return d.key; }) - .on('change', function(d) { d.key = this.value; }); + .on('change', function(d) { d.key = this.value; event.change(); }); inputs.append('input') .property('type', 'text') .attr('class', 'value') .attr('maxlength', 255) .property('value', function(d) { return d.value; }) - .on('change', function(d) { d.value = this.value; }) + .on('change', function(d) { d.value = this.value; event.change(); }) .on('keydown.push-more', pushMore); inputs.each(bindTypeahead); From e8dc356645103ff304bf25ee9f1a250aeb1b6a0b Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 31 Jan 2013 17:05:27 -0500 Subject: [PATCH 13/30] Reversible tag editing, save real changes --- js/id/ui/inspector.js | 26 +++++++++++---- js/id/ui/preset.js | 78 +++++++++++++++++++++++++++++++------------ 2 files changed, 76 insertions(+), 28 deletions(-) diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index 10b7f4d5f..67074a290 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -20,7 +20,7 @@ iD.ui.inspector = function() { .attr('class', 'icon big icon-pre-text big-' + entity.geometry(graph)); var name = h2.append('input') .attr('placeholder', 'name') - .property('value', function(d) { + .property('value', function() { return entity.tags.name || ''; }) .on('keyup', function() { @@ -29,7 +29,8 @@ iD.ui.inspector = function() { inspector.tags(tags); event.change(); }); - event.on('change', function() { + + event.on('change.name', function() { var tags = inspector.tags(); name.property('value', tags.name); }); @@ -40,14 +41,26 @@ iD.ui.inspector = function() { var inspectorwrap = inspectorbody.append('div') .attr('class', 'inspector-inner tag-wrap fillL2'); + var presetUI = iD.ui.preset() + .on('change', function(tags) { + inspector.tags(_.extend(inspector.tags(), tags)); + event.change(); + }); + + event.on('change.preset', function() { + var tags = inspector.tags(); + presetUI.change(tags); + }); + var inspectorpresetsearch = inspectorwrap.append('div') .attr('class', 'inspector-preset cf') .call(iD.ui.presetsearch() .entity(entity) .presetData(presetData) .on('choose', function(preset) { - inspectorpreset.call(iD.ui.preset() - .preset(preset)); + inspectorpreset.call(presetUI + .preset(preset) + .change(inspector.tags())); })); var inspectorpresetfavs = inspectorwrap.append('div') @@ -55,8 +68,9 @@ iD.ui.inspector = function() { .call(iD.ui.presetfavs() .presetData(presetData) .on('choose', function(preset) { - inspectorpreset.call(iD.ui.preset() - .preset(preset)); + inspectorpreset.call(presetUI + .preset(preset) + .change(inspector.tags())); inspectorpresetsearch .select('input') .property('value', preset.name); diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index df9026739..674d6e2f3 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -1,37 +1,67 @@ iD.ui.preset = function() { - var preset; + var event = d3.dispatch('change'), + sections, + exttags, + preset; + + function getTags() { + var tags = {}; + sections.selectAll('input,select') + .each(function(d) { + tags[d.key] = this.value; + }); + return tags; + } + + function setTags(tags) { + if (!sections) return; + sections.selectAll('input,select') + .each(function(d) { + if (tags[d.key]) { + this.value = tags[d.key]; + } + }); + } + + function clean(o) { + var out = {}; + for (var k in o) { + if (o[k] !== '') out[k] = o[k]; + } + return out; + } + + function key() { + var tags = clean(getTags()); + event.change(tags); + } // generate form fields for a given field. function input(d) { - + var i; switch (d.type) { - case 'text': - this.append('input') + i = this.append('input') .attr('type', 'text') .attr('placeholder', d['default'] || ''); break; - case 'tel': - this.append('input') + i = this.append('input') .attr('type', 'tel') .attr('placeholder', '1-555-555-5555'); break; - case 'email': - this.append('input') + i = this.append('input') .attr('type', 'email') .attr('placeholder', 'email@domain.com'); break; - case 'url': - this.append('input') + i = this.append('input') .attr('type', 'url') .attr('placeholder', 'http://example.com/'); break; - case 'check': - this.append('input') + i = this.append('input') .attr('type', 'checkbox') .each(function() { if (d['default']) { @@ -39,42 +69,40 @@ iD.ui.preset = function() { } }); break; - case 'select': - var select = this.append('select'); + i = this.append('select'); var options = d.values.slice(); options.unshift(''); - select.selectAll('option') + i.selectAll('option') .data(options) .enter() .append('option') .text(String); break; } + if (i) { + i.on('change', key); + } } function presets(selection) { selection.html(''); - - var sections = selection.selectAll('div.preset-section') + sections = selection.selectAll('div.preset-section') .data(preset.main) .enter() .append('div') .attr('class', 'preset-section cf'); - sections.each(function(d) { var s = d3.select(this); - var wrap = s.append('div') .attr('class', 'preset-section-input cf'); - wrap.append('div') .attr('class', 'col4 preset-label') .text(d.text); - input.call(wrap.append('div') .attr('class', 'col8 preset-input'), d); }); + if (exttags) setTags(exttags); } presets.preset = function(_) { @@ -83,5 +111,11 @@ iD.ui.preset = function() { return presets; }; - return presets; + presets.change = function(_) { + exttags = _; + setTags(_); + return presets; + }; + + return d3.rebind(presets, event, 'on'); }; From 410e5349526ba313e6b11396b9a1b0afd31a4659 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 31 Jan 2013 17:08:41 -0500 Subject: [PATCH 14/30] Use proper labels --- js/id/ui/preset.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index 674d6e2f3..5c71446a0 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -43,26 +43,31 @@ iD.ui.preset = function() { case 'text': i = this.append('input') .attr('type', 'text') + .attr('id', 'input-' + d.key) .attr('placeholder', d['default'] || ''); break; case 'tel': i = this.append('input') .attr('type', 'tel') + .attr('id', 'input-' + d.key) .attr('placeholder', '1-555-555-5555'); break; case 'email': i = this.append('input') .attr('type', 'email') + .attr('id', 'input-' + d.key) .attr('placeholder', 'email@domain.com'); break; case 'url': i = this.append('input') .attr('type', 'url') + .attr('id', 'input-' + d.key) .attr('placeholder', 'http://example.com/'); break; case 'check': i = this.append('input') .attr('type', 'checkbox') + .attr('id', 'input-' + d.key) .each(function() { if (d['default']) { this.attr('checked', 'checked'); @@ -98,6 +103,8 @@ iD.ui.preset = function() { .attr('class', 'preset-section-input cf'); wrap.append('div') .attr('class', 'col4 preset-label') + .append('label') + .attr('for', 'input-' + d.key) .text(d.text); input.call(wrap.append('div') .attr('class', 'col8 preset-input'), d); From cb6ae40ef05b34a3b4afee7c3bc9fd3c91fd30c1 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 1 Feb 2013 12:14:48 -0500 Subject: [PATCH 15/30] Include keys when processing josm presets --- presets/convert_josm.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/presets/convert_josm.py b/presets/convert_josm.py index 2d9b17ccd..3714dd74f 100644 --- a/presets/convert_josm.py +++ b/presets/convert_josm.py @@ -22,9 +22,16 @@ def isfav(x): return x in prefs for item in items: + tags = [] + for elem in item.getElementsByTagName('key'): + tags.append({ + 'key': elem.getAttribute('key'), + 'value': elem.getAttribute('value') + }) jitem = { "name": item.getAttribute('name'), "type": item.getAttribute('type').split(','), + "tags": tags, "main": [] } if isfav(jitem['name']): From ecbfbb9ff2a82f8c1bdafab9ec0d0f5654dd39ff Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 1 Feb 2013 12:21:45 -0500 Subject: [PATCH 16/30] Add whitespace to convert_josm.py --- presets/convert_josm.py | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/presets/convert_josm.py b/presets/convert_josm.py index 3714dd74f..cf1b3917b 100644 --- a/presets/convert_josm.py +++ b/presets/convert_josm.py @@ -1,55 +1,70 @@ from xml.dom.minidom import parse -import os, re, json + +import json +import os +import re + dirr = os.path.dirname(__file__) + def relative(x): return os.path.join(dirr, x) prefs = json.load(open(relative('prefs.json'))) dom1 = parse(relative('./josm.xml')) -items = dom1.getElementsByTagName('item') - jsonOutput = [] + def isemail(x): return re.search('email', x, flags=re.IGNORECASE) + + def iswebsite(x): return re.search('web', x, flags=re.IGNORECASE) + + def istel(x): return re.search('phone|tel|fax', x, flags=re.IGNORECASE) + + def isfav(x): return x in prefs -for item in items: +for item in dom1.getElementsByTagName('item'): + tags = [] for elem in item.getElementsByTagName('key'): tags.append({ 'key': elem.getAttribute('key'), 'value': elem.getAttribute('value') }) + jitem = { "name": item.getAttribute('name'), "type": item.getAttribute('type').split(','), "tags": tags, "main": [] } + if isfav(jitem['name']): jitem['favorite'] = True + for n in item.getElementsByTagName('text'): txt = n.getAttribute('text') type = 'text' if isemail(txt): type = 'email' - if iswebsite(txt): + elif iswebsite(txt): type = 'url' - if istel(txt): + elif istel(txt): type = 'tel' jitem['main'].append({ 'type': type, 'key': n.getAttribute('key'), 'text': n.getAttribute('text') }) + for n in item.getElementsByTagName('combo'): jitem['main'].append({ 'type': 'select', @@ -57,6 +72,7 @@ for item in items: 'text': n.getAttribute('text'), 'values': n.getAttribute('values').split(',') }) + for n in item.getElementsByTagName('check'): jitem['main'].append({ 'type': 'check', @@ -64,6 +80,7 @@ for item in items: 'text': n.getAttribute('text'), 'default': (n.getAttribute('check') == 'true') }) + jsonOutput.append(jitem) json.dump(jsonOutput, open(relative('presets_josm.json'), 'w'), indent=4) From 4ce9f704190fbff086024de13ae44fa49d9ffacc Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 1 Feb 2013 12:22:46 -0500 Subject: [PATCH 17/30] Update presets_josm.json --- presets/presets_josm.json | 3739 ++++++++++++++++++++++++++++++++----- 1 file changed, 3271 insertions(+), 468 deletions(-) diff --git a/presets/presets_josm.json b/presets/presets_josm.json index 2fb57035b..932a68db9 100644 --- a/presets/presets_josm.json +++ b/presets/presets_josm.json @@ -108,7 +108,13 @@ "type": [ "way" ], - "name": "Motorway" + "name": "Motorway", + "tags": [ + { + "value": "motorway", + "key": "highway" + } + ] }, { "main": [ @@ -209,7 +215,13 @@ "type": [ "way" ], - "name": "Motorway Link" + "name": "Motorway Link", + "tags": [ + { + "value": "motorway_link", + "key": "highway" + } + ] }, { "main": [ @@ -326,7 +338,13 @@ "type": [ "way" ], - "name": "Trunk" + "name": "Trunk", + "tags": [ + { + "value": "trunk", + "key": "highway" + } + ] }, { "main": [ @@ -438,7 +456,13 @@ "type": [ "way" ], - "name": "Trunk Link" + "name": "Trunk Link", + "tags": [ + { + "value": "trunk_link", + "key": "highway" + } + ] }, { "main": [ @@ -568,7 +592,13 @@ "type": [ "way" ], - "name": "Primary" + "name": "Primary", + "tags": [ + { + "value": "primary", + "key": "highway" + } + ] }, { "main": [ @@ -688,7 +718,13 @@ "type": [ "way" ], - "name": "Primary Link" + "name": "Primary Link", + "tags": [ + { + "value": "primary_link", + "key": "highway" + } + ] }, { "main": [ @@ -812,7 +848,13 @@ "type": [ "way" ], - "name": "Secondary" + "name": "Secondary", + "tags": [ + { + "value": "secondary", + "key": "highway" + } + ] }, { "main": [ @@ -926,7 +968,13 @@ "type": [ "way" ], - "name": "Secondary Link" + "name": "Secondary Link", + "tags": [ + { + "value": "secondary_link", + "key": "highway" + } + ] }, { "main": [ @@ -1050,7 +1098,13 @@ "type": [ "way" ], - "name": "Tertiary" + "name": "Tertiary", + "tags": [ + { + "value": "tertiary", + "key": "highway" + } + ] }, { "main": [ @@ -1164,7 +1218,13 @@ "type": [ "way" ], - "name": "Tertiary Link" + "name": "Tertiary Link", + "tags": [ + { + "value": "tertiary_link", + "key": "highway" + } + ] }, { "main": [ @@ -1294,7 +1354,13 @@ "type": [ "way" ], - "name": "Unclassified" + "name": "Unclassified", + "tags": [ + { + "value": "unclassified", + "key": "highway" + } + ] }, { "main": [ @@ -1418,7 +1484,13 @@ "type": [ "way" ], - "name": "Residential" + "name": "Residential", + "tags": [ + { + "value": "residential", + "key": "highway" + } + ] }, { "main": [ @@ -1525,7 +1597,13 @@ "type": [ "way" ], - "name": "Living Street" + "name": "Living Street", + "tags": [ + { + "value": "living_street", + "key": "highway" + } + ] }, { "main": [ @@ -1634,7 +1712,13 @@ "closedway", "relation" ], - "name": "Pedestrian" + "name": "Pedestrian", + "tags": [ + { + "value": "pedestrian", + "key": "highway" + } + ] }, { "main": [ @@ -1762,7 +1846,13 @@ "type": [ "way" ], - "name": "Service" + "name": "Service", + "tags": [ + { + "value": "service", + "key": "highway" + } + ] }, { "main": [ @@ -1804,7 +1894,17 @@ "type": [ "way" ], - "name": "Parking Aisle" + "name": "Parking Aisle", + "tags": [ + { + "value": "service", + "key": "highway" + }, + { + "value": "parking_aisle", + "key": "service" + } + ] }, { "main": [ @@ -1916,7 +2016,13 @@ "type": [ "way" ], - "name": "Road (Unknown Type)" + "name": "Road (Unknown Type)", + "tags": [ + { + "value": "road", + "key": "highway" + } + ] }, { "main": [ @@ -2038,7 +2144,13 @@ "type": [ "way" ], - "name": "Construction" + "name": "Construction", + "tags": [ + { + "value": "construction", + "key": "highway" + } + ] }, { "main": [ @@ -2326,7 +2438,8 @@ "node", "way" ], - "name": "Road Restrictions" + "name": "Road Restrictions", + "tags": [] }, { "main": [ @@ -2439,7 +2552,13 @@ "node", "closedway" ], - "name": "Roundabout" + "name": "Roundabout", + "tags": [ + { + "value": "roundabout", + "key": "junction" + } + ] }, { "main": [ @@ -2509,7 +2628,8 @@ "type": [ "way" ], - "name": "Bridge" + "name": "Bridge", + "tags": [] }, { "main": [ @@ -2563,7 +2683,13 @@ "type": [ "way" ], - "name": "Tunnel" + "name": "Tunnel", + "tags": [ + { + "value": "yes", + "key": "tunnel" + } + ] }, { "main": [ @@ -2590,7 +2716,13 @@ "node", "way" ], - "name": "Ford" + "name": "Ford", + "tags": [ + { + "value": "yes", + "key": "ford" + } + ] }, { "main": [ @@ -2782,7 +2914,13 @@ "type": [ "way" ], - "name": "Track" + "name": "Track", + "tags": [ + { + "value": "track", + "key": "highway" + } + ] }, { "main": [ @@ -3012,7 +3150,13 @@ "type": [ "way" ], - "name": "Path" + "name": "Path", + "tags": [ + { + "value": "path", + "key": "highway" + } + ] }, { "main": [ @@ -3124,7 +3268,13 @@ "type": [ "way" ], - "name": "Dedicated Bridleway" + "name": "Dedicated Bridleway", + "tags": [ + { + "value": "bridleway", + "key": "highway" + } + ] }, { "main": [ @@ -3207,7 +3357,8 @@ "type": [ "way" ], - "name": "Cycle Lane" + "name": "Cycle Lane", + "tags": [] }, { "main": [ @@ -3324,7 +3475,13 @@ "type": [ "way" ], - "name": "Dedicated Cycleway" + "name": "Dedicated Cycleway", + "tags": [ + { + "value": "cycleway", + "key": "highway" + } + ] }, { "main": [ @@ -3431,7 +3588,25 @@ "type": [ "way" ], - "name": "Segregated Foot- and Cycleway" + "name": "Segregated Foot- and Cycleway", + "tags": [ + { + "value": "path", + "key": "highway" + }, + { + "value": "designated", + "key": "bicycle" + }, + { + "value": "designated", + "key": "foot" + }, + { + "value": "yes", + "key": "segregated" + } + ] }, { "main": [ @@ -3544,7 +3719,25 @@ "type": [ "way" ], - "name": "Combined Foot- and Cycleway" + "name": "Combined Foot- and Cycleway", + "tags": [ + { + "value": "path", + "key": "highway" + }, + { + "value": "designated", + "key": "bicycle" + }, + { + "value": "designated", + "key": "foot" + }, + { + "value": "no", + "key": "segregated" + } + ] }, { "main": [ @@ -3651,7 +3844,13 @@ "type": [ "way" ], - "name": "Dedicated Footway" + "name": "Dedicated Footway", + "tags": [ + { + "value": "footway", + "key": "highway" + } + ] }, { "main": [ @@ -3750,7 +3949,13 @@ "type": [ "way" ], - "name": "Steps" + "name": "Steps", + "tags": [ + { + "value": "steps", + "key": "highway" + } + ] }, { "main": [ @@ -3773,7 +3978,13 @@ "type": [ "node" ], - "name": "Motorway Junction" + "name": "Motorway Junction", + "tags": [ + { + "value": "motorway_junction", + "key": "highway" + } + ] }, { "main": [ @@ -3799,7 +4010,13 @@ "closedway", "relation" ], - "name": "Services" + "name": "Services", + "tags": [ + { + "value": "services", + "key": "highway" + } + ] }, { "main": [ @@ -3819,14 +4036,26 @@ "node", "closedway" ], - "name": "Rest Area" + "name": "Rest Area", + "tags": [ + { + "value": "rest_area", + "key": "highway" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Emergency Phone" + "name": "Emergency Phone", + "tags": [ + { + "value": "emergency_phone", + "key": "amenity" + } + ] }, { "main": [ @@ -3878,14 +4107,26 @@ "type": [ "node" ], - "name": "Traffic Signal" + "name": "Traffic Signal", + "tags": [ + { + "value": "traffic_signals", + "key": "highway" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Stop" + "name": "Stop", + "tags": [ + { + "value": "stop", + "key": "highway" + } + ] }, { "main": [ @@ -3901,7 +4142,13 @@ "type": [ "node" ], - "name": "Mini-roundabout" + "name": "Mini-roundabout", + "tags": [ + { + "value": "mini_roundabout", + "key": "highway" + } + ] }, { "main": [ @@ -3953,7 +4200,13 @@ "type": [ "node" ], - "name": "Pedestrian Crossing" + "name": "Pedestrian Crossing", + "tags": [ + { + "value": "crossing", + "key": "highway" + } + ] }, { "main": [ @@ -3975,21 +4228,34 @@ "type": [ "node" ], - "name": "Traffic Calming" + "name": "Traffic Calming", + "tags": [] }, { "main": [], "type": [ "node" ], - "name": "Passing Place" + "name": "Passing Place", + "tags": [ + { + "value": "passing_place", + "key": "highway" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Turning Circle" + "name": "Turning Circle", + "tags": [ + { + "value": "turning_circle", + "key": "highway" + } + ] }, { "main": [ @@ -4007,21 +4273,39 @@ "type": [ "node" ], - "name": "City Limit" + "name": "City Limit", + "tags": [ + { + "value": "city_limit", + "key": "traffic_sign" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Speed Camera" + "name": "Speed Camera", + "tags": [ + { + "value": "speed_camera", + "key": "highway" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Grit Bin" + "name": "Grit Bin", + "tags": [ + { + "value": "grit_bin", + "key": "amenity" + } + ] }, { "main": [ @@ -4044,7 +4328,13 @@ "type": [ "node" ], - "name": "Mountain Pass" + "name": "Mountain Pass", + "tags": [ + { + "value": "yes", + "key": "mountain_pass" + } + ] }, { "main": [ @@ -4077,7 +4367,13 @@ "node", "way" ], - "name": "Bollard" + "name": "Bollard", + "tags": [ + { + "value": "bollard", + "key": "barrier" + } + ] }, { "main": [ @@ -4109,7 +4405,13 @@ "type": [ "node" ], - "name": "Cycle Barrier" + "name": "Cycle Barrier", + "tags": [ + { + "value": "cycle_barrier", + "key": "barrier" + } + ] }, { "main": [ @@ -4143,7 +4445,13 @@ "way", "closedway" ], - "name": "Block" + "name": "Block", + "tags": [ + { + "value": "block", + "key": "barrier" + } + ] }, { "main": [ @@ -4175,14 +4483,26 @@ "type": [ "node" ], - "name": "Cattle Grid" + "name": "Cattle Grid", + "tags": [ + { + "value": "cattle_grid", + "key": "barrier" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Bus Trap" + "name": "Bus Trap", + "tags": [ + { + "value": "bus_trap", + "key": "barrier" + } + ] }, { "main": [ @@ -4220,7 +4540,13 @@ "type": [ "node" ], - "name": "Spikes" + "name": "Spikes", + "tags": [ + { + "value": "spikes", + "key": "barrier" + } + ] }, { "main": [ @@ -4239,7 +4565,13 @@ "node", "closedway" ], - "name": "Toll Booth" + "name": "Toll Booth", + "tags": [ + { + "value": "toll_booth", + "key": "barrier" + } + ] }, { "main": [ @@ -4277,7 +4609,13 @@ "type": [ "node" ], - "name": "Border Control" + "name": "Border Control", + "tags": [ + { + "value": "border_control", + "key": "barrier" + } + ] }, { "main": [], @@ -4286,7 +4624,13 @@ "closedway", "relation" ], - "name": "Hedge" + "name": "Hedge", + "tags": [ + { + "value": "hedge", + "key": "barrier" + } + ] }, { "main": [ @@ -4309,7 +4653,13 @@ "way", "closedway" ], - "name": "Fence" + "name": "Fence", + "tags": [ + { + "value": "fence", + "key": "barrier" + } + ] }, { "main": [], @@ -4317,7 +4667,13 @@ "way", "closedway" ], - "name": "Wall" + "name": "Wall", + "tags": [ + { + "value": "wall", + "key": "barrier" + } + ] }, { "main": [], @@ -4325,7 +4681,13 @@ "way", "closedway" ], - "name": "City Wall" + "name": "City Wall", + "tags": [ + { + "value": "city_wall", + "key": "barrier" + } + ] }, { "main": [], @@ -4333,7 +4695,13 @@ "way", "closedway" ], - "name": "Retaining Wall" + "name": "Retaining Wall", + "tags": [ + { + "value": "retaining_wall", + "key": "barrier" + } + ] }, { "main": [ @@ -4346,7 +4714,13 @@ "type": [ "way" ], - "name": "Ditch" + "name": "Ditch", + "tags": [ + { + "value": "ditch", + "key": "barrier" + } + ] }, { "main": [ @@ -4384,7 +4758,13 @@ "type": [ "node" ], - "name": "Entrance" + "name": "Entrance", + "tags": [ + { + "value": "entrance", + "key": "barrier" + } + ] }, { "main": [ @@ -4422,7 +4802,13 @@ "type": [ "node" ], - "name": "Gate" + "name": "Gate", + "tags": [ + { + "value": "gate", + "key": "barrier" + } + ] }, { "main": [ @@ -4460,7 +4846,13 @@ "type": [ "node" ], - "name": "Lift Gate" + "name": "Lift Gate", + "tags": [ + { + "value": "lift_gate", + "key": "barrier" + } + ] }, { "main": [ @@ -4498,7 +4890,13 @@ "type": [ "node" ], - "name": "Hampshire Gate" + "name": "Hampshire Gate", + "tags": [ + { + "value": "hampshire_gate", + "key": "barrier" + } + ] }, { "main": [ @@ -4536,7 +4934,13 @@ "type": [ "node" ], - "name": "Bump Gate" + "name": "Bump Gate", + "tags": [ + { + "value": "bump_gate", + "key": "barrier" + } + ] }, { "main": [ @@ -4556,7 +4960,13 @@ "type": [ "node" ], - "name": "Kissing Gate" + "name": "Kissing Gate", + "tags": [ + { + "value": "kissing_gate", + "key": "barrier" + } + ] }, { "main": [ @@ -4576,7 +4986,13 @@ "type": [ "node" ], - "name": "Stile" + "name": "Stile", + "tags": [ + { + "value": "stile", + "key": "barrier" + } + ] }, { "main": [ @@ -4596,7 +5012,13 @@ "type": [ "node" ], - "name": "Turnstile" + "name": "Turnstile", + "tags": [ + { + "value": "turnstile", + "key": "barrier" + } + ] }, { "main": [ @@ -4634,7 +5056,13 @@ "type": [ "node" ], - "name": "Sally Port" + "name": "Sally Port", + "tags": [ + { + "value": "sally_port", + "key": "barrier" + } + ] }, { "main": [ @@ -4665,7 +5093,13 @@ "type": [ "way" ], - "name": "Drain" + "name": "Drain", + "tags": [ + { + "value": "drain", + "key": "waterway" + } + ] }, { "main": [ @@ -4696,7 +5130,13 @@ "type": [ "way" ], - "name": "Ditch" + "name": "Ditch", + "tags": [ + { + "value": "ditch", + "key": "waterway" + } + ] }, { "main": [ @@ -4727,7 +5167,13 @@ "type": [ "way" ], - "name": "Stream" + "name": "Stream", + "tags": [ + { + "value": "stream", + "key": "waterway" + } + ] }, { "main": [ @@ -4763,7 +5209,13 @@ "type": [ "way" ], - "name": "Canal" + "name": "Canal", + "tags": [ + { + "value": "canal", + "key": "waterway" + } + ] }, { "main": [ @@ -4799,7 +5251,13 @@ "type": [ "way" ], - "name": "River" + "name": "River", + "tags": [ + { + "value": "river", + "key": "waterway" + } + ] }, { "main": [ @@ -4813,7 +5271,13 @@ "node", "closedway" ], - "name": "Spring" + "name": "Spring", + "tags": [ + { + "value": "spring", + "key": "natural" + } + ] }, { "main": [ @@ -4832,7 +5296,13 @@ "node", "way" ], - "name": "Waterfall" + "name": "Waterfall", + "tags": [ + { + "value": "waterfall", + "key": "waterway" + } + ] }, { "main": [ @@ -4846,7 +5316,13 @@ "node", "way" ], - "name": "Weir" + "name": "Weir", + "tags": [ + { + "value": "weir", + "key": "waterway" + } + ] }, { "main": [ @@ -4866,7 +5342,13 @@ "way", "closedway" ], - "name": "Dam" + "name": "Dam", + "tags": [ + { + "value": "dam", + "key": "waterway" + } + ] }, { "main": [], @@ -4875,7 +5357,13 @@ "way", "closedway" ], - "name": "Groyne" + "name": "Groyne", + "tags": [ + { + "value": "groyne", + "key": "man_made" + } + ] }, { "main": [ @@ -4894,7 +5382,13 @@ "way", "closedway" ], - "name": "Breakwater" + "name": "Breakwater", + "tags": [ + { + "value": "breakwater", + "key": "man_made" + } + ] }, { "main": [ @@ -4909,7 +5403,13 @@ "closedway", "relation" ], - "name": "Basin" + "name": "Basin", + "tags": [ + { + "value": "basin", + "key": "landuse" + } + ] }, { "main": [ @@ -4924,7 +5424,13 @@ "closedway", "relation" ], - "name": "Reservoir" + "name": "Reservoir", + "tags": [ + { + "value": "reservoir", + "key": "landuse" + } + ] }, { "main": [ @@ -4939,7 +5445,13 @@ "closedway", "relation" ], - "name": "Covered Reservoir" + "name": "Covered Reservoir", + "tags": [ + { + "value": "reservoir_covered", + "key": "man_made" + } + ] }, { "main": [ @@ -4954,7 +5466,13 @@ "closedway", "relation" ], - "name": "Water" + "name": "Water", + "tags": [ + { + "value": "water", + "key": "natural" + } + ] }, { "main": [ @@ -4969,7 +5487,13 @@ "closedway", "relation" ], - "name": "Land" + "name": "Land", + "tags": [ + { + "value": "land", + "key": "natural" + } + ] }, { "main": [ @@ -4985,7 +5509,13 @@ "closedway", "relation" ], - "name": "Coastline" + "name": "Coastline", + "tags": [ + { + "value": "coastline", + "key": "natural" + } + ] }, { "main": [ @@ -4999,7 +5529,13 @@ "closedway", "relation" ], - "name": "Riverbank" + "name": "Riverbank", + "tags": [ + { + "value": "riverbank", + "key": "waterway" + } + ] }, { "main": [ @@ -5028,7 +5564,13 @@ "closedway", "relation" ], - "name": "Wetland" + "name": "Wetland", + "tags": [ + { + "value": "wetland", + "key": "natural" + } + ] }, { "main": [ @@ -5043,7 +5585,13 @@ "closedway", "relation" ], - "name": "Mud" + "name": "Mud", + "tags": [ + { + "value": "mud", + "key": "natural" + } + ] }, { "main": [ @@ -5058,7 +5606,13 @@ "closedway", "relation" ], - "name": "Beach" + "name": "Beach", + "tags": [ + { + "value": "beach", + "key": "natural" + } + ] }, { "main": [ @@ -5073,7 +5627,13 @@ "closedway", "relation" ], - "name": "Bay" + "name": "Bay", + "tags": [ + { + "value": "bay", + "key": "natural" + } + ] }, { "main": [ @@ -5089,7 +5649,13 @@ "closedway", "relation" ], - "name": "Cliff" + "name": "Cliff", + "tags": [ + { + "value": "cliff", + "key": "natural" + } + ] }, { "main": [ @@ -5115,7 +5681,13 @@ "node", "closedway" ], - "name": "Ferry Terminal" + "name": "Ferry Terminal", + "tags": [ + { + "value": "ferry_terminal", + "key": "amenity" + } + ] }, { "main": [ @@ -5129,7 +5701,13 @@ "way", "closedway" ], - "name": "Ferry Route" + "name": "Ferry Route", + "tags": [ + { + "value": "ferry", + "key": "route" + } + ] }, { "main": [ @@ -5143,7 +5721,13 @@ "node", "closedway" ], - "name": "Marina" + "name": "Marina", + "tags": [ + { + "value": "marina", + "key": "leisure" + } + ] }, { "main": [ @@ -5157,21 +5741,39 @@ "way", "closedway" ], - "name": "Pier" + "name": "Pier", + "tags": [ + { + "value": "pier", + "key": "man_made" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Lock Gate" + "name": "Lock Gate", + "tags": [ + { + "value": "lock_gate", + "key": "waterway" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Turning Point" + "name": "Turning Point", + "tags": [ + { + "value": "turning_point", + "key": "waterway" + } + ] }, { "main": [ @@ -5184,7 +5786,13 @@ "type": [ "node" ], - "name": "Slipway" + "name": "Slipway", + "tags": [ + { + "value": "slipway", + "key": "leisure" + } + ] }, { "main": [ @@ -5198,7 +5806,13 @@ "node", "closedway" ], - "name": "Boatyard" + "name": "Boatyard", + "tags": [ + { + "value": "boatyard", + "key": "waterway" + } + ] }, { "main": [ @@ -5212,7 +5826,13 @@ "node", "closedway" ], - "name": "Dock" + "name": "Dock", + "tags": [ + { + "value": "dock", + "key": "waterway" + } + ] }, { "main": [ @@ -5299,7 +5919,13 @@ "type": [ "way" ], - "name": "Rail" + "name": "Rail", + "tags": [ + { + "value": "rail", + "key": "railway" + } + ] }, { "main": [ @@ -5374,7 +6000,13 @@ "type": [ "way" ], - "name": "Narrow Gauge Rail" + "name": "Narrow Gauge Rail", + "tags": [ + { + "value": "narrow_gauge", + "key": "railway" + } + ] }, { "main": [ @@ -5428,7 +6060,13 @@ "type": [ "way" ], - "name": "Monorail" + "name": "Monorail", + "tags": [ + { + "value": "monorail", + "key": "railway" + } + ] }, { "main": [ @@ -5503,7 +6141,13 @@ "type": [ "way" ], - "name": "Preserved" + "name": "Preserved", + "tags": [ + { + "value": "preserved", + "key": "railway" + } + ] }, { "main": [ @@ -5578,7 +6222,13 @@ "type": [ "way" ], - "name": "Light Rail" + "name": "Light Rail", + "tags": [ + { + "value": "light_rail", + "key": "railway" + } + ] }, { "main": [ @@ -5653,7 +6303,13 @@ "type": [ "way" ], - "name": "Subway" + "name": "Subway", + "tags": [ + { + "value": "subway", + "key": "railway" + } + ] }, { "main": [ @@ -5728,7 +6384,13 @@ "type": [ "way" ], - "name": "Tram" + "name": "Tram", + "tags": [ + { + "value": "tram", + "key": "railway" + } + ] }, { "main": [ @@ -5834,7 +6496,13 @@ "type": [ "way" ], - "name": "Bus Guideway" + "name": "Bus Guideway", + "tags": [ + { + "value": "bus_guideway", + "key": "highway" + } + ] }, { "main": [ @@ -5852,21 +6520,39 @@ "type": [ "way" ], - "name": "Disused Rail" + "name": "Disused Rail", + "tags": [ + { + "value": "disused", + "key": "railway" + } + ] }, { "main": [], "type": [ "way" ], - "name": "Abandoned Rail" + "name": "Abandoned Rail", + "tags": [ + { + "value": "abandoned", + "key": "railway" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Level Crossing" + "name": "Level Crossing", + "tags": [ + { + "value": "level_crossing", + "key": "railway" + } + ] }, { "main": [ @@ -5905,7 +6591,13 @@ "type": [ "node" ], - "name": "Crossing" + "name": "Crossing", + "tags": [ + { + "value": "crossing", + "key": "railway" + } + ] }, { "main": [], @@ -5913,14 +6605,26 @@ "node", "closedway" ], - "name": "Turntable" + "name": "Turntable", + "tags": [ + { + "value": "turntable", + "key": "railway" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Buffer Stop" + "name": "Buffer Stop", + "tags": [ + { + "value": "buffer_stop", + "key": "railway" + } + ] }, { "main": [ @@ -5965,7 +6669,13 @@ "type": [ "way" ], - "name": "Chair Lift" + "name": "Chair Lift", + "tags": [ + { + "value": "chair_lift", + "key": "aerialway" + } + ] }, { "main": [ @@ -5993,7 +6703,13 @@ "type": [ "way" ], - "name": "Drag Lift" + "name": "Drag Lift", + "tags": [ + { + "value": "drag_lift", + "key": "aerialway" + } + ] }, { "main": [ @@ -6032,7 +6748,13 @@ "type": [ "way" ], - "name": "Cable Car" + "name": "Cable Car", + "tags": [ + { + "value": "cable_car", + "key": "aerialway" + } + ] }, { "main": [ @@ -6071,7 +6793,13 @@ "type": [ "way" ], - "name": "Gondola" + "name": "Gondola", + "tags": [ + { + "value": "gondola", + "key": "aerialway" + } + ] }, { "main": [ @@ -6116,7 +6844,13 @@ "type": [ "way" ], - "name": "Mixed Lift" + "name": "Mixed Lift", + "tags": [ + { + "value": "mixed_lift", + "key": "aerialway" + } + ] }, { "main": [ @@ -6144,7 +6878,13 @@ "type": [ "way" ], - "name": "T-bar Lift" + "name": "T-bar Lift", + "tags": [ + { + "value": "t-bar", + "key": "aerialway" + } + ] }, { "main": [ @@ -6172,7 +6912,13 @@ "type": [ "way" ], - "name": "J-bar Lift" + "name": "J-bar Lift", + "tags": [ + { + "value": "j-bar", + "key": "aerialway" + } + ] }, { "main": [ @@ -6200,7 +6946,13 @@ "type": [ "way" ], - "name": "Platter Lift" + "name": "Platter Lift", + "tags": [ + { + "value": "platter", + "key": "aerialway" + } + ] }, { "main": [ @@ -6228,7 +6980,13 @@ "type": [ "way" ], - "name": "Rope Tow" + "name": "Rope Tow", + "tags": [ + { + "value": "rope_tow", + "key": "aerialway" + } + ] }, { "main": [ @@ -6256,7 +7014,13 @@ "type": [ "way" ], - "name": "Magic Carpet" + "name": "Magic Carpet", + "tags": [ + { + "value": "magic_carpet", + "key": "aerialway" + } + ] }, { "main": [ @@ -6279,7 +7043,13 @@ "type": [ "way" ], - "name": "Goods" + "name": "Goods", + "tags": [ + { + "value": "goods", + "key": "aerialway" + } + ] }, { "main": [ @@ -6293,7 +7063,13 @@ "node", "closedway" ], - "name": "Station" + "name": "Station", + "tags": [ + { + "value": "station", + "key": "aerialway" + } + ] }, { "main": [ @@ -6306,7 +7082,13 @@ "type": [ "node" ], - "name": "Pylon" + "name": "Pylon", + "tags": [ + { + "value": "pylon", + "key": "aerialway" + } + ] }, { "main": [ @@ -6419,7 +7201,13 @@ "node", "closedway" ], - "name": "Parking" + "name": "Parking", + "tags": [ + { + "value": "parking", + "key": "amenity" + } + ] }, { "main": [ @@ -6553,7 +7341,13 @@ "node", "closedway" ], - "name": "Parking space" + "name": "Parking space", + "tags": [ + { + "value": "parking_space", + "key": "amenity" + } + ] }, { "main": [ @@ -6681,7 +7475,13 @@ "type": [ "node" ], - "name": "Parking entrance" + "name": "Parking entrance", + "tags": [ + { + "value": "parking_entrance", + "key": "amenity" + } + ] }, { "main": [ @@ -6846,7 +7646,13 @@ "node", "closedway" ], - "name": "Fuel" + "name": "Fuel", + "tags": [ + { + "value": "fuel", + "key": "amenity" + } + ] }, { "main": [ @@ -6869,7 +7675,13 @@ "type": [ "node" ], - "name": "Charging Station" + "name": "Charging Station", + "tags": [ + { + "value": "charging_station", + "key": "amenity" + } + ] }, { "main": [ @@ -6903,7 +7715,13 @@ "node", "closedway" ], - "name": "Wash" + "name": "Wash", + "tags": [ + { + "value": "car_wash", + "key": "amenity" + } + ] }, { "main": [ @@ -6922,7 +7740,13 @@ "node", "closedway" ], - "name": "Car Dealer" + "name": "Car Dealer", + "tags": [ + { + "value": "car", + "key": "shop" + } + ] }, { "main": [ @@ -6956,7 +7780,13 @@ "node", "closedway" ], - "name": "Repair" + "name": "Repair", + "tags": [ + { + "value": "car_repair", + "key": "shop" + } + ] }, { "main": [ @@ -7010,7 +7840,13 @@ "node", "closedway" ], - "name": "Tyres" + "name": "Tyres", + "tags": [ + { + "value": "tyres", + "key": "shop" + } + ] }, { "main": [ @@ -7044,7 +7880,13 @@ "node", "closedway" ], - "name": "Rental" + "name": "Rental", + "tags": [ + { + "value": "car_rental", + "key": "amenity" + } + ] }, { "main": [ @@ -7083,7 +7925,13 @@ "node", "closedway" ], - "name": "Sharing" + "name": "Sharing", + "tags": [ + { + "value": "car_sharing", + "key": "amenity" + } + ] }, { "main": [ @@ -7121,7 +7969,13 @@ "node", "closedway" ], - "name": "Parking" + "name": "Parking", + "tags": [ + { + "value": "motorcycle_parking", + "key": "amenity" + } + ] }, { "main": [ @@ -7249,7 +8103,13 @@ "node", "closedway" ], - "name": "Motorcycle Dealer" + "name": "Motorcycle Dealer", + "tags": [ + { + "value": "motorcycle", + "key": "shop" + } + ] }, { "main": [ @@ -7300,7 +8160,13 @@ "node", "closedway" ], - "name": "Parking" + "name": "Parking", + "tags": [ + { + "value": "bicycle_parking", + "key": "amenity" + } + ] }, { "main": [ @@ -7356,7 +8222,13 @@ "node", "closedway" ], - "name": "Bike Dealer" + "name": "Bike Dealer", + "tags": [ + { + "value": "bicycle", + "key": "shop" + } + ] }, { "main": [ @@ -7370,7 +8242,13 @@ "node", "closedway" ], - "name": "Rental" + "name": "Rental", + "tags": [ + { + "value": "bicycle_rental", + "key": "amenity" + } + ] }, { "main": [ @@ -7389,7 +8267,13 @@ "node", "closedway" ], - "name": "Station" + "name": "Station", + "tags": [ + { + "value": "station", + "key": "railway" + } + ] }, { "main": [ @@ -7402,7 +8286,13 @@ "type": [ "node" ], - "name": "Railway Halt" + "name": "Railway Halt", + "tags": [ + { + "value": "halt", + "key": "railway" + } + ] }, { "main": [ @@ -7415,7 +8305,13 @@ "type": [ "node" ], - "name": "Tram Stop" + "name": "Tram Stop", + "tags": [ + { + "value": "tram_stop", + "key": "railway" + } + ] }, { "main": [ @@ -7440,7 +8336,13 @@ "way", "closedway" ], - "name": "Railway Platform" + "name": "Railway Platform", + "tags": [ + { + "value": "platform", + "key": "railway" + } + ] }, { "main": [ @@ -7465,7 +8367,13 @@ "type": [ "node" ], - "name": "Subway Entrance" + "name": "Subway Entrance", + "tags": [ + { + "value": "subway_entrance", + "key": "railway" + } + ] }, { "favorite": true, @@ -7480,7 +8388,13 @@ "node", "closedway" ], - "name": "Bus Station" + "name": "Bus Station", + "tags": [ + { + "value": "bus_station", + "key": "amenity" + } + ] }, { "main": [ @@ -7520,7 +8434,13 @@ "type": [ "node" ], - "name": "Bus Stop" + "name": "Bus Stop", + "tags": [ + { + "value": "bus_stop", + "key": "highway" + } + ] }, { "main": [ @@ -7545,7 +8465,13 @@ "node", "closedway" ], - "name": "Bus Platform" + "name": "Bus Platform", + "tags": [ + { + "value": "platform", + "key": "highway" + } + ] }, { "main": [ @@ -7604,7 +8530,17 @@ "type": [ "node" ], - "name": "Ticket Machine" + "name": "Ticket Machine", + "tags": [ + { + "value": "vending_machine", + "key": "amenity" + }, + { + "value": "public_transport_tickets", + "key": "vending" + } + ] }, { "main": [ @@ -7618,7 +8554,13 @@ "node", "closedway" ], - "name": "Taxi" + "name": "Taxi", + "tags": [ + { + "value": "taxi", + "key": "amenity" + } + ] }, { "main": [ @@ -7647,7 +8589,13 @@ "node", "closedway" ], - "name": "Airport Ground" + "name": "Airport Ground", + "tags": [ + { + "value": "aerodrome", + "key": "aeroway" + } + ] }, { "main": [ @@ -7660,7 +8608,13 @@ "type": [ "way" ], - "name": "Runway" + "name": "Runway", + "tags": [ + { + "value": "runway", + "key": "aeroway" + } + ] }, { "main": [ @@ -7673,7 +8627,13 @@ "type": [ "way" ], - "name": "Taxiway" + "name": "Taxiway", + "tags": [ + { + "value": "taxiway", + "key": "aeroway" + } + ] }, { "main": [ @@ -7687,14 +8647,26 @@ "node", "closedway" ], - "name": "Helipad" + "name": "Helipad", + "tags": [ + { + "value": "helipad", + "key": "aeroway" + } + ] }, { "main": [], "type": [ "closedway" ], - "name": "Apron" + "name": "Apron", + "tags": [ + { + "value": "apron", + "key": "aeroway" + } + ] }, { "main": [], @@ -7702,21 +8674,39 @@ "node", "closedway" ], - "name": "Hangar" + "name": "Hangar", + "tags": [ + { + "value": "hangar", + "key": "building" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Beacon" + "name": "Beacon", + "tags": [ + { + "value": "beacon", + "key": "man_made" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Windsock" + "name": "Windsock", + "tags": [ + { + "value": "windsock", + "key": "aeroway" + } + ] }, { "main": [ @@ -7730,7 +8720,13 @@ "node", "closedway" ], - "name": "Terminal" + "name": "Terminal", + "tags": [ + { + "value": "terminal", + "key": "aeroway" + } + ] }, { "main": [ @@ -7743,7 +8739,13 @@ "type": [ "node" ], - "name": "Gate" + "name": "Gate", + "tags": [ + { + "value": "gate", + "key": "aeroway" + } + ] }, { "main": [ @@ -7838,7 +8840,13 @@ "node", "closedway" ], - "name": "Hotel" + "name": "Hotel", + "tags": [ + { + "value": "hotel", + "key": "tourism" + } + ] }, { "main": [ @@ -7933,7 +8941,13 @@ "node", "closedway" ], - "name": "Motel" + "name": "Motel", + "tags": [ + { + "value": "motel", + "key": "tourism" + } + ] }, { "main": [ @@ -8023,7 +9037,13 @@ "node", "closedway" ], - "name": "Guest House" + "name": "Guest House", + "tags": [ + { + "value": "guest_house", + "key": "tourism" + } + ] }, { "main": [ @@ -8113,7 +9133,13 @@ "node", "closedway" ], - "name": "Chalet" + "name": "Chalet", + "tags": [ + { + "value": "chalet", + "key": "tourism" + } + ] }, { "main": [ @@ -8208,7 +9234,13 @@ "node", "closedway" ], - "name": "Hostel" + "name": "Hostel", + "tags": [ + { + "value": "hostel", + "key": "tourism" + } + ] }, { "main": [ @@ -8294,7 +9326,13 @@ "node", "closedway" ], - "name": "Alpine Hut" + "name": "Alpine Hut", + "tags": [ + { + "value": "alpine_hut", + "key": "tourism" + } + ] }, { "main": [ @@ -8411,7 +9449,13 @@ "node", "closedway" ], - "name": "Caravan Site" + "name": "Caravan Site", + "tags": [ + { + "value": "caravan_site", + "key": "tourism" + } + ] }, { "main": [ @@ -8501,7 +9545,13 @@ "node", "closedway" ], - "name": "Camping Site" + "name": "Camping Site", + "tags": [ + { + "value": "camp_site", + "key": "tourism" + } + ] }, { "favorite": true, @@ -8613,7 +9663,13 @@ "node", "closedway" ], - "name": "Restaurant" + "name": "Restaurant", + "tags": [ + { + "value": "restaurant", + "key": "amenity" + } + ] }, { "main": [ @@ -8730,7 +9786,13 @@ "node", "closedway" ], - "name": "Fast Food" + "name": "Fast Food", + "tags": [ + { + "value": "fast_food", + "key": "amenity" + } + ] }, { "main": [ @@ -8816,7 +9878,13 @@ "node", "closedway" ], - "name": "Food Court" + "name": "Food Court", + "tags": [ + { + "value": "food_court", + "key": "amenity" + } + ] }, { "favorite": true, @@ -8916,7 +9984,13 @@ "node", "closedway" ], - "name": "Cafe" + "name": "Cafe", + "tags": [ + { + "value": "cafe", + "key": "amenity" + } + ] }, { "main": [ @@ -9013,7 +10087,13 @@ "node", "closedway" ], - "name": "Pub" + "name": "Pub", + "tags": [ + { + "value": "pub", + "key": "amenity" + } + ] }, { "main": [ @@ -9099,7 +10179,13 @@ "node", "closedway" ], - "name": "Biergarten" + "name": "Biergarten", + "tags": [ + { + "value": "biergarten", + "key": "amenity" + } + ] }, { "favorite": true, @@ -9186,7 +10272,13 @@ "node", "closedway" ], - "name": "Bar" + "name": "Bar", + "tags": [ + { + "value": "bar", + "key": "amenity" + } + ] }, { "main": [ @@ -9251,7 +10343,13 @@ "node", "closedway" ], - "name": "Nightclub" + "name": "Nightclub", + "tags": [ + { + "value": "nightclub", + "key": "amenity" + } + ] }, { "main": [ @@ -9270,7 +10368,13 @@ "node", "closedway" ], - "name": "Attraction" + "name": "Attraction", + "tags": [ + { + "value": "attraction", + "key": "tourism" + } + ] }, { "main": [ @@ -9284,7 +10388,13 @@ "node", "closedway" ], - "name": "Viewpoint" + "name": "Viewpoint", + "tags": [ + { + "value": "viewpoint", + "key": "tourism" + } + ] }, { "main": [ @@ -9308,7 +10418,17 @@ "node", "closedway" ], - "name": "Information Office" + "name": "Information Office", + "tags": [ + { + "value": "information", + "key": "tourism" + }, + { + "value": "office", + "key": "information" + } + ] }, { "main": [ @@ -9376,7 +10496,17 @@ "type": [ "node" ], - "name": "Map" + "name": "Map", + "tags": [ + { + "value": "information", + "key": "tourism" + }, + { + "value": "map", + "key": "information" + } + ] }, { "main": [ @@ -9406,7 +10536,17 @@ "type": [ "node" ], - "name": "Information Board" + "name": "Information Board", + "tags": [ + { + "value": "information", + "key": "tourism" + }, + { + "value": "board", + "key": "information" + } + ] }, { "main": [ @@ -9454,7 +10594,17 @@ "type": [ "node" ], - "name": "Guidepost" + "name": "Guidepost", + "tags": [ + { + "value": "information", + "key": "tourism" + }, + { + "value": "guidepost", + "key": "information" + } + ] }, { "main": [ @@ -9491,7 +10641,17 @@ "type": [ "node" ], - "name": "Information Terminal" + "name": "Information Terminal", + "tags": [ + { + "value": "information", + "key": "tourism" + }, + { + "value": "terminal", + "key": "information" + } + ] }, { "main": [ @@ -9533,7 +10693,17 @@ "type": [ "node" ], - "name": "Audioguide" + "name": "Audioguide", + "tags": [ + { + "value": "information", + "key": "tourism" + }, + { + "value": "audioguide", + "key": "information" + } + ] }, { "main": [ @@ -9552,7 +10722,13 @@ "node", "closedway" ], - "name": "Other Information Points" + "name": "Other Information Points", + "tags": [ + { + "value": "information", + "key": "tourism" + } + ] }, { "main": [ @@ -9567,7 +10743,13 @@ "closedway", "relation" ], - "name": "Cinema" + "name": "Cinema", + "tags": [ + { + "value": "cinema", + "key": "amenity" + } + ] }, { "main": [ @@ -9596,7 +10778,13 @@ "node", "closedway" ], - "name": "Zoo" + "name": "Zoo", + "tags": [ + { + "value": "zoo", + "key": "tourism" + } + ] }, { "main": [ @@ -9641,7 +10829,13 @@ "node", "closedway" ], - "name": "Dog Park" + "name": "Dog Park", + "tags": [ + { + "value": "dog_park", + "key": "leisure" + } + ] }, { "main": [ @@ -9665,7 +10859,13 @@ "node", "closedway" ], - "name": "Theme Park" + "name": "Theme Park", + "tags": [ + { + "value": "theme_park", + "key": "tourism" + } + ] }, { "main": [ @@ -9679,7 +10879,13 @@ "node", "closedway" ], - "name": "Water Park" + "name": "Water Park", + "tags": [ + { + "value": "water_park", + "key": "leisure" + } + ] }, { "main": [ @@ -9718,7 +10924,13 @@ "node", "closedway" ], - "name": "Sauna" + "name": "Sauna", + "tags": [ + { + "value": "sauna", + "key": "leisure" + } + ] }, { "main": [ @@ -9732,7 +10944,13 @@ "node", "closedway" ], - "name": "Playground" + "name": "Playground", + "tags": [ + { + "value": "playground", + "key": "leisure" + } + ] }, { "main": [ @@ -9752,7 +10970,13 @@ "node", "closedway" ], - "name": "Picnic Site" + "name": "Picnic Site", + "tags": [ + { + "value": "picnic_site", + "key": "tourism" + } + ] }, { "main": [ @@ -9784,7 +11008,13 @@ "type": [ "node" ], - "name": "Public Grill" + "name": "Public Grill", + "tags": [ + { + "value": "bbq", + "key": "amenity" + } + ] }, { "main": [ @@ -9798,7 +11028,13 @@ "node", "closedway" ], - "name": "Fishing" + "name": "Fishing", + "tags": [ + { + "value": "fishing", + "key": "leisure" + } + ] }, { "main": [], @@ -9806,7 +11042,17 @@ "node", "closedway" ], - "name": "Private Swimming Pool" + "name": "Private Swimming Pool", + "tags": [ + { + "value": "swimming_pool", + "key": "leisure" + }, + { + "value": "private", + "key": "access" + } + ] }, { "main": [ @@ -9835,7 +11081,13 @@ "node", "closedway" ], - "name": "Museum" + "name": "Museum", + "tags": [ + { + "value": "museum", + "key": "tourism" + } + ] }, { "main": [ @@ -9850,7 +11102,13 @@ "closedway", "relation" ], - "name": "Theatre" + "name": "Theatre", + "tags": [ + { + "value": "theatre", + "key": "amenity" + } + ] }, { "main": [ @@ -9875,7 +11133,13 @@ "closedway", "relation" ], - "name": "Library" + "name": "Library", + "tags": [ + { + "value": "library", + "key": "amenity" + } + ] }, { "main": [ @@ -9890,7 +11154,13 @@ "closedway", "relation" ], - "name": "Arts Centre" + "name": "Arts Centre", + "tags": [ + { + "value": "arts_centre", + "key": "amenity" + } + ] }, { "main": [ @@ -9905,7 +11175,13 @@ "way", "closedway" ], - "name": "Artwork" + "name": "Artwork", + "tags": [ + { + "value": "artwork", + "key": "tourism" + } + ] }, { "favorite": true, @@ -9982,7 +11258,13 @@ "closedway", "relation" ], - "name": "Place of Worship" + "name": "Place of Worship", + "tags": [ + { + "value": "place_of_worship", + "key": "amenity" + } + ] }, { "main": [ @@ -10019,7 +11301,13 @@ "type": [ "node" ], - "name": "Recording Studio" + "name": "Recording Studio", + "tags": [ + { + "value": "studio", + "key": "amenity" + } + ] }, { "main": [ @@ -10034,7 +11322,13 @@ "closedway", "relation" ], - "name": "Public Building" + "name": "Public Building", + "tags": [ + { + "value": "public_building", + "key": "amenity" + } + ] }, { "main": [ @@ -10049,7 +11343,13 @@ "closedway", "relation" ], - "name": "Town hall" + "name": "Town hall", + "tags": [ + { + "value": "townhall", + "key": "amenity" + } + ] }, { "main": [ @@ -10078,7 +11378,13 @@ "node", "closedway" ], - "name": "Community Centre" + "name": "Community Centre", + "tags": [ + { + "value": "community_centre", + "key": "amenity" + } + ] }, { "main": [ @@ -10093,7 +11399,13 @@ "closedway", "relation" ], - "name": "Embassy" + "name": "Embassy", + "tags": [ + { + "value": "embassy", + "key": "amenity" + } + ] }, { "main": [ @@ -10108,7 +11420,13 @@ "closedway", "relation" ], - "name": "Courthouse" + "name": "Courthouse", + "tags": [ + { + "value": "courthouse", + "key": "amenity" + } + ] }, { "main": [ @@ -10123,7 +11441,13 @@ "closedway", "relation" ], - "name": "Prison" + "name": "Prison", + "tags": [ + { + "value": "prison", + "key": "amenity" + } + ] }, { "main": [ @@ -10138,7 +11462,13 @@ "closedway", "relation" ], - "name": "Police" + "name": "Police", + "tags": [ + { + "value": "police", + "key": "amenity" + } + ] }, { "main": [ @@ -10153,7 +11483,13 @@ "closedway", "relation" ], - "name": "Fire Station" + "name": "Fire Station", + "tags": [ + { + "value": "fire_station", + "key": "amenity" + } + ] }, { "main": [ @@ -10173,7 +11509,13 @@ "closedway", "relation" ], - "name": "Post Office" + "name": "Post Office", + "tags": [ + { + "value": "post_office", + "key": "amenity" + } + ] }, { "main": [ @@ -10188,7 +11530,13 @@ "closedway", "relation" ], - "name": "Kindergarten" + "name": "Kindergarten", + "tags": [ + { + "value": "kindergarten", + "key": "amenity" + } + ] }, { "main": [ @@ -10203,7 +11551,13 @@ "closedway", "relation" ], - "name": "School" + "name": "School", + "tags": [ + { + "value": "school", + "key": "amenity" + } + ] }, { "main": [ @@ -10218,7 +11572,13 @@ "closedway", "relation" ], - "name": "University" + "name": "University", + "tags": [ + { + "value": "university", + "key": "amenity" + } + ] }, { "main": [ @@ -10233,7 +11593,13 @@ "closedway", "relation" ], - "name": "College" + "name": "College", + "tags": [ + { + "value": "college", + "key": "amenity" + } + ] }, { "main": [ @@ -10257,7 +11623,13 @@ "node", "closedway" ], - "name": "Driving School" + "name": "Driving School", + "tags": [ + { + "value": "driving_school", + "key": "amenity" + } + ] }, { "favorite": true, @@ -10272,7 +11644,13 @@ "node", "closedway" ], - "name": "Hospital" + "name": "Hospital", + "tags": [ + { + "value": "hospital", + "key": "amenity" + } + ] }, { "main": [ @@ -10296,7 +11674,13 @@ "node", "closedway" ], - "name": "Doctors" + "name": "Doctors", + "tags": [ + { + "value": "doctors", + "key": "amenity" + } + ] }, { "main": [ @@ -10320,7 +11704,13 @@ "node", "closedway" ], - "name": "Dentist" + "name": "Dentist", + "tags": [ + { + "value": "dentist", + "key": "amenity" + } + ] }, { "main": [ @@ -10339,7 +11729,13 @@ "node", "closedway" ], - "name": "Nursing Home" + "name": "Nursing Home", + "tags": [ + { + "value": "nursing_home", + "key": "amenity" + } + ] }, { "main": [ @@ -10372,7 +11768,13 @@ "node", "closedway" ], - "name": "Pharmacy" + "name": "Pharmacy", + "tags": [ + { + "value": "pharmacy", + "key": "amenity" + } + ] }, { "main": [ @@ -10401,7 +11803,13 @@ "node", "closedway" ], - "name": "Hearing Aids" + "name": "Hearing Aids", + "tags": [ + { + "value": "hearing_aids", + "key": "shop" + } + ] }, { "main": [ @@ -10420,7 +11828,13 @@ "node", "closedway" ], - "name": "Baby Hatch" + "name": "Baby Hatch", + "tags": [ + { + "value": "baby_hatch", + "key": "amenity" + } + ] }, { "main": [ @@ -10449,7 +11863,13 @@ "node", "closedway" ], - "name": "Emergency Access Point" + "name": "Emergency Access Point", + "tags": [ + { + "value": "emergency_access_point", + "key": "highway" + } + ] }, { "main": [ @@ -10473,7 +11893,13 @@ "node", "closedway" ], - "name": "Veterinary" + "name": "Veterinary", + "tags": [ + { + "value": "veterinary", + "key": "amenity" + } + ] }, { "main": [ @@ -10516,7 +11942,13 @@ "node", "closedway" ], - "name": "Toilets" + "name": "Toilets", + "tags": [ + { + "value": "toilets", + "key": "amenity" + } + ] }, { "main": [ @@ -10529,7 +11961,13 @@ "type": [ "node" ], - "name": "Post Box" + "name": "Post Box", + "tags": [ + { + "value": "post_box", + "key": "amenity" + } + ] }, { "main": [ @@ -10578,7 +12016,13 @@ "type": [ "node" ], - "name": "Telephone" + "name": "Telephone", + "tags": [ + { + "value": "telephone", + "key": "amenity" + } + ] }, { "main": [ @@ -10642,7 +12086,13 @@ "type": [ "node" ], - "name": "Clock" + "name": "Clock", + "tags": [ + { + "value": "clock", + "key": "amenity" + } + ] }, { "main": [ @@ -10696,21 +12146,39 @@ "node", "closedway" ], - "name": "Recycling" + "name": "Recycling", + "tags": [ + { + "value": "recycling", + "key": "amenity" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Waste Basket" + "name": "Waste Basket", + "tags": [ + { + "value": "waste_basket", + "key": "amenity" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Waste Disposal" + "name": "Waste Disposal", + "tags": [ + { + "value": "waste_disposal", + "key": "amenity" + } + ] }, { "main": [ @@ -10768,7 +12236,13 @@ "type": [ "node" ], - "name": "Bench" + "name": "Bench", + "tags": [ + { + "value": "bench", + "key": "amenity" + } + ] }, { "main": [ @@ -10799,7 +12273,13 @@ "node", "closedway" ], - "name": "Shelter" + "name": "Shelter", + "tags": [ + { + "value": "shelter", + "key": "amenity" + } + ] }, { "main": [ @@ -10851,7 +12331,13 @@ "type": [ "node" ], - "name": "Hunting Stand" + "name": "Hunting Stand", + "tags": [ + { + "value": "hunting_stand", + "key": "amenity" + } + ] }, { "main": [ @@ -10864,7 +12350,13 @@ "type": [ "node" ], - "name": "Drinking Water" + "name": "Drinking Water", + "tags": [ + { + "value": "drinking_water", + "key": "amenity" + } + ] }, { "main": [ @@ -10940,7 +12432,13 @@ "type": [ "node" ], - "name": "Fire Hydrant" + "name": "Fire Hydrant", + "tags": [ + { + "value": "fire_hydrant", + "key": "emergency" + } + ] }, { "main": [ @@ -10997,7 +12495,13 @@ "node", "closedway" ], - "name": "Stadium" + "name": "Stadium", + "tags": [ + { + "value": "stadium", + "key": "leisure" + } + ] }, { "main": [ @@ -11054,7 +12558,13 @@ "node", "closedway" ], - "name": "Sports Centre" + "name": "Sports Centre", + "tags": [ + { + "value": "sports_centre", + "key": "leisure" + } + ] }, { "main": [ @@ -11110,7 +12620,13 @@ "node", "closedway" ], - "name": "Pitch" + "name": "Pitch", + "tags": [ + { + "value": "pitch", + "key": "leisure" + } + ] }, { "main": [ @@ -11168,7 +12684,13 @@ "closedway", "relation" ], - "name": "Racetrack" + "name": "Racetrack", + "tags": [ + { + "value": "track", + "key": "leisure" + } + ] }, { "main": [ @@ -11192,7 +12714,13 @@ "node", "closedway" ], - "name": "Golf Course" + "name": "Golf Course", + "tags": [ + { + "value": "golf_course", + "key": "leisure" + } + ] }, { "main": [ @@ -11216,7 +12744,13 @@ "node", "closedway" ], - "name": "Miniature Golf" + "name": "Miniature Golf", + "tags": [ + { + "value": "miniature_golf", + "key": "leisure" + } + ] }, { "main": [ @@ -11241,7 +12775,13 @@ "node", "closedway" ], - "name": "Multi" + "name": "Multi", + "tags": [ + { + "value": "multi", + "key": "sport" + } + ] }, { "main": [ @@ -11265,7 +12805,13 @@ "node", "closedway" ], - "name": "9pin" + "name": "9pin", + "tags": [ + { + "value": "9pin", + "key": "sport" + } + ] }, { "main": [ @@ -11289,7 +12835,13 @@ "node", "closedway" ], - "name": "10pin" + "name": "10pin", + "tags": [ + { + "value": "10pin", + "key": "sport" + } + ] }, { "main": [ @@ -11313,7 +12865,13 @@ "node", "closedway" ], - "name": "Archery" + "name": "Archery", + "tags": [ + { + "value": "archery", + "key": "sport" + } + ] }, { "main": [ @@ -11338,7 +12896,13 @@ "node", "closedway" ], - "name": "Athletics" + "name": "Athletics", + "tags": [ + { + "value": "athletics", + "key": "sport" + } + ] }, { "main": [ @@ -11360,7 +12924,13 @@ "node", "closedway" ], - "name": "Climbing" + "name": "Climbing", + "tags": [ + { + "value": "climbing", + "key": "sport" + } + ] }, { "main": [ @@ -11375,7 +12945,13 @@ "way", "closedway" ], - "name": "Canoeing" + "name": "Canoeing", + "tags": [ + { + "value": "canoe", + "key": "sport" + } + ] }, { "main": [ @@ -11400,7 +12976,13 @@ "node", "closedway" ], - "name": "Cycling" + "name": "Cycling", + "tags": [ + { + "value": "cycling", + "key": "sport" + } + ] }, { "main": [ @@ -11425,7 +13007,13 @@ "node", "closedway" ], - "name": "Dog Racing" + "name": "Dog Racing", + "tags": [ + { + "value": "dog_racing", + "key": "sport" + } + ] }, { "main": [ @@ -11451,7 +13039,13 @@ "node", "closedway" ], - "name": "Equestrian" + "name": "Equestrian", + "tags": [ + { + "value": "equestrian", + "key": "sport" + } + ] }, { "main": [ @@ -11476,7 +13070,13 @@ "node", "closedway" ], - "name": "Horse Racing" + "name": "Horse Racing", + "tags": [ + { + "value": "horse_racing", + "key": "sport" + } + ] }, { "main": [ @@ -11500,7 +13100,13 @@ "node", "closedway" ], - "name": "Gymnastics" + "name": "Gymnastics", + "tags": [ + { + "value": "gymnastics", + "key": "sport" + } + ] }, { "main": [ @@ -11525,7 +13131,13 @@ "node", "closedway" ], - "name": "Skating" + "name": "Skating", + "tags": [ + { + "value": "skating", + "key": "sport" + } + ] }, { "main": [ @@ -11550,7 +13162,13 @@ "node", "closedway" ], - "name": "Skateboard" + "name": "Skateboard", + "tags": [ + { + "value": "skateboard", + "key": "sport" + } + ] }, { "main": [ @@ -11575,7 +13193,13 @@ "node", "closedway" ], - "name": "Swimming" + "name": "Swimming", + "tags": [ + { + "value": "swimming", + "key": "sport" + } + ] }, { "main": [ @@ -11627,7 +13251,13 @@ "way", "closedway" ], - "name": "Skiing" + "name": "Skiing", + "tags": [ + { + "value": "skiing", + "key": "sport" + } + ] }, { "main": [ @@ -11652,7 +13282,13 @@ "node", "closedway" ], - "name": "Shooting" + "name": "Shooting", + "tags": [ + { + "value": "shooting", + "key": "sport" + } + ] }, { "main": [ @@ -11676,7 +13312,13 @@ "node", "closedway" ], - "name": "Soccer" + "name": "Soccer", + "tags": [ + { + "value": "soccer", + "key": "sport" + } + ] }, { "main": [ @@ -11700,7 +13342,13 @@ "node", "closedway" ], - "name": "Australian Football" + "name": "Australian Football", + "tags": [ + { + "value": "australian_football", + "key": "sport" + } + ] }, { "main": [ @@ -11724,7 +13372,13 @@ "node", "closedway" ], - "name": "American Football" + "name": "American Football", + "tags": [ + { + "value": "american_football", + "key": "sport" + } + ] }, { "main": [ @@ -11748,7 +13402,13 @@ "node", "closedway" ], - "name": "Canadian Football" + "name": "Canadian Football", + "tags": [ + { + "value": "canadian_football", + "key": "sport" + } + ] }, { "main": [ @@ -11796,7 +13456,13 @@ "node", "closedway" ], - "name": "Gaelic Games" + "name": "Gaelic Games", + "tags": [ + { + "value": "gaelic_games", + "key": "sport" + } + ] }, { "main": [ @@ -11820,7 +13486,13 @@ "node", "closedway" ], - "name": "Rugby League" + "name": "Rugby League", + "tags": [ + { + "value": "rugby_league", + "key": "sport" + } + ] }, { "main": [ @@ -11844,7 +13516,13 @@ "node", "closedway" ], - "name": "Rugby Union" + "name": "Rugby Union", + "tags": [ + { + "value": "rugby_union", + "key": "sport" + } + ] }, { "main": [ @@ -11868,7 +13546,13 @@ "node", "closedway" ], - "name": "Baseball" + "name": "Baseball", + "tags": [ + { + "value": "baseball", + "key": "sport" + } + ] }, { "main": [ @@ -11892,7 +13576,13 @@ "node", "closedway" ], - "name": "Basketball" + "name": "Basketball", + "tags": [ + { + "value": "basketball", + "key": "sport" + } + ] }, { "main": [ @@ -11921,7 +13611,13 @@ "node", "closedway" ], - "name": "Volleyball" + "name": "Volleyball", + "tags": [ + { + "value": "volleyball", + "key": "sport" + } + ] }, { "main": [ @@ -11950,7 +13646,13 @@ "node", "closedway" ], - "name": "Beachvolleyball" + "name": "Beachvolleyball", + "tags": [ + { + "value": "beachvolleyball", + "key": "sport" + } + ] }, { "main": [ @@ -11975,7 +13677,13 @@ "node", "closedway" ], - "name": "Golf" + "name": "Golf", + "tags": [ + { + "value": "golf", + "key": "sport" + } + ] }, { "main": [ @@ -11999,7 +13707,13 @@ "node", "closedway" ], - "name": "Boule" + "name": "Boule", + "tags": [ + { + "value": "boules", + "key": "sport" + } + ] }, { "main": [ @@ -12023,7 +13737,13 @@ "node", "closedway" ], - "name": "Bowls" + "name": "Bowls", + "tags": [ + { + "value": "bowls", + "key": "sport" + } + ] }, { "main": [ @@ -12047,7 +13767,13 @@ "node", "closedway" ], - "name": "Cricket" + "name": "Cricket", + "tags": [ + { + "value": "cricket", + "key": "sport" + } + ] }, { "main": [ @@ -12071,7 +13797,13 @@ "node", "closedway" ], - "name": "Cricket Nets" + "name": "Cricket Nets", + "tags": [ + { + "value": "cricket_nets", + "key": "sport" + } + ] }, { "main": [ @@ -12095,7 +13827,13 @@ "node", "closedway" ], - "name": "Croquet" + "name": "Croquet", + "tags": [ + { + "value": "croquet", + "key": "sport" + } + ] }, { "main": [ @@ -12120,7 +13858,13 @@ "node", "closedway" ], - "name": "Hockey" + "name": "Hockey", + "tags": [ + { + "value": "hockey", + "key": "sport" + } + ] }, { "main": [ @@ -12144,7 +13888,13 @@ "node", "closedway" ], - "name": "Pelota" + "name": "Pelota", + "tags": [ + { + "value": "pelota", + "key": "sport" + } + ] }, { "main": [ @@ -12168,7 +13918,13 @@ "node", "closedway" ], - "name": "Racquet" + "name": "Racquet", + "tags": [ + { + "value": "racquet", + "key": "sport" + } + ] }, { "main": [ @@ -12192,7 +13948,13 @@ "node", "closedway" ], - "name": "Table Tennis" + "name": "Table Tennis", + "tags": [ + { + "value": "table_tennis", + "key": "sport" + } + ] }, { "main": [ @@ -12216,7 +13978,13 @@ "node", "closedway" ], - "name": "Tennis" + "name": "Tennis", + "tags": [ + { + "value": "tennis", + "key": "sport" + } + ] }, { "main": [ @@ -12241,7 +14009,13 @@ "node", "closedway" ], - "name": "Motorsport" + "name": "Motorsport", + "tags": [ + { + "value": "motor", + "key": "sport" + } + ] }, { "main": [ @@ -12265,7 +14039,13 @@ "node", "closedway" ], - "name": "Karting" + "name": "Karting", + "tags": [ + { + "value": "karting", + "key": "sport" + } + ] }, { "main": [ @@ -12289,7 +14069,13 @@ "node", "closedway" ], - "name": "Motocross" + "name": "Motocross", + "tags": [ + { + "value": "motocross", + "key": "sport" + } + ] }, { "main": [ @@ -12313,7 +14099,13 @@ "node", "closedway" ], - "name": "Safety Training" + "name": "Safety Training", + "tags": [ + { + "value": "safety_training", + "key": "sport" + } + ] }, { "main": [ @@ -12337,7 +14129,13 @@ "node", "closedway" ], - "name": "Model Aerodrome" + "name": "Model Aerodrome", + "tags": [ + { + "value": "model_aerodrome", + "key": "sport" + } + ] }, { "main": [ @@ -12361,7 +14159,13 @@ "node", "closedway" ], - "name": "RC Car" + "name": "RC Car", + "tags": [ + { + "value": "rc_car", + "key": "sport" + } + ] }, { "main": [ @@ -12396,7 +14200,8 @@ "closedway", "relation" ], - "name": "Building" + "name": "Building", + "tags": [] }, { "main": [ @@ -12425,7 +14230,8 @@ "closedway", "relation" ], - "name": "Residential Building" + "name": "Residential Building", + "tags": [] }, { "main": [ @@ -12458,14 +14264,26 @@ "node", "closedway" ], - "name": "Tower" + "name": "Tower", + "tags": [ + { + "value": "tower", + "key": "man_made" + } + ] }, { "main": [], "type": [ "node" ], - "name": "Flagpole" + "name": "Flagpole", + "tags": [ + { + "value": "flagpole", + "key": "man_made" + } + ] }, { "main": [ @@ -12479,7 +14297,13 @@ "node", "closedway" ], - "name": "Works" + "name": "Works", + "tags": [ + { + "value": "works", + "key": "man_made" + } + ] }, { "main": [ @@ -12502,7 +14326,13 @@ "type": [ "node" ], - "name": "Chimney" + "name": "Chimney", + "tags": [ + { + "value": "chimney", + "key": "man_made" + } + ] }, { "main": [ @@ -12516,7 +14346,13 @@ "node", "closedway" ], - "name": "Windmill" + "name": "Windmill", + "tags": [ + { + "value": "windmill", + "key": "man_made" + } + ] }, { "main": [ @@ -12530,7 +14366,13 @@ "node", "closedway" ], - "name": "Gasometer" + "name": "Gasometer", + "tags": [ + { + "value": "gasometer", + "key": "man_made" + } + ] }, { "main": [ @@ -12565,7 +14407,13 @@ "type": [ "way" ], - "name": "Pipeline" + "name": "Pipeline", + "tags": [ + { + "value": "pipeline", + "key": "man_made" + } + ] }, { "main": [ @@ -12579,7 +14427,13 @@ "node", "closedway" ], - "name": "Crane" + "name": "Crane", + "tags": [ + { + "value": "crane", + "key": "man_made" + } + ] }, { "main": [ @@ -12651,7 +14505,13 @@ "node", "closedway" ], - "name": "Mineshaft" + "name": "Mineshaft", + "tags": [ + { + "value": "mineshaft", + "key": "man_made" + } + ] }, { "main": [ @@ -12704,7 +14564,13 @@ "type": [ "node" ], - "name": "Adit" + "name": "Adit", + "tags": [ + { + "value": "adit", + "key": "man_made" + } + ] }, { "main": [ @@ -12718,7 +14584,13 @@ "node", "closedway" ], - "name": "Water Tower" + "name": "Water Tower", + "tags": [ + { + "value": "water_tower", + "key": "man_made" + } + ] }, { "main": [ @@ -12737,7 +14609,13 @@ "node", "closedway" ], - "name": "Water Works" + "name": "Water Works", + "tags": [ + { + "value": "water_works", + "key": "man_made" + } + ] }, { "main": [ @@ -12751,7 +14629,13 @@ "node", "closedway" ], - "name": "Wastewater Plant" + "name": "Wastewater Plant", + "tags": [ + { + "value": "wastewater_plant", + "key": "man_made" + } + ] }, { "main": [ @@ -12764,7 +14648,13 @@ "type": [ "node" ], - "name": "Watermill" + "name": "Watermill", + "tags": [ + { + "value": "watermill", + "key": "man_made" + } + ] }, { "main": [ @@ -12778,7 +14668,13 @@ "node", "closedway" ], - "name": "Fountain" + "name": "Fountain", + "tags": [ + { + "value": "fountain", + "key": "amenity" + } + ] }, { "main": [ @@ -12791,7 +14687,13 @@ "type": [ "node" ], - "name": "Water Well" + "name": "Water Well", + "tags": [ + { + "value": "water_well", + "key": "man_made" + } + ] }, { "main": [ @@ -12805,7 +14707,13 @@ "node", "closedway" ], - "name": "Lighthouse" + "name": "Lighthouse", + "tags": [ + { + "value": "lighthouse", + "key": "man_made" + } + ] }, { "main": [ @@ -12818,7 +14726,13 @@ "type": [ "node" ], - "name": "Beacon" + "name": "Beacon", + "tags": [ + { + "value": "beacon", + "key": "man_made" + } + ] }, { "main": [ @@ -12834,7 +14748,13 @@ "type": [ "node" ], - "name": "Street Lamp" + "name": "Street Lamp", + "tags": [ + { + "value": "street_lamp", + "key": "highway" + } + ] }, { "main": [ @@ -12885,7 +14805,13 @@ "node", "closedway" ], - "name": "Measurement Station" + "name": "Measurement Station", + "tags": [ + { + "value": "measurement_station", + "key": "man_made" + } + ] }, { "main": [ @@ -12898,7 +14824,13 @@ "type": [ "node" ], - "name": "Survey Point" + "name": "Survey Point", + "tags": [ + { + "value": "survey_point", + "key": "man_made" + } + ] }, { "main": [ @@ -12922,7 +14854,13 @@ "node", "closedway" ], - "name": "Surveillance" + "name": "Surveillance", + "tags": [ + { + "value": "surveillance", + "key": "man_made" + } + ] }, { "main": [ @@ -13087,7 +15025,13 @@ "node", "closedway" ], - "name": "Power Generator" + "name": "Power Generator", + "tags": [ + { + "value": "generator", + "key": "power" + } + ] }, { "main": [ @@ -13111,7 +15055,13 @@ "node", "closedway" ], - "name": "Power Station" + "name": "Power Station", + "tags": [ + { + "value": "station", + "key": "power" + } + ] }, { "main": [ @@ -13130,7 +15080,13 @@ "node", "closedway" ], - "name": "Power Sub Station" + "name": "Power Sub Station", + "tags": [ + { + "value": "sub_station", + "key": "power" + } + ] }, { "main": [ @@ -13148,7 +15104,13 @@ "type": [ "node" ], - "name": "Cable Distribution Cabinet" + "name": "Cable Distribution Cabinet", + "tags": [ + { + "value": "cable_distribution_cabinet", + "key": "power" + } + ] }, { "main": [ @@ -13161,7 +15123,13 @@ "type": [ "node" ], - "name": "Power Tower" + "name": "Power Tower", + "tags": [ + { + "value": "tower", + "key": "power" + } + ] }, { "main": [ @@ -13174,7 +15142,13 @@ "type": [ "node" ], - "name": "Pole" + "name": "Pole", + "tags": [ + { + "value": "pole", + "key": "power" + } + ] }, { "main": [ @@ -13232,7 +15206,8 @@ "type": [ "way" ], - "name": "Power Line" + "name": "Power Line", + "tags": [] }, { "main": [ @@ -13251,7 +15226,13 @@ "node", "closedway" ], - "name": "Castle" + "name": "Castle", + "tags": [ + { + "value": "castle", + "key": "historic" + } + ] }, { "main": [ @@ -13275,7 +15256,13 @@ "node", "closedway" ], - "name": "Ruins" + "name": "Ruins", + "tags": [ + { + "value": "ruins", + "key": "historic" + } + ] }, { "main": [ @@ -13299,7 +15286,13 @@ "node", "closedway" ], - "name": "Archaeological Site" + "name": "Archaeological Site", + "tags": [ + { + "value": "archaeological_site", + "key": "historic" + } + ] }, { "main": [ @@ -13313,7 +15306,13 @@ "node", "closedway" ], - "name": "Battlefield" + "name": "Battlefield", + "tags": [ + { + "value": "battlefield", + "key": "historic" + } + ] }, { "main": [ @@ -13327,7 +15326,13 @@ "node", "closedway" ], - "name": "Palaeontological Site" + "name": "Palaeontological Site", + "tags": [ + { + "value": "palaeontological_site", + "key": "geological" + } + ] }, { "main": [ @@ -13341,7 +15346,13 @@ "node", "closedway" ], - "name": "Monument" + "name": "Monument", + "tags": [ + { + "value": "monument", + "key": "historic" + } + ] }, { "main": [ @@ -13355,7 +15366,13 @@ "node", "closedway" ], - "name": "Memorial" + "name": "Memorial", + "tags": [ + { + "value": "memorial", + "key": "historic" + } + ] }, { "main": [ @@ -13369,7 +15386,13 @@ "node", "closedway" ], - "name": "Wayside Cross" + "name": "Wayside Cross", + "tags": [ + { + "value": "wayside_cross", + "key": "historic" + } + ] }, { "main": [ @@ -13383,7 +15406,13 @@ "node", "closedway" ], - "name": "Wayside Shrine" + "name": "Wayside Shrine", + "tags": [ + { + "value": "wayside_shrine", + "key": "historic" + } + ] }, { "main": [ @@ -13397,7 +15426,13 @@ "node", "closedway" ], - "name": "Boundary Stone" + "name": "Boundary Stone", + "tags": [ + { + "value": "boundary_stone", + "key": "historic" + } + ] }, { "main": [ @@ -13421,7 +15456,13 @@ "node", "closedway" ], - "name": "Supermarket" + "name": "Supermarket", + "tags": [ + { + "value": "supermarket", + "key": "shop" + } + ] }, { "main": [ @@ -13445,7 +15486,13 @@ "node", "closedway" ], - "name": "Convenience Store" + "name": "Convenience Store", + "tags": [ + { + "value": "convenience", + "key": "shop" + } + ] }, { "main": [ @@ -13469,7 +15516,13 @@ "node", "closedway" ], - "name": "Kiosk" + "name": "Kiosk", + "tags": [ + { + "value": "kiosk", + "key": "shop" + } + ] }, { "main": [ @@ -13493,7 +15546,13 @@ "node", "closedway" ], - "name": "Baker" + "name": "Baker", + "tags": [ + { + "value": "bakery", + "key": "shop" + } + ] }, { "main": [ @@ -13517,7 +15576,13 @@ "node", "closedway" ], - "name": "Butcher" + "name": "Butcher", + "tags": [ + { + "value": "butcher", + "key": "shop" + } + ] }, { "main": [ @@ -13546,7 +15611,13 @@ "node", "closedway" ], - "name": "Seafood" + "name": "Seafood", + "tags": [ + { + "value": "seafood", + "key": "shop" + } + ] }, { "main": [ @@ -13575,7 +15646,13 @@ "node", "closedway" ], - "name": "Deli (Fine Food)" + "name": "Deli (Fine Food)", + "tags": [ + { + "value": "deli", + "key": "shop" + } + ] }, { "main": [ @@ -13599,7 +15676,13 @@ "node", "closedway" ], - "name": "Confectionery" + "name": "Confectionery", + "tags": [ + { + "value": "confectionery", + "key": "shop" + } + ] }, { "main": [ @@ -13629,7 +15712,13 @@ "way", "closedway" ], - "name": "Marketplace" + "name": "Marketplace", + "tags": [ + { + "value": "marketplace", + "key": "amenity" + } + ] }, { "main": [ @@ -13658,7 +15747,13 @@ "node", "closedway" ], - "name": "Greengrocer" + "name": "Greengrocer", + "tags": [ + { + "value": "greengrocer", + "key": "shop" + } + ] }, { "main": [ @@ -13677,7 +15772,8 @@ "node", "closedway" ], - "name": "Organic" + "name": "Organic", + "tags": [] }, { "main": [ @@ -13696,7 +15792,8 @@ "node", "closedway" ], - "name": "Fair Trade" + "name": "Fair Trade", + "tags": [] }, { "main": [ @@ -13720,7 +15817,13 @@ "node", "closedway" ], - "name": "Alcohol" + "name": "Alcohol", + "tags": [ + { + "value": "alcohol", + "key": "shop" + } + ] }, { "main": [ @@ -13744,7 +15847,13 @@ "node", "closedway" ], - "name": "Beverages" + "name": "Beverages", + "tags": [ + { + "value": "beverages", + "key": "shop" + } + ] }, { "main": [ @@ -13768,7 +15877,13 @@ "node", "closedway" ], - "name": "Clothes" + "name": "Clothes", + "tags": [ + { + "value": "clothes", + "key": "shop" + } + ] }, { "main": [ @@ -13797,7 +15912,13 @@ "node", "closedway" ], - "name": "Boutique" + "name": "Boutique", + "tags": [ + { + "value": "boutique", + "key": "shop" + } + ] }, { "main": [ @@ -13821,7 +15942,13 @@ "node", "closedway" ], - "name": "Shoes" + "name": "Shoes", + "tags": [ + { + "value": "shoes", + "key": "shop" + } + ] }, { "main": [ @@ -13845,7 +15972,13 @@ "node", "closedway" ], - "name": "Outdoor" + "name": "Outdoor", + "tags": [ + { + "value": "outdoor", + "key": "shop" + } + ] }, { "main": [ @@ -13869,7 +16002,13 @@ "node", "closedway" ], - "name": "Sports" + "name": "Sports", + "tags": [ + { + "value": "sports", + "key": "shop" + } + ] }, { "main": [ @@ -13893,7 +16032,13 @@ "node", "closedway" ], - "name": "Dry Cleaning" + "name": "Dry Cleaning", + "tags": [ + { + "value": "dry_cleaning", + "key": "shop" + } + ] }, { "main": [ @@ -13917,7 +16062,13 @@ "node", "closedway" ], - "name": "Laundry" + "name": "Laundry", + "tags": [ + { + "value": "laundry", + "key": "shop" + } + ] }, { "main": [ @@ -13941,7 +16092,13 @@ "node", "closedway" ], - "name": "Tailor" + "name": "Tailor", + "tags": [ + { + "value": "tailor", + "key": "shop" + } + ] }, { "main": [ @@ -13970,7 +16127,13 @@ "node", "closedway" ], - "name": "Fabric" + "name": "Fabric", + "tags": [ + { + "value": "fabric", + "key": "shop" + } + ] }, { "main": [ @@ -13994,7 +16157,13 @@ "node", "closedway" ], - "name": "Computer" + "name": "Computer", + "tags": [ + { + "value": "computer", + "key": "shop" + } + ] }, { "main": [ @@ -14018,7 +16187,13 @@ "node", "closedway" ], - "name": "Electronics" + "name": "Electronics", + "tags": [ + { + "value": "electronics", + "key": "shop" + } + ] }, { "main": [ @@ -14047,7 +16222,13 @@ "node", "closedway" ], - "name": "Mobile Phone" + "name": "Mobile Phone", + "tags": [ + { + "value": "mobile_phone", + "key": "shop" + } + ] }, { "main": [ @@ -14076,7 +16257,13 @@ "node", "closedway" ], - "name": "Vacuum Cleaner" + "name": "Vacuum Cleaner", + "tags": [ + { + "value": "vacuum_cleaner", + "key": "shop" + } + ] }, { "main": [ @@ -14100,7 +16287,13 @@ "node", "closedway" ], - "name": "Hifi" + "name": "Hifi", + "tags": [ + { + "value": "hifi", + "key": "shop" + } + ] }, { "main": [ @@ -14124,7 +16317,13 @@ "node", "closedway" ], - "name": "Video" + "name": "Video", + "tags": [ + { + "value": "video", + "key": "shop" + } + ] }, { "main": [ @@ -14159,7 +16358,13 @@ "node", "closedway" ], - "name": "Bank" + "name": "Bank", + "tags": [ + { + "value": "bank", + "key": "amenity" + } + ] }, { "main": [ @@ -14183,7 +16388,13 @@ "node", "closedway" ], - "name": "Money Exchange" + "name": "Money Exchange", + "tags": [ + { + "value": "bureau_de_change", + "key": "amenity" + } + ] }, { "main": [ @@ -14196,7 +16407,13 @@ "type": [ "node" ], - "name": "Automated Teller Machine" + "name": "Automated Teller Machine", + "tags": [ + { + "value": "atm", + "key": "amenity" + } + ] }, { "main": [ @@ -14225,7 +16442,13 @@ "node", "closedway" ], - "name": "Department Store" + "name": "Department Store", + "tags": [ + { + "value": "department_store", + "key": "shop" + } + ] }, { "main": [ @@ -14254,7 +16477,13 @@ "node", "closedway" ], - "name": "Mall" + "name": "Mall", + "tags": [ + { + "value": "mall", + "key": "shop" + } + ] }, { "main": [ @@ -14278,7 +16507,13 @@ "node", "closedway" ], - "name": "Chemist" + "name": "Chemist", + "tags": [ + { + "value": "chemist", + "key": "shop" + } + ] }, { "main": [ @@ -14302,7 +16537,13 @@ "node", "closedway" ], - "name": "Hairdresser" + "name": "Hairdresser", + "tags": [ + { + "value": "hairdresser", + "key": "shop" + } + ] }, { "main": [ @@ -14326,7 +16567,13 @@ "node", "closedway" ], - "name": "Optician" + "name": "Optician", + "tags": [ + { + "value": "optician", + "key": "shop" + } + ] }, { "main": [ @@ -14355,7 +16602,13 @@ "node", "closedway" ], - "name": "Jewelry" + "name": "Jewelry", + "tags": [ + { + "value": "jewelry", + "key": "shop" + } + ] }, { "main": [ @@ -14384,7 +16637,13 @@ "node", "closedway" ], - "name": "Erotic" + "name": "Erotic", + "tags": [ + { + "value": "erotic", + "key": "shop" + } + ] }, { "main": [ @@ -14408,7 +16667,13 @@ "node", "closedway" ], - "name": "Florist" + "name": "Florist", + "tags": [ + { + "value": "florist", + "key": "shop" + } + ] }, { "main": [ @@ -14432,7 +16697,13 @@ "node", "closedway" ], - "name": "Garden Centre" + "name": "Garden Centre", + "tags": [ + { + "value": "garden_centre", + "key": "shop" + } + ] }, { "main": [ @@ -14456,7 +16727,13 @@ "node", "closedway" ], - "name": "Do-it-yourself-store" + "name": "Do-it-yourself-store", + "tags": [ + { + "value": "doityourself", + "key": "shop" + } + ] }, { "main": [ @@ -14480,7 +16757,13 @@ "node", "closedway" ], - "name": "Hardware" + "name": "Hardware", + "tags": [ + { + "value": "hardware", + "key": "shop" + } + ] }, { "main": [ @@ -14509,7 +16792,13 @@ "node", "closedway" ], - "name": "Paint" + "name": "Paint", + "tags": [ + { + "value": "paint", + "key": "shop" + } + ] }, { "main": [ @@ -14533,7 +16822,13 @@ "node", "closedway" ], - "name": "Furniture" + "name": "Furniture", + "tags": [ + { + "value": "furniture", + "key": "shop" + } + ] }, { "main": [ @@ -14562,7 +16857,13 @@ "node", "closedway" ], - "name": "Kitchen" + "name": "Kitchen", + "tags": [ + { + "value": "kitchen", + "key": "shop" + } + ] }, { "main": [ @@ -14591,7 +16892,13 @@ "node", "closedway" ], - "name": "Curtain" + "name": "Curtain", + "tags": [ + { + "value": "curtain", + "key": "shop" + } + ] }, { "main": [ @@ -14620,7 +16927,13 @@ "node", "closedway" ], - "name": "Frame" + "name": "Frame", + "tags": [ + { + "value": "frame", + "key": "shop" + } + ] }, { "main": [ @@ -14644,7 +16957,13 @@ "node", "closedway" ], - "name": "Stationery" + "name": "Stationery", + "tags": [ + { + "value": "stationery", + "key": "shop" + } + ] }, { "main": [ @@ -14673,7 +16992,13 @@ "node", "closedway" ], - "name": "Copyshop" + "name": "Copyshop", + "tags": [ + { + "value": "copyshop", + "key": "shop" + } + ] }, { "main": [ @@ -14697,7 +17022,13 @@ "node", "closedway" ], - "name": "Book Store" + "name": "Book Store", + "tags": [ + { + "value": "books", + "key": "shop" + } + ] }, { "main": [ @@ -14721,7 +17052,13 @@ "node", "closedway" ], - "name": "Travel Agency" + "name": "Travel Agency", + "tags": [ + { + "value": "travel_agency", + "key": "shop" + } + ] }, { "main": [ @@ -14750,7 +17087,13 @@ "node", "closedway" ], - "name": "Musical Instrument" + "name": "Musical Instrument", + "tags": [ + { + "value": "musical_instrument", + "key": "shop" + } + ] }, { "main": [ @@ -14774,7 +17117,13 @@ "node", "closedway" ], - "name": "Toys" + "name": "Toys", + "tags": [ + { + "value": "toys", + "key": "shop" + } + ] }, { "main": [ @@ -14803,7 +17152,13 @@ "node", "closedway" ], - "name": "Variety Store" + "name": "Variety Store", + "tags": [ + { + "value": "variety_store", + "key": "shop" + } + ] }, { "main": [ @@ -14862,7 +17217,13 @@ "type": [ "node" ], - "name": "Vending machine" + "name": "Vending machine", + "tags": [ + { + "value": "vending_machine", + "key": "amenity" + } + ] }, { "main": [ @@ -14876,7 +17237,13 @@ "closedway", "relation" ], - "name": "National" + "name": "National", + "tags": [ + { + "value": "national", + "key": "boundary" + } + ] }, { "main": [ @@ -14890,7 +17257,13 @@ "closedway", "relation" ], - "name": "Administrative" + "name": "Administrative", + "tags": [ + { + "value": "administrative", + "key": "boundary" + } + ] }, { "main": [ @@ -14904,7 +17277,13 @@ "closedway", "relation" ], - "name": "Civil" + "name": "Civil", + "tags": [ + { + "value": "civil", + "key": "boundary" + } + ] }, { "main": [ @@ -14918,7 +17297,13 @@ "closedway", "relation" ], - "name": "Political" + "name": "Political", + "tags": [ + { + "value": "political", + "key": "boundary" + } + ] }, { "main": [ @@ -14932,7 +17317,13 @@ "closedway", "relation" ], - "name": "National park" + "name": "National park", + "tags": [ + { + "value": "national_park", + "key": "boundary" + } + ] }, { "main": [ @@ -14951,7 +17342,13 @@ "node", "closedway" ], - "name": "Continent" + "name": "Continent", + "tags": [ + { + "value": "continent", + "key": "place" + } + ] }, { "main": [ @@ -14970,7 +17367,13 @@ "node", "closedway" ], - "name": "Country" + "name": "Country", + "tags": [ + { + "value": "country", + "key": "place" + } + ] }, { "main": [ @@ -14989,7 +17392,13 @@ "node", "closedway" ], - "name": "State" + "name": "State", + "tags": [ + { + "value": "state", + "key": "place" + } + ] }, { "main": [ @@ -15008,7 +17417,13 @@ "node", "closedway" ], - "name": "Region" + "name": "Region", + "tags": [ + { + "value": "region", + "key": "place" + } + ] }, { "main": [ @@ -15042,7 +17457,13 @@ "node", "closedway" ], - "name": "County" + "name": "County", + "tags": [ + { + "value": "county", + "key": "place" + } + ] }, { "main": [ @@ -15076,7 +17497,13 @@ "node", "closedway" ], - "name": "City" + "name": "City", + "tags": [ + { + "value": "city", + "key": "place" + } + ] }, { "main": [ @@ -15110,7 +17537,13 @@ "node", "closedway" ], - "name": "Town" + "name": "Town", + "tags": [ + { + "value": "town", + "key": "place" + } + ] }, { "main": [ @@ -15144,7 +17577,13 @@ "node", "closedway" ], - "name": "Suburb" + "name": "Suburb", + "tags": [ + { + "value": "suburb", + "key": "place" + } + ] }, { "main": [ @@ -15178,7 +17617,13 @@ "node", "closedway" ], - "name": "Village" + "name": "Village", + "tags": [ + { + "value": "village", + "key": "place" + } + ] }, { "main": [ @@ -15212,7 +17657,13 @@ "node", "closedway" ], - "name": "Hamlet" + "name": "Hamlet", + "tags": [ + { + "value": "hamlet", + "key": "place" + } + ] }, { "main": [ @@ -15246,7 +17697,13 @@ "node", "closedway" ], - "name": "Isolated Dwelling" + "name": "Isolated Dwelling", + "tags": [ + { + "value": "isolated_dwelling", + "key": "place" + } + ] }, { "main": [ @@ -15275,7 +17732,13 @@ "node", "closedway" ], - "name": "Neighbourhood" + "name": "Neighbourhood", + "tags": [ + { + "value": "neighbourhood", + "key": "place" + } + ] }, { "main": [ @@ -15294,7 +17757,13 @@ "node", "closedway" ], - "name": "Locality" + "name": "Locality", + "tags": [ + { + "value": "locality", + "key": "place" + } + ] }, { "main": [ @@ -15317,7 +17786,13 @@ "type": [ "node" ], - "name": "Peak" + "name": "Peak", + "tags": [ + { + "value": "peak", + "key": "natural" + } + ] }, { "main": [ @@ -15341,7 +17816,13 @@ "node", "closedway" ], - "name": "Glacier" + "name": "Glacier", + "tags": [ + { + "value": "glacier", + "key": "natural" + } + ] }, { "main": [ @@ -15365,7 +17846,13 @@ "node", "closedway" ], - "name": "Volcano" + "name": "Volcano", + "tags": [ + { + "value": "volcano", + "key": "natural" + } + ] }, { "main": [ @@ -15384,7 +17871,13 @@ "node", "closedway" ], - "name": "Cave Entrance" + "name": "Cave Entrance", + "tags": [ + { + "value": "cave_entrance", + "key": "natural" + } + ] }, { "main": [ @@ -15403,7 +17896,13 @@ "node", "closedway" ], - "name": "Island" + "name": "Island", + "tags": [ + { + "value": "island", + "key": "place" + } + ] }, { "main": [ @@ -15422,7 +17921,13 @@ "node", "closedway" ], - "name": "Islet" + "name": "Islet", + "tags": [ + { + "value": "islet", + "key": "place" + } + ] }, { "main": [ @@ -15450,7 +17955,13 @@ "type": [ "node" ], - "name": "Tree" + "name": "Tree", + "tags": [ + { + "value": "tree", + "key": "natural" + } + ] }, { "main": [ @@ -15475,7 +17986,13 @@ "closedway", "relation" ], - "name": "Wood" + "name": "Wood", + "tags": [ + { + "value": "wood", + "key": "natural" + } + ] }, { "main": [ @@ -15500,7 +18017,13 @@ "closedway", "relation" ], - "name": "Forest" + "name": "Forest", + "tags": [ + { + "value": "forest", + "key": "landuse" + } + ] }, { "main": [ @@ -15515,7 +18038,13 @@ "closedway", "relation" ], - "name": "Nature Reserve" + "name": "Nature Reserve", + "tags": [ + { + "value": "nature_reserve", + "key": "leisure" + } + ] }, { "main": [ @@ -15530,7 +18059,13 @@ "closedway", "relation" ], - "name": "Scree" + "name": "Scree", + "tags": [ + { + "value": "scree", + "key": "natural" + } + ] }, { "main": [ @@ -15545,7 +18080,13 @@ "closedway", "relation" ], - "name": "Fell" + "name": "Fell", + "tags": [ + { + "value": "fell", + "key": "natural" + } + ] }, { "main": [ @@ -15560,7 +18101,13 @@ "closedway", "relation" ], - "name": "Scrub" + "name": "Scrub", + "tags": [ + { + "value": "scrub", + "key": "natural" + } + ] }, { "main": [ @@ -15575,7 +18122,13 @@ "closedway", "relation" ], - "name": "Heath" + "name": "Heath", + "tags": [ + { + "value": "heath", + "key": "natural" + } + ] }, { "main": [ @@ -15589,7 +18142,13 @@ "closedway", "relation" ], - "name": "Farmyard" + "name": "Farmyard", + "tags": [ + { + "value": "farmyard", + "key": "landuse" + } + ] }, { "main": [ @@ -15603,7 +18162,13 @@ "closedway", "relation" ], - "name": "Farmland" + "name": "Farmland", + "tags": [ + { + "value": "farmland", + "key": "landuse" + } + ] }, { "main": [ @@ -15618,7 +18183,13 @@ "closedway", "relation" ], - "name": "Meadow" + "name": "Meadow", + "tags": [ + { + "value": "meadow", + "key": "landuse" + } + ] }, { "main": [ @@ -15633,7 +18204,13 @@ "closedway", "relation" ], - "name": "Vineyard" + "name": "Vineyard", + "tags": [ + { + "value": "vineyard", + "key": "landuse" + } + ] }, { "main": [ @@ -15651,7 +18228,13 @@ "type": [ "closedway" ], - "name": "Greenhouse Horticulture" + "name": "Greenhouse Horticulture", + "tags": [ + { + "value": "greenhouse_horticulture", + "key": "landuse" + } + ] }, { "main": [ @@ -15666,7 +18249,13 @@ "closedway", "relation" ], - "name": "Allotments" + "name": "Allotments", + "tags": [ + { + "value": "allotments", + "key": "landuse" + } + ] }, { "main": [ @@ -15681,7 +18270,13 @@ "closedway", "relation" ], - "name": "Garden" + "name": "Garden", + "tags": [ + { + "value": "garden", + "key": "leisure" + } + ] }, { "main": [ @@ -15696,7 +18291,13 @@ "closedway", "relation" ], - "name": "Grass" + "name": "Grass", + "tags": [ + { + "value": "grass", + "key": "landuse" + } + ] }, { "main": [ @@ -15711,7 +18312,13 @@ "closedway", "relation" ], - "name": "Village Green" + "name": "Village Green", + "tags": [ + { + "value": "village_green", + "key": "landuse" + } + ] }, { "main": [ @@ -15726,7 +18333,13 @@ "closedway", "relation" ], - "name": "Common" + "name": "Common", + "tags": [ + { + "value": "common", + "key": "leisure" + } + ] }, { "main": [ @@ -15741,7 +18354,13 @@ "closedway", "relation" ], - "name": "Park" + "name": "Park", + "tags": [ + { + "value": "park", + "key": "leisure" + } + ] }, { "main": [ @@ -15756,7 +18375,13 @@ "closedway", "relation" ], - "name": "Recreation Ground" + "name": "Recreation Ground", + "tags": [ + { + "value": "recreation_ground", + "key": "landuse" + } + ] }, { "main": [ @@ -15770,7 +18395,13 @@ "closedway", "relation" ], - "name": "Residential area" + "name": "Residential area", + "tags": [ + { + "value": "residential", + "key": "landuse" + } + ] }, { "main": [ @@ -15826,7 +18457,13 @@ "closedway", "relation" ], - "name": "Graveyard" + "name": "Graveyard", + "tags": [ + { + "value": "grave_yard", + "key": "amenity" + } + ] }, { "main": [ @@ -15882,7 +18519,13 @@ "closedway", "relation" ], - "name": "Cemetery" + "name": "Cemetery", + "tags": [ + { + "value": "cemetery", + "key": "landuse" + } + ] }, { "main": [ @@ -15897,7 +18540,13 @@ "closedway", "relation" ], - "name": "Retail" + "name": "Retail", + "tags": [ + { + "value": "retail", + "key": "landuse" + } + ] }, { "main": [ @@ -15912,7 +18561,13 @@ "closedway", "relation" ], - "name": "Commercial" + "name": "Commercial", + "tags": [ + { + "value": "commercial", + "key": "landuse" + } + ] }, { "main": [ @@ -15927,7 +18582,13 @@ "closedway", "relation" ], - "name": "Industrial" + "name": "Industrial", + "tags": [ + { + "value": "industrial", + "key": "landuse" + } + ] }, { "main": [ @@ -15945,7 +18606,13 @@ "type": [ "closedway" ], - "name": "Garages" + "name": "Garages", + "tags": [ + { + "value": "garages", + "key": "landuse" + } + ] }, { "main": [ @@ -15959,7 +18626,13 @@ "closedway", "relation" ], - "name": "Railway land" + "name": "Railway land", + "tags": [ + { + "value": "railway", + "key": "landuse" + } + ] }, { "main": [ @@ -15974,7 +18647,13 @@ "closedway", "relation" ], - "name": "Military" + "name": "Military", + "tags": [ + { + "value": "military", + "key": "landuse" + } + ] }, { "main": [ @@ -15989,7 +18668,13 @@ "closedway", "relation" ], - "name": "Construction area" + "name": "Construction area", + "tags": [ + { + "value": "construction", + "key": "landuse" + } + ] }, { "main": [ @@ -16004,7 +18689,13 @@ "closedway", "relation" ], - "name": "Brownfield" + "name": "Brownfield", + "tags": [ + { + "value": "brownfield", + "key": "landuse" + } + ] }, { "main": [ @@ -16019,7 +18710,13 @@ "closedway", "relation" ], - "name": "Greenfield" + "name": "Greenfield", + "tags": [ + { + "value": "greenfield", + "key": "landuse" + } + ] }, { "main": [ @@ -16034,7 +18731,13 @@ "closedway", "relation" ], - "name": "Landfill" + "name": "Landfill", + "tags": [ + { + "value": "landfill", + "key": "landuse" + } + ] }, { "main": [ @@ -16049,7 +18752,13 @@ "closedway", "relation" ], - "name": "Quarry" + "name": "Quarry", + "tags": [ + { + "value": "quarry", + "key": "landuse" + } + ] }, { "main": [ @@ -16099,7 +18808,8 @@ "way", "closedway" ], - "name": "Addresses" + "name": "Addresses", + "tags": [] }, { "main": [ @@ -16118,7 +18828,8 @@ "type": [ "way" ], - "name": "Address Interpolation" + "name": "Address Interpolation", + "tags": [] }, { "main": [ @@ -16159,7 +18870,8 @@ "closedway", "relation" ], - "name": "Contact (common schema)" + "name": "Contact (common schema)", + "tags": [] }, { "main": [ @@ -16200,7 +18912,8 @@ "closedway", "relation" ], - "name": "Contact (schema with 'contact:*' prefix)" + "name": "Contact (schema with 'contact:*' prefix)", + "tags": [] }, { "main": [ @@ -16213,7 +18926,13 @@ "type": [ "relation" ], - "name": "Multipolygon" + "name": "Multipolygon", + "tags": [ + { + "value": "multipolygon", + "key": "type" + } + ] }, { "main": [ @@ -16254,7 +18973,13 @@ "type": [ "relation" ], - "name": "Boundary" + "name": "Boundary", + "tags": [ + { + "value": "boundary", + "key": "type" + } + ] }, { "main": [ @@ -16267,7 +18992,13 @@ "type": [ "relation" ], - "name": "Site" + "name": "Site", + "tags": [ + { + "value": "site", + "key": "type" + } + ] }, { "main": [ @@ -16294,7 +19025,13 @@ "type": [ "relation" ], - "name": "Turn restriction" + "name": "Turn restriction", + "tags": [ + { + "value": "restriction", + "key": "type" + } + ] }, { "main": [ @@ -16330,7 +19067,13 @@ "type": [ "relation" ], - "name": "Enforcement" + "name": "Enforcement", + "tags": [ + { + "value": "enforcement", + "key": "type" + } + ] }, { "main": [ @@ -16412,7 +19155,13 @@ "type": [ "relation" ], - "name": "Route" + "name": "Route", + "tags": [ + { + "value": "route", + "key": "type" + } + ] }, { "main": [ @@ -16460,7 +19209,13 @@ "type": [ "relation" ], - "name": "Route master" + "name": "Route master", + "tags": [ + { + "value": "route_master", + "key": "type" + } + ] }, { "main": [ @@ -16532,7 +19287,13 @@ "type": [ "relation" ], - "name": "Directional Route (North America)" + "name": "Directional Route (North America)", + "tags": [ + { + "value": "route", + "key": "type" + } + ] }, { "main": [ @@ -16555,7 +19316,13 @@ "type": [ "relation" ], - "name": "Route network" + "name": "Route network", + "tags": [ + { + "value": "network", + "key": "type" + } + ] }, { "main": [ @@ -16568,7 +19335,13 @@ "type": [ "relation" ], - "name": "Associated street" + "name": "Associated street", + "tags": [ + { + "value": "associatedStreet", + "key": "type" + } + ] }, { "main": [ @@ -16581,7 +19354,13 @@ "type": [ "relation" ], - "name": "Street" + "name": "Street", + "tags": [ + { + "value": "street", + "key": "type" + } + ] }, { "main": [ @@ -16619,7 +19398,13 @@ "type": [ "relation" ], - "name": "Destination sign" + "name": "Destination sign", + "tags": [ + { + "value": "destination_sign", + "key": "type" + } + ] }, { "main": [ @@ -16684,7 +19469,13 @@ "type": [ "relation" ], - "name": "Waterway" + "name": "Waterway", + "tags": [ + { + "value": "waterway", + "key": "type" + } + ] }, { "main": [ @@ -16735,7 +19526,13 @@ "type": [ "relation" ], - "name": "Bridge" + "name": "Bridge", + "tags": [ + { + "value": "bridge", + "key": "type" + } + ] }, { "main": [ @@ -16781,6 +19578,12 @@ "type": [ "relation" ], - "name": "Tunnel" + "name": "Tunnel", + "tags": [ + { + "value": "tunnel", + "key": "type" + } + ] } ] \ No newline at end of file From 73d8b6e2067a081eddc83861f68da0515569d4cc Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 1 Feb 2013 12:43:55 -0500 Subject: [PATCH 18/30] add presets.matchTags --- js/id/presetdata.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/js/id/presetdata.js b/js/id/presetdata.js index 09191282c..8e781d911 100644 --- a/js/id/presetdata.js +++ b/js/id/presetdata.js @@ -20,5 +20,19 @@ iD.presetData = function() { }); }; + presets.matchTags = function(entity) { + var tags, count, maxcount = 0, best; + for (var i = 0; i < data.length; i++) { + count = 0; + tags = data[i].tags; + if (!_.contains(data[i].type, entity.type)) continue; + for (var k = 0; k < tags.length; k++) { + if (entity.tags[tags[k].key] == tags[k].value) count++; + } + if (count > maxcount) best = data[i], maxcount = count; + } + return best; + }; + return presets; }; From f9b6d508da2667053bf7449b12f5eb2a08da210d Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 1 Feb 2013 12:50:10 -0500 Subject: [PATCH 19/30] Automatically select matching preset --- js/id/ui/inspector.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index 67074a290..a563715ef 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -101,6 +101,13 @@ iD.ui.inspector = function() { inspectorbody.append('div') .attr('class', 'inspector-buttons pad1 fillD') .call(drawButtons); + + var presetMatch = presetData.matchTags(entity); + if (presetMatch) { + inspectorpreset.call(presetUI + .preset(presetMatch) + .change(inspector.tags())); + } } function drawButtons(selection) { From 72675dbb83563e81ce3339d6f342eba5cafacc0b Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 1 Feb 2013 12:58:01 -0500 Subject: [PATCH 20/30] Better matching tag format for presets --- js/id/presetdata.js | 4 +- presets/convert_josm.py | 7 +- presets/presets_josm.json | 4196 ++++++++++++------------------------- 3 files changed, 1397 insertions(+), 2810 deletions(-) diff --git a/js/id/presetdata.js b/js/id/presetdata.js index 8e781d911..e3fadfb86 100644 --- a/js/id/presetdata.js +++ b/js/id/presetdata.js @@ -26,8 +26,8 @@ iD.presetData = function() { count = 0; tags = data[i].tags; if (!_.contains(data[i].type, entity.type)) continue; - for (var k = 0; k < tags.length; k++) { - if (entity.tags[tags[k].key] == tags[k].value) count++; + for (var k in tags) { + if (entity.tags[k] == tags[k]) count++; } if (count > maxcount) best = data[i], maxcount = count; } diff --git a/presets/convert_josm.py b/presets/convert_josm.py index cf1b3917b..a4d861839 100644 --- a/presets/convert_josm.py +++ b/presets/convert_josm.py @@ -33,12 +33,9 @@ def isfav(x): for item in dom1.getElementsByTagName('item'): - tags = [] + tags = {} for elem in item.getElementsByTagName('key'): - tags.append({ - 'key': elem.getAttribute('key'), - 'value': elem.getAttribute('value') - }) + tags[elem.getAttribute('key')] = elem.getAttribute('value') jitem = { "name": item.getAttribute('name'), diff --git a/presets/presets_josm.json b/presets/presets_josm.json index 932a68db9..332ad63b5 100644 --- a/presets/presets_josm.json +++ b/presets/presets_josm.json @@ -109,12 +109,9 @@ "way" ], "name": "Motorway", - "tags": [ - { - "value": "motorway", - "key": "highway" - } - ] + "tags": { + "highway": "motorway" + } }, { "main": [ @@ -216,12 +213,9 @@ "way" ], "name": "Motorway Link", - "tags": [ - { - "value": "motorway_link", - "key": "highway" - } - ] + "tags": { + "highway": "motorway_link" + } }, { "main": [ @@ -339,12 +333,9 @@ "way" ], "name": "Trunk", - "tags": [ - { - "value": "trunk", - "key": "highway" - } - ] + "tags": { + "highway": "trunk" + } }, { "main": [ @@ -457,12 +448,9 @@ "way" ], "name": "Trunk Link", - "tags": [ - { - "value": "trunk_link", - "key": "highway" - } - ] + "tags": { + "highway": "trunk_link" + } }, { "main": [ @@ -593,12 +581,9 @@ "way" ], "name": "Primary", - "tags": [ - { - "value": "primary", - "key": "highway" - } - ] + "tags": { + "highway": "primary" + } }, { "main": [ @@ -719,12 +704,9 @@ "way" ], "name": "Primary Link", - "tags": [ - { - "value": "primary_link", - "key": "highway" - } - ] + "tags": { + "highway": "primary_link" + } }, { "main": [ @@ -849,12 +831,9 @@ "way" ], "name": "Secondary", - "tags": [ - { - "value": "secondary", - "key": "highway" - } - ] + "tags": { + "highway": "secondary" + } }, { "main": [ @@ -969,12 +948,9 @@ "way" ], "name": "Secondary Link", - "tags": [ - { - "value": "secondary_link", - "key": "highway" - } - ] + "tags": { + "highway": "secondary_link" + } }, { "main": [ @@ -1099,12 +1075,9 @@ "way" ], "name": "Tertiary", - "tags": [ - { - "value": "tertiary", - "key": "highway" - } - ] + "tags": { + "highway": "tertiary" + } }, { "main": [ @@ -1219,12 +1192,9 @@ "way" ], "name": "Tertiary Link", - "tags": [ - { - "value": "tertiary_link", - "key": "highway" - } - ] + "tags": { + "highway": "tertiary_link" + } }, { "main": [ @@ -1355,12 +1325,9 @@ "way" ], "name": "Unclassified", - "tags": [ - { - "value": "unclassified", - "key": "highway" - } - ] + "tags": { + "highway": "unclassified" + } }, { "main": [ @@ -1485,12 +1452,9 @@ "way" ], "name": "Residential", - "tags": [ - { - "value": "residential", - "key": "highway" - } - ] + "tags": { + "highway": "residential" + } }, { "main": [ @@ -1598,12 +1562,9 @@ "way" ], "name": "Living Street", - "tags": [ - { - "value": "living_street", - "key": "highway" - } - ] + "tags": { + "highway": "living_street" + } }, { "main": [ @@ -1713,12 +1674,9 @@ "relation" ], "name": "Pedestrian", - "tags": [ - { - "value": "pedestrian", - "key": "highway" - } - ] + "tags": { + "highway": "pedestrian" + } }, { "main": [ @@ -1847,12 +1805,9 @@ "way" ], "name": "Service", - "tags": [ - { - "value": "service", - "key": "highway" - } - ] + "tags": { + "highway": "service" + } }, { "main": [ @@ -1895,16 +1850,10 @@ "way" ], "name": "Parking Aisle", - "tags": [ - { - "value": "service", - "key": "highway" - }, - { - "value": "parking_aisle", - "key": "service" - } - ] + "tags": { + "service": "parking_aisle", + "highway": "service" + } }, { "main": [ @@ -2017,12 +1966,9 @@ "way" ], "name": "Road (Unknown Type)", - "tags": [ - { - "value": "road", - "key": "highway" - } - ] + "tags": { + "highway": "road" + } }, { "main": [ @@ -2145,12 +2091,9 @@ "way" ], "name": "Construction", - "tags": [ - { - "value": "construction", - "key": "highway" - } - ] + "tags": { + "highway": "construction" + } }, { "main": [ @@ -2439,7 +2382,7 @@ "way" ], "name": "Road Restrictions", - "tags": [] + "tags": {} }, { "main": [ @@ -2553,12 +2496,9 @@ "closedway" ], "name": "Roundabout", - "tags": [ - { - "value": "roundabout", - "key": "junction" - } - ] + "tags": { + "junction": "roundabout" + } }, { "main": [ @@ -2629,7 +2569,7 @@ "way" ], "name": "Bridge", - "tags": [] + "tags": {} }, { "main": [ @@ -2684,12 +2624,9 @@ "way" ], "name": "Tunnel", - "tags": [ - { - "value": "yes", - "key": "tunnel" - } - ] + "tags": { + "tunnel": "yes" + } }, { "main": [ @@ -2717,12 +2654,9 @@ "way" ], "name": "Ford", - "tags": [ - { - "value": "yes", - "key": "ford" - } - ] + "tags": { + "ford": "yes" + } }, { "main": [ @@ -2915,12 +2849,9 @@ "way" ], "name": "Track", - "tags": [ - { - "value": "track", - "key": "highway" - } - ] + "tags": { + "highway": "track" + } }, { "main": [ @@ -3151,12 +3082,9 @@ "way" ], "name": "Path", - "tags": [ - { - "value": "path", - "key": "highway" - } - ] + "tags": { + "highway": "path" + } }, { "main": [ @@ -3269,12 +3197,9 @@ "way" ], "name": "Dedicated Bridleway", - "tags": [ - { - "value": "bridleway", - "key": "highway" - } - ] + "tags": { + "highway": "bridleway" + } }, { "main": [ @@ -3358,7 +3283,7 @@ "way" ], "name": "Cycle Lane", - "tags": [] + "tags": {} }, { "main": [ @@ -3476,12 +3401,9 @@ "way" ], "name": "Dedicated Cycleway", - "tags": [ - { - "value": "cycleway", - "key": "highway" - } - ] + "tags": { + "highway": "cycleway" + } }, { "main": [ @@ -3589,24 +3511,12 @@ "way" ], "name": "Segregated Foot- and Cycleway", - "tags": [ - { - "value": "path", - "key": "highway" - }, - { - "value": "designated", - "key": "bicycle" - }, - { - "value": "designated", - "key": "foot" - }, - { - "value": "yes", - "key": "segregated" - } - ] + "tags": { + "foot": "designated", + "bicycle": "designated", + "segregated": "yes", + "highway": "path" + } }, { "main": [ @@ -3720,24 +3630,12 @@ "way" ], "name": "Combined Foot- and Cycleway", - "tags": [ - { - "value": "path", - "key": "highway" - }, - { - "value": "designated", - "key": "bicycle" - }, - { - "value": "designated", - "key": "foot" - }, - { - "value": "no", - "key": "segregated" - } - ] + "tags": { + "foot": "designated", + "bicycle": "designated", + "segregated": "no", + "highway": "path" + } }, { "main": [ @@ -3845,12 +3743,9 @@ "way" ], "name": "Dedicated Footway", - "tags": [ - { - "value": "footway", - "key": "highway" - } - ] + "tags": { + "highway": "footway" + } }, { "main": [ @@ -3950,12 +3845,9 @@ "way" ], "name": "Steps", - "tags": [ - { - "value": "steps", - "key": "highway" - } - ] + "tags": { + "highway": "steps" + } }, { "main": [ @@ -3979,12 +3871,9 @@ "node" ], "name": "Motorway Junction", - "tags": [ - { - "value": "motorway_junction", - "key": "highway" - } - ] + "tags": { + "highway": "motorway_junction" + } }, { "main": [ @@ -4011,12 +3900,9 @@ "relation" ], "name": "Services", - "tags": [ - { - "value": "services", - "key": "highway" - } - ] + "tags": { + "highway": "services" + } }, { "main": [ @@ -4037,12 +3923,9 @@ "closedway" ], "name": "Rest Area", - "tags": [ - { - "value": "rest_area", - "key": "highway" - } - ] + "tags": { + "highway": "rest_area" + } }, { "main": [], @@ -4050,12 +3933,9 @@ "node" ], "name": "Emergency Phone", - "tags": [ - { - "value": "emergency_phone", - "key": "amenity" - } - ] + "tags": { + "amenity": "emergency_phone" + } }, { "main": [ @@ -4108,12 +3988,9 @@ "node" ], "name": "Traffic Signal", - "tags": [ - { - "value": "traffic_signals", - "key": "highway" - } - ] + "tags": { + "highway": "traffic_signals" + } }, { "main": [], @@ -4121,12 +3998,9 @@ "node" ], "name": "Stop", - "tags": [ - { - "value": "stop", - "key": "highway" - } - ] + "tags": { + "highway": "stop" + } }, { "main": [ @@ -4143,12 +4017,9 @@ "node" ], "name": "Mini-roundabout", - "tags": [ - { - "value": "mini_roundabout", - "key": "highway" - } - ] + "tags": { + "highway": "mini_roundabout" + } }, { "main": [ @@ -4201,12 +4072,9 @@ "node" ], "name": "Pedestrian Crossing", - "tags": [ - { - "value": "crossing", - "key": "highway" - } - ] + "tags": { + "highway": "crossing" + } }, { "main": [ @@ -4229,7 +4097,7 @@ "node" ], "name": "Traffic Calming", - "tags": [] + "tags": {} }, { "main": [], @@ -4237,12 +4105,9 @@ "node" ], "name": "Passing Place", - "tags": [ - { - "value": "passing_place", - "key": "highway" - } - ] + "tags": { + "highway": "passing_place" + } }, { "main": [], @@ -4250,12 +4115,9 @@ "node" ], "name": "Turning Circle", - "tags": [ - { - "value": "turning_circle", - "key": "highway" - } - ] + "tags": { + "highway": "turning_circle" + } }, { "main": [ @@ -4274,12 +4136,9 @@ "node" ], "name": "City Limit", - "tags": [ - { - "value": "city_limit", - "key": "traffic_sign" - } - ] + "tags": { + "traffic_sign": "city_limit" + } }, { "main": [], @@ -4287,12 +4146,9 @@ "node" ], "name": "Speed Camera", - "tags": [ - { - "value": "speed_camera", - "key": "highway" - } - ] + "tags": { + "highway": "speed_camera" + } }, { "main": [], @@ -4300,12 +4156,9 @@ "node" ], "name": "Grit Bin", - "tags": [ - { - "value": "grit_bin", - "key": "amenity" - } - ] + "tags": { + "amenity": "grit_bin" + } }, { "main": [ @@ -4329,12 +4182,9 @@ "node" ], "name": "Mountain Pass", - "tags": [ - { - "value": "yes", - "key": "mountain_pass" - } - ] + "tags": { + "mountain_pass": "yes" + } }, { "main": [ @@ -4368,12 +4218,9 @@ "way" ], "name": "Bollard", - "tags": [ - { - "value": "bollard", - "key": "barrier" - } - ] + "tags": { + "barrier": "bollard" + } }, { "main": [ @@ -4406,12 +4253,9 @@ "node" ], "name": "Cycle Barrier", - "tags": [ - { - "value": "cycle_barrier", - "key": "barrier" - } - ] + "tags": { + "barrier": "cycle_barrier" + } }, { "main": [ @@ -4446,12 +4290,9 @@ "closedway" ], "name": "Block", - "tags": [ - { - "value": "block", - "key": "barrier" - } - ] + "tags": { + "barrier": "block" + } }, { "main": [ @@ -4484,12 +4325,9 @@ "node" ], "name": "Cattle Grid", - "tags": [ - { - "value": "cattle_grid", - "key": "barrier" - } - ] + "tags": { + "barrier": "cattle_grid" + } }, { "main": [], @@ -4497,12 +4335,9 @@ "node" ], "name": "Bus Trap", - "tags": [ - { - "value": "bus_trap", - "key": "barrier" - } - ] + "tags": { + "barrier": "bus_trap" + } }, { "main": [ @@ -4541,12 +4376,9 @@ "node" ], "name": "Spikes", - "tags": [ - { - "value": "spikes", - "key": "barrier" - } - ] + "tags": { + "barrier": "spikes" + } }, { "main": [ @@ -4566,12 +4398,9 @@ "closedway" ], "name": "Toll Booth", - "tags": [ - { - "value": "toll_booth", - "key": "barrier" - } - ] + "tags": { + "barrier": "toll_booth" + } }, { "main": [ @@ -4610,12 +4439,9 @@ "node" ], "name": "Border Control", - "tags": [ - { - "value": "border_control", - "key": "barrier" - } - ] + "tags": { + "barrier": "border_control" + } }, { "main": [], @@ -4625,12 +4451,9 @@ "relation" ], "name": "Hedge", - "tags": [ - { - "value": "hedge", - "key": "barrier" - } - ] + "tags": { + "barrier": "hedge" + } }, { "main": [ @@ -4654,12 +4477,9 @@ "closedway" ], "name": "Fence", - "tags": [ - { - "value": "fence", - "key": "barrier" - } - ] + "tags": { + "barrier": "fence" + } }, { "main": [], @@ -4668,12 +4488,9 @@ "closedway" ], "name": "Wall", - "tags": [ - { - "value": "wall", - "key": "barrier" - } - ] + "tags": { + "barrier": "wall" + } }, { "main": [], @@ -4682,12 +4499,9 @@ "closedway" ], "name": "City Wall", - "tags": [ - { - "value": "city_wall", - "key": "barrier" - } - ] + "tags": { + "barrier": "city_wall" + } }, { "main": [], @@ -4696,12 +4510,9 @@ "closedway" ], "name": "Retaining Wall", - "tags": [ - { - "value": "retaining_wall", - "key": "barrier" - } - ] + "tags": { + "barrier": "retaining_wall" + } }, { "main": [ @@ -4715,12 +4526,9 @@ "way" ], "name": "Ditch", - "tags": [ - { - "value": "ditch", - "key": "barrier" - } - ] + "tags": { + "barrier": "ditch" + } }, { "main": [ @@ -4759,12 +4567,9 @@ "node" ], "name": "Entrance", - "tags": [ - { - "value": "entrance", - "key": "barrier" - } - ] + "tags": { + "barrier": "entrance" + } }, { "main": [ @@ -4803,12 +4608,9 @@ "node" ], "name": "Gate", - "tags": [ - { - "value": "gate", - "key": "barrier" - } - ] + "tags": { + "barrier": "gate" + } }, { "main": [ @@ -4847,12 +4649,9 @@ "node" ], "name": "Lift Gate", - "tags": [ - { - "value": "lift_gate", - "key": "barrier" - } - ] + "tags": { + "barrier": "lift_gate" + } }, { "main": [ @@ -4891,12 +4690,9 @@ "node" ], "name": "Hampshire Gate", - "tags": [ - { - "value": "hampshire_gate", - "key": "barrier" - } - ] + "tags": { + "barrier": "hampshire_gate" + } }, { "main": [ @@ -4935,12 +4731,9 @@ "node" ], "name": "Bump Gate", - "tags": [ - { - "value": "bump_gate", - "key": "barrier" - } - ] + "tags": { + "barrier": "bump_gate" + } }, { "main": [ @@ -4961,12 +4754,9 @@ "node" ], "name": "Kissing Gate", - "tags": [ - { - "value": "kissing_gate", - "key": "barrier" - } - ] + "tags": { + "barrier": "kissing_gate" + } }, { "main": [ @@ -4987,12 +4777,9 @@ "node" ], "name": "Stile", - "tags": [ - { - "value": "stile", - "key": "barrier" - } - ] + "tags": { + "barrier": "stile" + } }, { "main": [ @@ -5013,12 +4800,9 @@ "node" ], "name": "Turnstile", - "tags": [ - { - "value": "turnstile", - "key": "barrier" - } - ] + "tags": { + "barrier": "turnstile" + } }, { "main": [ @@ -5057,12 +4841,9 @@ "node" ], "name": "Sally Port", - "tags": [ - { - "value": "sally_port", - "key": "barrier" - } - ] + "tags": { + "barrier": "sally_port" + } }, { "main": [ @@ -5094,12 +4875,9 @@ "way" ], "name": "Drain", - "tags": [ - { - "value": "drain", - "key": "waterway" - } - ] + "tags": { + "waterway": "drain" + } }, { "main": [ @@ -5131,12 +4909,9 @@ "way" ], "name": "Ditch", - "tags": [ - { - "value": "ditch", - "key": "waterway" - } - ] + "tags": { + "waterway": "ditch" + } }, { "main": [ @@ -5168,12 +4943,9 @@ "way" ], "name": "Stream", - "tags": [ - { - "value": "stream", - "key": "waterway" - } - ] + "tags": { + "waterway": "stream" + } }, { "main": [ @@ -5210,12 +4982,9 @@ "way" ], "name": "Canal", - "tags": [ - { - "value": "canal", - "key": "waterway" - } - ] + "tags": { + "waterway": "canal" + } }, { "main": [ @@ -5252,12 +5021,9 @@ "way" ], "name": "River", - "tags": [ - { - "value": "river", - "key": "waterway" - } - ] + "tags": { + "waterway": "river" + } }, { "main": [ @@ -5272,12 +5038,9 @@ "closedway" ], "name": "Spring", - "tags": [ - { - "value": "spring", - "key": "natural" - } - ] + "tags": { + "natural": "spring" + } }, { "main": [ @@ -5297,12 +5060,9 @@ "way" ], "name": "Waterfall", - "tags": [ - { - "value": "waterfall", - "key": "waterway" - } - ] + "tags": { + "waterway": "waterfall" + } }, { "main": [ @@ -5317,12 +5077,9 @@ "way" ], "name": "Weir", - "tags": [ - { - "value": "weir", - "key": "waterway" - } - ] + "tags": { + "waterway": "weir" + } }, { "main": [ @@ -5343,12 +5100,9 @@ "closedway" ], "name": "Dam", - "tags": [ - { - "value": "dam", - "key": "waterway" - } - ] + "tags": { + "waterway": "dam" + } }, { "main": [], @@ -5358,12 +5112,9 @@ "closedway" ], "name": "Groyne", - "tags": [ - { - "value": "groyne", - "key": "man_made" - } - ] + "tags": { + "man_made": "groyne" + } }, { "main": [ @@ -5383,12 +5134,9 @@ "closedway" ], "name": "Breakwater", - "tags": [ - { - "value": "breakwater", - "key": "man_made" - } - ] + "tags": { + "man_made": "breakwater" + } }, { "main": [ @@ -5404,12 +5152,9 @@ "relation" ], "name": "Basin", - "tags": [ - { - "value": "basin", - "key": "landuse" - } - ] + "tags": { + "landuse": "basin" + } }, { "main": [ @@ -5425,12 +5170,9 @@ "relation" ], "name": "Reservoir", - "tags": [ - { - "value": "reservoir", - "key": "landuse" - } - ] + "tags": { + "landuse": "reservoir" + } }, { "main": [ @@ -5446,12 +5188,9 @@ "relation" ], "name": "Covered Reservoir", - "tags": [ - { - "value": "reservoir_covered", - "key": "man_made" - } - ] + "tags": { + "man_made": "reservoir_covered" + } }, { "main": [ @@ -5467,12 +5206,9 @@ "relation" ], "name": "Water", - "tags": [ - { - "value": "water", - "key": "natural" - } - ] + "tags": { + "natural": "water" + } }, { "main": [ @@ -5488,12 +5224,9 @@ "relation" ], "name": "Land", - "tags": [ - { - "value": "land", - "key": "natural" - } - ] + "tags": { + "natural": "land" + } }, { "main": [ @@ -5510,12 +5243,9 @@ "relation" ], "name": "Coastline", - "tags": [ - { - "value": "coastline", - "key": "natural" - } - ] + "tags": { + "natural": "coastline" + } }, { "main": [ @@ -5530,12 +5260,9 @@ "relation" ], "name": "Riverbank", - "tags": [ - { - "value": "riverbank", - "key": "waterway" - } - ] + "tags": { + "waterway": "riverbank" + } }, { "main": [ @@ -5565,12 +5292,9 @@ "relation" ], "name": "Wetland", - "tags": [ - { - "value": "wetland", - "key": "natural" - } - ] + "tags": { + "natural": "wetland" + } }, { "main": [ @@ -5586,12 +5310,9 @@ "relation" ], "name": "Mud", - "tags": [ - { - "value": "mud", - "key": "natural" - } - ] + "tags": { + "natural": "mud" + } }, { "main": [ @@ -5607,12 +5328,9 @@ "relation" ], "name": "Beach", - "tags": [ - { - "value": "beach", - "key": "natural" - } - ] + "tags": { + "natural": "beach" + } }, { "main": [ @@ -5628,12 +5346,9 @@ "relation" ], "name": "Bay", - "tags": [ - { - "value": "bay", - "key": "natural" - } - ] + "tags": { + "natural": "bay" + } }, { "main": [ @@ -5650,12 +5365,9 @@ "relation" ], "name": "Cliff", - "tags": [ - { - "value": "cliff", - "key": "natural" - } - ] + "tags": { + "natural": "cliff" + } }, { "main": [ @@ -5682,12 +5394,9 @@ "closedway" ], "name": "Ferry Terminal", - "tags": [ - { - "value": "ferry_terminal", - "key": "amenity" - } - ] + "tags": { + "amenity": "ferry_terminal" + } }, { "main": [ @@ -5702,12 +5411,9 @@ "closedway" ], "name": "Ferry Route", - "tags": [ - { - "value": "ferry", - "key": "route" - } - ] + "tags": { + "route": "ferry" + } }, { "main": [ @@ -5722,12 +5428,9 @@ "closedway" ], "name": "Marina", - "tags": [ - { - "value": "marina", - "key": "leisure" - } - ] + "tags": { + "leisure": "marina" + } }, { "main": [ @@ -5742,12 +5445,9 @@ "closedway" ], "name": "Pier", - "tags": [ - { - "value": "pier", - "key": "man_made" - } - ] + "tags": { + "man_made": "pier" + } }, { "main": [], @@ -5755,12 +5455,9 @@ "node" ], "name": "Lock Gate", - "tags": [ - { - "value": "lock_gate", - "key": "waterway" - } - ] + "tags": { + "waterway": "lock_gate" + } }, { "main": [], @@ -5768,12 +5465,9 @@ "node" ], "name": "Turning Point", - "tags": [ - { - "value": "turning_point", - "key": "waterway" - } - ] + "tags": { + "waterway": "turning_point" + } }, { "main": [ @@ -5787,12 +5481,9 @@ "node" ], "name": "Slipway", - "tags": [ - { - "value": "slipway", - "key": "leisure" - } - ] + "tags": { + "leisure": "slipway" + } }, { "main": [ @@ -5807,12 +5498,9 @@ "closedway" ], "name": "Boatyard", - "tags": [ - { - "value": "boatyard", - "key": "waterway" - } - ] + "tags": { + "waterway": "boatyard" + } }, { "main": [ @@ -5827,12 +5515,9 @@ "closedway" ], "name": "Dock", - "tags": [ - { - "value": "dock", - "key": "waterway" - } - ] + "tags": { + "waterway": "dock" + } }, { "main": [ @@ -5920,12 +5605,9 @@ "way" ], "name": "Rail", - "tags": [ - { - "value": "rail", - "key": "railway" - } - ] + "tags": { + "railway": "rail" + } }, { "main": [ @@ -6001,12 +5683,9 @@ "way" ], "name": "Narrow Gauge Rail", - "tags": [ - { - "value": "narrow_gauge", - "key": "railway" - } - ] + "tags": { + "railway": "narrow_gauge" + } }, { "main": [ @@ -6061,12 +5740,9 @@ "way" ], "name": "Monorail", - "tags": [ - { - "value": "monorail", - "key": "railway" - } - ] + "tags": { + "railway": "monorail" + } }, { "main": [ @@ -6142,12 +5818,9 @@ "way" ], "name": "Preserved", - "tags": [ - { - "value": "preserved", - "key": "railway" - } - ] + "tags": { + "railway": "preserved" + } }, { "main": [ @@ -6223,12 +5896,9 @@ "way" ], "name": "Light Rail", - "tags": [ - { - "value": "light_rail", - "key": "railway" - } - ] + "tags": { + "railway": "light_rail" + } }, { "main": [ @@ -6304,12 +5974,9 @@ "way" ], "name": "Subway", - "tags": [ - { - "value": "subway", - "key": "railway" - } - ] + "tags": { + "railway": "subway" + } }, { "main": [ @@ -6385,12 +6052,9 @@ "way" ], "name": "Tram", - "tags": [ - { - "value": "tram", - "key": "railway" - } - ] + "tags": { + "railway": "tram" + } }, { "main": [ @@ -6497,12 +6161,9 @@ "way" ], "name": "Bus Guideway", - "tags": [ - { - "value": "bus_guideway", - "key": "highway" - } - ] + "tags": { + "highway": "bus_guideway" + } }, { "main": [ @@ -6521,12 +6182,9 @@ "way" ], "name": "Disused Rail", - "tags": [ - { - "value": "disused", - "key": "railway" - } - ] + "tags": { + "railway": "disused" + } }, { "main": [], @@ -6534,12 +6192,9 @@ "way" ], "name": "Abandoned Rail", - "tags": [ - { - "value": "abandoned", - "key": "railway" - } - ] + "tags": { + "railway": "abandoned" + } }, { "main": [], @@ -6547,12 +6202,9 @@ "node" ], "name": "Level Crossing", - "tags": [ - { - "value": "level_crossing", - "key": "railway" - } - ] + "tags": { + "railway": "level_crossing" + } }, { "main": [ @@ -6592,12 +6244,9 @@ "node" ], "name": "Crossing", - "tags": [ - { - "value": "crossing", - "key": "railway" - } - ] + "tags": { + "railway": "crossing" + } }, { "main": [], @@ -6606,12 +6255,9 @@ "closedway" ], "name": "Turntable", - "tags": [ - { - "value": "turntable", - "key": "railway" - } - ] + "tags": { + "railway": "turntable" + } }, { "main": [], @@ -6619,12 +6265,9 @@ "node" ], "name": "Buffer Stop", - "tags": [ - { - "value": "buffer_stop", - "key": "railway" - } - ] + "tags": { + "railway": "buffer_stop" + } }, { "main": [ @@ -6670,12 +6313,9 @@ "way" ], "name": "Chair Lift", - "tags": [ - { - "value": "chair_lift", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "chair_lift" + } }, { "main": [ @@ -6704,12 +6344,9 @@ "way" ], "name": "Drag Lift", - "tags": [ - { - "value": "drag_lift", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "drag_lift" + } }, { "main": [ @@ -6749,12 +6386,9 @@ "way" ], "name": "Cable Car", - "tags": [ - { - "value": "cable_car", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "cable_car" + } }, { "main": [ @@ -6794,12 +6428,9 @@ "way" ], "name": "Gondola", - "tags": [ - { - "value": "gondola", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "gondola" + } }, { "main": [ @@ -6845,12 +6476,9 @@ "way" ], "name": "Mixed Lift", - "tags": [ - { - "value": "mixed_lift", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "mixed_lift" + } }, { "main": [ @@ -6879,12 +6507,9 @@ "way" ], "name": "T-bar Lift", - "tags": [ - { - "value": "t-bar", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "t-bar" + } }, { "main": [ @@ -6913,12 +6538,9 @@ "way" ], "name": "J-bar Lift", - "tags": [ - { - "value": "j-bar", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "j-bar" + } }, { "main": [ @@ -6947,12 +6569,9 @@ "way" ], "name": "Platter Lift", - "tags": [ - { - "value": "platter", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "platter" + } }, { "main": [ @@ -6981,12 +6600,9 @@ "way" ], "name": "Rope Tow", - "tags": [ - { - "value": "rope_tow", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "rope_tow" + } }, { "main": [ @@ -7015,12 +6631,9 @@ "way" ], "name": "Magic Carpet", - "tags": [ - { - "value": "magic_carpet", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "magic_carpet" + } }, { "main": [ @@ -7044,12 +6657,9 @@ "way" ], "name": "Goods", - "tags": [ - { - "value": "goods", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "goods" + } }, { "main": [ @@ -7064,12 +6674,9 @@ "closedway" ], "name": "Station", - "tags": [ - { - "value": "station", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "station" + } }, { "main": [ @@ -7083,12 +6690,9 @@ "node" ], "name": "Pylon", - "tags": [ - { - "value": "pylon", - "key": "aerialway" - } - ] + "tags": { + "aerialway": "pylon" + } }, { "main": [ @@ -7202,12 +6806,9 @@ "closedway" ], "name": "Parking", - "tags": [ - { - "value": "parking", - "key": "amenity" - } - ] + "tags": { + "amenity": "parking" + } }, { "main": [ @@ -7342,12 +6943,9 @@ "closedway" ], "name": "Parking space", - "tags": [ - { - "value": "parking_space", - "key": "amenity" - } - ] + "tags": { + "amenity": "parking_space" + } }, { "main": [ @@ -7476,12 +7074,9 @@ "node" ], "name": "Parking entrance", - "tags": [ - { - "value": "parking_entrance", - "key": "amenity" - } - ] + "tags": { + "amenity": "parking_entrance" + } }, { "main": [ @@ -7647,12 +7242,9 @@ "closedway" ], "name": "Fuel", - "tags": [ - { - "value": "fuel", - "key": "amenity" - } - ] + "tags": { + "amenity": "fuel" + } }, { "main": [ @@ -7676,12 +7268,9 @@ "node" ], "name": "Charging Station", - "tags": [ - { - "value": "charging_station", - "key": "amenity" - } - ] + "tags": { + "amenity": "charging_station" + } }, { "main": [ @@ -7716,12 +7305,9 @@ "closedway" ], "name": "Wash", - "tags": [ - { - "value": "car_wash", - "key": "amenity" - } - ] + "tags": { + "amenity": "car_wash" + } }, { "main": [ @@ -7741,12 +7327,9 @@ "closedway" ], "name": "Car Dealer", - "tags": [ - { - "value": "car", - "key": "shop" - } - ] + "tags": { + "shop": "car" + } }, { "main": [ @@ -7781,12 +7364,9 @@ "closedway" ], "name": "Repair", - "tags": [ - { - "value": "car_repair", - "key": "shop" - } - ] + "tags": { + "shop": "car_repair" + } }, { "main": [ @@ -7841,12 +7421,9 @@ "closedway" ], "name": "Tyres", - "tags": [ - { - "value": "tyres", - "key": "shop" - } - ] + "tags": { + "shop": "tyres" + } }, { "main": [ @@ -7881,12 +7458,9 @@ "closedway" ], "name": "Rental", - "tags": [ - { - "value": "car_rental", - "key": "amenity" - } - ] + "tags": { + "amenity": "car_rental" + } }, { "main": [ @@ -7926,12 +7500,9 @@ "closedway" ], "name": "Sharing", - "tags": [ - { - "value": "car_sharing", - "key": "amenity" - } - ] + "tags": { + "amenity": "car_sharing" + } }, { "main": [ @@ -7970,12 +7541,9 @@ "closedway" ], "name": "Parking", - "tags": [ - { - "value": "motorcycle_parking", - "key": "amenity" - } - ] + "tags": { + "amenity": "motorcycle_parking" + } }, { "main": [ @@ -8104,12 +7672,9 @@ "closedway" ], "name": "Motorcycle Dealer", - "tags": [ - { - "value": "motorcycle", - "key": "shop" - } - ] + "tags": { + "shop": "motorcycle" + } }, { "main": [ @@ -8161,12 +7726,9 @@ "closedway" ], "name": "Parking", - "tags": [ - { - "value": "bicycle_parking", - "key": "amenity" - } - ] + "tags": { + "amenity": "bicycle_parking" + } }, { "main": [ @@ -8223,12 +7785,9 @@ "closedway" ], "name": "Bike Dealer", - "tags": [ - { - "value": "bicycle", - "key": "shop" - } - ] + "tags": { + "shop": "bicycle" + } }, { "main": [ @@ -8243,12 +7802,9 @@ "closedway" ], "name": "Rental", - "tags": [ - { - "value": "bicycle_rental", - "key": "amenity" - } - ] + "tags": { + "amenity": "bicycle_rental" + } }, { "main": [ @@ -8268,12 +7824,9 @@ "closedway" ], "name": "Station", - "tags": [ - { - "value": "station", - "key": "railway" - } - ] + "tags": { + "railway": "station" + } }, { "main": [ @@ -8287,12 +7840,9 @@ "node" ], "name": "Railway Halt", - "tags": [ - { - "value": "halt", - "key": "railway" - } - ] + "tags": { + "railway": "halt" + } }, { "main": [ @@ -8306,12 +7856,9 @@ "node" ], "name": "Tram Stop", - "tags": [ - { - "value": "tram_stop", - "key": "railway" - } - ] + "tags": { + "railway": "tram_stop" + } }, { "main": [ @@ -8337,12 +7884,9 @@ "closedway" ], "name": "Railway Platform", - "tags": [ - { - "value": "platform", - "key": "railway" - } - ] + "tags": { + "railway": "platform" + } }, { "main": [ @@ -8368,12 +7912,9 @@ "node" ], "name": "Subway Entrance", - "tags": [ - { - "value": "subway_entrance", - "key": "railway" - } - ] + "tags": { + "railway": "subway_entrance" + } }, { "favorite": true, @@ -8389,12 +7930,9 @@ "closedway" ], "name": "Bus Station", - "tags": [ - { - "value": "bus_station", - "key": "amenity" - } - ] + "tags": { + "amenity": "bus_station" + } }, { "main": [ @@ -8435,12 +7973,9 @@ "node" ], "name": "Bus Stop", - "tags": [ - { - "value": "bus_stop", - "key": "highway" - } - ] + "tags": { + "highway": "bus_stop" + } }, { "main": [ @@ -8466,12 +8001,9 @@ "closedway" ], "name": "Bus Platform", - "tags": [ - { - "value": "platform", - "key": "highway" - } - ] + "tags": { + "highway": "platform" + } }, { "main": [ @@ -8531,16 +8063,10 @@ "node" ], "name": "Ticket Machine", - "tags": [ - { - "value": "vending_machine", - "key": "amenity" - }, - { - "value": "public_transport_tickets", - "key": "vending" - } - ] + "tags": { + "amenity": "vending_machine", + "vending": "public_transport_tickets" + } }, { "main": [ @@ -8555,12 +8081,9 @@ "closedway" ], "name": "Taxi", - "tags": [ - { - "value": "taxi", - "key": "amenity" - } - ] + "tags": { + "amenity": "taxi" + } }, { "main": [ @@ -8590,12 +8113,9 @@ "closedway" ], "name": "Airport Ground", - "tags": [ - { - "value": "aerodrome", - "key": "aeroway" - } - ] + "tags": { + "aeroway": "aerodrome" + } }, { "main": [ @@ -8609,12 +8129,9 @@ "way" ], "name": "Runway", - "tags": [ - { - "value": "runway", - "key": "aeroway" - } - ] + "tags": { + "aeroway": "runway" + } }, { "main": [ @@ -8628,12 +8145,9 @@ "way" ], "name": "Taxiway", - "tags": [ - { - "value": "taxiway", - "key": "aeroway" - } - ] + "tags": { + "aeroway": "taxiway" + } }, { "main": [ @@ -8648,12 +8162,9 @@ "closedway" ], "name": "Helipad", - "tags": [ - { - "value": "helipad", - "key": "aeroway" - } - ] + "tags": { + "aeroway": "helipad" + } }, { "main": [], @@ -8661,12 +8172,9 @@ "closedway" ], "name": "Apron", - "tags": [ - { - "value": "apron", - "key": "aeroway" - } - ] + "tags": { + "aeroway": "apron" + } }, { "main": [], @@ -8675,12 +8183,9 @@ "closedway" ], "name": "Hangar", - "tags": [ - { - "value": "hangar", - "key": "building" - } - ] + "tags": { + "building": "hangar" + } }, { "main": [], @@ -8688,12 +8193,9 @@ "node" ], "name": "Beacon", - "tags": [ - { - "value": "beacon", - "key": "man_made" - } - ] + "tags": { + "man_made": "beacon" + } }, { "main": [], @@ -8701,12 +8203,9 @@ "node" ], "name": "Windsock", - "tags": [ - { - "value": "windsock", - "key": "aeroway" - } - ] + "tags": { + "aeroway": "windsock" + } }, { "main": [ @@ -8721,12 +8220,9 @@ "closedway" ], "name": "Terminal", - "tags": [ - { - "value": "terminal", - "key": "aeroway" - } - ] + "tags": { + "aeroway": "terminal" + } }, { "main": [ @@ -8740,12 +8236,9 @@ "node" ], "name": "Gate", - "tags": [ - { - "value": "gate", - "key": "aeroway" - } - ] + "tags": { + "aeroway": "gate" + } }, { "main": [ @@ -8841,12 +8334,9 @@ "closedway" ], "name": "Hotel", - "tags": [ - { - "value": "hotel", - "key": "tourism" - } - ] + "tags": { + "tourism": "hotel" + } }, { "main": [ @@ -8942,12 +8432,9 @@ "closedway" ], "name": "Motel", - "tags": [ - { - "value": "motel", - "key": "tourism" - } - ] + "tags": { + "tourism": "motel" + } }, { "main": [ @@ -9038,12 +8525,9 @@ "closedway" ], "name": "Guest House", - "tags": [ - { - "value": "guest_house", - "key": "tourism" - } - ] + "tags": { + "tourism": "guest_house" + } }, { "main": [ @@ -9134,12 +8618,9 @@ "closedway" ], "name": "Chalet", - "tags": [ - { - "value": "chalet", - "key": "tourism" - } - ] + "tags": { + "tourism": "chalet" + } }, { "main": [ @@ -9235,12 +8716,9 @@ "closedway" ], "name": "Hostel", - "tags": [ - { - "value": "hostel", - "key": "tourism" - } - ] + "tags": { + "tourism": "hostel" + } }, { "main": [ @@ -9327,12 +8805,9 @@ "closedway" ], "name": "Alpine Hut", - "tags": [ - { - "value": "alpine_hut", - "key": "tourism" - } - ] + "tags": { + "tourism": "alpine_hut" + } }, { "main": [ @@ -9450,12 +8925,9 @@ "closedway" ], "name": "Caravan Site", - "tags": [ - { - "value": "caravan_site", - "key": "tourism" - } - ] + "tags": { + "tourism": "caravan_site" + } }, { "main": [ @@ -9546,12 +9018,9 @@ "closedway" ], "name": "Camping Site", - "tags": [ - { - "value": "camp_site", - "key": "tourism" - } - ] + "tags": { + "tourism": "camp_site" + } }, { "favorite": true, @@ -9664,12 +9133,9 @@ "closedway" ], "name": "Restaurant", - "tags": [ - { - "value": "restaurant", - "key": "amenity" - } - ] + "tags": { + "amenity": "restaurant" + } }, { "main": [ @@ -9787,12 +9253,9 @@ "closedway" ], "name": "Fast Food", - "tags": [ - { - "value": "fast_food", - "key": "amenity" - } - ] + "tags": { + "amenity": "fast_food" + } }, { "main": [ @@ -9879,12 +9342,9 @@ "closedway" ], "name": "Food Court", - "tags": [ - { - "value": "food_court", - "key": "amenity" - } - ] + "tags": { + "amenity": "food_court" + } }, { "favorite": true, @@ -9985,12 +9445,9 @@ "closedway" ], "name": "Cafe", - "tags": [ - { - "value": "cafe", - "key": "amenity" - } - ] + "tags": { + "amenity": "cafe" + } }, { "main": [ @@ -10088,12 +9545,9 @@ "closedway" ], "name": "Pub", - "tags": [ - { - "value": "pub", - "key": "amenity" - } - ] + "tags": { + "amenity": "pub" + } }, { "main": [ @@ -10180,12 +9634,9 @@ "closedway" ], "name": "Biergarten", - "tags": [ - { - "value": "biergarten", - "key": "amenity" - } - ] + "tags": { + "amenity": "biergarten" + } }, { "favorite": true, @@ -10273,12 +9724,9 @@ "closedway" ], "name": "Bar", - "tags": [ - { - "value": "bar", - "key": "amenity" - } - ] + "tags": { + "amenity": "bar" + } }, { "main": [ @@ -10344,12 +9792,9 @@ "closedway" ], "name": "Nightclub", - "tags": [ - { - "value": "nightclub", - "key": "amenity" - } - ] + "tags": { + "amenity": "nightclub" + } }, { "main": [ @@ -10369,12 +9814,9 @@ "closedway" ], "name": "Attraction", - "tags": [ - { - "value": "attraction", - "key": "tourism" - } - ] + "tags": { + "tourism": "attraction" + } }, { "main": [ @@ -10389,12 +9831,9 @@ "closedway" ], "name": "Viewpoint", - "tags": [ - { - "value": "viewpoint", - "key": "tourism" - } - ] + "tags": { + "tourism": "viewpoint" + } }, { "main": [ @@ -10419,16 +9858,10 @@ "closedway" ], "name": "Information Office", - "tags": [ - { - "value": "information", - "key": "tourism" - }, - { - "value": "office", - "key": "information" - } - ] + "tags": { + "information": "office", + "tourism": "information" + } }, { "main": [ @@ -10497,16 +9930,10 @@ "node" ], "name": "Map", - "tags": [ - { - "value": "information", - "key": "tourism" - }, - { - "value": "map", - "key": "information" - } - ] + "tags": { + "information": "map", + "tourism": "information" + } }, { "main": [ @@ -10537,16 +9964,10 @@ "node" ], "name": "Information Board", - "tags": [ - { - "value": "information", - "key": "tourism" - }, - { - "value": "board", - "key": "information" - } - ] + "tags": { + "information": "board", + "tourism": "information" + } }, { "main": [ @@ -10595,16 +10016,10 @@ "node" ], "name": "Guidepost", - "tags": [ - { - "value": "information", - "key": "tourism" - }, - { - "value": "guidepost", - "key": "information" - } - ] + "tags": { + "information": "guidepost", + "tourism": "information" + } }, { "main": [ @@ -10642,16 +10057,10 @@ "node" ], "name": "Information Terminal", - "tags": [ - { - "value": "information", - "key": "tourism" - }, - { - "value": "terminal", - "key": "information" - } - ] + "tags": { + "information": "terminal", + "tourism": "information" + } }, { "main": [ @@ -10694,16 +10103,10 @@ "node" ], "name": "Audioguide", - "tags": [ - { - "value": "information", - "key": "tourism" - }, - { - "value": "audioguide", - "key": "information" - } - ] + "tags": { + "information": "audioguide", + "tourism": "information" + } }, { "main": [ @@ -10723,12 +10126,9 @@ "closedway" ], "name": "Other Information Points", - "tags": [ - { - "value": "information", - "key": "tourism" - } - ] + "tags": { + "tourism": "information" + } }, { "main": [ @@ -10744,12 +10144,9 @@ "relation" ], "name": "Cinema", - "tags": [ - { - "value": "cinema", - "key": "amenity" - } - ] + "tags": { + "amenity": "cinema" + } }, { "main": [ @@ -10779,12 +10176,9 @@ "closedway" ], "name": "Zoo", - "tags": [ - { - "value": "zoo", - "key": "tourism" - } - ] + "tags": { + "tourism": "zoo" + } }, { "main": [ @@ -10830,12 +10224,9 @@ "closedway" ], "name": "Dog Park", - "tags": [ - { - "value": "dog_park", - "key": "leisure" - } - ] + "tags": { + "leisure": "dog_park" + } }, { "main": [ @@ -10860,12 +10251,9 @@ "closedway" ], "name": "Theme Park", - "tags": [ - { - "value": "theme_park", - "key": "tourism" - } - ] + "tags": { + "tourism": "theme_park" + } }, { "main": [ @@ -10880,12 +10268,9 @@ "closedway" ], "name": "Water Park", - "tags": [ - { - "value": "water_park", - "key": "leisure" - } - ] + "tags": { + "leisure": "water_park" + } }, { "main": [ @@ -10925,12 +10310,9 @@ "closedway" ], "name": "Sauna", - "tags": [ - { - "value": "sauna", - "key": "leisure" - } - ] + "tags": { + "leisure": "sauna" + } }, { "main": [ @@ -10945,12 +10327,9 @@ "closedway" ], "name": "Playground", - "tags": [ - { - "value": "playground", - "key": "leisure" - } - ] + "tags": { + "leisure": "playground" + } }, { "main": [ @@ -10971,12 +10350,9 @@ "closedway" ], "name": "Picnic Site", - "tags": [ - { - "value": "picnic_site", - "key": "tourism" - } - ] + "tags": { + "tourism": "picnic_site" + } }, { "main": [ @@ -11009,12 +10385,9 @@ "node" ], "name": "Public Grill", - "tags": [ - { - "value": "bbq", - "key": "amenity" - } - ] + "tags": { + "amenity": "bbq" + } }, { "main": [ @@ -11029,12 +10402,9 @@ "closedway" ], "name": "Fishing", - "tags": [ - { - "value": "fishing", - "key": "leisure" - } - ] + "tags": { + "leisure": "fishing" + } }, { "main": [], @@ -11043,16 +10413,10 @@ "closedway" ], "name": "Private Swimming Pool", - "tags": [ - { - "value": "swimming_pool", - "key": "leisure" - }, - { - "value": "private", - "key": "access" - } - ] + "tags": { + "access": "private", + "leisure": "swimming_pool" + } }, { "main": [ @@ -11082,12 +10446,9 @@ "closedway" ], "name": "Museum", - "tags": [ - { - "value": "museum", - "key": "tourism" - } - ] + "tags": { + "tourism": "museum" + } }, { "main": [ @@ -11103,12 +10464,9 @@ "relation" ], "name": "Theatre", - "tags": [ - { - "value": "theatre", - "key": "amenity" - } - ] + "tags": { + "amenity": "theatre" + } }, { "main": [ @@ -11134,12 +10492,9 @@ "relation" ], "name": "Library", - "tags": [ - { - "value": "library", - "key": "amenity" - } - ] + "tags": { + "amenity": "library" + } }, { "main": [ @@ -11155,12 +10510,9 @@ "relation" ], "name": "Arts Centre", - "tags": [ - { - "value": "arts_centre", - "key": "amenity" - } - ] + "tags": { + "amenity": "arts_centre" + } }, { "main": [ @@ -11176,12 +10528,9 @@ "closedway" ], "name": "Artwork", - "tags": [ - { - "value": "artwork", - "key": "tourism" - } - ] + "tags": { + "tourism": "artwork" + } }, { "favorite": true, @@ -11259,12 +10608,9 @@ "relation" ], "name": "Place of Worship", - "tags": [ - { - "value": "place_of_worship", - "key": "amenity" - } - ] + "tags": { + "amenity": "place_of_worship" + } }, { "main": [ @@ -11302,12 +10648,9 @@ "node" ], "name": "Recording Studio", - "tags": [ - { - "value": "studio", - "key": "amenity" - } - ] + "tags": { + "amenity": "studio" + } }, { "main": [ @@ -11323,12 +10666,9 @@ "relation" ], "name": "Public Building", - "tags": [ - { - "value": "public_building", - "key": "amenity" - } - ] + "tags": { + "amenity": "public_building" + } }, { "main": [ @@ -11344,12 +10684,9 @@ "relation" ], "name": "Town hall", - "tags": [ - { - "value": "townhall", - "key": "amenity" - } - ] + "tags": { + "amenity": "townhall" + } }, { "main": [ @@ -11379,12 +10716,9 @@ "closedway" ], "name": "Community Centre", - "tags": [ - { - "value": "community_centre", - "key": "amenity" - } - ] + "tags": { + "amenity": "community_centre" + } }, { "main": [ @@ -11400,12 +10734,9 @@ "relation" ], "name": "Embassy", - "tags": [ - { - "value": "embassy", - "key": "amenity" - } - ] + "tags": { + "amenity": "embassy" + } }, { "main": [ @@ -11421,12 +10752,9 @@ "relation" ], "name": "Courthouse", - "tags": [ - { - "value": "courthouse", - "key": "amenity" - } - ] + "tags": { + "amenity": "courthouse" + } }, { "main": [ @@ -11442,12 +10770,9 @@ "relation" ], "name": "Prison", - "tags": [ - { - "value": "prison", - "key": "amenity" - } - ] + "tags": { + "amenity": "prison" + } }, { "main": [ @@ -11463,12 +10788,9 @@ "relation" ], "name": "Police", - "tags": [ - { - "value": "police", - "key": "amenity" - } - ] + "tags": { + "amenity": "police" + } }, { "main": [ @@ -11484,12 +10806,9 @@ "relation" ], "name": "Fire Station", - "tags": [ - { - "value": "fire_station", - "key": "amenity" - } - ] + "tags": { + "amenity": "fire_station" + } }, { "main": [ @@ -11510,12 +10829,9 @@ "relation" ], "name": "Post Office", - "tags": [ - { - "value": "post_office", - "key": "amenity" - } - ] + "tags": { + "amenity": "post_office" + } }, { "main": [ @@ -11531,12 +10847,9 @@ "relation" ], "name": "Kindergarten", - "tags": [ - { - "value": "kindergarten", - "key": "amenity" - } - ] + "tags": { + "amenity": "kindergarten" + } }, { "main": [ @@ -11552,12 +10865,9 @@ "relation" ], "name": "School", - "tags": [ - { - "value": "school", - "key": "amenity" - } - ] + "tags": { + "amenity": "school" + } }, { "main": [ @@ -11573,12 +10883,9 @@ "relation" ], "name": "University", - "tags": [ - { - "value": "university", - "key": "amenity" - } - ] + "tags": { + "amenity": "university" + } }, { "main": [ @@ -11594,12 +10901,9 @@ "relation" ], "name": "College", - "tags": [ - { - "value": "college", - "key": "amenity" - } - ] + "tags": { + "amenity": "college" + } }, { "main": [ @@ -11624,12 +10928,9 @@ "closedway" ], "name": "Driving School", - "tags": [ - { - "value": "driving_school", - "key": "amenity" - } - ] + "tags": { + "amenity": "driving_school" + } }, { "favorite": true, @@ -11645,12 +10946,9 @@ "closedway" ], "name": "Hospital", - "tags": [ - { - "value": "hospital", - "key": "amenity" - } - ] + "tags": { + "amenity": "hospital" + } }, { "main": [ @@ -11675,12 +10973,9 @@ "closedway" ], "name": "Doctors", - "tags": [ - { - "value": "doctors", - "key": "amenity" - } - ] + "tags": { + "amenity": "doctors" + } }, { "main": [ @@ -11705,12 +11000,9 @@ "closedway" ], "name": "Dentist", - "tags": [ - { - "value": "dentist", - "key": "amenity" - } - ] + "tags": { + "amenity": "dentist" + } }, { "main": [ @@ -11730,12 +11022,9 @@ "closedway" ], "name": "Nursing Home", - "tags": [ - { - "value": "nursing_home", - "key": "amenity" - } - ] + "tags": { + "amenity": "nursing_home" + } }, { "main": [ @@ -11769,12 +11058,9 @@ "closedway" ], "name": "Pharmacy", - "tags": [ - { - "value": "pharmacy", - "key": "amenity" - } - ] + "tags": { + "amenity": "pharmacy" + } }, { "main": [ @@ -11804,12 +11090,9 @@ "closedway" ], "name": "Hearing Aids", - "tags": [ - { - "value": "hearing_aids", - "key": "shop" - } - ] + "tags": { + "shop": "hearing_aids" + } }, { "main": [ @@ -11829,12 +11112,9 @@ "closedway" ], "name": "Baby Hatch", - "tags": [ - { - "value": "baby_hatch", - "key": "amenity" - } - ] + "tags": { + "amenity": "baby_hatch" + } }, { "main": [ @@ -11864,12 +11144,9 @@ "closedway" ], "name": "Emergency Access Point", - "tags": [ - { - "value": "emergency_access_point", - "key": "highway" - } - ] + "tags": { + "highway": "emergency_access_point" + } }, { "main": [ @@ -11894,12 +11171,9 @@ "closedway" ], "name": "Veterinary", - "tags": [ - { - "value": "veterinary", - "key": "amenity" - } - ] + "tags": { + "amenity": "veterinary" + } }, { "main": [ @@ -11943,12 +11217,9 @@ "closedway" ], "name": "Toilets", - "tags": [ - { - "value": "toilets", - "key": "amenity" - } - ] + "tags": { + "amenity": "toilets" + } }, { "main": [ @@ -11962,12 +11233,9 @@ "node" ], "name": "Post Box", - "tags": [ - { - "value": "post_box", - "key": "amenity" - } - ] + "tags": { + "amenity": "post_box" + } }, { "main": [ @@ -12017,12 +11285,9 @@ "node" ], "name": "Telephone", - "tags": [ - { - "value": "telephone", - "key": "amenity" - } - ] + "tags": { + "amenity": "telephone" + } }, { "main": [ @@ -12087,12 +11352,9 @@ "node" ], "name": "Clock", - "tags": [ - { - "value": "clock", - "key": "amenity" - } - ] + "tags": { + "amenity": "clock" + } }, { "main": [ @@ -12147,12 +11409,9 @@ "closedway" ], "name": "Recycling", - "tags": [ - { - "value": "recycling", - "key": "amenity" - } - ] + "tags": { + "amenity": "recycling" + } }, { "main": [], @@ -12160,12 +11419,9 @@ "node" ], "name": "Waste Basket", - "tags": [ - { - "value": "waste_basket", - "key": "amenity" - } - ] + "tags": { + "amenity": "waste_basket" + } }, { "main": [], @@ -12173,12 +11429,9 @@ "node" ], "name": "Waste Disposal", - "tags": [ - { - "value": "waste_disposal", - "key": "amenity" - } - ] + "tags": { + "amenity": "waste_disposal" + } }, { "main": [ @@ -12237,12 +11490,9 @@ "node" ], "name": "Bench", - "tags": [ - { - "value": "bench", - "key": "amenity" - } - ] + "tags": { + "amenity": "bench" + } }, { "main": [ @@ -12274,12 +11524,9 @@ "closedway" ], "name": "Shelter", - "tags": [ - { - "value": "shelter", - "key": "amenity" - } - ] + "tags": { + "amenity": "shelter" + } }, { "main": [ @@ -12332,12 +11579,9 @@ "node" ], "name": "Hunting Stand", - "tags": [ - { - "value": "hunting_stand", - "key": "amenity" - } - ] + "tags": { + "amenity": "hunting_stand" + } }, { "main": [ @@ -12351,12 +11595,9 @@ "node" ], "name": "Drinking Water", - "tags": [ - { - "value": "drinking_water", - "key": "amenity" - } - ] + "tags": { + "amenity": "drinking_water" + } }, { "main": [ @@ -12433,12 +11674,9 @@ "node" ], "name": "Fire Hydrant", - "tags": [ - { - "value": "fire_hydrant", - "key": "emergency" - } - ] + "tags": { + "emergency": "fire_hydrant" + } }, { "main": [ @@ -12496,12 +11734,9 @@ "closedway" ], "name": "Stadium", - "tags": [ - { - "value": "stadium", - "key": "leisure" - } - ] + "tags": { + "leisure": "stadium" + } }, { "main": [ @@ -12559,12 +11794,9 @@ "closedway" ], "name": "Sports Centre", - "tags": [ - { - "value": "sports_centre", - "key": "leisure" - } - ] + "tags": { + "leisure": "sports_centre" + } }, { "main": [ @@ -12621,12 +11853,9 @@ "closedway" ], "name": "Pitch", - "tags": [ - { - "value": "pitch", - "key": "leisure" - } - ] + "tags": { + "leisure": "pitch" + } }, { "main": [ @@ -12685,12 +11914,9 @@ "relation" ], "name": "Racetrack", - "tags": [ - { - "value": "track", - "key": "leisure" - } - ] + "tags": { + "leisure": "track" + } }, { "main": [ @@ -12715,12 +11941,9 @@ "closedway" ], "name": "Golf Course", - "tags": [ - { - "value": "golf_course", - "key": "leisure" - } - ] + "tags": { + "leisure": "golf_course" + } }, { "main": [ @@ -12745,12 +11968,9 @@ "closedway" ], "name": "Miniature Golf", - "tags": [ - { - "value": "miniature_golf", - "key": "leisure" - } - ] + "tags": { + "leisure": "miniature_golf" + } }, { "main": [ @@ -12776,12 +11996,9 @@ "closedway" ], "name": "Multi", - "tags": [ - { - "value": "multi", - "key": "sport" - } - ] + "tags": { + "sport": "multi" + } }, { "main": [ @@ -12806,12 +12023,9 @@ "closedway" ], "name": "9pin", - "tags": [ - { - "value": "9pin", - "key": "sport" - } - ] + "tags": { + "sport": "9pin" + } }, { "main": [ @@ -12836,12 +12050,9 @@ "closedway" ], "name": "10pin", - "tags": [ - { - "value": "10pin", - "key": "sport" - } - ] + "tags": { + "sport": "10pin" + } }, { "main": [ @@ -12866,12 +12077,9 @@ "closedway" ], "name": "Archery", - "tags": [ - { - "value": "archery", - "key": "sport" - } - ] + "tags": { + "sport": "archery" + } }, { "main": [ @@ -12897,12 +12105,9 @@ "closedway" ], "name": "Athletics", - "tags": [ - { - "value": "athletics", - "key": "sport" - } - ] + "tags": { + "sport": "athletics" + } }, { "main": [ @@ -12925,12 +12130,9 @@ "closedway" ], "name": "Climbing", - "tags": [ - { - "value": "climbing", - "key": "sport" - } - ] + "tags": { + "sport": "climbing" + } }, { "main": [ @@ -12946,12 +12148,9 @@ "closedway" ], "name": "Canoeing", - "tags": [ - { - "value": "canoe", - "key": "sport" - } - ] + "tags": { + "sport": "canoe" + } }, { "main": [ @@ -12977,12 +12176,9 @@ "closedway" ], "name": "Cycling", - "tags": [ - { - "value": "cycling", - "key": "sport" - } - ] + "tags": { + "sport": "cycling" + } }, { "main": [ @@ -13008,12 +12204,9 @@ "closedway" ], "name": "Dog Racing", - "tags": [ - { - "value": "dog_racing", - "key": "sport" - } - ] + "tags": { + "sport": "dog_racing" + } }, { "main": [ @@ -13040,12 +12233,9 @@ "closedway" ], "name": "Equestrian", - "tags": [ - { - "value": "equestrian", - "key": "sport" - } - ] + "tags": { + "sport": "equestrian" + } }, { "main": [ @@ -13071,12 +12261,9 @@ "closedway" ], "name": "Horse Racing", - "tags": [ - { - "value": "horse_racing", - "key": "sport" - } - ] + "tags": { + "sport": "horse_racing" + } }, { "main": [ @@ -13101,12 +12288,9 @@ "closedway" ], "name": "Gymnastics", - "tags": [ - { - "value": "gymnastics", - "key": "sport" - } - ] + "tags": { + "sport": "gymnastics" + } }, { "main": [ @@ -13132,12 +12316,9 @@ "closedway" ], "name": "Skating", - "tags": [ - { - "value": "skating", - "key": "sport" - } - ] + "tags": { + "sport": "skating" + } }, { "main": [ @@ -13163,12 +12344,9 @@ "closedway" ], "name": "Skateboard", - "tags": [ - { - "value": "skateboard", - "key": "sport" - } - ] + "tags": { + "sport": "skateboard" + } }, { "main": [ @@ -13194,12 +12372,9 @@ "closedway" ], "name": "Swimming", - "tags": [ - { - "value": "swimming", - "key": "sport" - } - ] + "tags": { + "sport": "swimming" + } }, { "main": [ @@ -13252,12 +12427,9 @@ "closedway" ], "name": "Skiing", - "tags": [ - { - "value": "skiing", - "key": "sport" - } - ] + "tags": { + "sport": "skiing" + } }, { "main": [ @@ -13283,12 +12455,9 @@ "closedway" ], "name": "Shooting", - "tags": [ - { - "value": "shooting", - "key": "sport" - } - ] + "tags": { + "sport": "shooting" + } }, { "main": [ @@ -13313,12 +12482,9 @@ "closedway" ], "name": "Soccer", - "tags": [ - { - "value": "soccer", - "key": "sport" - } - ] + "tags": { + "sport": "soccer" + } }, { "main": [ @@ -13343,12 +12509,9 @@ "closedway" ], "name": "Australian Football", - "tags": [ - { - "value": "australian_football", - "key": "sport" - } - ] + "tags": { + "sport": "australian_football" + } }, { "main": [ @@ -13373,12 +12536,9 @@ "closedway" ], "name": "American Football", - "tags": [ - { - "value": "american_football", - "key": "sport" - } - ] + "tags": { + "sport": "american_football" + } }, { "main": [ @@ -13403,12 +12563,9 @@ "closedway" ], "name": "Canadian Football", - "tags": [ - { - "value": "canadian_football", - "key": "sport" - } - ] + "tags": { + "sport": "canadian_football" + } }, { "main": [ @@ -13457,12 +12614,9 @@ "closedway" ], "name": "Gaelic Games", - "tags": [ - { - "value": "gaelic_games", - "key": "sport" - } - ] + "tags": { + "sport": "gaelic_games" + } }, { "main": [ @@ -13487,12 +12641,9 @@ "closedway" ], "name": "Rugby League", - "tags": [ - { - "value": "rugby_league", - "key": "sport" - } - ] + "tags": { + "sport": "rugby_league" + } }, { "main": [ @@ -13517,12 +12668,9 @@ "closedway" ], "name": "Rugby Union", - "tags": [ - { - "value": "rugby_union", - "key": "sport" - } - ] + "tags": { + "sport": "rugby_union" + } }, { "main": [ @@ -13547,12 +12695,9 @@ "closedway" ], "name": "Baseball", - "tags": [ - { - "value": "baseball", - "key": "sport" - } - ] + "tags": { + "sport": "baseball" + } }, { "main": [ @@ -13577,12 +12722,9 @@ "closedway" ], "name": "Basketball", - "tags": [ - { - "value": "basketball", - "key": "sport" - } - ] + "tags": { + "sport": "basketball" + } }, { "main": [ @@ -13612,12 +12754,9 @@ "closedway" ], "name": "Volleyball", - "tags": [ - { - "value": "volleyball", - "key": "sport" - } - ] + "tags": { + "sport": "volleyball" + } }, { "main": [ @@ -13647,12 +12786,9 @@ "closedway" ], "name": "Beachvolleyball", - "tags": [ - { - "value": "beachvolleyball", - "key": "sport" - } - ] + "tags": { + "sport": "beachvolleyball" + } }, { "main": [ @@ -13678,12 +12814,9 @@ "closedway" ], "name": "Golf", - "tags": [ - { - "value": "golf", - "key": "sport" - } - ] + "tags": { + "sport": "golf" + } }, { "main": [ @@ -13708,12 +12841,9 @@ "closedway" ], "name": "Boule", - "tags": [ - { - "value": "boules", - "key": "sport" - } - ] + "tags": { + "sport": "boules" + } }, { "main": [ @@ -13738,12 +12868,9 @@ "closedway" ], "name": "Bowls", - "tags": [ - { - "value": "bowls", - "key": "sport" - } - ] + "tags": { + "sport": "bowls" + } }, { "main": [ @@ -13768,12 +12895,9 @@ "closedway" ], "name": "Cricket", - "tags": [ - { - "value": "cricket", - "key": "sport" - } - ] + "tags": { + "sport": "cricket" + } }, { "main": [ @@ -13798,12 +12922,9 @@ "closedway" ], "name": "Cricket Nets", - "tags": [ - { - "value": "cricket_nets", - "key": "sport" - } - ] + "tags": { + "sport": "cricket_nets" + } }, { "main": [ @@ -13828,12 +12949,9 @@ "closedway" ], "name": "Croquet", - "tags": [ - { - "value": "croquet", - "key": "sport" - } - ] + "tags": { + "sport": "croquet" + } }, { "main": [ @@ -13859,12 +12977,9 @@ "closedway" ], "name": "Hockey", - "tags": [ - { - "value": "hockey", - "key": "sport" - } - ] + "tags": { + "sport": "hockey" + } }, { "main": [ @@ -13889,12 +13004,9 @@ "closedway" ], "name": "Pelota", - "tags": [ - { - "value": "pelota", - "key": "sport" - } - ] + "tags": { + "sport": "pelota" + } }, { "main": [ @@ -13919,12 +13031,9 @@ "closedway" ], "name": "Racquet", - "tags": [ - { - "value": "racquet", - "key": "sport" - } - ] + "tags": { + "sport": "racquet" + } }, { "main": [ @@ -13949,12 +13058,9 @@ "closedway" ], "name": "Table Tennis", - "tags": [ - { - "value": "table_tennis", - "key": "sport" - } - ] + "tags": { + "sport": "table_tennis" + } }, { "main": [ @@ -13979,12 +13085,9 @@ "closedway" ], "name": "Tennis", - "tags": [ - { - "value": "tennis", - "key": "sport" - } - ] + "tags": { + "sport": "tennis" + } }, { "main": [ @@ -14010,12 +13113,9 @@ "closedway" ], "name": "Motorsport", - "tags": [ - { - "value": "motor", - "key": "sport" - } - ] + "tags": { + "sport": "motor" + } }, { "main": [ @@ -14040,12 +13140,9 @@ "closedway" ], "name": "Karting", - "tags": [ - { - "value": "karting", - "key": "sport" - } - ] + "tags": { + "sport": "karting" + } }, { "main": [ @@ -14070,12 +13167,9 @@ "closedway" ], "name": "Motocross", - "tags": [ - { - "value": "motocross", - "key": "sport" - } - ] + "tags": { + "sport": "motocross" + } }, { "main": [ @@ -14100,12 +13194,9 @@ "closedway" ], "name": "Safety Training", - "tags": [ - { - "value": "safety_training", - "key": "sport" - } - ] + "tags": { + "sport": "safety_training" + } }, { "main": [ @@ -14130,12 +13221,9 @@ "closedway" ], "name": "Model Aerodrome", - "tags": [ - { - "value": "model_aerodrome", - "key": "sport" - } - ] + "tags": { + "sport": "model_aerodrome" + } }, { "main": [ @@ -14160,12 +13248,9 @@ "closedway" ], "name": "RC Car", - "tags": [ - { - "value": "rc_car", - "key": "sport" - } - ] + "tags": { + "sport": "rc_car" + } }, { "main": [ @@ -14201,7 +13286,7 @@ "relation" ], "name": "Building", - "tags": [] + "tags": {} }, { "main": [ @@ -14231,7 +13316,7 @@ "relation" ], "name": "Residential Building", - "tags": [] + "tags": {} }, { "main": [ @@ -14265,12 +13350,9 @@ "closedway" ], "name": "Tower", - "tags": [ - { - "value": "tower", - "key": "man_made" - } - ] + "tags": { + "man_made": "tower" + } }, { "main": [], @@ -14278,12 +13360,9 @@ "node" ], "name": "Flagpole", - "tags": [ - { - "value": "flagpole", - "key": "man_made" - } - ] + "tags": { + "man_made": "flagpole" + } }, { "main": [ @@ -14298,12 +13377,9 @@ "closedway" ], "name": "Works", - "tags": [ - { - "value": "works", - "key": "man_made" - } - ] + "tags": { + "man_made": "works" + } }, { "main": [ @@ -14327,12 +13403,9 @@ "node" ], "name": "Chimney", - "tags": [ - { - "value": "chimney", - "key": "man_made" - } - ] + "tags": { + "man_made": "chimney" + } }, { "main": [ @@ -14347,12 +13420,9 @@ "closedway" ], "name": "Windmill", - "tags": [ - { - "value": "windmill", - "key": "man_made" - } - ] + "tags": { + "man_made": "windmill" + } }, { "main": [ @@ -14367,12 +13437,9 @@ "closedway" ], "name": "Gasometer", - "tags": [ - { - "value": "gasometer", - "key": "man_made" - } - ] + "tags": { + "man_made": "gasometer" + } }, { "main": [ @@ -14408,12 +13475,9 @@ "way" ], "name": "Pipeline", - "tags": [ - { - "value": "pipeline", - "key": "man_made" - } - ] + "tags": { + "man_made": "pipeline" + } }, { "main": [ @@ -14428,12 +13492,9 @@ "closedway" ], "name": "Crane", - "tags": [ - { - "value": "crane", - "key": "man_made" - } - ] + "tags": { + "man_made": "crane" + } }, { "main": [ @@ -14506,12 +13567,9 @@ "closedway" ], "name": "Mineshaft", - "tags": [ - { - "value": "mineshaft", - "key": "man_made" - } - ] + "tags": { + "man_made": "mineshaft" + } }, { "main": [ @@ -14565,12 +13623,9 @@ "node" ], "name": "Adit", - "tags": [ - { - "value": "adit", - "key": "man_made" - } - ] + "tags": { + "man_made": "adit" + } }, { "main": [ @@ -14585,12 +13640,9 @@ "closedway" ], "name": "Water Tower", - "tags": [ - { - "value": "water_tower", - "key": "man_made" - } - ] + "tags": { + "man_made": "water_tower" + } }, { "main": [ @@ -14610,12 +13662,9 @@ "closedway" ], "name": "Water Works", - "tags": [ - { - "value": "water_works", - "key": "man_made" - } - ] + "tags": { + "man_made": "water_works" + } }, { "main": [ @@ -14630,12 +13679,9 @@ "closedway" ], "name": "Wastewater Plant", - "tags": [ - { - "value": "wastewater_plant", - "key": "man_made" - } - ] + "tags": { + "man_made": "wastewater_plant" + } }, { "main": [ @@ -14649,12 +13695,9 @@ "node" ], "name": "Watermill", - "tags": [ - { - "value": "watermill", - "key": "man_made" - } - ] + "tags": { + "man_made": "watermill" + } }, { "main": [ @@ -14669,12 +13712,9 @@ "closedway" ], "name": "Fountain", - "tags": [ - { - "value": "fountain", - "key": "amenity" - } - ] + "tags": { + "amenity": "fountain" + } }, { "main": [ @@ -14688,12 +13728,9 @@ "node" ], "name": "Water Well", - "tags": [ - { - "value": "water_well", - "key": "man_made" - } - ] + "tags": { + "man_made": "water_well" + } }, { "main": [ @@ -14708,12 +13745,9 @@ "closedway" ], "name": "Lighthouse", - "tags": [ - { - "value": "lighthouse", - "key": "man_made" - } - ] + "tags": { + "man_made": "lighthouse" + } }, { "main": [ @@ -14727,12 +13761,9 @@ "node" ], "name": "Beacon", - "tags": [ - { - "value": "beacon", - "key": "man_made" - } - ] + "tags": { + "man_made": "beacon" + } }, { "main": [ @@ -14749,12 +13780,9 @@ "node" ], "name": "Street Lamp", - "tags": [ - { - "value": "street_lamp", - "key": "highway" - } - ] + "tags": { + "highway": "street_lamp" + } }, { "main": [ @@ -14806,12 +13834,9 @@ "closedway" ], "name": "Measurement Station", - "tags": [ - { - "value": "measurement_station", - "key": "man_made" - } - ] + "tags": { + "man_made": "measurement_station" + } }, { "main": [ @@ -14825,12 +13850,9 @@ "node" ], "name": "Survey Point", - "tags": [ - { - "value": "survey_point", - "key": "man_made" - } - ] + "tags": { + "man_made": "survey_point" + } }, { "main": [ @@ -14855,12 +13877,9 @@ "closedway" ], "name": "Surveillance", - "tags": [ - { - "value": "surveillance", - "key": "man_made" - } - ] + "tags": { + "man_made": "surveillance" + } }, { "main": [ @@ -15026,12 +14045,9 @@ "closedway" ], "name": "Power Generator", - "tags": [ - { - "value": "generator", - "key": "power" - } - ] + "tags": { + "power": "generator" + } }, { "main": [ @@ -15056,12 +14072,9 @@ "closedway" ], "name": "Power Station", - "tags": [ - { - "value": "station", - "key": "power" - } - ] + "tags": { + "power": "station" + } }, { "main": [ @@ -15081,12 +14094,9 @@ "closedway" ], "name": "Power Sub Station", - "tags": [ - { - "value": "sub_station", - "key": "power" - } - ] + "tags": { + "power": "sub_station" + } }, { "main": [ @@ -15105,12 +14115,9 @@ "node" ], "name": "Cable Distribution Cabinet", - "tags": [ - { - "value": "cable_distribution_cabinet", - "key": "power" - } - ] + "tags": { + "power": "cable_distribution_cabinet" + } }, { "main": [ @@ -15124,12 +14131,9 @@ "node" ], "name": "Power Tower", - "tags": [ - { - "value": "tower", - "key": "power" - } - ] + "tags": { + "power": "tower" + } }, { "main": [ @@ -15143,12 +14147,9 @@ "node" ], "name": "Pole", - "tags": [ - { - "value": "pole", - "key": "power" - } - ] + "tags": { + "power": "pole" + } }, { "main": [ @@ -15207,7 +14208,7 @@ "way" ], "name": "Power Line", - "tags": [] + "tags": {} }, { "main": [ @@ -15227,12 +14228,9 @@ "closedway" ], "name": "Castle", - "tags": [ - { - "value": "castle", - "key": "historic" - } - ] + "tags": { + "historic": "castle" + } }, { "main": [ @@ -15257,12 +14255,9 @@ "closedway" ], "name": "Ruins", - "tags": [ - { - "value": "ruins", - "key": "historic" - } - ] + "tags": { + "historic": "ruins" + } }, { "main": [ @@ -15287,12 +14282,9 @@ "closedway" ], "name": "Archaeological Site", - "tags": [ - { - "value": "archaeological_site", - "key": "historic" - } - ] + "tags": { + "historic": "archaeological_site" + } }, { "main": [ @@ -15307,12 +14299,9 @@ "closedway" ], "name": "Battlefield", - "tags": [ - { - "value": "battlefield", - "key": "historic" - } - ] + "tags": { + "historic": "battlefield" + } }, { "main": [ @@ -15327,12 +14316,9 @@ "closedway" ], "name": "Palaeontological Site", - "tags": [ - { - "value": "palaeontological_site", - "key": "geological" - } - ] + "tags": { + "geological": "palaeontological_site" + } }, { "main": [ @@ -15347,12 +14333,9 @@ "closedway" ], "name": "Monument", - "tags": [ - { - "value": "monument", - "key": "historic" - } - ] + "tags": { + "historic": "monument" + } }, { "main": [ @@ -15367,12 +14350,9 @@ "closedway" ], "name": "Memorial", - "tags": [ - { - "value": "memorial", - "key": "historic" - } - ] + "tags": { + "historic": "memorial" + } }, { "main": [ @@ -15387,12 +14367,9 @@ "closedway" ], "name": "Wayside Cross", - "tags": [ - { - "value": "wayside_cross", - "key": "historic" - } - ] + "tags": { + "historic": "wayside_cross" + } }, { "main": [ @@ -15407,12 +14384,9 @@ "closedway" ], "name": "Wayside Shrine", - "tags": [ - { - "value": "wayside_shrine", - "key": "historic" - } - ] + "tags": { + "historic": "wayside_shrine" + } }, { "main": [ @@ -15427,12 +14401,9 @@ "closedway" ], "name": "Boundary Stone", - "tags": [ - { - "value": "boundary_stone", - "key": "historic" - } - ] + "tags": { + "historic": "boundary_stone" + } }, { "main": [ @@ -15457,12 +14428,9 @@ "closedway" ], "name": "Supermarket", - "tags": [ - { - "value": "supermarket", - "key": "shop" - } - ] + "tags": { + "shop": "supermarket" + } }, { "main": [ @@ -15487,12 +14455,9 @@ "closedway" ], "name": "Convenience Store", - "tags": [ - { - "value": "convenience", - "key": "shop" - } - ] + "tags": { + "shop": "convenience" + } }, { "main": [ @@ -15517,12 +14482,9 @@ "closedway" ], "name": "Kiosk", - "tags": [ - { - "value": "kiosk", - "key": "shop" - } - ] + "tags": { + "shop": "kiosk" + } }, { "main": [ @@ -15547,12 +14509,9 @@ "closedway" ], "name": "Baker", - "tags": [ - { - "value": "bakery", - "key": "shop" - } - ] + "tags": { + "shop": "bakery" + } }, { "main": [ @@ -15577,12 +14536,9 @@ "closedway" ], "name": "Butcher", - "tags": [ - { - "value": "butcher", - "key": "shop" - } - ] + "tags": { + "shop": "butcher" + } }, { "main": [ @@ -15612,12 +14568,9 @@ "closedway" ], "name": "Seafood", - "tags": [ - { - "value": "seafood", - "key": "shop" - } - ] + "tags": { + "shop": "seafood" + } }, { "main": [ @@ -15647,12 +14600,9 @@ "closedway" ], "name": "Deli (Fine Food)", - "tags": [ - { - "value": "deli", - "key": "shop" - } - ] + "tags": { + "shop": "deli" + } }, { "main": [ @@ -15677,12 +14627,9 @@ "closedway" ], "name": "Confectionery", - "tags": [ - { - "value": "confectionery", - "key": "shop" - } - ] + "tags": { + "shop": "confectionery" + } }, { "main": [ @@ -15713,12 +14660,9 @@ "closedway" ], "name": "Marketplace", - "tags": [ - { - "value": "marketplace", - "key": "amenity" - } - ] + "tags": { + "amenity": "marketplace" + } }, { "main": [ @@ -15748,12 +14692,9 @@ "closedway" ], "name": "Greengrocer", - "tags": [ - { - "value": "greengrocer", - "key": "shop" - } - ] + "tags": { + "shop": "greengrocer" + } }, { "main": [ @@ -15773,7 +14714,7 @@ "closedway" ], "name": "Organic", - "tags": [] + "tags": {} }, { "main": [ @@ -15793,7 +14734,7 @@ "closedway" ], "name": "Fair Trade", - "tags": [] + "tags": {} }, { "main": [ @@ -15818,12 +14759,9 @@ "closedway" ], "name": "Alcohol", - "tags": [ - { - "value": "alcohol", - "key": "shop" - } - ] + "tags": { + "shop": "alcohol" + } }, { "main": [ @@ -15848,12 +14786,9 @@ "closedway" ], "name": "Beverages", - "tags": [ - { - "value": "beverages", - "key": "shop" - } - ] + "tags": { + "shop": "beverages" + } }, { "main": [ @@ -15878,12 +14813,9 @@ "closedway" ], "name": "Clothes", - "tags": [ - { - "value": "clothes", - "key": "shop" - } - ] + "tags": { + "shop": "clothes" + } }, { "main": [ @@ -15913,12 +14845,9 @@ "closedway" ], "name": "Boutique", - "tags": [ - { - "value": "boutique", - "key": "shop" - } - ] + "tags": { + "shop": "boutique" + } }, { "main": [ @@ -15943,12 +14872,9 @@ "closedway" ], "name": "Shoes", - "tags": [ - { - "value": "shoes", - "key": "shop" - } - ] + "tags": { + "shop": "shoes" + } }, { "main": [ @@ -15973,12 +14899,9 @@ "closedway" ], "name": "Outdoor", - "tags": [ - { - "value": "outdoor", - "key": "shop" - } - ] + "tags": { + "shop": "outdoor" + } }, { "main": [ @@ -16003,12 +14926,9 @@ "closedway" ], "name": "Sports", - "tags": [ - { - "value": "sports", - "key": "shop" - } - ] + "tags": { + "shop": "sports" + } }, { "main": [ @@ -16033,12 +14953,9 @@ "closedway" ], "name": "Dry Cleaning", - "tags": [ - { - "value": "dry_cleaning", - "key": "shop" - } - ] + "tags": { + "shop": "dry_cleaning" + } }, { "main": [ @@ -16063,12 +14980,9 @@ "closedway" ], "name": "Laundry", - "tags": [ - { - "value": "laundry", - "key": "shop" - } - ] + "tags": { + "shop": "laundry" + } }, { "main": [ @@ -16093,12 +15007,9 @@ "closedway" ], "name": "Tailor", - "tags": [ - { - "value": "tailor", - "key": "shop" - } - ] + "tags": { + "shop": "tailor" + } }, { "main": [ @@ -16128,12 +15039,9 @@ "closedway" ], "name": "Fabric", - "tags": [ - { - "value": "fabric", - "key": "shop" - } - ] + "tags": { + "shop": "fabric" + } }, { "main": [ @@ -16158,12 +15066,9 @@ "closedway" ], "name": "Computer", - "tags": [ - { - "value": "computer", - "key": "shop" - } - ] + "tags": { + "shop": "computer" + } }, { "main": [ @@ -16188,12 +15093,9 @@ "closedway" ], "name": "Electronics", - "tags": [ - { - "value": "electronics", - "key": "shop" - } - ] + "tags": { + "shop": "electronics" + } }, { "main": [ @@ -16223,12 +15125,9 @@ "closedway" ], "name": "Mobile Phone", - "tags": [ - { - "value": "mobile_phone", - "key": "shop" - } - ] + "tags": { + "shop": "mobile_phone" + } }, { "main": [ @@ -16258,12 +15157,9 @@ "closedway" ], "name": "Vacuum Cleaner", - "tags": [ - { - "value": "vacuum_cleaner", - "key": "shop" - } - ] + "tags": { + "shop": "vacuum_cleaner" + } }, { "main": [ @@ -16288,12 +15184,9 @@ "closedway" ], "name": "Hifi", - "tags": [ - { - "value": "hifi", - "key": "shop" - } - ] + "tags": { + "shop": "hifi" + } }, { "main": [ @@ -16318,12 +15211,9 @@ "closedway" ], "name": "Video", - "tags": [ - { - "value": "video", - "key": "shop" - } - ] + "tags": { + "shop": "video" + } }, { "main": [ @@ -16359,12 +15249,9 @@ "closedway" ], "name": "Bank", - "tags": [ - { - "value": "bank", - "key": "amenity" - } - ] + "tags": { + "amenity": "bank" + } }, { "main": [ @@ -16389,12 +15276,9 @@ "closedway" ], "name": "Money Exchange", - "tags": [ - { - "value": "bureau_de_change", - "key": "amenity" - } - ] + "tags": { + "amenity": "bureau_de_change" + } }, { "main": [ @@ -16408,12 +15292,9 @@ "node" ], "name": "Automated Teller Machine", - "tags": [ - { - "value": "atm", - "key": "amenity" - } - ] + "tags": { + "amenity": "atm" + } }, { "main": [ @@ -16443,12 +15324,9 @@ "closedway" ], "name": "Department Store", - "tags": [ - { - "value": "department_store", - "key": "shop" - } - ] + "tags": { + "shop": "department_store" + } }, { "main": [ @@ -16478,12 +15356,9 @@ "closedway" ], "name": "Mall", - "tags": [ - { - "value": "mall", - "key": "shop" - } - ] + "tags": { + "shop": "mall" + } }, { "main": [ @@ -16508,12 +15383,9 @@ "closedway" ], "name": "Chemist", - "tags": [ - { - "value": "chemist", - "key": "shop" - } - ] + "tags": { + "shop": "chemist" + } }, { "main": [ @@ -16538,12 +15410,9 @@ "closedway" ], "name": "Hairdresser", - "tags": [ - { - "value": "hairdresser", - "key": "shop" - } - ] + "tags": { + "shop": "hairdresser" + } }, { "main": [ @@ -16568,12 +15437,9 @@ "closedway" ], "name": "Optician", - "tags": [ - { - "value": "optician", - "key": "shop" - } - ] + "tags": { + "shop": "optician" + } }, { "main": [ @@ -16603,12 +15469,9 @@ "closedway" ], "name": "Jewelry", - "tags": [ - { - "value": "jewelry", - "key": "shop" - } - ] + "tags": { + "shop": "jewelry" + } }, { "main": [ @@ -16638,12 +15501,9 @@ "closedway" ], "name": "Erotic", - "tags": [ - { - "value": "erotic", - "key": "shop" - } - ] + "tags": { + "shop": "erotic" + } }, { "main": [ @@ -16668,12 +15528,9 @@ "closedway" ], "name": "Florist", - "tags": [ - { - "value": "florist", - "key": "shop" - } - ] + "tags": { + "shop": "florist" + } }, { "main": [ @@ -16698,12 +15555,9 @@ "closedway" ], "name": "Garden Centre", - "tags": [ - { - "value": "garden_centre", - "key": "shop" - } - ] + "tags": { + "shop": "garden_centre" + } }, { "main": [ @@ -16728,12 +15582,9 @@ "closedway" ], "name": "Do-it-yourself-store", - "tags": [ - { - "value": "doityourself", - "key": "shop" - } - ] + "tags": { + "shop": "doityourself" + } }, { "main": [ @@ -16758,12 +15609,9 @@ "closedway" ], "name": "Hardware", - "tags": [ - { - "value": "hardware", - "key": "shop" - } - ] + "tags": { + "shop": "hardware" + } }, { "main": [ @@ -16793,12 +15641,9 @@ "closedway" ], "name": "Paint", - "tags": [ - { - "value": "paint", - "key": "shop" - } - ] + "tags": { + "shop": "paint" + } }, { "main": [ @@ -16823,12 +15668,9 @@ "closedway" ], "name": "Furniture", - "tags": [ - { - "value": "furniture", - "key": "shop" - } - ] + "tags": { + "shop": "furniture" + } }, { "main": [ @@ -16858,12 +15700,9 @@ "closedway" ], "name": "Kitchen", - "tags": [ - { - "value": "kitchen", - "key": "shop" - } - ] + "tags": { + "shop": "kitchen" + } }, { "main": [ @@ -16893,12 +15732,9 @@ "closedway" ], "name": "Curtain", - "tags": [ - { - "value": "curtain", - "key": "shop" - } - ] + "tags": { + "shop": "curtain" + } }, { "main": [ @@ -16928,12 +15764,9 @@ "closedway" ], "name": "Frame", - "tags": [ - { - "value": "frame", - "key": "shop" - } - ] + "tags": { + "shop": "frame" + } }, { "main": [ @@ -16958,12 +15791,9 @@ "closedway" ], "name": "Stationery", - "tags": [ - { - "value": "stationery", - "key": "shop" - } - ] + "tags": { + "shop": "stationery" + } }, { "main": [ @@ -16993,12 +15823,9 @@ "closedway" ], "name": "Copyshop", - "tags": [ - { - "value": "copyshop", - "key": "shop" - } - ] + "tags": { + "shop": "copyshop" + } }, { "main": [ @@ -17023,12 +15850,9 @@ "closedway" ], "name": "Book Store", - "tags": [ - { - "value": "books", - "key": "shop" - } - ] + "tags": { + "shop": "books" + } }, { "main": [ @@ -17053,12 +15877,9 @@ "closedway" ], "name": "Travel Agency", - "tags": [ - { - "value": "travel_agency", - "key": "shop" - } - ] + "tags": { + "shop": "travel_agency" + } }, { "main": [ @@ -17088,12 +15909,9 @@ "closedway" ], "name": "Musical Instrument", - "tags": [ - { - "value": "musical_instrument", - "key": "shop" - } - ] + "tags": { + "shop": "musical_instrument" + } }, { "main": [ @@ -17118,12 +15936,9 @@ "closedway" ], "name": "Toys", - "tags": [ - { - "value": "toys", - "key": "shop" - } - ] + "tags": { + "shop": "toys" + } }, { "main": [ @@ -17153,12 +15968,9 @@ "closedway" ], "name": "Variety Store", - "tags": [ - { - "value": "variety_store", - "key": "shop" - } - ] + "tags": { + "shop": "variety_store" + } }, { "main": [ @@ -17218,12 +16030,9 @@ "node" ], "name": "Vending machine", - "tags": [ - { - "value": "vending_machine", - "key": "amenity" - } - ] + "tags": { + "amenity": "vending_machine" + } }, { "main": [ @@ -17238,12 +16047,9 @@ "relation" ], "name": "National", - "tags": [ - { - "value": "national", - "key": "boundary" - } - ] + "tags": { + "boundary": "national" + } }, { "main": [ @@ -17258,12 +16064,9 @@ "relation" ], "name": "Administrative", - "tags": [ - { - "value": "administrative", - "key": "boundary" - } - ] + "tags": { + "boundary": "administrative" + } }, { "main": [ @@ -17278,12 +16081,9 @@ "relation" ], "name": "Civil", - "tags": [ - { - "value": "civil", - "key": "boundary" - } - ] + "tags": { + "boundary": "civil" + } }, { "main": [ @@ -17298,12 +16098,9 @@ "relation" ], "name": "Political", - "tags": [ - { - "value": "political", - "key": "boundary" - } - ] + "tags": { + "boundary": "political" + } }, { "main": [ @@ -17318,12 +16115,9 @@ "relation" ], "name": "National park", - "tags": [ - { - "value": "national_park", - "key": "boundary" - } - ] + "tags": { + "boundary": "national_park" + } }, { "main": [ @@ -17343,12 +16137,9 @@ "closedway" ], "name": "Continent", - "tags": [ - { - "value": "continent", - "key": "place" - } - ] + "tags": { + "place": "continent" + } }, { "main": [ @@ -17368,12 +16159,9 @@ "closedway" ], "name": "Country", - "tags": [ - { - "value": "country", - "key": "place" - } - ] + "tags": { + "place": "country" + } }, { "main": [ @@ -17393,12 +16181,9 @@ "closedway" ], "name": "State", - "tags": [ - { - "value": "state", - "key": "place" - } - ] + "tags": { + "place": "state" + } }, { "main": [ @@ -17418,12 +16203,9 @@ "closedway" ], "name": "Region", - "tags": [ - { - "value": "region", - "key": "place" - } - ] + "tags": { + "place": "region" + } }, { "main": [ @@ -17458,12 +16240,9 @@ "closedway" ], "name": "County", - "tags": [ - { - "value": "county", - "key": "place" - } - ] + "tags": { + "place": "county" + } }, { "main": [ @@ -17498,12 +16277,9 @@ "closedway" ], "name": "City", - "tags": [ - { - "value": "city", - "key": "place" - } - ] + "tags": { + "place": "city" + } }, { "main": [ @@ -17538,12 +16314,9 @@ "closedway" ], "name": "Town", - "tags": [ - { - "value": "town", - "key": "place" - } - ] + "tags": { + "place": "town" + } }, { "main": [ @@ -17578,12 +16351,9 @@ "closedway" ], "name": "Suburb", - "tags": [ - { - "value": "suburb", - "key": "place" - } - ] + "tags": { + "place": "suburb" + } }, { "main": [ @@ -17618,12 +16388,9 @@ "closedway" ], "name": "Village", - "tags": [ - { - "value": "village", - "key": "place" - } - ] + "tags": { + "place": "village" + } }, { "main": [ @@ -17658,12 +16425,9 @@ "closedway" ], "name": "Hamlet", - "tags": [ - { - "value": "hamlet", - "key": "place" - } - ] + "tags": { + "place": "hamlet" + } }, { "main": [ @@ -17698,12 +16462,9 @@ "closedway" ], "name": "Isolated Dwelling", - "tags": [ - { - "value": "isolated_dwelling", - "key": "place" - } - ] + "tags": { + "place": "isolated_dwelling" + } }, { "main": [ @@ -17733,12 +16494,9 @@ "closedway" ], "name": "Neighbourhood", - "tags": [ - { - "value": "neighbourhood", - "key": "place" - } - ] + "tags": { + "place": "neighbourhood" + } }, { "main": [ @@ -17758,12 +16516,9 @@ "closedway" ], "name": "Locality", - "tags": [ - { - "value": "locality", - "key": "place" - } - ] + "tags": { + "place": "locality" + } }, { "main": [ @@ -17787,12 +16542,9 @@ "node" ], "name": "Peak", - "tags": [ - { - "value": "peak", - "key": "natural" - } - ] + "tags": { + "natural": "peak" + } }, { "main": [ @@ -17817,12 +16569,9 @@ "closedway" ], "name": "Glacier", - "tags": [ - { - "value": "glacier", - "key": "natural" - } - ] + "tags": { + "natural": "glacier" + } }, { "main": [ @@ -17847,12 +16596,9 @@ "closedway" ], "name": "Volcano", - "tags": [ - { - "value": "volcano", - "key": "natural" - } - ] + "tags": { + "natural": "volcano" + } }, { "main": [ @@ -17872,12 +16618,9 @@ "closedway" ], "name": "Cave Entrance", - "tags": [ - { - "value": "cave_entrance", - "key": "natural" - } - ] + "tags": { + "natural": "cave_entrance" + } }, { "main": [ @@ -17897,12 +16640,9 @@ "closedway" ], "name": "Island", - "tags": [ - { - "value": "island", - "key": "place" - } - ] + "tags": { + "place": "island" + } }, { "main": [ @@ -17922,12 +16662,9 @@ "closedway" ], "name": "Islet", - "tags": [ - { - "value": "islet", - "key": "place" - } - ] + "tags": { + "place": "islet" + } }, { "main": [ @@ -17956,12 +16693,9 @@ "node" ], "name": "Tree", - "tags": [ - { - "value": "tree", - "key": "natural" - } - ] + "tags": { + "natural": "tree" + } }, { "main": [ @@ -17987,12 +16721,9 @@ "relation" ], "name": "Wood", - "tags": [ - { - "value": "wood", - "key": "natural" - } - ] + "tags": { + "natural": "wood" + } }, { "main": [ @@ -18018,12 +16749,9 @@ "relation" ], "name": "Forest", - "tags": [ - { - "value": "forest", - "key": "landuse" - } - ] + "tags": { + "landuse": "forest" + } }, { "main": [ @@ -18039,12 +16767,9 @@ "relation" ], "name": "Nature Reserve", - "tags": [ - { - "value": "nature_reserve", - "key": "leisure" - } - ] + "tags": { + "leisure": "nature_reserve" + } }, { "main": [ @@ -18060,12 +16785,9 @@ "relation" ], "name": "Scree", - "tags": [ - { - "value": "scree", - "key": "natural" - } - ] + "tags": { + "natural": "scree" + } }, { "main": [ @@ -18081,12 +16803,9 @@ "relation" ], "name": "Fell", - "tags": [ - { - "value": "fell", - "key": "natural" - } - ] + "tags": { + "natural": "fell" + } }, { "main": [ @@ -18102,12 +16821,9 @@ "relation" ], "name": "Scrub", - "tags": [ - { - "value": "scrub", - "key": "natural" - } - ] + "tags": { + "natural": "scrub" + } }, { "main": [ @@ -18123,12 +16839,9 @@ "relation" ], "name": "Heath", - "tags": [ - { - "value": "heath", - "key": "natural" - } - ] + "tags": { + "natural": "heath" + } }, { "main": [ @@ -18143,12 +16856,9 @@ "relation" ], "name": "Farmyard", - "tags": [ - { - "value": "farmyard", - "key": "landuse" - } - ] + "tags": { + "landuse": "farmyard" + } }, { "main": [ @@ -18163,12 +16873,9 @@ "relation" ], "name": "Farmland", - "tags": [ - { - "value": "farmland", - "key": "landuse" - } - ] + "tags": { + "landuse": "farmland" + } }, { "main": [ @@ -18184,12 +16891,9 @@ "relation" ], "name": "Meadow", - "tags": [ - { - "value": "meadow", - "key": "landuse" - } - ] + "tags": { + "landuse": "meadow" + } }, { "main": [ @@ -18205,12 +16909,9 @@ "relation" ], "name": "Vineyard", - "tags": [ - { - "value": "vineyard", - "key": "landuse" - } - ] + "tags": { + "landuse": "vineyard" + } }, { "main": [ @@ -18229,12 +16930,9 @@ "closedway" ], "name": "Greenhouse Horticulture", - "tags": [ - { - "value": "greenhouse_horticulture", - "key": "landuse" - } - ] + "tags": { + "landuse": "greenhouse_horticulture" + } }, { "main": [ @@ -18250,12 +16948,9 @@ "relation" ], "name": "Allotments", - "tags": [ - { - "value": "allotments", - "key": "landuse" - } - ] + "tags": { + "landuse": "allotments" + } }, { "main": [ @@ -18271,12 +16966,9 @@ "relation" ], "name": "Garden", - "tags": [ - { - "value": "garden", - "key": "leisure" - } - ] + "tags": { + "leisure": "garden" + } }, { "main": [ @@ -18292,12 +16984,9 @@ "relation" ], "name": "Grass", - "tags": [ - { - "value": "grass", - "key": "landuse" - } - ] + "tags": { + "landuse": "grass" + } }, { "main": [ @@ -18313,12 +17002,9 @@ "relation" ], "name": "Village Green", - "tags": [ - { - "value": "village_green", - "key": "landuse" - } - ] + "tags": { + "landuse": "village_green" + } }, { "main": [ @@ -18334,12 +17020,9 @@ "relation" ], "name": "Common", - "tags": [ - { - "value": "common", - "key": "leisure" - } - ] + "tags": { + "leisure": "common" + } }, { "main": [ @@ -18355,12 +17038,9 @@ "relation" ], "name": "Park", - "tags": [ - { - "value": "park", - "key": "leisure" - } - ] + "tags": { + "leisure": "park" + } }, { "main": [ @@ -18376,12 +17056,9 @@ "relation" ], "name": "Recreation Ground", - "tags": [ - { - "value": "recreation_ground", - "key": "landuse" - } - ] + "tags": { + "landuse": "recreation_ground" + } }, { "main": [ @@ -18396,12 +17073,9 @@ "relation" ], "name": "Residential area", - "tags": [ - { - "value": "residential", - "key": "landuse" - } - ] + "tags": { + "landuse": "residential" + } }, { "main": [ @@ -18458,12 +17132,9 @@ "relation" ], "name": "Graveyard", - "tags": [ - { - "value": "grave_yard", - "key": "amenity" - } - ] + "tags": { + "amenity": "grave_yard" + } }, { "main": [ @@ -18520,12 +17191,9 @@ "relation" ], "name": "Cemetery", - "tags": [ - { - "value": "cemetery", - "key": "landuse" - } - ] + "tags": { + "landuse": "cemetery" + } }, { "main": [ @@ -18541,12 +17209,9 @@ "relation" ], "name": "Retail", - "tags": [ - { - "value": "retail", - "key": "landuse" - } - ] + "tags": { + "landuse": "retail" + } }, { "main": [ @@ -18562,12 +17227,9 @@ "relation" ], "name": "Commercial", - "tags": [ - { - "value": "commercial", - "key": "landuse" - } - ] + "tags": { + "landuse": "commercial" + } }, { "main": [ @@ -18583,12 +17245,9 @@ "relation" ], "name": "Industrial", - "tags": [ - { - "value": "industrial", - "key": "landuse" - } - ] + "tags": { + "landuse": "industrial" + } }, { "main": [ @@ -18607,12 +17266,9 @@ "closedway" ], "name": "Garages", - "tags": [ - { - "value": "garages", - "key": "landuse" - } - ] + "tags": { + "landuse": "garages" + } }, { "main": [ @@ -18627,12 +17283,9 @@ "relation" ], "name": "Railway land", - "tags": [ - { - "value": "railway", - "key": "landuse" - } - ] + "tags": { + "landuse": "railway" + } }, { "main": [ @@ -18648,12 +17301,9 @@ "relation" ], "name": "Military", - "tags": [ - { - "value": "military", - "key": "landuse" - } - ] + "tags": { + "landuse": "military" + } }, { "main": [ @@ -18669,12 +17319,9 @@ "relation" ], "name": "Construction area", - "tags": [ - { - "value": "construction", - "key": "landuse" - } - ] + "tags": { + "landuse": "construction" + } }, { "main": [ @@ -18690,12 +17337,9 @@ "relation" ], "name": "Brownfield", - "tags": [ - { - "value": "brownfield", - "key": "landuse" - } - ] + "tags": { + "landuse": "brownfield" + } }, { "main": [ @@ -18711,12 +17355,9 @@ "relation" ], "name": "Greenfield", - "tags": [ - { - "value": "greenfield", - "key": "landuse" - } - ] + "tags": { + "landuse": "greenfield" + } }, { "main": [ @@ -18732,12 +17373,9 @@ "relation" ], "name": "Landfill", - "tags": [ - { - "value": "landfill", - "key": "landuse" - } - ] + "tags": { + "landuse": "landfill" + } }, { "main": [ @@ -18753,12 +17391,9 @@ "relation" ], "name": "Quarry", - "tags": [ - { - "value": "quarry", - "key": "landuse" - } - ] + "tags": { + "landuse": "quarry" + } }, { "main": [ @@ -18809,7 +17444,7 @@ "closedway" ], "name": "Addresses", - "tags": [] + "tags": {} }, { "main": [ @@ -18829,7 +17464,7 @@ "way" ], "name": "Address Interpolation", - "tags": [] + "tags": {} }, { "main": [ @@ -18871,7 +17506,7 @@ "relation" ], "name": "Contact (common schema)", - "tags": [] + "tags": {} }, { "main": [ @@ -18913,7 +17548,7 @@ "relation" ], "name": "Contact (schema with 'contact:*' prefix)", - "tags": [] + "tags": {} }, { "main": [ @@ -18927,12 +17562,9 @@ "relation" ], "name": "Multipolygon", - "tags": [ - { - "value": "multipolygon", - "key": "type" - } - ] + "tags": { + "type": "multipolygon" + } }, { "main": [ @@ -18974,12 +17606,9 @@ "relation" ], "name": "Boundary", - "tags": [ - { - "value": "boundary", - "key": "type" - } - ] + "tags": { + "type": "boundary" + } }, { "main": [ @@ -18993,12 +17622,9 @@ "relation" ], "name": "Site", - "tags": [ - { - "value": "site", - "key": "type" - } - ] + "tags": { + "type": "site" + } }, { "main": [ @@ -19026,12 +17652,9 @@ "relation" ], "name": "Turn restriction", - "tags": [ - { - "value": "restriction", - "key": "type" - } - ] + "tags": { + "type": "restriction" + } }, { "main": [ @@ -19068,12 +17691,9 @@ "relation" ], "name": "Enforcement", - "tags": [ - { - "value": "enforcement", - "key": "type" - } - ] + "tags": { + "type": "enforcement" + } }, { "main": [ @@ -19156,12 +17776,9 @@ "relation" ], "name": "Route", - "tags": [ - { - "value": "route", - "key": "type" - } - ] + "tags": { + "type": "route" + } }, { "main": [ @@ -19210,12 +17827,9 @@ "relation" ], "name": "Route master", - "tags": [ - { - "value": "route_master", - "key": "type" - } - ] + "tags": { + "type": "route_master" + } }, { "main": [ @@ -19288,12 +17902,9 @@ "relation" ], "name": "Directional Route (North America)", - "tags": [ - { - "value": "route", - "key": "type" - } - ] + "tags": { + "type": "route" + } }, { "main": [ @@ -19317,12 +17928,9 @@ "relation" ], "name": "Route network", - "tags": [ - { - "value": "network", - "key": "type" - } - ] + "tags": { + "type": "network" + } }, { "main": [ @@ -19336,12 +17944,9 @@ "relation" ], "name": "Associated street", - "tags": [ - { - "value": "associatedStreet", - "key": "type" - } - ] + "tags": { + "type": "associatedStreet" + } }, { "main": [ @@ -19355,12 +17960,9 @@ "relation" ], "name": "Street", - "tags": [ - { - "value": "street", - "key": "type" - } - ] + "tags": { + "type": "street" + } }, { "main": [ @@ -19399,12 +18001,9 @@ "relation" ], "name": "Destination sign", - "tags": [ - { - "value": "destination_sign", - "key": "type" - } - ] + "tags": { + "type": "destination_sign" + } }, { "main": [ @@ -19470,12 +18069,9 @@ "relation" ], "name": "Waterway", - "tags": [ - { - "value": "waterway", - "key": "type" - } - ] + "tags": { + "type": "waterway" + } }, { "main": [ @@ -19527,12 +18123,9 @@ "relation" ], "name": "Bridge", - "tags": [ - { - "value": "bridge", - "key": "type" - } - ] + "tags": { + "type": "bridge" + } }, { "main": [ @@ -19579,11 +18172,8 @@ "relation" ], "name": "Tunnel", - "tags": [ - { - "value": "tunnel", - "key": "type" - } - ] + "tags": { + "type": "tunnel" + } } ] \ No newline at end of file From d2ab5d7f6d406508ff0aa43b0f18c1eafbfc00f5 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 1 Feb 2013 13:53:55 -0500 Subject: [PATCH 21/30] Only show tags not supported by preset; saving --- js/id/ui/inspector.js | 6 ++++-- js/id/ui/preset.js | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index a563715ef..6ab4f512a 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -3,6 +3,7 @@ iD.ui.inspector = function() { taginfo = iD.taginfo(), presetData = iD.presetData(), initial = false, + presetUI, graph, tagList; @@ -41,7 +42,7 @@ iD.ui.inspector = function() { var inspectorwrap = inspectorbody.append('div') .attr('class', 'inspector-inner tag-wrap fillL2'); - var presetUI = iD.ui.preset() + presetUI = iD.ui.preset() .on('change', function(tags) { inspector.tags(_.extend(inspector.tags(), tags)); event.change(); @@ -130,6 +131,7 @@ iD.ui.inspector = function() { function drawTags(tags) { var entity = tagList.datum(); + tags = _.omit(tags, _.keys(presetUI.tags() || {})); tags = d3.entries(tags); if (!tags.length) { @@ -311,7 +313,7 @@ iD.ui.inspector = function() { inspector.tags = function(tags) { if (!arguments.length) { - tags = {}; + tags = presetUI.tags(); tagList.selectAll('li').each(function() { var row = d3.select(this), key = row.selectAll('.key').property('value'), diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index 5c71446a0..75de04d35 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -5,7 +5,7 @@ iD.ui.preset = function() { preset; function getTags() { - var tags = {}; + var tags = _.clone(preset.tags); sections.selectAll('input,select') .each(function(d) { tags[d.key] = this.value; @@ -110,6 +110,7 @@ iD.ui.preset = function() { .attr('class', 'col8 preset-input'), d); }); if (exttags) setTags(exttags); + key(); } presets.preset = function(_) { @@ -124,5 +125,10 @@ iD.ui.preset = function() { return presets; }; + presets.tags = function() { + if (!preset || !sections) return {}; + return clean(getTags()); + }; + return d3.rebind(presets, event, 'on'); }; From ca940d9975c684306b7d8af316585c961845b17d Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 1 Feb 2013 14:46:21 -0500 Subject: [PATCH 22/30] Fix areas vs lines in presets --- js/id/presetdata.js | 10 +- presets/convert_josm.py | 2 +- presets/presets_josm.json | 802 +++++++++++++++++++------------------- 3 files changed, 409 insertions(+), 405 deletions(-) diff --git a/js/id/presetdata.js b/js/id/presetdata.js index e3fadfb86..70834b248 100644 --- a/js/id/presetdata.js +++ b/js/id/presetdata.js @@ -15,17 +15,21 @@ iD.presetData = function() { }; presets.match = function(entity) { + var type = entity.type == 'node' ? 'node' : entity.geometry(); return data.filter(function(d) { - return _.contains(d.type, entity.type); + return _.contains(d.type, type); }); }; presets.matchTags = function(entity) { - var tags, count, maxcount = 0, best; + var tags, count, best, + maxcount = 0, + type = entity.type == 'node' ? 'node' : entity.geometry(); + for (var i = 0; i < data.length; i++) { count = 0; tags = data[i].tags; - if (!_.contains(data[i].type, entity.type)) continue; + if (!_.contains(data[i].type, type)) continue; for (var k in tags) { if (entity.tags[k] == tags[k]) count++; } diff --git a/presets/convert_josm.py b/presets/convert_josm.py index a4d861839..b9b353264 100644 --- a/presets/convert_josm.py +++ b/presets/convert_josm.py @@ -39,7 +39,7 @@ for item in dom1.getElementsByTagName('item'): jitem = { "name": item.getAttribute('name'), - "type": item.getAttribute('type').split(','), + "type": item.getAttribute('type').replace('closedway', 'area').replace('way', 'line').split(','), "tags": tags, "main": [] } diff --git a/presets/presets_josm.json b/presets/presets_josm.json index 332ad63b5..e9ed3f9fd 100644 --- a/presets/presets_josm.json +++ b/presets/presets_josm.json @@ -106,7 +106,7 @@ } ], "type": [ - "way" + "line" ], "name": "Motorway", "tags": { @@ -210,7 +210,7 @@ } ], "type": [ - "way" + "line" ], "name": "Motorway Link", "tags": { @@ -330,7 +330,7 @@ } ], "type": [ - "way" + "line" ], "name": "Trunk", "tags": { @@ -445,7 +445,7 @@ } ], "type": [ - "way" + "line" ], "name": "Trunk Link", "tags": { @@ -578,7 +578,7 @@ } ], "type": [ - "way" + "line" ], "name": "Primary", "tags": { @@ -701,7 +701,7 @@ } ], "type": [ - "way" + "line" ], "name": "Primary Link", "tags": { @@ -828,7 +828,7 @@ } ], "type": [ - "way" + "line" ], "name": "Secondary", "tags": { @@ -945,7 +945,7 @@ } ], "type": [ - "way" + "line" ], "name": "Secondary Link", "tags": { @@ -1072,7 +1072,7 @@ } ], "type": [ - "way" + "line" ], "name": "Tertiary", "tags": { @@ -1189,7 +1189,7 @@ } ], "type": [ - "way" + "line" ], "name": "Tertiary Link", "tags": { @@ -1322,7 +1322,7 @@ } ], "type": [ - "way" + "line" ], "name": "Unclassified", "tags": { @@ -1449,7 +1449,7 @@ } ], "type": [ - "way" + "line" ], "name": "Residential", "tags": { @@ -1559,7 +1559,7 @@ } ], "type": [ - "way" + "line" ], "name": "Living Street", "tags": { @@ -1669,8 +1669,8 @@ } ], "type": [ - "way", - "closedway", + "line", + "area", "relation" ], "name": "Pedestrian", @@ -1802,7 +1802,7 @@ } ], "type": [ - "way" + "line" ], "name": "Service", "tags": { @@ -1847,7 +1847,7 @@ } ], "type": [ - "way" + "line" ], "name": "Parking Aisle", "tags": { @@ -1963,7 +1963,7 @@ } ], "type": [ - "way" + "line" ], "name": "Road (Unknown Type)", "tags": { @@ -2088,7 +2088,7 @@ } ], "type": [ - "way" + "line" ], "name": "Construction", "tags": { @@ -2379,7 +2379,7 @@ ], "type": [ "node", - "way" + "line" ], "name": "Road Restrictions", "tags": {} @@ -2493,7 +2493,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Roundabout", "tags": { @@ -2566,7 +2566,7 @@ } ], "type": [ - "way" + "line" ], "name": "Bridge", "tags": {} @@ -2621,7 +2621,7 @@ } ], "type": [ - "way" + "line" ], "name": "Tunnel", "tags": { @@ -2651,7 +2651,7 @@ ], "type": [ "node", - "way" + "line" ], "name": "Ford", "tags": { @@ -2846,7 +2846,7 @@ } ], "type": [ - "way" + "line" ], "name": "Track", "tags": { @@ -3079,7 +3079,7 @@ } ], "type": [ - "way" + "line" ], "name": "Path", "tags": { @@ -3194,7 +3194,7 @@ } ], "type": [ - "way" + "line" ], "name": "Dedicated Bridleway", "tags": { @@ -3280,7 +3280,7 @@ } ], "type": [ - "way" + "line" ], "name": "Cycle Lane", "tags": {} @@ -3398,7 +3398,7 @@ } ], "type": [ - "way" + "line" ], "name": "Dedicated Cycleway", "tags": { @@ -3508,7 +3508,7 @@ } ], "type": [ - "way" + "line" ], "name": "Segregated Foot- and Cycleway", "tags": { @@ -3627,7 +3627,7 @@ } ], "type": [ - "way" + "line" ], "name": "Combined Foot- and Cycleway", "tags": { @@ -3740,7 +3740,7 @@ } ], "type": [ - "way" + "line" ], "name": "Dedicated Footway", "tags": { @@ -3842,7 +3842,7 @@ } ], "type": [ - "way" + "line" ], "name": "Steps", "tags": { @@ -3896,7 +3896,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Services", @@ -3920,7 +3920,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Rest Area", "tags": { @@ -4215,7 +4215,7 @@ ], "type": [ "node", - "way" + "line" ], "name": "Bollard", "tags": { @@ -4286,8 +4286,8 @@ ], "type": [ "node", - "way", - "closedway" + "line", + "area" ], "name": "Block", "tags": { @@ -4395,7 +4395,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Toll Booth", "tags": { @@ -4446,8 +4446,8 @@ { "main": [], "type": [ - "way", - "closedway", + "line", + "area", "relation" ], "name": "Hedge", @@ -4473,8 +4473,8 @@ } ], "type": [ - "way", - "closedway" + "line", + "area" ], "name": "Fence", "tags": { @@ -4484,8 +4484,8 @@ { "main": [], "type": [ - "way", - "closedway" + "line", + "area" ], "name": "Wall", "tags": { @@ -4495,8 +4495,8 @@ { "main": [], "type": [ - "way", - "closedway" + "line", + "area" ], "name": "City Wall", "tags": { @@ -4506,8 +4506,8 @@ { "main": [], "type": [ - "way", - "closedway" + "line", + "area" ], "name": "Retaining Wall", "tags": { @@ -4523,7 +4523,7 @@ } ], "type": [ - "way" + "line" ], "name": "Ditch", "tags": { @@ -4872,7 +4872,7 @@ } ], "type": [ - "way" + "line" ], "name": "Drain", "tags": { @@ -4906,7 +4906,7 @@ } ], "type": [ - "way" + "line" ], "name": "Ditch", "tags": { @@ -4940,7 +4940,7 @@ } ], "type": [ - "way" + "line" ], "name": "Stream", "tags": { @@ -4979,7 +4979,7 @@ } ], "type": [ - "way" + "line" ], "name": "Canal", "tags": { @@ -5018,7 +5018,7 @@ } ], "type": [ - "way" + "line" ], "name": "River", "tags": { @@ -5035,7 +5035,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Spring", "tags": { @@ -5057,7 +5057,7 @@ ], "type": [ "node", - "way" + "line" ], "name": "Waterfall", "tags": { @@ -5074,7 +5074,7 @@ ], "type": [ "node", - "way" + "line" ], "name": "Weir", "tags": { @@ -5096,8 +5096,8 @@ ], "type": [ "node", - "way", - "closedway" + "line", + "area" ], "name": "Dam", "tags": { @@ -5108,8 +5108,8 @@ "main": [], "type": [ "node", - "way", - "closedway" + "line", + "area" ], "name": "Groyne", "tags": { @@ -5130,8 +5130,8 @@ } ], "type": [ - "way", - "closedway" + "line", + "area" ], "name": "Breakwater", "tags": { @@ -5148,7 +5148,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Basin", @@ -5166,7 +5166,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Reservoir", @@ -5184,7 +5184,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Covered Reservoir", @@ -5202,7 +5202,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Water", @@ -5220,7 +5220,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Land", @@ -5238,8 +5238,8 @@ ], "type": [ "node", - "way", - "closedway", + "line", + "area", "relation" ], "name": "Coastline", @@ -5256,7 +5256,7 @@ } ], "type": [ - "closedway", + "area", "relation" ], "name": "Riverbank", @@ -5288,7 +5288,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Wetland", @@ -5306,7 +5306,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Mud", @@ -5324,7 +5324,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Beach", @@ -5342,7 +5342,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Bay", @@ -5360,8 +5360,8 @@ ], "type": [ "node", - "way", - "closedway", + "line", + "area", "relation" ], "name": "Cliff", @@ -5391,7 +5391,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Ferry Terminal", "tags": { @@ -5407,8 +5407,8 @@ } ], "type": [ - "way", - "closedway" + "line", + "area" ], "name": "Ferry Route", "tags": { @@ -5425,7 +5425,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Marina", "tags": { @@ -5441,8 +5441,8 @@ } ], "type": [ - "way", - "closedway" + "line", + "area" ], "name": "Pier", "tags": { @@ -5495,7 +5495,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Boatyard", "tags": { @@ -5512,7 +5512,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Dock", "tags": { @@ -5602,7 +5602,7 @@ } ], "type": [ - "way" + "line" ], "name": "Rail", "tags": { @@ -5680,7 +5680,7 @@ } ], "type": [ - "way" + "line" ], "name": "Narrow Gauge Rail", "tags": { @@ -5737,7 +5737,7 @@ } ], "type": [ - "way" + "line" ], "name": "Monorail", "tags": { @@ -5815,7 +5815,7 @@ } ], "type": [ - "way" + "line" ], "name": "Preserved", "tags": { @@ -5893,7 +5893,7 @@ } ], "type": [ - "way" + "line" ], "name": "Light Rail", "tags": { @@ -5971,7 +5971,7 @@ } ], "type": [ - "way" + "line" ], "name": "Subway", "tags": { @@ -6049,7 +6049,7 @@ } ], "type": [ - "way" + "line" ], "name": "Tram", "tags": { @@ -6158,7 +6158,7 @@ } ], "type": [ - "way" + "line" ], "name": "Bus Guideway", "tags": { @@ -6179,7 +6179,7 @@ } ], "type": [ - "way" + "line" ], "name": "Disused Rail", "tags": { @@ -6189,7 +6189,7 @@ { "main": [], "type": [ - "way" + "line" ], "name": "Abandoned Rail", "tags": { @@ -6252,7 +6252,7 @@ "main": [], "type": [ "node", - "closedway" + "area" ], "name": "Turntable", "tags": { @@ -6310,7 +6310,7 @@ } ], "type": [ - "way" + "line" ], "name": "Chair Lift", "tags": { @@ -6341,7 +6341,7 @@ } ], "type": [ - "way" + "line" ], "name": "Drag Lift", "tags": { @@ -6383,7 +6383,7 @@ } ], "type": [ - "way" + "line" ], "name": "Cable Car", "tags": { @@ -6425,7 +6425,7 @@ } ], "type": [ - "way" + "line" ], "name": "Gondola", "tags": { @@ -6473,7 +6473,7 @@ } ], "type": [ - "way" + "line" ], "name": "Mixed Lift", "tags": { @@ -6504,7 +6504,7 @@ } ], "type": [ - "way" + "line" ], "name": "T-bar Lift", "tags": { @@ -6535,7 +6535,7 @@ } ], "type": [ - "way" + "line" ], "name": "J-bar Lift", "tags": { @@ -6566,7 +6566,7 @@ } ], "type": [ - "way" + "line" ], "name": "Platter Lift", "tags": { @@ -6597,7 +6597,7 @@ } ], "type": [ - "way" + "line" ], "name": "Rope Tow", "tags": { @@ -6628,7 +6628,7 @@ } ], "type": [ - "way" + "line" ], "name": "Magic Carpet", "tags": { @@ -6654,7 +6654,7 @@ } ], "type": [ - "way" + "line" ], "name": "Goods", "tags": { @@ -6671,7 +6671,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Station", "tags": { @@ -6803,7 +6803,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Parking", "tags": { @@ -6940,7 +6940,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Parking space", "tags": { @@ -7239,7 +7239,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Fuel", "tags": { @@ -7302,7 +7302,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Wash", "tags": { @@ -7324,7 +7324,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Car Dealer", "tags": { @@ -7361,7 +7361,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Repair", "tags": { @@ -7418,7 +7418,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Tyres", "tags": { @@ -7455,7 +7455,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Rental", "tags": { @@ -7497,7 +7497,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Sharing", "tags": { @@ -7538,7 +7538,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Parking", "tags": { @@ -7669,7 +7669,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Motorcycle Dealer", "tags": { @@ -7723,7 +7723,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Parking", "tags": { @@ -7782,7 +7782,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Bike Dealer", "tags": { @@ -7799,7 +7799,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Rental", "tags": { @@ -7821,7 +7821,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Station", "tags": { @@ -7880,8 +7880,8 @@ } ], "type": [ - "way", - "closedway" + "line", + "area" ], "name": "Railway Platform", "tags": { @@ -7927,7 +7927,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Bus Station", "tags": { @@ -7998,7 +7998,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Bus Platform", "tags": { @@ -8078,7 +8078,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Taxi", "tags": { @@ -8110,7 +8110,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Airport Ground", "tags": { @@ -8126,7 +8126,7 @@ } ], "type": [ - "way" + "line" ], "name": "Runway", "tags": { @@ -8142,7 +8142,7 @@ } ], "type": [ - "way" + "line" ], "name": "Taxiway", "tags": { @@ -8159,7 +8159,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Helipad", "tags": { @@ -8169,7 +8169,7 @@ { "main": [], "type": [ - "closedway" + "area" ], "name": "Apron", "tags": { @@ -8180,7 +8180,7 @@ "main": [], "type": [ "node", - "closedway" + "area" ], "name": "Hangar", "tags": { @@ -8217,7 +8217,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Terminal", "tags": { @@ -8331,7 +8331,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Hotel", "tags": { @@ -8429,7 +8429,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Motel", "tags": { @@ -8522,7 +8522,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Guest House", "tags": { @@ -8615,7 +8615,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Chalet", "tags": { @@ -8713,7 +8713,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Hostel", "tags": { @@ -8802,7 +8802,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Alpine Hut", "tags": { @@ -8922,7 +8922,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Caravan Site", "tags": { @@ -9015,7 +9015,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Camping Site", "tags": { @@ -9130,7 +9130,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Restaurant", "tags": { @@ -9250,7 +9250,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Fast Food", "tags": { @@ -9339,7 +9339,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Food Court", "tags": { @@ -9442,7 +9442,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Cafe", "tags": { @@ -9542,7 +9542,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Pub", "tags": { @@ -9631,7 +9631,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Biergarten", "tags": { @@ -9721,7 +9721,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Bar", "tags": { @@ -9789,7 +9789,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Nightclub", "tags": { @@ -9811,7 +9811,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Attraction", "tags": { @@ -9828,7 +9828,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Viewpoint", "tags": { @@ -9855,7 +9855,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Information Office", "tags": { @@ -10123,7 +10123,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Other Information Points", "tags": { @@ -10140,7 +10140,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Cinema", @@ -10173,7 +10173,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Zoo", "tags": { @@ -10221,7 +10221,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Dog Park", "tags": { @@ -10248,7 +10248,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Theme Park", "tags": { @@ -10265,7 +10265,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Water Park", "tags": { @@ -10307,7 +10307,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Sauna", "tags": { @@ -10324,7 +10324,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Playground", "tags": { @@ -10347,7 +10347,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Picnic Site", "tags": { @@ -10399,7 +10399,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Fishing", "tags": { @@ -10410,7 +10410,7 @@ "main": [], "type": [ "node", - "closedway" + "area" ], "name": "Private Swimming Pool", "tags": { @@ -10443,7 +10443,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Museum", "tags": { @@ -10460,7 +10460,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Theatre", @@ -10488,7 +10488,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Library", @@ -10506,7 +10506,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Arts Centre", @@ -10524,8 +10524,8 @@ ], "type": [ "node", - "way", - "closedway" + "line", + "area" ], "name": "Artwork", "tags": { @@ -10604,7 +10604,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Place of Worship", @@ -10662,7 +10662,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Public Building", @@ -10680,7 +10680,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Town hall", @@ -10713,7 +10713,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Community Centre", "tags": { @@ -10730,7 +10730,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Embassy", @@ -10748,7 +10748,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Courthouse", @@ -10766,7 +10766,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Prison", @@ -10784,7 +10784,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Police", @@ -10802,7 +10802,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Fire Station", @@ -10825,7 +10825,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Post Office", @@ -10843,7 +10843,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Kindergarten", @@ -10861,7 +10861,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "School", @@ -10879,7 +10879,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "University", @@ -10897,7 +10897,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "College", @@ -10925,7 +10925,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Driving School", "tags": { @@ -10943,7 +10943,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Hospital", "tags": { @@ -10970,7 +10970,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Doctors", "tags": { @@ -10997,7 +10997,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Dentist", "tags": { @@ -11019,7 +11019,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Nursing Home", "tags": { @@ -11055,7 +11055,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Pharmacy", "tags": { @@ -11087,7 +11087,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Hearing Aids", "tags": { @@ -11109,7 +11109,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Baby Hatch", "tags": { @@ -11141,7 +11141,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Emergency Access Point", "tags": { @@ -11168,7 +11168,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Veterinary", "tags": { @@ -11214,7 +11214,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Toilets", "tags": { @@ -11406,7 +11406,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Recycling", "tags": { @@ -11521,7 +11521,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Shelter", "tags": { @@ -11731,7 +11731,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Stadium", "tags": { @@ -11791,7 +11791,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Sports Centre", "tags": { @@ -11850,7 +11850,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Pitch", "tags": { @@ -11909,8 +11909,8 @@ ], "type": [ "node", - "way", - "closedway", + "line", + "area", "relation" ], "name": "Racetrack", @@ -11938,7 +11938,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Golf Course", "tags": { @@ -11965,7 +11965,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Miniature Golf", "tags": { @@ -11993,7 +11993,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Multi", "tags": { @@ -12020,7 +12020,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "9pin", "tags": { @@ -12047,7 +12047,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "10pin", "tags": { @@ -12074,7 +12074,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Archery", "tags": { @@ -12102,7 +12102,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Athletics", "tags": { @@ -12127,7 +12127,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Climbing", "tags": { @@ -12144,8 +12144,8 @@ ], "type": [ "node", - "way", - "closedway" + "line", + "area" ], "name": "Canoeing", "tags": { @@ -12173,7 +12173,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Cycling", "tags": { @@ -12201,7 +12201,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Dog Racing", "tags": { @@ -12230,7 +12230,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Equestrian", "tags": { @@ -12258,7 +12258,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Horse Racing", "tags": { @@ -12285,7 +12285,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Gymnastics", "tags": { @@ -12313,7 +12313,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Skating", "tags": { @@ -12341,7 +12341,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Skateboard", "tags": { @@ -12369,7 +12369,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Swimming", "tags": { @@ -12423,8 +12423,8 @@ ], "type": [ "node", - "way", - "closedway" + "line", + "area" ], "name": "Skiing", "tags": { @@ -12452,7 +12452,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Shooting", "tags": { @@ -12479,7 +12479,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Soccer", "tags": { @@ -12506,7 +12506,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Australian Football", "tags": { @@ -12533,7 +12533,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "American Football", "tags": { @@ -12560,7 +12560,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Canadian Football", "tags": { @@ -12611,7 +12611,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Gaelic Games", "tags": { @@ -12638,7 +12638,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Rugby League", "tags": { @@ -12665,7 +12665,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Rugby Union", "tags": { @@ -12692,7 +12692,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Baseball", "tags": { @@ -12719,7 +12719,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Basketball", "tags": { @@ -12751,7 +12751,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Volleyball", "tags": { @@ -12783,7 +12783,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Beachvolleyball", "tags": { @@ -12811,7 +12811,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Golf", "tags": { @@ -12838,7 +12838,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Boule", "tags": { @@ -12865,7 +12865,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Bowls", "tags": { @@ -12892,7 +12892,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Cricket", "tags": { @@ -12919,7 +12919,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Cricket Nets", "tags": { @@ -12946,7 +12946,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Croquet", "tags": { @@ -12974,7 +12974,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Hockey", "tags": { @@ -13001,7 +13001,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Pelota", "tags": { @@ -13028,7 +13028,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Racquet", "tags": { @@ -13055,7 +13055,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Table Tennis", "tags": { @@ -13082,7 +13082,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Tennis", "tags": { @@ -13110,7 +13110,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Motorsport", "tags": { @@ -13137,7 +13137,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Karting", "tags": { @@ -13164,7 +13164,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Motocross", "tags": { @@ -13191,7 +13191,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Safety Training", "tags": { @@ -13218,7 +13218,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Model Aerodrome", "tags": { @@ -13245,7 +13245,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "RC Car", "tags": { @@ -13282,7 +13282,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Building", @@ -13312,7 +13312,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Residential Building", @@ -13347,7 +13347,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Tower", "tags": { @@ -13374,7 +13374,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Works", "tags": { @@ -13417,7 +13417,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Windmill", "tags": { @@ -13434,7 +13434,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Gasometer", "tags": { @@ -13472,7 +13472,7 @@ } ], "type": [ - "way" + "line" ], "name": "Pipeline", "tags": { @@ -13489,7 +13489,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Crane", "tags": { @@ -13564,7 +13564,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Mineshaft", "tags": { @@ -13637,7 +13637,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Water Tower", "tags": { @@ -13659,7 +13659,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Water Works", "tags": { @@ -13676,7 +13676,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Wastewater Plant", "tags": { @@ -13709,7 +13709,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Fountain", "tags": { @@ -13742,7 +13742,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Lighthouse", "tags": { @@ -13831,7 +13831,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Measurement Station", "tags": { @@ -13874,7 +13874,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Surveillance", "tags": { @@ -14042,7 +14042,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Power Generator", "tags": { @@ -14069,7 +14069,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Power Station", "tags": { @@ -14091,7 +14091,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Power Sub Station", "tags": { @@ -14205,7 +14205,7 @@ } ], "type": [ - "way" + "line" ], "name": "Power Line", "tags": {} @@ -14225,7 +14225,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Castle", "tags": { @@ -14252,7 +14252,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Ruins", "tags": { @@ -14279,7 +14279,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Archaeological Site", "tags": { @@ -14296,7 +14296,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Battlefield", "tags": { @@ -14313,7 +14313,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Palaeontological Site", "tags": { @@ -14330,7 +14330,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Monument", "tags": { @@ -14347,7 +14347,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Memorial", "tags": { @@ -14364,7 +14364,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Wayside Cross", "tags": { @@ -14381,7 +14381,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Wayside Shrine", "tags": { @@ -14398,7 +14398,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Boundary Stone", "tags": { @@ -14425,7 +14425,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Supermarket", "tags": { @@ -14452,7 +14452,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Convenience Store", "tags": { @@ -14479,7 +14479,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Kiosk", "tags": { @@ -14506,7 +14506,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Baker", "tags": { @@ -14533,7 +14533,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Butcher", "tags": { @@ -14565,7 +14565,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Seafood", "tags": { @@ -14597,7 +14597,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Deli (Fine Food)", "tags": { @@ -14624,7 +14624,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Confectionery", "tags": { @@ -14656,8 +14656,8 @@ ], "type": [ "node", - "way", - "closedway" + "line", + "area" ], "name": "Marketplace", "tags": { @@ -14689,7 +14689,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Greengrocer", "tags": { @@ -14711,7 +14711,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Organic", "tags": {} @@ -14731,7 +14731,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Fair Trade", "tags": {} @@ -14756,7 +14756,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Alcohol", "tags": { @@ -14783,7 +14783,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Beverages", "tags": { @@ -14810,7 +14810,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Clothes", "tags": { @@ -14842,7 +14842,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Boutique", "tags": { @@ -14869,7 +14869,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Shoes", "tags": { @@ -14896,7 +14896,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Outdoor", "tags": { @@ -14923,7 +14923,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Sports", "tags": { @@ -14950,7 +14950,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Dry Cleaning", "tags": { @@ -14977,7 +14977,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Laundry", "tags": { @@ -15004,7 +15004,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Tailor", "tags": { @@ -15036,7 +15036,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Fabric", "tags": { @@ -15063,7 +15063,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Computer", "tags": { @@ -15090,7 +15090,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Electronics", "tags": { @@ -15122,7 +15122,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Mobile Phone", "tags": { @@ -15154,7 +15154,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Vacuum Cleaner", "tags": { @@ -15181,7 +15181,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Hifi", "tags": { @@ -15208,7 +15208,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Video", "tags": { @@ -15246,7 +15246,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Bank", "tags": { @@ -15273,7 +15273,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Money Exchange", "tags": { @@ -15321,7 +15321,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Department Store", "tags": { @@ -15353,7 +15353,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Mall", "tags": { @@ -15380,7 +15380,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Chemist", "tags": { @@ -15407,7 +15407,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Hairdresser", "tags": { @@ -15434,7 +15434,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Optician", "tags": { @@ -15466,7 +15466,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Jewelry", "tags": { @@ -15498,7 +15498,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Erotic", "tags": { @@ -15525,7 +15525,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Florist", "tags": { @@ -15552,7 +15552,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Garden Centre", "tags": { @@ -15579,7 +15579,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Do-it-yourself-store", "tags": { @@ -15606,7 +15606,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Hardware", "tags": { @@ -15638,7 +15638,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Paint", "tags": { @@ -15665,7 +15665,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Furniture", "tags": { @@ -15697,7 +15697,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Kitchen", "tags": { @@ -15729,7 +15729,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Curtain", "tags": { @@ -15761,7 +15761,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Frame", "tags": { @@ -15788,7 +15788,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Stationery", "tags": { @@ -15820,7 +15820,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Copyshop", "tags": { @@ -15847,7 +15847,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Book Store", "tags": { @@ -15874,7 +15874,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Travel Agency", "tags": { @@ -15906,7 +15906,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Musical Instrument", "tags": { @@ -15933,7 +15933,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Toys", "tags": { @@ -15965,7 +15965,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Variety Store", "tags": { @@ -16043,7 +16043,7 @@ } ], "type": [ - "closedway", + "area", "relation" ], "name": "National", @@ -16060,7 +16060,7 @@ } ], "type": [ - "closedway", + "area", "relation" ], "name": "Administrative", @@ -16077,7 +16077,7 @@ } ], "type": [ - "closedway", + "area", "relation" ], "name": "Civil", @@ -16094,7 +16094,7 @@ } ], "type": [ - "closedway", + "area", "relation" ], "name": "Political", @@ -16111,7 +16111,7 @@ } ], "type": [ - "closedway", + "area", "relation" ], "name": "National park", @@ -16134,7 +16134,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Continent", "tags": { @@ -16156,7 +16156,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Country", "tags": { @@ -16178,7 +16178,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "State", "tags": { @@ -16200,7 +16200,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Region", "tags": { @@ -16237,7 +16237,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "County", "tags": { @@ -16274,7 +16274,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "City", "tags": { @@ -16311,7 +16311,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Town", "tags": { @@ -16348,7 +16348,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Suburb", "tags": { @@ -16385,7 +16385,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Village", "tags": { @@ -16422,7 +16422,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Hamlet", "tags": { @@ -16459,7 +16459,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Isolated Dwelling", "tags": { @@ -16491,7 +16491,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Neighbourhood", "tags": { @@ -16513,7 +16513,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Locality", "tags": { @@ -16566,7 +16566,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Glacier", "tags": { @@ -16593,7 +16593,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Volcano", "tags": { @@ -16615,7 +16615,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Cave Entrance", "tags": { @@ -16637,7 +16637,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Island", "tags": { @@ -16659,7 +16659,7 @@ ], "type": [ "node", - "closedway" + "area" ], "name": "Islet", "tags": { @@ -16717,7 +16717,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Wood", @@ -16745,7 +16745,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Forest", @@ -16763,7 +16763,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Nature Reserve", @@ -16781,7 +16781,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Scree", @@ -16799,7 +16799,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Fell", @@ -16817,7 +16817,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Scrub", @@ -16835,7 +16835,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Heath", @@ -16852,7 +16852,7 @@ } ], "type": [ - "closedway", + "area", "relation" ], "name": "Farmyard", @@ -16869,7 +16869,7 @@ } ], "type": [ - "closedway", + "area", "relation" ], "name": "Farmland", @@ -16887,7 +16887,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Meadow", @@ -16905,7 +16905,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Vineyard", @@ -16927,7 +16927,7 @@ } ], "type": [ - "closedway" + "area" ], "name": "Greenhouse Horticulture", "tags": { @@ -16944,7 +16944,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Allotments", @@ -16962,7 +16962,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Garden", @@ -16980,7 +16980,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Grass", @@ -16998,7 +16998,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Village Green", @@ -17016,7 +17016,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Common", @@ -17034,7 +17034,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Park", @@ -17052,7 +17052,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Recreation Ground", @@ -17069,7 +17069,7 @@ } ], "type": [ - "closedway", + "area", "relation" ], "name": "Residential area", @@ -17128,7 +17128,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Graveyard", @@ -17187,7 +17187,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Cemetery", @@ -17205,7 +17205,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Retail", @@ -17223,7 +17223,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Commercial", @@ -17241,7 +17241,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Industrial", @@ -17263,7 +17263,7 @@ } ], "type": [ - "closedway" + "area" ], "name": "Garages", "tags": { @@ -17279,7 +17279,7 @@ } ], "type": [ - "closedway", + "area", "relation" ], "name": "Railway land", @@ -17297,7 +17297,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Military", @@ -17315,7 +17315,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Construction area", @@ -17333,7 +17333,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Brownfield", @@ -17351,7 +17351,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Greenfield", @@ -17369,7 +17369,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Landfill", @@ -17387,7 +17387,7 @@ ], "type": [ "node", - "closedway", + "area", "relation" ], "name": "Quarry", @@ -17440,8 +17440,8 @@ ], "type": [ "node", - "way", - "closedway" + "line", + "area" ], "name": "Addresses", "tags": {} @@ -17461,7 +17461,7 @@ } ], "type": [ - "way" + "line" ], "name": "Address Interpolation", "tags": {} @@ -17501,8 +17501,8 @@ ], "type": [ "node", - "way", - "closedway", + "line", + "area", "relation" ], "name": "Contact (common schema)", @@ -17543,8 +17543,8 @@ ], "type": [ "node", - "way", - "closedway", + "line", + "area", "relation" ], "name": "Contact (schema with 'contact:*' prefix)", From 2957d799f1d65040c6246f7039e94445aefc17bd Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 1 Feb 2013 15:47:02 -0500 Subject: [PATCH 23/30] Toggle preset tag view --- js/id/ui/preset.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index 75de04d35..73885de38 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -1,5 +1,6 @@ iD.ui.preset = function() { var event = d3.dispatch('change'), + hidden, sections, exttags, preset; @@ -92,6 +93,15 @@ iD.ui.preset = function() { function presets(selection) { selection.html(''); + var showRawTags = selection.append('a') + .text('Show raw tags') + .on('click', function() { + hidden = !hidden; + showRawTags.text(hidden ? 'Hide raw tags' : 'Show raw tags'); + if (hidden) sections.style('display', 'none'); + else sections.style('display', ''); + event.change(clean(getTags())); + }); sections = selection.selectAll('div.preset-section') .data(preset.main) .enter() @@ -126,7 +136,7 @@ iD.ui.preset = function() { }; presets.tags = function() { - if (!preset || !sections) return {}; + if (hidden || !preset || !sections) return {}; return clean(getTags()); }; From eb999c47c6bdef073676802492e97378fb839e1f Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Fri, 1 Feb 2013 17:54:55 -0500 Subject: [PATCH 24/30] Switch to comboboxes --- combobox.html | 16 ++-- css/app.css | 46 +++++----- index.html | 1 + js/id/ui/inspector.js | 29 +++--- js/id/ui/preset.js | 14 ++- js/lib/d3.combobox.js | 199 +++++++++++++++++++++++++++--------------- 6 files changed, 184 insertions(+), 121 deletions(-) diff --git a/combobox.html b/combobox.html index 0d97698b0..fbe6ae058 100644 --- a/combobox.html +++ b/combobox.html @@ -140,21 +140,19 @@
-
+ diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index 6ab4f512a..ca0b61707 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -11,14 +11,14 @@ iD.ui.inspector = function() { var entity = selection.datum(); var iwrap = selection.append('div') - .attr('class','inspector content'); + .attr('class','inspector content'), + head = iwrap.append('div') + .attr('class', 'head inspector-inner fillL'), + h2 = head.append('h2'); - var head = iwrap.append('div') - .attr('class', 'head inspector-inner fillL'); - - var h2 = head.append('h2'); h2.append('span') .attr('class', 'icon big icon-pre-text big-' + entity.geometry(graph)); + var name = h2.append('input') .attr('placeholder', 'name') .property('value', function() { @@ -150,14 +150,18 @@ iD.ui.inspector = function() { var inputs = row.append('div') .attr('class', 'input-wrap'); - inputs.append('input') + inputs.append('span') + .attr('class', 'key-wrap') + .append('input') .property('type', 'text') .attr('class', 'key') .attr('maxlength', 255) .property('value', function(d) { return d.key; }) .on('change', function(d) { d.key = this.value; event.change(); }); - inputs.append('input') + inputs.append('span') + .attr('class', 'input-wrap-position') + .append('input') .property('type', 'text') .attr('class', 'value') .attr('maxlength', 255) @@ -253,7 +257,7 @@ iD.ui.inspector = function() { geometry = entity.geometry(graph), row = d3.select(this), key = row.selectAll('.key'), - value = row.selectAll('.value'); + value = row.selectAll('.input-wrap-position'); function sort(value, data) { var sameletter = [], @@ -278,14 +282,15 @@ iD.ui.inspector = function() { }); }, 500))); - value.call(d3.typeahead() - .data(_.debounce(function(_, callback) { + var valueinput = value.select('input'); + value.call(d3.combobox() + .fetcher(_.debounce(function(_, __, callback) { taginfo.values({ key: key.property('value'), geometry: geometry, - query: value.property('value') + query: valueinput.property('value') }, function(err, data) { - if (!err) callback(sort(value.property('value'), data)); + if (!err) callback(sort(valueinput.property('value'), data)); }); }, 500))); } diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index 73885de38..a4b77078e 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -76,14 +76,12 @@ iD.ui.preset = function() { }); break; case 'select': - i = this.append('select'); - var options = d.values.slice(); - options.unshift(''); - i.selectAll('option') - .data(options) - .enter() - .append('option') - .text(String); + var w = this.append('span').attr('class', 'input-wrap-position'); + i = w.append('input'); + w.call(d3.combobox() + .data([''].concat(d.values.slice()).map(function(o) { + return { value: o, title: o }; + }))); break; } if (i) { diff --git a/js/lib/d3.combobox.js b/js/lib/d3.combobox.js index 165456563..0273856d2 100644 --- a/js/lib/d3.combobox.js +++ b/js/lib/d3.combobox.js @@ -1,16 +1,21 @@ d3.combobox = function() { var event = d3.dispatch('accept'), - autohighlight = false, - autofilter = false, - input, - container, - data; + container, input, shown = false, data = []; + + var fetcher = function(val, data, cb) { + cb(data.filter(function(d) { + return d.title + .toString() + .toLowerCase() + .indexOf(val.toLowerCase()) !== -1; + })); + }; var typeahead = function(selection) { - var hidden, idx = autohighlight ? 0 : -1; - - var rect = selection.select('input').node().getBoundingClientRect(); - + var idx = -1, + rect = selection.select('input') + .node() + .getBoundingClientRect(); input = selection.select('input'); container = selection @@ -25,104 +30,174 @@ d3.combobox = function() { }); carat = selection - .insert('div', ':first-child') + .insert('a', ':first-child') .attr('class', 'combobox-carat') - .text('+') .style({ position: 'absolute', - left: (rect.width - 20) + 'px', + left: rect.width + 'px', top: '0px' }) - .on('click', function() { - update(); - show(); - }); + .on('mousedown', stop) + .on('click', click); - selection - .on('keyup.typeahead', key); + function stop() { + // prevent the form element from blurring. it blurs + // on mousedown + d3.event.stopPropagation(); + d3.event.preventDefault(); + } - hidden = false; + function click() { + d3.event.preventDefault(); + d3.event.stopPropagation(); + update(); + show(); + // focus the node so that a click outside of the + // combo box will hide it + input.node().focus(); + } - function hide() { - idx = autohighlight ? 0 : -1; - hidden = true; + function blur() { + // hide the combobox whenever the input element + // loses focus + slowHide(); } function show() { container.style('display', 'block'); + shown = true; + } + + function hide() { + idx = -1; + container.style('display', 'none'); + shown = false; } function slowHide() { - if (autohighlight && container.select('a.selected').node()) { - select(container.select('a.selected').datum()); - event.accept(); - } window.setTimeout(hide, 150); } - - selection - .on('focus.typeahead', show) - .on('blur.typeahead', slowHide); - - function key() { - var len = container.selectAll('a').data().length; - if (d3.event.keyCode === 40) { - idx = Math.min(idx + 1, len - 1); - return highlight(); - } else if (d3.event.keyCode === 38) { - idx = Math.max(idx - 1, 0); - return highlight(); - } else if (d3.event.keyCode === 13) { - if (container.select('a.selected').node()) { - select(container.select('a.selected').datum()); - } - event.accept(); - hide(); - } else { - update(); + function keydown() { + if (!shown) return; + switch (d3.event.keyCode) { + // down arrow + case 40: + next(); + d3.event.preventDefault(); + break; + // up arrow + case 38: + prev(); + d3.event.preventDefault(); + break; + // escape, tab + case 9: + case 13: + d3.event.preventDefault(); + break; } + d3.event.stopPropagation(); + } + + function keyup() { + switch (d3.event.keyCode) { + // escape + case 27: + hide(); + break; + // escape, tab + case 9: + case 13: + if (!shown) return; + accept(); + break; + default: + update(); + d3.event.preventDefault(); + } + d3.event.stopPropagation(); + } + + function accept() { + if (container.select('a.selected').node()) { + select(container.select('a.selected').datum()); + } + hide(); + } + + function next() { + var len = container.selectAll('a').data().length; + idx = Math.min(idx + 1, len - 1); + highlight(); + } + + function prev() { + idx = Math.max(idx - 1, 0); + highlight(); } function highlight() { container .selectAll('a') .classed('selected', function(d, i) { return i == idx; }); + var height = container.node().offsetHeight, + top = container.select('a.selected').node().offsetTop, + selectedHeight = container.select('a.selected').node().offsetHeight; + if ((top + selectedHeight) < height) { + container.node().scrollTop = 0; + } else { + container.node().scrollTop = top; + } } function update() { - function run(data) { - container.style('display', function() { - return data.length ? 'block' : 'none'; - }); + function render(data) { + if (data.length) show(); + else hide(); var options = container - .selectAll('a') + .selectAll('a.combobox-option') .data(data, function(d) { return d.value; }); options.enter() .append('a') .text(function(d) { return d.value; }) + .attr('class', 'combobox-option') .attr('title', function(d) { return d.title; }) .on('click', select); options.exit().remove(); options - .classed('selected', function(d, i) { return i == idx; }); + .classed('selected', function(d, i) { return i == idx; }) + .order(); } - if (typeof data === 'function') data(selection, run); - else run(data); + fetcher.apply(selection, [ + selection.select('input').property('value'), + data, render]); } + // select the choice given as d function select(d) { input .property('value', d.value) .trigger('change'); - container.style('display', 'none'); + event.accept(d); + hide(); } + + input + .on('blur.typeahead', blur) + .on('keydown.typeahead', keydown) + .on('keyup.typeahead', keyup); + }; + typeahead.fetcher = function(_) { + if (!arguments.length) return fetcher; + fetcher = _; + return typeahead; }; typeahead.data = function(_) { @@ -131,17 +206,5 @@ d3.combobox = function() { return typeahead; }; - typeahead.autofilter = function(_) { - if (!arguments.length) return autofilter; - autofilter = _; - return typeahead; - }; - - typeahead.autohighlight = function(_) { - if (!arguments.length) return autohighlight; - autohighlight = _; - return typeahead; - }; - return d3.rebind(typeahead, event, 'on'); }; From a6ccedd17dc424a7d3f85468c5dd76d54b09e0a5 Mon Sep 17 00:00:00 2001 From: Saman Bemel-Benrud Date: Wed, 13 Feb 2013 15:53:10 -0500 Subject: [PATCH 25/30] removed unecessary rule. --- css/app.css | 1 - 1 file changed, 1 deletion(-) diff --git a/css/app.css b/css/app.css index bfc912ad0..66de2664c 100644 --- a/css/app.css +++ b/css/app.css @@ -509,7 +509,6 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;} .inspector-wrap { opacity:0; display:none; - padding-left: 10px; max-width: 500px; } From 8c89efe563943e8791ce1170ddb692ba3a3b61f4 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Thu, 14 Feb 2013 16:59:07 -0500 Subject: [PATCH 26/30] Extract ui.Taglist --- index.html | 1 + js/id/ui/inspector.js | 244 +------------------------------------ js/id/ui/taglist.js | 273 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 279 insertions(+), 239 deletions(-) create mode 100644 js/id/ui/taglist.js diff --git a/index.html b/index.html index e8890950a..d6cc123cf 100644 --- a/index.html +++ b/index.html @@ -89,6 +89,7 @@ + diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index a767d6ed3..9f710285b 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -5,7 +5,7 @@ iD.ui.Inspector = function() { initial = false, presetUI, context, - tagList; + tagList = iD.ui.Taglist(); function inspector(selection) { var entity = selection.datum(); @@ -83,25 +83,7 @@ iD.ui.Inspector = function() { inspectorwrap.append('h4') .text(t('inspector.edit_tags')); - tagList = inspectorwrap.append('ul') - .attr('class', 'tag-list'); - - var newTag = inspectorwrap.append('button') - .attr('class', 'add-tag'); - - newTag.on('click', function() { - addTag(); - focusNewKey(); - }); - - newTag.append('span') - .attr('class', 'icon icon-pre-text plus'); - - newTag.append('span') - .attr('class', 'label') - .text(t('inspector.new_tag')); - - drawTags(entity.tags); + inspectorwrap.call(tagList); inspectorbody.append('div') .attr('class', 'inspector-buttons pad1 fillD') @@ -149,216 +131,6 @@ iD.ui.Inspector = function() { .text(t('inspector.view_on_osm')); } - function drawTags(tags) { - var entity = tagList.datum(); - - tags = _.omit(tags, _.keys(presetUI.tags() || {})); - tags = d3.entries(tags); - - if (!tags.length) { - tags = [{key: '', value: ''}]; - } - - var li = tagList.html('') - .selectAll('li') - .data(tags, function(d) { return d.key; }); - - li.exit().remove(); - - var row = li.enter().append('li') - .attr('class', 'tag-row'); - - var inputs = row.append('div') - .attr('class', 'input-wrap'); - - inputs.append('span') - .attr('class', 'key-wrap') - .append('input') - .property('type', 'text') - .attr('class', 'key') - .attr('maxlength', 255) - .property('value', function(d) { return d.key; }) - .on('change', function(d) { d.key = this.value; event.change(); }); - - inputs.append('span') - .attr('class', 'input-wrap-position') - .append('input') - .property('type', 'text') - .attr('class', 'value') - .attr('maxlength', 255) - .property('value', function(d) { return d.value; }) - .on('change', function(d) { d.value = this.value; event.change(); }) - .on('keydown.push-more', pushMore); - - inputs.each(bindTypeahead); - - var removeBtn = row.append('button') - .attr('tabindex', -1) - .attr('class','remove minor') - .on('click', removeTag); - - removeBtn.append('span') - .attr('class', 'icon delete'); - - function findLocal(docs) { - var locale = iD.detect().locale.toLowerCase(), - localized; - - localized = _.find(docs, function(d) { - return d.lang.toLowerCase() === locale; - }); - if (localized) return localized; - - // try the non-regional version of a language, like - // 'en' if the language is 'en-US' - if (locale.indexOf('-') !== -1) { - var first = locale.split('-')[0]; - localized = _.find(docs, function(d) { - return d.lang.toLowerCase() === first; - }); - if (localized) return localized; - } - - // finally fall back to english - return _.find(docs, function(d) { - return d.lang.toLowerCase() === 'en'; - }); - } - - function keyValueReference(err, docs) { - var local; - if (!err && docs) { - local = findLocal(docs); - } - if (local) { - var types = []; - if (local.on_area) types.push('area'); - if (local.on_node) types.push('point'); - if (local.on_way) types.push('line'); - local.types = types; - iD.ui.modal(context.container()) - .select('.content') - .datum(local) - .call(iD.ui.tagReference); - } else { - iD.ui.flash(context.container()) - .select('.content') - .append('h3') - .text(t('inspector.no_documentation_combination')); - } - } - - function keyReference(err, values, params) { - if (!err && values.length) { - iD.ui.modal(context.container()) - .select('.content') - .datum({ - data: values, - title: 'Key:' + params.key, - geometry: params.geometry - }) - .call(iD.ui.keyReference); - } else { - iD.ui.flash(context.container()) - .select('.content') - .append('h3') - .text(t('inspector.no_documentation_key')); - } - } - - var helpBtn = row.append('button') - .attr('tabindex', -1) - .attr('class', 'tag-help minor') - .on('click', function(d) { - var params = _.extend({}, d, { - geometry: entity.geometry(context.graph()) - }); - if (d.key && d.value) { - taginfo.docs(params, keyValueReference); - } else if (d.key) { - taginfo.values(params, keyReference); - } - }); - - helpBtn.append('span') - .attr('class', 'icon inspect'); - - if (initial && tags.length === 1 && - tags[0].key === '' && tags[0].value === '') { - focusNewKey(); - } - - return li; - } - - function pushMore() { - if (d3.event.keyCode === 9 && - tagList.selectAll('li:last-child input.value').node() === this) { - addTag(); - focusNewKey(); - d3.event.preventDefault(); - } - } - - function bindTypeahead() { - var entity = tagList.datum(), - geometry = entity.geometry(context.graph()), - row = d3.select(this), - key = row.selectAll('.key'), - value = row.selectAll('.input-wrap-position'); - - function sort(value, data) { - var sameletter = [], - other = []; - for (var i = 0; i < data.length; i++) { - if (data[i].value.substring(0, value.length) === value) { - sameletter.push(data[i]); - } else { - other.push(data[i]); - } - } - return sameletter.concat(other); - } - - key.call(d3.typeahead() - .data(_.debounce(function(_, callback) { - taginfo.keys({ - geometry: geometry, - query: key.property('value') - }, function(err, data) { - if (!err) callback(sort(key.property('value'), data)); - }); - }, 500))); - - var valueinput = value.select('input'); - value.call(d3.combobox() - .fetcher(_.debounce(function(_, __, callback) { - taginfo.values({ - key: key.property('value'), - geometry: geometry, - query: valueinput.property('value') - }, function(err, data) { - if (!err) callback(sort(valueinput.property('value'), data)); - }); - }, 500))); - } - - function focusNewKey() { - tagList.selectAll('li:last-child input.key').node().focus(); - } - - function addTag() { - var tags = inspector.tags(); - tags[''] = ''; - drawTags(tags); - } - - function removeTag(d) { - var tags = inspector.tags(); - delete tags[d.key]; - drawTags(tags); - } - function apply(entity) { event.changeTags(entity, inspector.tags()); event.close(entity); @@ -366,16 +138,9 @@ iD.ui.Inspector = function() { inspector.tags = function(tags) { if (!arguments.length) { - tags = presetUI.tags(); - tagList.selectAll('li').each(function() { - var row = d3.select(this), - key = row.selectAll('.key').property('value'), - value = row.selectAll('.value').property('value'); - if (key !== '') tags[key] = value; - }); - return tags; + return _.extend(presetUI.tags(), tagList.tags()); } else { - drawTags(tags); + tagList.tags(tags); } }; @@ -391,6 +156,7 @@ iD.ui.Inspector = function() { inspector.context = function(_) { context = _; + tagList.context(context); return inspector; }; diff --git a/js/id/ui/taglist.js b/js/id/ui/taglist.js new file mode 100644 index 000000000..0bf8cf45c --- /dev/null +++ b/js/id/ui/taglist.js @@ -0,0 +1,273 @@ +iD.ui.Taglist = function() { + var event = d3.dispatch('changeTags', 'close', 'change'), + taginfo = iD.taginfo(), + initial = false, + list, + context; + + function taglist(selection) { + var entity = selection.datum(); + + var wrap = selection.append('div'); + + wrap.append('h4') + .text(t('inspector.edit_tags')); + + list = wrap.append('ul') + .attr('class', 'tag-list'); + + var newTag = wrap.append('button') + .attr('class', 'add-tag'); + + newTag.on('click', function() { + addTag(); + focusNewKey(); + }); + + newTag.append('span') + .attr('class', 'icon icon-pre-text plus'); + + newTag.append('span') + .attr('class', 'label') + .text(t('inspector.new_tag')); + + drawTags(entity.tags); + + } + + function drawTags(tags) { + var entity = list.datum(); + + tags = d3.entries(tags); + + if (!tags.length) { + tags = [{key: '', value: ''}]; + } + + var li = list.html('') + .selectAll('li') + .data(tags, function(d) { return d.key; }); + + li.exit().remove(); + + var row = li.enter().append('li') + .attr('class', 'tag-row'); + + var inputs = row.append('div') + .attr('class', 'input-wrap'); + + inputs.append('span') + .attr('class', 'key-wrap') + .append('input') + .property('type', 'text') + .attr('class', 'key') + .attr('maxlength', 255) + .property('value', function(d) { return d.key; }) + .on('change', function(d) { d.key = this.value; event.change(); }); + + inputs.append('span') + .attr('class', 'input-wrap-position') + .append('input') + .property('type', 'text') + .attr('class', 'value') + .attr('maxlength', 255) + .property('value', function(d) { return d.value; }) + .on('change', function(d) { d.value = this.value; event.change(); }) + .on('keydown.push-more', pushMore); + + inputs.each(bindTypeahead); + + var removeBtn = row.append('button') + .attr('tabindex', -1) + .attr('class','remove minor') + .on('click', removeTag); + + removeBtn.append('span') + .attr('class', 'icon delete'); + + function findLocal(docs) { + var locale = iD.detect().locale.toLowerCase(), + localized; + + localized = _.find(docs, function(d) { + return d.lang.toLowerCase() === locale; + }); + if (localized) return localized; + + // try the non-regional version of a language, like + // 'en' if the language is 'en-US' + if (locale.indexOf('-') !== -1) { + var first = locale.split('-')[0]; + localized = _.find(docs, function(d) { + return d.lang.toLowerCase() === first; + }); + if (localized) return localized; + } + + // finally fall back to english + return _.find(docs, function(d) { + return d.lang.toLowerCase() === 'en'; + }); + } + + function keyValueReference(err, docs) { + var local; + if (!err && docs) { + local = findLocal(docs); + } + if (local) { + var types = []; + if (local.on_area) types.push('area'); + if (local.on_node) types.push('point'); + if (local.on_way) types.push('line'); + local.types = types; + iD.ui.modal(context.container()) + .select('.content') + .datum(local) + .call(iD.ui.tagReference); + } else { + iD.ui.flash(context.container()) + .select('.content') + .append('h3') + .text(t('inspector.no_documentation_combination')); + } + } + + function keyReference(err, values, params) { + if (!err && values.length) { + iD.ui.modal(context.container()) + .select('.content') + .datum({ + data: values, + title: 'Key:' + params.key, + geometry: params.geometry + }) + .call(iD.ui.keyReference); + } else { + iD.ui.flash(context.container()) + .select('.content') + .append('h3') + .text(t('inspector.no_documentation_key')); + } + } + + var helpBtn = row.append('button') + .attr('tabindex', -1) + .attr('class', 'tag-help minor') + .on('click', function(d) { + var params = _.extend({}, d, { + geometry: entity.geometry(context.graph()) + }); + if (d.key && d.value) { + taginfo.docs(params, keyValueReference); + } else if (d.key) { + taginfo.values(params, keyReference); + } + }); + + helpBtn.append('span') + .attr('class', 'icon inspect'); + + if (initial && tags.length === 1 && + tags[0].key === '' && tags[0].value === '') { + focusNewKey(); + } + + return li; + } + + function pushMore() { + if (d3.event.keyCode === 9 && + list.selectAll('li:last-child input.value').node() === this) { + addTag(); + focusNewKey(); + d3.event.preventDefault(); + } + } + + function bindTypeahead() { + var entity = list.datum(), + geometry = entity.geometry(context.graph()), + row = d3.select(this), + key = row.selectAll('.key'), + value = row.selectAll('.input-wrap-position'); + + function sort(value, data) { + var sameletter = [], + other = []; + for (var i = 0; i < data.length; i++) { + if (data[i].value.substring(0, value.length) === value) { + sameletter.push(data[i]); + } else { + other.push(data[i]); + } + } + return sameletter.concat(other); + } + + key.call(d3.typeahead() + .data(_.debounce(function(_, callback) { + taginfo.keys({ + geometry: geometry, + query: key.property('value') + }, function(err, data) { + if (!err) callback(sort(key.property('value'), data)); + }); + }, 500))); + + var valueinput = value.select('input'); + value.call(d3.combobox() + .fetcher(_.debounce(function(_, __, callback) { + taginfo.values({ + key: key.property('value'), + geometry: geometry, + query: valueinput.property('value') + }, function(err, data) { + if (!err) callback(sort(valueinput.property('value'), data)); + }); + }, 500))); + } + + function focusNewKey() { + list.selectAll('li:last-child input.key').node().focus(); + } + + function addTag() { + var tags = inspector.tags(); + tags[''] = ''; + drawTags(tags); + } + + function removeTag(d) { + var tags = inspector.tags(); + delete tags[d.key]; + drawTags(tags); + } + + function apply(entity) { + event.changeTags(entity, taglist.tags()); + event.close(entity); + } + + taglist.tags = function(tags) { + if (!arguments.length) { + tags = {}; + list.selectAll('li').each(function() { + var row = d3.select(this), + key = row.selectAll('.key').property('value'), + value = row.selectAll('.value').property('value'); + if (key !== '') tags[key] = value; + }); + return tags; + } else { + drawTags(tags); + } + }; + + taglist.context = function(_) { + context = _; + return taglist; + }; + + return d3.rebind(taglist, event, 'on'); +}; From 97679c7679b05a171187674ec8672252ce5f05fc Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Thu, 14 Feb 2013 18:13:28 -0500 Subject: [PATCH 27/30] taglist and presetui coexist --- js/id/ui/inspector.js | 38 ++++++++++++++++++-------------------- js/id/ui/preset.js | 2 -- js/id/ui/taglist.js | 22 ++++++---------------- 3 files changed, 24 insertions(+), 38 deletions(-) diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index 9f710285b..d76b96d8e 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -4,11 +4,12 @@ iD.ui.Inspector = function() { presetData = iD.presetData(), initial = false, presetUI, - context, - tagList = iD.ui.Taglist(); + tagList, + context; function inspector(selection) { - var entity = selection.datum(); + var entity = selection.datum(), + presetMatch = presetData.matchTags(entity); var iwrap = selection.append('div') .attr('class','inspector content hide'), @@ -44,14 +45,14 @@ iD.ui.Inspector = function() { presetUI = iD.ui.preset() .on('change', function(tags) { - inspector.tags(_.extend(inspector.tags(), tags)); event.change(); }); - event.on('change.preset', function() { - var tags = inspector.tags(); - presetUI.change(tags); - }); + tagList = iD.ui.Taglist() + .context(context) + .on('change', function(tags) { + event.change(); + }); var inspectorpresetsearch = inspectorwrap.append('div') .attr('class', 'inspector-preset cf') @@ -80,22 +81,19 @@ iD.ui.Inspector = function() { var inspectorpreset = inspectorwrap.append('div') .attr('class', 'inspector-preset cf'); - inspectorwrap.append('h4') - .text(t('inspector.edit_tags')); + if (presetMatch) { + inspectorpreset.call(presetUI + .preset(presetMatch)); + } - inspectorwrap.call(tagList); + var taglistwrap = inspectorwrap.append('div').call(tagList); + + inspector.tags(entity.tags); inspectorbody.append('div') .attr('class', 'inspector-buttons pad1 fillD') .call(drawButtons); - var presetMatch = presetData.matchTags(entity); - if (presetMatch) { - inspectorpreset.call(presetUI - .preset(presetMatch) - .change(inspector.tags())); - } - iwrap.call(iD.ui.Toggle(true)); } @@ -140,7 +138,8 @@ iD.ui.Inspector = function() { if (!arguments.length) { return _.extend(presetUI.tags(), tagList.tags()); } else { - tagList.tags(tags); + presetUI.change(tags); + tagList.tags(_.omit(tags, _.keys(presetUI.tags() || {}))); } }; @@ -156,7 +155,6 @@ iD.ui.Inspector = function() { inspector.context = function(_) { context = _; - tagList.context(context); return inspector; }; diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index a4b77078e..d138236d5 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -98,7 +98,6 @@ iD.ui.preset = function() { showRawTags.text(hidden ? 'Hide raw tags' : 'Show raw tags'); if (hidden) sections.style('display', 'none'); else sections.style('display', ''); - event.change(clean(getTags())); }); sections = selection.selectAll('div.preset-section') .data(preset.main) @@ -118,7 +117,6 @@ iD.ui.preset = function() { .attr('class', 'col8 preset-input'), d); }); if (exttags) setTags(exttags); - key(); } presets.preset = function(_) { diff --git a/js/id/ui/taglist.js b/js/id/ui/taglist.js index 0bf8cf45c..b661939be 100644 --- a/js/id/ui/taglist.js +++ b/js/id/ui/taglist.js @@ -1,22 +1,19 @@ iD.ui.Taglist = function() { - var event = d3.dispatch('changeTags', 'close', 'change'), + var event = d3.dispatch('change'), taginfo = iD.taginfo(), initial = false, list, context; function taglist(selection) { - var entity = selection.datum(); - var wrap = selection.append('div'); - - wrap.append('h4') + selection.append('h4') .text(t('inspector.edit_tags')); - list = wrap.append('ul') + list = selection.append('ul') .attr('class', 'tag-list'); - var newTag = wrap.append('button') + var newTag = selection.append('button') .attr('class', 'add-tag'); newTag.on('click', function() { @@ -31,8 +28,6 @@ iD.ui.Taglist = function() { .attr('class', 'label') .text(t('inspector.new_tag')); - drawTags(entity.tags); - } function drawTags(tags) { @@ -233,22 +228,17 @@ iD.ui.Taglist = function() { } function addTag() { - var tags = inspector.tags(); + var tags = taglist.tags(); tags[''] = ''; drawTags(tags); } function removeTag(d) { - var tags = inspector.tags(); + var tags = taglist.tags(); delete tags[d.key]; drawTags(tags); } - function apply(entity) { - event.changeTags(entity, taglist.tags()); - event.close(entity); - } - taglist.tags = function(tags) { if (!arguments.length) { tags = {}; From 9547fdd510586dabc7c659cc2a0742779b27d263 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 15 Feb 2013 10:53:35 -0500 Subject: [PATCH 28/30] reorganize inspector --- css/app.css | 22 ++++++++++++- js/id/ui/inspector.js | 74 ++++++++++++++++++++++++------------------- js/id/ui/preset.js | 8 ----- 3 files changed, 62 insertions(+), 42 deletions(-) diff --git a/css/app.css b/css/app.css index 9dc50d764..a0795fe49 100644 --- a/css/app.css +++ b/css/app.css @@ -524,6 +524,26 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;} padding: 10px; } +.inspector-inner.message { + padding: 20px; + height: 60px; +} + +.inspector-inner.type { + z-index:1; + position:relative; +} + +.inspector-inner.type .preset-icon { + width: 50px; + height: 50px; +} + +.inspector-inner.type .preset-name { + display: inline-block; + margin-left: 20px; +} + .inspector-inner.head { z-index:1; position:relative; @@ -536,7 +556,7 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;} } .inspector-inner.tag-wrap { - max-height: 200px; + max-height: 300px; overflow: auto; } diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index d76b96d8e..6b35f8270 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -8,14 +8,50 @@ iD.ui.Inspector = function() { context; function inspector(selection) { - var entity = selection.datum(), - presetMatch = presetData.matchTags(entity); var iwrap = selection.append('div') .attr('class','inspector content hide'), - head = iwrap.append('div') + messagewrap = iwrap.append('div') + .attr('class', 'message inspector-inner fillL2'), + message = messagewrap.append('h4'), + main = iwrap.append('div'); + buttons = iwrap.append('div') + .attr('class', 'inspector-buttons pad1 fillD') + .call(drawButtons); + + + if (false && initial) { + main.call(iD.ui.presetfavs()); + } else { + main.call(drawEditor); + } + iwrap.call(iD.ui.Toggle(true)); + } + + function drawEditor(selection) { + + var entity = selection.datum(); + presetMatch = presetData.matchTags(entity); + + console.log(presetMatch); + + var typewrap = selection.append('div') + .attr('class', 'type inspector-inner fillL'); + + typewrap.append('h4') + .text('Type'); + + typewrap.append('img') + .attr('class', 'preset-icon'); + + typewrap.append('h3') + .attr('class', 'preset-name') + .text(presetMatch ? presetMatch.name : ''); + + + var namewrap = selection.append('div') .attr('class', 'head inspector-inner fillL'), - h2 = head.append('h2'); + h2 = namewrap.append('h2'); h2.append('span') .attr('class', 'icon big icon-pre-text big-' + entity.geometry(context.graph())); @@ -37,7 +73,7 @@ iD.ui.Inspector = function() { name.property('value', tags.name); }); - var inspectorbody = iwrap.append('div') + var inspectorbody = selection.append('div') .attr('class', 'inspector-body'); var inspectorwrap = inspectorbody.append('div') @@ -54,30 +90,6 @@ iD.ui.Inspector = function() { event.change(); }); - var inspectorpresetsearch = inspectorwrap.append('div') - .attr('class', 'inspector-preset cf') - .call(iD.ui.presetsearch() - .entity(entity) - .presetData(presetData) - .on('choose', function(preset) { - inspectorpreset.call(presetUI - .preset(preset) - .change(inspector.tags())); - })); - - var inspectorpresetfavs = inspectorwrap.append('div') - .attr('class', 'inspector-preset cf') - .call(iD.ui.presetfavs() - .presetData(presetData) - .on('choose', function(preset) { - inspectorpreset.call(presetUI - .preset(preset) - .change(inspector.tags())); - inspectorpresetsearch - .select('input') - .property('value', preset.name); - })); - var inspectorpreset = inspectorwrap.append('div') .attr('class', 'inspector-preset cf'); @@ -90,11 +102,7 @@ iD.ui.Inspector = function() { inspector.tags(entity.tags); - inspectorbody.append('div') - .attr('class', 'inspector-buttons pad1 fillD') - .call(drawButtons); - iwrap.call(iD.ui.Toggle(true)); } function drawHead(selection) { diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index d138236d5..059a2ef61 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -91,14 +91,6 @@ iD.ui.preset = function() { function presets(selection) { selection.html(''); - var showRawTags = selection.append('a') - .text('Show raw tags') - .on('click', function() { - hidden = !hidden; - showRawTags.text(hidden ? 'Hide raw tags' : 'Show raw tags'); - if (hidden) sections.style('display', 'none'); - else sections.style('display', ''); - }); sections = selection.selectAll('div.preset-section') .data(preset.main) .enter() From a3f895dd72a2f90ae8c264b422b585620be92740 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 15 Feb 2013 11:42:12 -0500 Subject: [PATCH 29/30] Switching between preset and tag view --- css/app.css | 7 ++----- js/id/ui/inspector.js | 47 ++++++++++++++++++++++++++----------------- js/id/ui/taglist.js | 4 ++-- 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/css/app.css b/css/app.css index a0795fe49..c4a6cb752 100644 --- a/css/app.css +++ b/css/app.css @@ -555,11 +555,6 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;} display: inline-block } -.inspector-inner.tag-wrap { - max-height: 300px; - overflow: auto; -} - .inspector-toggle { color:#fff; width: 100%; @@ -570,6 +565,8 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;} .inspector-body { position:relative; + max-height: 400px; + overflow: auto; } .tag-row { diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index 6b35f8270..bcd9bbb8b 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -3,6 +3,8 @@ iD.ui.Inspector = function() { taginfo = iD.taginfo(), presetData = iD.presetData(), initial = false, + expert = false, + inspectorbody, presetUI, tagList, context; @@ -13,29 +15,33 @@ iD.ui.Inspector = function() { .attr('class','inspector content hide'), messagewrap = iwrap.append('div') .attr('class', 'message inspector-inner fillL2'), - message = messagewrap.append('h4'), - main = iwrap.append('div'); - buttons = iwrap.append('div') + message = messagewrap.append('h4'); + + inspectorbody = iwrap.append('div') + .attr('class', 'inspector-body'), + iwrap.append('div') .attr('class', 'inspector-buttons pad1 fillD') .call(drawButtons); - if (false && initial) { - main.call(iD.ui.presetfavs()); + inspectorbody.call(iD.ui.presetfavs()); } else { - main.call(drawEditor); + inspectorbody.call(drawEditor); } + iwrap.call(iD.ui.Toggle(true)); } function drawEditor(selection) { + selection.html(''); var entity = selection.datum(); presetMatch = presetData.matchTags(entity); - console.log(presetMatch); + var editorwrap = selection.append('div') + .attr('class', 'inspector-inner tag-wrap fillL2'); - var typewrap = selection.append('div') + var typewrap = editorwrap.append('div') .attr('class', 'type inspector-inner fillL'); typewrap.append('h4') @@ -49,7 +55,7 @@ iD.ui.Inspector = function() { .text(presetMatch ? presetMatch.name : ''); - var namewrap = selection.append('div') + var namewrap = editorwrap.append('div') .attr('class', 'head inspector-inner fillL'), h2 = namewrap.append('h2'); @@ -73,11 +79,6 @@ iD.ui.Inspector = function() { name.property('value', tags.name); }); - var inspectorbody = selection.append('div') - .attr('class', 'inspector-body'); - - var inspectorwrap = inspectorbody.append('div') - .attr('class', 'inspector-inner tag-wrap fillL2'); presetUI = iD.ui.preset() .on('change', function(tags) { @@ -90,19 +91,17 @@ iD.ui.Inspector = function() { event.change(); }); - var inspectorpreset = inspectorwrap.append('div') + var inspectorpreset = editorwrap.append('div') .attr('class', 'inspector-preset cf'); - if (presetMatch) { + if (presetMatch && !expert) { inspectorpreset.call(presetUI .preset(presetMatch)); } - var taglistwrap = inspectorwrap.append('div').call(tagList); + var taglistwrap = editorwrap.append('div').call(tagList); inspector.tags(entity.tags); - - } function drawHead(selection) { @@ -135,6 +134,16 @@ iD.ui.Inspector = function() { .attr('href', 'http://www.openstreetmap.org/browse/' + entity.type + '/' + entity.osmId()) .attr('target', '_blank') .text(t('inspector.view_on_osm')); + + var expertButton = selection.append('button') + .attr('class', 'apply') + .text('Tag view') + .on('click', function() { + expert = !expert; + expertButton.text(expert ? 'Preset view' : 'Tag view'); + inspectorbody.call(drawEditor); + }); + } function apply(entity) { diff --git a/js/id/ui/taglist.js b/js/id/ui/taglist.js index b661939be..862871cec 100644 --- a/js/id/ui/taglist.js +++ b/js/id/ui/taglist.js @@ -7,8 +7,8 @@ iD.ui.Taglist = function() { function taglist(selection) { - selection.append('h4') - .text(t('inspector.edit_tags')); + //selection.append('h4') + //.text(t('inspector.edit_tags')); list = selection.append('ul') .attr('class', 'tag-list'); From 51976ff0a1471f1e9f8edd1e8da43952e92c3c68 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Fri, 15 Feb 2013 13:15:03 -0500 Subject: [PATCH 30/30] Very rough preset selection grid --- css/app.css | 25 +++++++++++++++ index.html | 1 + js/id/ui/inspector.js | 19 ++++++----- js/id/ui/presetgrid.js | 71 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+), 7 deletions(-) create mode 100644 js/id/ui/presetgrid.js diff --git a/css/app.css b/css/app.css index c4a6cb752..fb41626e3 100644 --- a/css/app.css +++ b/css/app.css @@ -643,6 +643,31 @@ a.selected:hover .toggle.icon { background-position: -40px -180px;} display: none; } +/* Preset grid */ +/* temp */ + +.preset-grid { + max-height: 360px; +} + +.preset-grid .grid-entry { + float: left; + width: 100px; + height: 100px; + background: red; + color: black; + margin: 10px; +} + +.preset-grid-search-wrap { + padding: 20px; +} + +.preset-grid-search { + width: 100%; + height: 20px; +} + /* Map Controls */ .map-control { diff --git a/index.html b/index.html index d6cc123cf..b0af23ba4 100644 --- a/index.html +++ b/index.html @@ -90,6 +90,7 @@ + diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index bcd9bbb8b..7eaa68cee 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -11,6 +11,9 @@ iD.ui.Inspector = function() { function inspector(selection) { + var entity = selection.datum(); + presetMatch = presetData.matchTags(entity); + var iwrap = selection.append('div') .attr('class','inspector content hide'), messagewrap = iwrap.append('div') @@ -23,21 +26,23 @@ iD.ui.Inspector = function() { .attr('class', 'inspector-buttons pad1 fillD') .call(drawButtons); - if (false && initial) { - inspectorbody.call(iD.ui.presetfavs()); + if (initial) { + inspectorbody.call(iD.ui.PresetGrid() + .presetData(presetData) + .entity(selection.datum()) + .on('choose', function(preset) { + inspectorbody.call(drawEditor, entity, preset); + })); } else { - inspectorbody.call(drawEditor); + inspectorbody.call(drawEditor, entity, presetMatch); } iwrap.call(iD.ui.Toggle(true)); } - function drawEditor(selection) { + function drawEditor(selection, entity, presetMatch) { selection.html(''); - var entity = selection.datum(); - presetMatch = presetData.matchTags(entity); - var editorwrap = selection.append('div') .attr('class', 'inspector-inner tag-wrap fillL2'); diff --git a/js/id/ui/presetgrid.js b/js/id/ui/presetgrid.js new file mode 100644 index 000000000..892312546 --- /dev/null +++ b/js/id/ui/presetgrid.js @@ -0,0 +1,71 @@ +iD.ui.PresetGrid = function() { + var event = d3.dispatch('choose'), + entity, + presetData; + + function presetgrid(selection) { + + selection.html(''); + var wrap = selection.append('div') + .attr('class', 'fillL'); + + var viable = presetData.match(entity); + + var grid = wrap.append('div') + .attr('class', 'preset-grid') + .call(drawGrid, filter('')); + + var searchwrap = wrap.append('div') + .attr('class', 'preset-grid-search-wrap'); + + var search = searchwrap.append('input') + .attr('class', 'preset-grid-search') + .on('keyup', function() { + grid.call(drawGrid, filter(search.property('value'))); + }); + + + function filter(value) { + value = value.toLowerCase(); + return viable.filter(function(v) { + return v.name.toLowerCase().indexOf(value) !== -1; + }); + } + + } + + function name(d) { return d.name; } + + function drawGrid(selection, presets) { + + var entries = selection + .selectAll('div.grid-entry') + .data(presets.slice(0, 12), name); + + entries.enter() + .append('div') + .attr('class', 'grid-entry') + .text(name) + .on('click', function(d) { + event.choose(d); + }); + + entries.exit().remove(); + } + + presetgrid.presetData = function(_) { + if (!arguments.length) return presetData; + presetData = _; + return presetgrid; + }; + + presetgrid.entity = function(_) { + if (!arguments.length) return entity; + entity = _; + return presetgrid; + }; + + + + return d3.rebind(presetgrid, event, 'on'); +};