Merge pull request 'A few patches' (#2510) from Robin-patch-1 into develop

Reviewed-on: MapComplete/MapComplete#2510
Reviewed-by: Pieter Vander Vennet <pietervdvn@posteo.net>
This commit is contained in:
Pieter Vander Vennet 2025-08-28 20:33:00 +00:00
commit c30d52c5f4
22 changed files with 986 additions and 79 deletions

View file

@ -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 <b>{name}</b>"
}
}
},
{
"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 <b>only</b> 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
}

View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<path fill="#0e8517" d="m0,1 h4 v2 h-4z m10,0 h4 v2 h-4z m-6,2 v2 h-2 v2 h-2 v7 h2 v-2 h2 v2 h2 v-2 h2 v2 h2 v-2 h2 v2 h2 v-7 h-2 v-2 h-2 v-2 h-2 v2 h-2 v-2z m0,4 h2 v2 h-2 z m4,0 h2 v2 h-2 z"/>
</svg>

After

Width:  |  Height:  |  Size: 287 B

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: meased
SPDX-License-Identifier: CC0-1.0

View file

@ -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"
]
}
]

View file

@ -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

View file

@ -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
}
}
}

View file

@ -0,0 +1,304 @@
{
"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": [
"shelter",
{
"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
}
}

View file

@ -3118,7 +3118,8 @@
"if": "nobrand=yes",
"addExtraTags": [
"brand=",
"brand:wikidata="
"brand:wikidata=",
"brand:wikipedia="
],
"then": {
"en": "Not part of a bigger brand",
@ -3657,4 +3658,4 @@
}
}
]
}
}

View file

@ -43,7 +43,8 @@
"craft=key_cutter"
]
},
"shop!=mall"
"shop!=mall",
"shop!=no"
]
}
},
@ -486,7 +487,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="
]
}
]
},

View file

@ -548,28 +548,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": [
@ -617,4 +596,4 @@
"tactile_paving"
],
"allowMove": false
}
}

View file

@ -0,0 +1,13 @@
{
"id": "arcade",
"title": {
"en": "Arcades"
},
"description": {
"en": "A map of arcades"
},
"icon": "./assets/layers/arcade/arcade.svg",
"layers": [
"arcade"
]
}

View file

@ -67,6 +67,7 @@
"minzoom": 11
}
},
"picnic_site",
{
"builtin": [
"map",
@ -96,4 +97,4 @@
"observation_tower",
"viewpoint"
]
}
}

View file

@ -5510,6 +5510,13 @@
}
}
},
"23": {
"options": {
"0": {
"question": "Amb refugi"
}
}
},
"3": {
"options": {
"0": {
@ -7996,6 +8003,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."
@ -12439,13 +12449,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": {

View file

@ -5831,6 +5831,13 @@
}
}
},
"23": {
"options": {
"0": {
"question": "S přístřeškem"
}
}
},
"3": {
"options": {
"0": {
@ -8623,6 +8630,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."
@ -13546,13 +13556,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": {

View file

@ -5488,6 +5488,13 @@
}
}
},
"23": {
"options": {
"0": {
"question": "Mit Unterstand"
}
}
},
"3": {
"options": {
"0": {
@ -7960,6 +7967,9 @@
"mappings": {
"0": {
"then": "Dieser Parkplatz hat 1 Stellplatz."
},
"1": {
"then": "Dieser Parkplatz hat 1 Stellplatz."
}
},
"render": "Dieser Parkplatz hat {capacity} Stellplätze."
@ -12431,13 +12441,6 @@
"transit_stops": {
"description": "Ebene mit verschiedenen Arten von Haltestellen.",
"filter": {
"0": {
"options": {
"0": {
"question": "Mit Unterstand"
}
}
},
"1": {
"options": {
"0": {

View file

@ -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 <b>{name}</b>"
}
},
"virtual_reality": {
"mappings": {
"0": {
"then": "This arcade offers virtual-reality gaming."
},
"1": {
"then": "This arcade <b>only</b> 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",
@ -5838,6 +5872,13 @@
}
}
},
"23": {
"options": {
"0": {
"question": "With a shelter"
}
}
},
"3": {
"options": {
"0": {
@ -8657,10 +8698,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."
@ -8685,6 +8750,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."
},
@ -8816,6 +8884,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",
@ -13622,13 +13814,6 @@
"transit_stops": {
"description": "Layer showing different types of transit stops.",
"filter": {
"0": {
"options": {
"0": {
"question": "With a shelter"
}
}
},
"1": {
"options": {
"0": {

View file

@ -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."
@ -11320,13 +11330,6 @@
"transit_stops": {
"description": "Capa que muestra diferentes tipos de paradas de transporte.",
"filter": {
"0": {
"options": {
"0": {
"question": "Con refugio"
}
}
},
"1": {
"options": {
"0": {

View file

@ -3609,6 +3609,13 @@
}
}
},
"23": {
"options": {
"0": {
"question": "Avec un abri"
}
}
},
"6": {
"options": {
"0": {
@ -6919,13 +6926,6 @@
},
"transit_stops": {
"filter": {
"0": {
"options": {
"0": {
"question": "Avec un abri"
}
}
},
"1": {
"options": {
"0": {

View file

@ -5758,6 +5758,13 @@
}
}
},
"23": {
"options": {
"0": {
"question": "Con una pensilina"
}
}
},
"3": {
"options": {
"0": {
@ -8459,6 +8466,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."
@ -13124,13 +13134,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": {

View file

@ -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",

View file

@ -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"

View file

@ -314,6 +314,14 @@ export class And<T extends TagsFilter = TagsFilter> 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<T extends TagsFilter = TagsFilter> 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--