From 877dd260aed3a21ffbb1f638b07e35277df835b6 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Fri, 22 Aug 2025 22:18:54 +0200 Subject: [PATCH 1/8] Themes(shops): Remove brand tags if marked as without brand --- assets/layers/shops/shops.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index 5b562d9be..4835174d6 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -486,7 +486,12 @@ "es": "Esta tienda no tiene una marca específica, no forma parte de una cadena más grande", "it": "Questo negozio non ha un marchio specifico, non fa parte di una catena più grande", "uk": "Цей магазин не має певного бренду, він не є частиною великої мережі" - } + }, + "addExtraTags": [ + "brand=", + "brand:wikidata=", + "brand:wikipedia=" + ] } ] }, From 06ac28dab98777ba91c06ec46800f08c52d14bdc Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Fri, 22 Aug 2025 22:25:25 +0200 Subject: [PATCH 2/8] Themes(shops): Exlcude shop=no --- assets/layers/shops/shops.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index 4835174d6..a8c63e6ef 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -43,7 +43,8 @@ "craft=key_cutter" ] }, - "shop!=mall" + "shop!=mall", + "shop!=no" ] } }, From 03d07b670de7fa84c0e58f647073f67fb6d60046 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sat, 23 Aug 2025 19:21:09 +0200 Subject: [PATCH 3/8] Themes(parking): Add support for access tags (#1797) --- .../layers/parking_spaces/parking_spaces.json | 89 ++++++++++++++++++- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/assets/layers/parking_spaces/parking_spaces.json b/assets/layers/parking_spaces/parking_spaces.json index 64e5f907e..0c36e859b 100644 --- a/assets/layers/parking_spaces/parking_spaces.json +++ b/assets/layers/parking_spaces/parking_spaces.json @@ -69,6 +69,15 @@ "icon": { "render": "./assets/layers/parking_spaces/parking_space.svg", "mappings": [ + { + "if": { + "or": [ + "access=private", + "access=no" + ] + }, + "then": "./assets/layers/parking_spaces/parking_space_private.svg" + }, { "if": "parking_space=disabled", "then": "./assets/layers/toilet/wheelchair.svg" @@ -99,7 +108,7 @@ ], "lineRendering": [ { - "color": "#696969", + "color": "dimgray", "width": "1" } ], @@ -295,6 +304,69 @@ "it": "Questo è un posto auto riservato al car sharing.", "nl": "Deze parkeerplek is gereserveerd voor autodelen." } + }, + { + "if": "parking_space=women", + "then": { + "en": "This is a parking space reserved for women.", + "nl": "Deze parkeerplek is gereserveerd voor vrouwen." + } + } + ] + }, + { + "id": "access", + "question": { + "en": "Who can use this parking space?", + "nl": "Wie mag deze parkeerplek gebruiken?" + }, + "render": { + "en": "Access of parking space: {access}", + "nl": "Toegang tot parkeerplek: {access}" + }, + "freeform": { + "key": "access", + "type": "string", + "addExtraTags": [ + "fixme=Freeform used on 'access'-tag: possibly a wrong value" + ] + }, + "mappings": [ + { + "if": "access=", + "then": { + "en": "Anyone can use this parking space.", + "nl": "Iedereen kan deze parkeerplek gebruiken." + }, + "hideInAnswer": true + }, + { + "if": "access=yes", + "then": { + "en": "Anyone can use this parking space.", + "nl": "Iedereen kan deze parkeerplek gebruiken." + } + }, + { + "if": "access=customers", + "then": { + "en": "This parking space is reserved for customers.", + "nl": "Deze parkeerplek is gereserveerd voor klanten." + } + }, + { + "if": "access=private", + "then": { + "en": "This parking space is private and cannot be used by the general public.", + "nl": "Deze parkeerplek is privé en mag niet door het grote publiek worden gebruikt." + } + }, + { + "if": "access=permit", + "then": { + "en": "This parking space is reserved for permit holders.", + "nl": "Deze parkeerplek is gereserveerd voor vergunninghouders." + } } ] }, @@ -310,6 +382,19 @@ "nl": "Deze parkeerplek heeft {capacity} plaatsen." }, "mappings": [ + { + "if": "capacity=", + "then": { + "en": "This parking space has 1 space.", + "ca": "Aquest espai d'aparcament té 1 plaça.", + "cs": "Toto parkoviště má 1 místo.", + "de": "Dieser Parkplatz hat 1 Stellplatz.", + "es": "Esta plaza de aparcamiento tiene 1 plaza.", + "it": "Questo posto auto ha 1 spazio.", + "nl": "Deze parkeerplek heeft 1 plaats." + }, + "hideInAnswer": true + }, { "if": "capacity=1", "then": { @@ -329,4 +414,4 @@ "enableImproveAccuracy": true, "enableRelocation": false } -} +} \ No newline at end of file From 4294e4930509bb8157597d3d6242046a5fa14e8d Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 24 Aug 2025 00:20:29 +0200 Subject: [PATCH 4/8] Themes(nature): Add picnic sites (#1849) --- assets/layers/picnic_site/picnic_site.json | 320 +++++++++++++++++++++ assets/themes/nature/nature.json | 3 +- 2 files changed, 322 insertions(+), 1 deletion(-) create mode 100644 assets/layers/picnic_site/picnic_site.json diff --git a/assets/layers/picnic_site/picnic_site.json b/assets/layers/picnic_site/picnic_site.json new file mode 100644 index 000000000..d29d94bb4 --- /dev/null +++ b/assets/layers/picnic_site/picnic_site.json @@ -0,0 +1,320 @@ +{ + "id": "picnic_site", + "name": { + "en": "Picnic sites", + "nl": "Picknickplaatsen" + }, + "description": { + "en": "Picnic sites for eating outdoors, featuring amenities like toilets, water taps, BBQ, benches and shelters", + "nl": "Picknickplaatsen voor het eten in de buitenlucht, met voorzieningen zoals toiletten, waterkranen, BBQ, banken en schuilplaatsen" + }, + "source": { + "osmTags": "tourism=picnic_site" + }, + "minzoom": 10, + "title": { + "render": { + "en": "Picnic site", + "nl": "Picknickplaats" + } + }, + "pointRendering": [ + { + "iconSize": "35,35", + "location": [ + "point", + "centroid" + ], + "anchor": "center", + "marker": [ + { + "color": "#3984e6", + "icon": "circle" + }, + { + "icon": "./assets/layers/picnic_table/picnic_table.svg" + } + ] + } + ], + "lineRendering": [ + { + "color": "#3984e6", + "fillColor": "#3984e6bd", + "width": 5 + } + ], + "presets": [ + { + "tags": [ + "tourism=picnic_site" + ], + "title": { + "en": "a picnic site", + "nl": "een picknickplaats" + }, + "description": { + "en": "A picnic site for eating outdoors, featuring amenities like toilets, water taps, BBQ, benches and shelters", + "nl": "Een picknickplaats voor het eten in de buitenlucht, met voorzieningen zoals toiletten, waterkranen, BBQ, banken en schuilplaatsen" + } + } + ], + "tagRenderings": [ + "images", + { + "builtin": "name", + "override": { + "render": { + "en": "This picnic site is called {name}", + "nl": "Deze picknickplaats heet {name}" + } + } + }, + { + "id": "shelter", + "question": { + "en": "Does this picnic site have a shelter?", + "nl": "Heeft deze picknickplaats een schuilplaats?" + }, + "mappings": [ + { + "if": "shelter=yes", + "then": { + "en": "This picnic site has a shelter.", + "nl": "Deze picknickplaats heeft een schuilplaats." + } + }, + { + "if": "shelter=no", + "then": { + "en": "This picnic site does not have a shelter.", + "nl": "Deze picknickplaats heeft geen schuilplaats." + } + }, + { + "if": "shelter=separate", + "then": { + "en": "This picnic site has a shelter, but is is mapped as a different icon.", + "nl": "Deze picknickplaats heeft een schuilplaats, maar deze staat los op de kaart." + } + } + ] + }, + { + "id": "fireplace", + "question": { + "en": "Does this picnic site have a firepit?", + "nl": "Heeft deze picknickplaats een vuurplaats?" + }, + "mappings": [ + { + "if": "fireplace=yes", + "then": { + "en": "This picnic site has a firepit.", + "nl": "Deze picknickplaats heeft een vuurplaats." + } + }, + { + "if": "fireplace=no", + "then": { + "en": "This picnic site does not have a firepit.", + "nl": "Deze picknickplaats heeft geen vuurplaats." + } + }, + { + "if": "fireplace=separate", + "then": { + "en": "This picnic site has a firepit, but it is mapped as a different icon.", + "nl": "Deze picknickplaats heeft een vuurplaats, maar deze staat los op de kaart." + } + } + ] + }, + { + "id": "bbq", + "question": { + "en": "Does this picnic site have a BBQ?", + "nl": "Heeft deze picknickplaats een BBQ?" + }, + "mappings": [ + { + "if": "bbq=yes", + "then": { + "en": "This picnic site has a BBQ.", + "nl": "Deze picknickplaats heeft een BBQ." + } + }, + { + "if": "bbq=no", + "then": { + "en": "This picnic site does not have a BBQ.", + "nl": "Deze picknickplaats heeft geen BBQ." + } + }, + { + "if": "bbq=separate", + "then": { + "en": "This picnic site has a BBQ, but it is mapped as a different icon.", + "nl": "Deze picknickplaats heeft een BBQ, maar deze staat los op de kaart." + } + } + ] + }, + { + "id": "covered", + "question": { + "en": "Is this picnic site covered?", + "nl": "Is deze picknickplaats overdekt?" + }, + "mappings": [ + { + "if": "covered=yes", + "then": { + "en": "This picnic site is covered.", + "nl": "Deze picknickplaats is overdekt." + } + }, + { + "if": "covered=no", + "then": { + "en": "This picnic site is not covered.", + "nl": "Deze picknickplaats is niet overdekt." + } + } + ] + }, + { + "id": "drinking_water", + "question": { + "en": "Does this picnic site have drinking water?", + "nl": "Heeft deze picknickplaats drinkwater?" + }, + "mappings": [ + { + "if": "drinking_water=yes", + "then": { + "en": "This picnic site has drinking water.", + "nl": "Deze picknickplaats heeft drinkwater." + } + }, + { + "if": "drinking_water=no", + "then": { + "en": "This picnic site does not have drinking water.", + "nl": "Deze picknickplaats heeft geen drinkwater." + } + }, + { + "if": "drinking_water=separate", + "then": { + "en": "This picnic site has drinking water, but it is mapped as a different icon.", + "nl": "Deze picknickplaats heeft drinkwater, maar deze staat los op de kaart." + } + } + ] + }, + { + "id": "openfire", + "question": { + "en": "Is open fire allowed at this picnic site?", + "nl": "Is open vuur toegestaan op deze picknickplaats?" + }, + "mappings": [ + { + "if": "openfire=yes", + "then": { + "en": "Open fire is allowed at this picnic site.", + "nl": "Open vuur is toegestaan op deze picknickplaats." + } + }, + { + "if": "openfire=no", + "then": { + "en": "Open fire is not allowed at this picnic site.", + "nl": "Open vuur is niet toegestaan op deze picknickplaats." + } + }, + { + "if": "openfire=permit", + "then": { + "en": "Open fire is allowed at this picnic site with a permit.", + "nl": "Open vuur is toegestaan op deze picknickplaats met een vergunning." + } + } + ] + } + ], + "filter": [ + { + "id": "shelter", + "options": [ + { + "question": { + "en": "With a shelter", + "nl": "Met een schuilplaats" + }, + "osmTags": { + "or": [ + "shelter=yes", + "shelter=separate" + ] + } + } + ] + }, + { + "id": "fireplace", + "options": [ + { + "question": { + "en": "With a firepit", + "nl": "Met een vuurplaats" + }, + "osmTags": { + "or": [ + "fireplace=yes", + "fireplace=separate" + ] + } + } + ] + }, + { + "id": "bbq", + "options": [ + { + "question": { + "en": "With a BBQ", + "nl": "Met een BBQ" + }, + "osmTags": { + "or": [ + "bbq=yes", + "bbq=separate" + ] + } + } + ] + }, + { + "id": "drinking_water", + "options": [ + { + "question": { + "en": "With drinking water", + "nl": "Met drinkwater" + }, + "osmTags": { + "or": [ + "drinking_water=yes", + "drinking_water=separate" + ] + } + } + ] + } + ], + "allowMove": { + "enableImproveAccuracy": true + } +} \ No newline at end of file diff --git a/assets/themes/nature/nature.json b/assets/themes/nature/nature.json index 7158a1d5e..72798228d 100644 --- a/assets/themes/nature/nature.json +++ b/assets/themes/nature/nature.json @@ -66,6 +66,7 @@ "minzoom": 11 } }, + "picnic_site", { "builtin": [ "map", @@ -95,4 +96,4 @@ "observation_tower", "viewpoint" ] -} +} \ No newline at end of file From 48a0a5b5205f345edf32d2144fca77a723553664 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 24 Aug 2025 11:28:46 +0200 Subject: [PATCH 5/8] WIP: test workaround --- src/Logic/Tags/And.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Logic/Tags/And.ts b/src/Logic/Tags/And.ts index b1b69b8ab..77ec8e5bb 100644 --- a/src/Logic/Tags/And.ts +++ b/src/Logic/Tags/And.ts @@ -314,6 +314,14 @@ export class And extends TagsFilter { for (let j = i + 1; j < optimized.length; j++) { const ti = optimized[i] const tj = optimized[j] + if ( + !ti || + !tj || + typeof ti.shadows !== "function" || + typeof tj.shadows !== "function" + ) { + continue + } if (ti.shadows(tj)) { // if 'ti' is true, this implies 'tj' is always true as well. // if 'ti' is false, then 'tj' might be true or false @@ -322,6 +330,7 @@ export class And extends TagsFilter { // If 'ti' is true, then 'tj' will be true too and 'tj' can be ignored // If 'ti' is false, then the entire expression will be false and it doesn't matter what 'tj' yields optimized.splice(j, 1) + j-- } else if (tj.shadows(ti)) { optimized.splice(i, 1) i-- From 2c6574762c30d60440806ace3f9e3320f771c9a4 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 24 Aug 2025 23:08:16 +0200 Subject: [PATCH 6/8] Themes: New arcade theme --- assets/layers/arcade/arcade.json | 115 ++++++++++++++++++++++++ assets/layers/arcade/arcade.svg | 3 + assets/layers/arcade/arcade.svg.license | 2 + assets/layers/arcade/license_info.json | 12 +++ assets/themes/arcade/arcade.json | 13 +++ 5 files changed, 145 insertions(+) create mode 100644 assets/layers/arcade/arcade.json create mode 100644 assets/layers/arcade/arcade.svg create mode 100644 assets/layers/arcade/arcade.svg.license create mode 100644 assets/layers/arcade/license_info.json create mode 100644 assets/themes/arcade/arcade.json diff --git a/assets/layers/arcade/arcade.json b/assets/layers/arcade/arcade.json new file mode 100644 index 000000000..2ab70ba65 --- /dev/null +++ b/assets/layers/arcade/arcade.json @@ -0,0 +1,115 @@ +{ + "id": "arcade", + "name": { + "en": "Arcades" + }, + "description": { + "en": "Layer showing arcades" + }, + "source": { + "osmTags": "leisure=amusement_arcade" + }, + "minzoom": 10, + "title": { + "render": { + "en": "Arcade" + }, + "mappings": [ + { + "if": "name~*", + "then": { + "*": "{name}" + } + } + ] + }, + "pointRendering": [ + { + "location": [ + "point", + "centroid" + ], + "marker": [ + { + "icon": "square", + "color": "white" + }, + { + "icon": "./assets/layers/arcade/arcade.svg" + } + ] + } + ], + "lineRendering": [ + { + "width": 3, + "color": "#0e8517" + } + ], + "presets": [ + { + "title": { + "en": "an arcade" + }, + "tags": [ + "leisure=amusement_arcade" + ] + } + ], + "tagRenderings": [ + "images", + "reviews", + { + "builtin": "name", + "override": { + "question": { + "en": "What is the name of this arcade?" + }, + "render": { + "en": "This arcade is called {name}" + } + } + }, + { + "id": "virtual_reality", + "question": { + "en": "Does this arcade offer virtual-reality gaming?" + }, + "mappings": [ + { + "if": "virtual_reality=yes", + "then": { + "en": "This arcade offers virtual-reality gaming." + } + }, + { + "if": "virtual_reality=only", + "then": { + "en": "This arcade only offers virtual-reality gaming." + } + }, + { + "if": "virtual_reality=", + "then": { + "en": "This arcade doesn't offer virtual-reality gaming" + } + } + ] + }, + "brand", + "opening_hours", + "website", + "email", + "phone", + "payment-options", + "level", + "description", + "toilet_at_amenity_lib.all" + ], + "allowMove": { + "enableImproveAccuracy": true, + "enableRelocation": true + }, + "credits": "Robin van der Linde", + "credits:uid": 5093765 +} \ No newline at end of file diff --git a/assets/layers/arcade/arcade.svg b/assets/layers/arcade/arcade.svg new file mode 100644 index 000000000..5f4031683 --- /dev/null +++ b/assets/layers/arcade/arcade.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/assets/layers/arcade/arcade.svg.license b/assets/layers/arcade/arcade.svg.license new file mode 100644 index 000000000..ff6ee9492 --- /dev/null +++ b/assets/layers/arcade/arcade.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: meased +SPDX-License-Identifier: CC0-1.0 \ No newline at end of file diff --git a/assets/layers/arcade/license_info.json b/assets/layers/arcade/license_info.json new file mode 100644 index 000000000..f82b95ae4 --- /dev/null +++ b/assets/layers/arcade/license_info.json @@ -0,0 +1,12 @@ +[ + { + "path": "arcade.svg", + "license": "CC0-1.0", + "authors": [ + "meased" + ], + "sources": [ + "https://github.com/gravitystorm/openstreetmap-carto/blob/master/symbols/leisure/amusement_arcade.svg" + ] + } +] \ No newline at end of file diff --git a/assets/themes/arcade/arcade.json b/assets/themes/arcade/arcade.json new file mode 100644 index 000000000..137cdf86a --- /dev/null +++ b/assets/themes/arcade/arcade.json @@ -0,0 +1,13 @@ +{ + "id": "arcade", + "title": { + "en": "Arcades" + }, + "description": { + "en": "A map of arcades" + }, + "icon": "./assets/layers/arcade/arcade.svg", + "layers": [ + "arcade" + ] +} \ No newline at end of file From eb317d0bdabb0e5cf1dc4a871d65757a432c4de3 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 24 Aug 2025 23:11:19 +0200 Subject: [PATCH 7/8] Themes: move shelter filter to filters --- assets/layers/filters/filters.json | 22 ++++++++++++++++ assets/layers/picnic_site/picnic_site.json | 18 +------------ assets/layers/questions/questions.json | 5 ++-- .../layers/transit_stops/transit_stops.json | 25 ++----------------- 4 files changed, 28 insertions(+), 42 deletions(-) diff --git a/assets/layers/filters/filters.json b/assets/layers/filters/filters.json index 67556c5e1..f58d3333b 100644 --- a/assets/layers/filters/filters.json +++ b/assets/layers/filters/filters.json @@ -571,6 +571,28 @@ } } ] + }, + { + "id": "shelter", + "options": [ + { + "osmTags": { + "or": [ + "shelter=yes", + "shelter=separate" + ] + }, + "question": { + "en": "With a shelter", + "ca": "Amb refugi", + "cs": "S přístřeškem", + "de": "Mit Unterstand", + "es": "Con refugio", + "fr": "Avec un abri", + "it": "Con una pensilina" + } + } + ] } ], "allowMove": false diff --git a/assets/layers/picnic_site/picnic_site.json b/assets/layers/picnic_site/picnic_site.json index d29d94bb4..ef02be70b 100644 --- a/assets/layers/picnic_site/picnic_site.json +++ b/assets/layers/picnic_site/picnic_site.json @@ -245,23 +245,7 @@ } ], "filter": [ - { - "id": "shelter", - "options": [ - { - "question": { - "en": "With a shelter", - "nl": "Met een schuilplaats" - }, - "osmTags": { - "or": [ - "shelter=yes", - "shelter=separate" - ] - } - } - ] - }, + "shelter", { "id": "fireplace", "options": [ diff --git a/assets/layers/questions/questions.json b/assets/layers/questions/questions.json index 6b56671d2..368eb1cff 100644 --- a/assets/layers/questions/questions.json +++ b/assets/layers/questions/questions.json @@ -3116,7 +3116,8 @@ "if": "nobrand=yes", "addExtraTags": [ "brand=", - "brand:wikidata=" + "brand:wikidata=", + "brand:wikipedia=" ], "then": { "en": "Not part of a bigger brand", @@ -3652,4 +3653,4 @@ } } ] -} +} \ No newline at end of file diff --git a/assets/layers/transit_stops/transit_stops.json b/assets/layers/transit_stops/transit_stops.json index 096ce247e..822d21745 100644 --- a/assets/layers/transit_stops/transit_stops.json +++ b/assets/layers/transit_stops/transit_stops.json @@ -544,28 +544,7 @@ } ], "filter": [ - { - "id": "shelter", - "options": [ - { - "osmTags": { - "or": [ - "shelter=yes", - "shelter=separate" - ] - }, - "question": { - "en": "With a shelter", - "ca": "Amb refugi", - "cs": "S přístřeškem", - "de": "Mit Unterstand", - "es": "Con refugio", - "fr": "Avec un abri", - "it": "Con una pensilina" - } - } - ] - }, + "shelter", { "id": "bench", "options": [ @@ -613,4 +592,4 @@ "tactile_paving" ], "allowMove": false -} +} \ No newline at end of file From 25dfc80535dbcf0cc06703ccc9dbbf7b70c085ab Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Sun, 24 Aug 2025 23:11:45 +0200 Subject: [PATCH 8/8] Chore: reset translations --- langs/layers/ca.json | 17 ++-- langs/layers/cs.json | 17 ++-- langs/layers/de.json | 17 ++-- langs/layers/en.json | 208 +++++++++++++++++++++++++++++++++++++++++-- langs/layers/es.json | 17 ++-- langs/layers/fr.json | 14 +-- langs/layers/it.json | 17 ++-- langs/layers/nl.json | 151 +++++++++++++++++++++++++++++++ langs/themes/en.json | 4 + 9 files changed, 413 insertions(+), 49 deletions(-) diff --git a/langs/layers/ca.json b/langs/layers/ca.json index e4ac8aee9..dc8729b1d 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -5520,6 +5520,13 @@ } } }, + "23": { + "options": { + "0": { + "question": "Amb refugi" + } + } + }, "3": { "options": { "0": { @@ -8006,6 +8013,9 @@ "mappings": { "0": { "then": "Aquest espai d'aparcament té 1 plaça." + }, + "1": { + "then": "Aquest espai d'aparcament té 1 plaça." } }, "render": "Aquests espais d'aparcament tenen {capacity} places." @@ -12449,13 +12459,6 @@ "transit_stops": { "description": "Capa que mostra diferents tipus de parades de transport públic.", "filter": { - "0": { - "options": { - "0": { - "question": "Amb refugi" - } - } - }, "1": { "options": { "0": { diff --git a/langs/layers/cs.json b/langs/layers/cs.json index 7b6cc195a..68be5705c 100644 --- a/langs/layers/cs.json +++ b/langs/layers/cs.json @@ -5824,6 +5824,13 @@ } } }, + "23": { + "options": { + "0": { + "question": "S přístřeškem" + } + } + }, "3": { "options": { "0": { @@ -8616,6 +8623,9 @@ "mappings": { "0": { "then": "Toto parkoviště má 1 místo." + }, + "1": { + "then": "Toto parkoviště má 1 místo." } }, "render": "Toto parkoviště má {capacity} míst." @@ -13507,13 +13517,6 @@ "transit_stops": { "description": "Vrstva zobrazující různé typy zastávek veřejné dopravy.", "filter": { - "0": { - "options": { - "0": { - "question": "S přístřeškem" - } - } - }, "1": { "options": { "0": { diff --git a/langs/layers/de.json b/langs/layers/de.json index 27c384de1..f79fd65c3 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -5498,6 +5498,13 @@ } } }, + "23": { + "options": { + "0": { + "question": "Mit Unterstand" + } + } + }, "3": { "options": { "0": { @@ -7970,6 +7977,9 @@ "mappings": { "0": { "then": "Dieser Parkplatz hat 1 Stellplatz." + }, + "1": { + "then": "Dieser Parkplatz hat 1 Stellplatz." } }, "render": "Dieser Parkplatz hat {capacity} Stellplätze." @@ -12438,13 +12448,6 @@ "transit_stops": { "description": "Ebene mit verschiedenen Arten von Haltestellen.", "filter": { - "0": { - "options": { - "0": { - "question": "Mit Unterstand" - } - } - }, "1": { "options": { "0": { diff --git a/langs/layers/en.json b/langs/layers/en.json index ee422ee16..97fa2e0cb 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -531,6 +531,40 @@ "render": "Animal shelter" } }, + "arcade": { + "description": "Layer showing arcades", + "name": "Arcades", + "presets": { + "0": { + "title": "an arcade" + } + }, + "tagRenderings": { + "name": { + "override": { + "question": "What is the name of this arcade?", + "render": "This arcade is called {name}" + } + }, + "virtual_reality": { + "mappings": { + "0": { + "then": "This arcade offers virtual-reality gaming." + }, + "1": { + "then": "This arcade only offers virtual-reality gaming." + }, + "2": { + "then": "This arcade doesn't offer virtual-reality gaming" + } + }, + "question": "Does this arcade offer virtual-reality gaming?" + } + }, + "title": { + "render": "Arcade" + } + }, "artwork": { "description": "An open map of statues, busts, graffitis and other artwork all over the world", "name": "Artworks", @@ -5848,6 +5882,13 @@ } } }, + "23": { + "options": { + "0": { + "question": "With a shelter" + } + } + }, "3": { "options": { "0": { @@ -8636,10 +8677,34 @@ "description": "Layer showing individual parking spaces.", "name": "Parking Spaces", "tagRenderings": { + "access": { + "mappings": { + "0": { + "then": "Anyone can use this parking space." + }, + "1": { + "then": "Anyone can use this parking space." + }, + "2": { + "then": "This parking space is reserved for customers." + }, + "3": { + "then": "This parking space is private and cannot be used by the general public." + }, + "4": { + "then": "This parking space is reserved for permit holders." + } + }, + "question": "Who can use this parking space?", + "render": "Access of parking space: {access}" + }, "capacity": { "mappings": { "0": { "then": "This parking space has 1 space." + }, + "1": { + "then": "This parking space has 1 space." } }, "render": "This parking spaces has {capacity} spaces." @@ -8664,6 +8729,9 @@ "13": { "then": "This is a parking space reserved for car sharing." }, + "14": { + "then": "This is a parking space reserved for women." + }, "2": { "then": "This is a disabled parking space." }, @@ -8795,6 +8863,130 @@ "render": "Physiotherapist {name}" } }, + "picnic_site": { + "description": "Picnic sites for eating outdoors, featuring amenities like toilets, water taps, BBQ, benches and shelters", + "filter": { + "1": { + "options": { + "0": { + "question": "With a firepit" + } + } + }, + "2": { + "options": { + "0": { + "question": "With a BBQ" + } + } + }, + "3": { + "options": { + "0": { + "question": "With drinking water" + } + } + } + }, + "name": "Picnic sites", + "presets": { + "0": { + "description": "A picnic site for eating outdoors, featuring amenities like toilets, water taps, BBQ, benches and shelters", + "title": "a picnic site" + } + }, + "tagRenderings": { + "bbq": { + "mappings": { + "0": { + "then": "This picnic site has a BBQ." + }, + "1": { + "then": "This picnic site does not have a BBQ." + }, + "2": { + "then": "This picnic site has a BBQ, but it is mapped as a different icon." + } + }, + "question": "Does this picnic site have a BBQ?" + }, + "covered": { + "mappings": { + "0": { + "then": "This picnic site is covered." + }, + "1": { + "then": "This picnic site is not covered." + } + }, + "question": "Is this picnic site covered?" + }, + "drinking_water": { + "mappings": { + "0": { + "then": "This picnic site has drinking water." + }, + "1": { + "then": "This picnic site does not have drinking water." + }, + "2": { + "then": "This picnic site has drinking water, but it is mapped as a different icon." + } + }, + "question": "Does this picnic site have drinking water?" + }, + "fireplace": { + "mappings": { + "0": { + "then": "This picnic site has a firepit." + }, + "1": { + "then": "This picnic site does not have a firepit." + }, + "2": { + "then": "This picnic site has a firepit, but it is mapped as a different icon." + } + }, + "question": "Does this picnic site have a firepit?" + }, + "name": { + "override": { + "render": "This picnic site is called {name}" + } + }, + "openfire": { + "mappings": { + "0": { + "then": "Open fire is allowed at this picnic site." + }, + "1": { + "then": "Open fire is not allowed at this picnic site." + }, + "2": { + "then": "Open fire is allowed at this picnic site with a permit." + } + }, + "question": "Is open fire allowed at this picnic site?" + }, + "shelter": { + "mappings": { + "0": { + "then": "This picnic site has a shelter." + }, + "1": { + "then": "This picnic site does not have a shelter." + }, + "2": { + "then": "This picnic site has a shelter, but is is mapped as a different icon." + } + }, + "question": "Does this picnic site have a shelter?" + } + }, + "title": { + "render": "Picnic site" + } + }, "picnic_table": { "description": "The layer showing picnic tables", "name": "Picnic tables", @@ -11263,6 +11455,15 @@ "second_hand": { "question": "Does this shop sell second-hand items?" }, + "self_checkout": { + "override": { + "+mappings": { + "0": { + "then": "This shop (probably) does not offer self-checkout" + } + } + } + }, "sells_new_bikes": { "mappings": { "0": { @@ -13589,13 +13790,6 @@ "transit_stops": { "description": "Layer showing different types of transit stops.", "filter": { - "0": { - "options": { - "0": { - "question": "With a shelter" - } - } - }, "1": { "options": { "0": { diff --git a/langs/layers/es.json b/langs/layers/es.json index 0baced4d3..183f4966a 100644 --- a/langs/layers/es.json +++ b/langs/layers/es.json @@ -5162,6 +5162,13 @@ } } }, + "23": { + "options": { + "0": { + "question": "Con refugio" + } + } + }, "3": { "options": { "0": { @@ -7594,6 +7601,9 @@ "mappings": { "0": { "then": "Esta plaza de aparcamiento tiene 1 plaza." + }, + "1": { + "then": "Esta plaza de aparcamiento tiene 1 plaza." } }, "render": "Esta plaza de aparcamiento tiene {capacity} plazas." @@ -11317,13 +11327,6 @@ "transit_stops": { "description": "Capa que muestra diferentes tipos de paradas de transporte.", "filter": { - "0": { - "options": { - "0": { - "question": "Con refugio" - } - } - }, "1": { "options": { "0": { diff --git a/langs/layers/fr.json b/langs/layers/fr.json index 8190cf247..6edfeb0ce 100644 --- a/langs/layers/fr.json +++ b/langs/layers/fr.json @@ -3609,6 +3609,13 @@ } } }, + "23": { + "options": { + "0": { + "question": "Avec un abri" + } + } + }, "6": { "options": { "0": { @@ -6837,13 +6844,6 @@ }, "transit_stops": { "filter": { - "0": { - "options": { - "0": { - "question": "Avec un abri" - } - } - }, "1": { "options": { "0": { diff --git a/langs/layers/it.json b/langs/layers/it.json index 5a210ede3..6fef93020 100644 --- a/langs/layers/it.json +++ b/langs/layers/it.json @@ -5768,6 +5768,13 @@ } } }, + "23": { + "options": { + "0": { + "question": "Con una pensilina" + } + } + }, "3": { "options": { "0": { @@ -8469,6 +8476,9 @@ "mappings": { "0": { "then": "Questo posto auto ha 1 spazio." + }, + "1": { + "then": "Questo posto auto ha 1 spazio." } }, "render": "Questo posto auto ha {capacity} spazi." @@ -13134,13 +13144,6 @@ "transit_stops": { "description": "Livello che mostra diversi tipi di fermate dei mezzi pubblici.", "filter": { - "0": { - "options": { - "0": { - "question": "Con una pensilina" - } - } - }, "1": { "options": { "0": { diff --git a/langs/layers/nl.json b/langs/layers/nl.json index bac059917..41d0f1822 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -7622,10 +7622,34 @@ "description": "Laag met individuele parkeerplekken.", "name": "Parkeerplekken", "tagRenderings": { + "access": { + "mappings": { + "0": { + "then": "Iedereen kan deze parkeerplek gebruiken." + }, + "1": { + "then": "Iedereen kan deze parkeerplek gebruiken." + }, + "2": { + "then": "Deze parkeerplek is gereserveerd voor klanten." + }, + "3": { + "then": "Deze parkeerplek is privé en mag niet door het grote publiek worden gebruikt." + }, + "4": { + "then": "Deze parkeerplek is gereserveerd voor vergunninghouders." + } + }, + "question": "Wie mag deze parkeerplek gebruiken?", + "render": "Toegang tot parkeerplek: {access}" + }, "capacity": { "mappings": { "0": { "then": "Deze parkeerplek heeft 1 plaats." + }, + "1": { + "then": "Deze parkeerplek heeft 1 plaats." } }, "render": "Deze parkeerplek heeft {capacity} plaatsen." @@ -7650,6 +7674,9 @@ "13": { "then": "Deze parkeerplek is gereserveerd voor autodelen." }, + "14": { + "then": "Deze parkeerplek is gereserveerd voor vrouwen." + }, "2": { "then": "Dit is een gehandicaptenparkeerplaats." }, @@ -7780,6 +7807,130 @@ "render": "Kinesist {name}" } }, + "picnic_site": { + "description": "Picknickplaatsen voor het eten in de buitenlucht, met voorzieningen zoals toiletten, waterkranen, BBQ, banken en schuilplaatsen", + "filter": { + "1": { + "options": { + "0": { + "question": "Met een vuurplaats" + } + } + }, + "2": { + "options": { + "0": { + "question": "Met een BBQ" + } + } + }, + "3": { + "options": { + "0": { + "question": "Met drinkwater" + } + } + } + }, + "name": "Picknickplaatsen", + "presets": { + "0": { + "description": "Een picknickplaats voor het eten in de buitenlucht, met voorzieningen zoals toiletten, waterkranen, BBQ, banken en schuilplaatsen", + "title": "een picknickplaats" + } + }, + "tagRenderings": { + "bbq": { + "mappings": { + "0": { + "then": "Deze picknickplaats heeft een BBQ." + }, + "1": { + "then": "Deze picknickplaats heeft geen BBQ." + }, + "2": { + "then": "Deze picknickplaats heeft een BBQ, maar deze staat los op de kaart." + } + }, + "question": "Heeft deze picknickplaats een BBQ?" + }, + "covered": { + "mappings": { + "0": { + "then": "Deze picknickplaats is overdekt." + }, + "1": { + "then": "Deze picknickplaats is niet overdekt." + } + }, + "question": "Is deze picknickplaats overdekt?" + }, + "drinking_water": { + "mappings": { + "0": { + "then": "Deze picknickplaats heeft drinkwater." + }, + "1": { + "then": "Deze picknickplaats heeft geen drinkwater." + }, + "2": { + "then": "Deze picknickplaats heeft drinkwater, maar deze staat los op de kaart." + } + }, + "question": "Heeft deze picknickplaats drinkwater?" + }, + "fireplace": { + "mappings": { + "0": { + "then": "Deze picknickplaats heeft een vuurplaats." + }, + "1": { + "then": "Deze picknickplaats heeft geen vuurplaats." + }, + "2": { + "then": "Deze picknickplaats heeft een vuurplaats, maar deze staat los op de kaart." + } + }, + "question": "Heeft deze picknickplaats een vuurplaats?" + }, + "name": { + "override": { + "render": "Deze picknickplaats heet {name}" + } + }, + "openfire": { + "mappings": { + "0": { + "then": "Open vuur is toegestaan op deze picknickplaats." + }, + "1": { + "then": "Open vuur is niet toegestaan op deze picknickplaats." + }, + "2": { + "then": "Open vuur is toegestaan op deze picknickplaats met een vergunning." + } + }, + "question": "Is open vuur toegestaan op deze picknickplaats?" + }, + "shelter": { + "mappings": { + "0": { + "then": "Deze picknickplaats heeft een schuilplaats." + }, + "1": { + "then": "Deze picknickplaats heeft geen schuilplaats." + }, + "2": { + "then": "Deze picknickplaats heeft een schuilplaats, maar deze staat los op de kaart." + } + }, + "question": "Heeft deze picknickplaats een schuilplaats?" + } + }, + "title": { + "render": "Picknickplaats" + } + }, "picnic_table": { "description": "Deze laag toont picknicktafels", "name": "Picknicktafels", diff --git a/langs/themes/en.json b/langs/themes/en.json index de5ff9837..0c7b8469d 100644 --- a/langs/themes/en.json +++ b/langs/themes/en.json @@ -8,6 +8,10 @@ "description": "On this map, one can find and mark nearby defibrillators", "title": "Defibrillators" }, + "arcade": { + "description": "A map of arcades", + "title": "Arcades" + }, "architecture": { "description": "A map showing the architectural style of buildings", "title": "Buildings with an architectural style"