chore: automated housekeeping...

This commit is contained in:
Pieter Vander Vennet 2024-11-28 12:00:23 +01:00
parent 8ef7af613f
commit 00151afdea
114 changed files with 2857 additions and 2135 deletions

View file

@ -644,6 +644,10 @@
- ticket_machine
- vending_machine
### wheelchair
- pharmacy
### {preset_type_select()}
- police

View file

@ -538,7 +538,8 @@ This table gives a summary of ids, names and other metainformation. [See the onl
| CBJ_Aerial_20230516 | CBJ Aerial Imagery (May 2023) | photo | ⭐ | City and Borough of Juneau |
| CBJ_Aerial_20230618 | CBJ Aerial Imagery (June 2023) | photo | | City and Borough of Juneau |
| FNSB_Aerial_2023 | FNSB Aerial Imagery (2023) | photo | ⭐ | Fairbanks North Star Borough |
| MOA_Aerial_2021 | MOA Aerial Imagery (2021) | photo | | Municipality of Anchorage GIS |
| MOA_Aerial_2021 | MOA Aerial Imagery (2021) | historicphoto | | Municipality of Anchorage GIS |
| MOA_Aerial_2024 | MOA Aerial Imagery (2024) | photo | ⭐ | Municipality of Anchorage GIS |
| MSB_Aerial_2019 | MSB Aerial Imagery - Area 1(2019) | historicphoto | | Matanuska-Susitna Borough GIS Division |
| MSB_Aerial_2020 | MSB Aerial Imagery - Area 2 (2020) | historicphoto | | Matanuska-Susitna Borough GIS Division |
| MSB_Aerial_2021 | MSB Aerial Imagery - Area 3 (2021) | historicphoto | | Matanuska-Susitna Borough GIS Division |
@ -558,20 +559,27 @@ This table gives a summary of ids, names and other metainformation. [See the onl
| LA_County_Basemap | LA County Basemap | map | | Los Angeles County |
| Manhattan_Beach_CA_2023 | City of Manhattan Beach Orthoimagery (2023) | photo | | City of Manhattan Beach |
| Manteca_CA_2022 | City of Manteca Orthoimagery (2022) | photo | | City of Manteca |
| Modesto_CA_2023 | City of Modesto Orthoimagery (2023) | photo | | City of Modesto |
| Modesto_CA_2023 | City of Modesto Orthoimagery (2023) | historicphoto | | City of Modesto |
| Modesto_CA_2024 | City of Modesto Orthoimagery (2024) | photo | | City of Modesto |
| Orange_CA_2022 | Orange County Orthoimagery (2022) | photo | | Orange County |
| Roseville_CA_2023 | City of Roseville Orthoimagery (2023) | historicphoto | | City of Roseville |
| Roseville_CA_2024 | City of Roseville Orthoimagery (2024) | photo | | City of Roseville |
| Sacramento_CA_2022 | Sacramento County Orthoimagery (2022) | photo | | Sacramento County |
| San_Bernardino_CA_2023 | San Bernardino County Orthoimagery (2023) | photo | | San Bernardino County |
| San_Francisco_CA_2022 | San Francisco Orthoimagery (2022) | historicphoto | | City and County of San Francisco |
| San_Francisco_CA_2022_CIR | San Francisco Orthoimagery CIR (2022) | historicphoto | | City and County of San Francisco |
| San_Francisco_Ortho_2023 | San Francisco Orthoimagery (2023) | photo | | City and County of San Francisco |
| San_Bernardino_CA_2023 | San Bernardino County Orthoimagery (2023) | historicphoto | | San Bernardino County |
| San_Bernardino_CA_2024 | San Bernardino County Orthoimagery (2024) | photo | | San Bernardino County |
| San_Francisco_2022 | San Francisco Orthoimagery (2022) | historicphoto | | City and County of San Francisco |
| San_Francisco_2022_CIR | San Francisco Orthoimagery CIR (2022) | historicphoto | | City and County of San Francisco |
| San_Francisco_2023 | San Francisco Orthoimagery (2023) | historicphoto | | City and County of San Francisco |
| San_Francisco_2023_CIR | San Francisco Orthoimagery CIR (2023) | historicphoto | | City and County of San Francisco |
| San_Francisco_2024 | San Francisco Orthoimagery (2024) | photo | | City and County of San Francisco |
| San_Francisco_2024_CIR | San Francisco Orthoimagery CIR (2024) | photo | | City and County of San Francisco |
| San_Mateo_CA_2022 | San Mateo County Orthoimagery (2022) | photo | | San Mateo County |
| Santa_Clara_CA_2022 | Santa Clara County Orthoimagery (2022) | photo | | County of Santa Clara |
| Santa_Clara_CA_2023 | Santa Clara County Orthoimagery (2023) | photo | | County of Santa Clara |
| Santa_Rosa_CA_2022 | City of Santa Rosa Orthoimagery (2022) | photo | | City of Santa Rosa |
| Solano_CA_2022 | Solano County Orthoimagery (2022) | photo | | Solano County |
| Solano_CA_2022 | Solano County Orthoimagery (2022) | historicphoto | | Solano County |
| Solano_CA_2023 | Solano County Orthoimagery (2023) | historicphoto | | Solano County |
| Solano_CA_2024 | Solano County Orthoimagery (2024) | photo | | Solano County |
| Stockton_CA_2023 | City of Stockton Orthoimagery (2023) | photo | | City of Stockton |
| Arapahoe-County-Aerials-Latest | Arapahoe County Aerials Latest | photo | | Arapahoe County GIS |
| MCGIS-County-NAIP-Imagery-2015 | Mesa County GIS NAIP 2015 | historicphoto | | Mesa County GIS |
@ -579,7 +587,8 @@ This table gives a summary of ids, names and other metainformation. [See the onl
| MCGIS-County-Valleywide-Imagery-2020 | Mesa County GIS Valleywide 2020 | historicphoto | | Mesa County GIS |
| MCGIS-County-Valleywide-Imagery-2022 | Mesa County GIS Valleywide 2022 | photo | | Mesa County GIS |
| MCGIS-County-Valleywide-Imagery-2024 | Mesa County GIS Valleywide 2024 | photo | | Mesa County GIS |
| CT_ECO_Ortho_2019_RGB | CT ECO Orthoimagery (2019) | photo | | Connecticut Environmental Conditions Online |
| CT_ECO_Ortho_2019_RGB | CT ECO Orthoimagery (2019) | historicphoto | | Connecticut Environmental Conditions Online |
| CT_ECO_Ortho_2023_RGB | CT ECO Orthoimagery (2023) | photo | | Connecticut Environmental Conditions Online |
| CT_ECO_Shaded_relief_2016 | CT ECO Shaded Relief | elevation | | Connecticut Environmental Conditions Online |
| MetroCOG_Ortho_2020 | MetroCOG Orthoimagery (2020) | photo | | Connecticut Metropolitan Council of Governments |
| DC_From_Above_Ortho_2019 | DC From Above Orthophoto 2019 | historicphoto | | OCTO, DCGIS |
@ -588,7 +597,7 @@ This table gives a summary of ids, names and other metainformation. [See the onl
| Delaware2012Orthophotography | Delaware 2012 Orthophotography | historicphoto | | Digital Aerial Solutions, LLC, FirstMap |
| DE_Orthophotography_2017_NC | Delaware 2017 Orthophotography (Natural Color) | historicphoto | | Surdex Corp, FirstMap |
| Delaware_FirstMap_2021 | Delaware FirstMap 2021 | historicphoto | | Hexagon, FirstMap |
| Delaware_FirstMap_2022 | Delaware FirstMap 2022 | photo | | Sanborn Map Company, FirstMap |
| Delaware_FirstMap_2022 | Delaware FirstMap 2022 | photo | | Sanborn Map Company, FirstMap |
| Delaware_Parks_2022 | Delaware Parks 2022 | photo | | Sanborn Map Company, FirstMap |
| Alachua_Ortho_2020 | Alachua County Orthoimagery (2020) | historicphoto | | Alachua County Property Appraisers Office |
| Alachua_Ortho_2023 | Alachua County Orthoimagery (2023) | photo | | Alachua County Property Appraisers Office |
@ -818,7 +827,8 @@ This table gives a summary of ids, names and other metainformation. [See the onl
| Suan_Juan_WA_2023 | Suan Juan County Aerials (2023) | photo | ⭐ | San Juan County GIS |
| Suan_Juan_WA_Basemap | Suan Juan County Basemap | map | | San Juan County GIS |
| Snohomish_WA_2020 | Snohomish County Orthoimagery (2020) | historicphoto | | Snohomish County GIS |
| Snohomish_WA_2022 | Snohomish County Orthoimagery (2022) | photo | | Snohomish County GIS |
| Snohomish_WA_2022 | Snohomish County Orthoimagery (2022) | historicphoto | | Snohomish County GIS |
| Snohomish_WA_2024 | Snohomish County Orthoimagery (2024) | photo | | Snohomish County GIS |
| WISC_DNR_Ortho_Composite | Wisconsin Leaf-Off Orthophotography (DNR) | photo | | Wisconsin Regional Orthoimagery Consortium, Southeastern Wisconsin Regional Planning Commission, Wisconsin Department of Natural Resources |
| Monongalia_WV_2022 | Monongalia County 2022 Aerial Imagery | historicphoto | | Monongalia Morgantown Area Geospatial Information Consortium |
| Monongalia_WV_2023 | Monongalia County 2023 Aerial Imagery | photo | ⭐ | Monongalia Morgantown Area Geospatial Information Consortium |

View file

@ -4,7 +4,7 @@
We will complete data from advertising features with reference, operator and lit
- This layer is shown at zoomlevel **15** and higher
- This layer is shown at zoomlevel **13** and higher
- This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on it: preset `a billboard mounted to a wall` snaps to this layer (advertising.presets[1])
- This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on it: preset `a poster box mounted on a wall` snaps to this layer (advertising.presets[3])
- This layer will automatically load [shelter](./shelter.md) into the layout as it depends on it: preset `a poster box part of a public transport shelter` snaps to this layer (advertising.presets[4])

View file

@ -362,6 +362,25 @@ This tagrendering has labels
| artwork-artwork_type.12 | Tilework | artwork_type=tilework |
| artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving |
| id | question | osmTags |
-----|-----|----- |
| memorial-type.0 | *What type of memorial is this?* (default) | |
| memorial-type.1 | This is a statue | memorial=statue |
| memorial-type.2 | This is a plaque | memorial=plaque |
| memorial-type.3 | This is a commemorative bench | memorial=bench |
| memorial-type.4 | This is a ghost bike - a bicycle painted white to remember a cyclist whom deceased because of a car crash | memorial=ghost_bike |
| memorial-type.5 | This is a stolperstein (stumbing stone) | memorial=stolperstein |
| memorial-type.6 | This is a stele | memorial=stele |
| memorial-type.7 | This is a memorial stone | memorial=stone |
| memorial-type.8 | This is a bust | memorial=bust |
| memorial-type.9 | This is a sculpture | memorial=sculpture |
| memorial-type.10 | This is an obelisk | memorial=obelisk |
| memorial-type.11 | This is a cross | memorial=cross |
| memorial-type.12 | This is a blue plaque | memorial=blue_plaque |
| memorial-type.13 | This is a historic tank, permanently placed in public space as memorial | memorial=tank |
| memorial-type.14 | This is a memorial tree | memorial=tree |
| memorial-type.15 | This is a gravestone; the person is buried here | historic=tomb |
This document is autogenerated from [assets/layers/artwork/artwork.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/artwork/artwork.json)

View file

@ -365,6 +365,25 @@ This tagrendering has labels
| artwork-artwork_type.12 | Tilework | artwork_type=tilework |
| artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving |
| id | question | osmTags |
-----|-----|----- |
| memorial-type.0 | *What type of memorial is this?* (default) | |
| memorial-type.1 | This is a statue | memorial=statue |
| memorial-type.2 | This is a plaque | memorial=plaque |
| memorial-type.3 | This is a commemorative bench | memorial=bench |
| memorial-type.4 | This is a ghost bike - a bicycle painted white to remember a cyclist whom deceased because of a car crash | memorial=ghost_bike |
| memorial-type.5 | This is a stolperstein (stumbing stone) | memorial=stolperstein |
| memorial-type.6 | This is a stele | memorial=stele |
| memorial-type.7 | This is a memorial stone | memorial=stone |
| memorial-type.8 | This is a bust | memorial=bust |
| memorial-type.9 | This is a sculpture | memorial=sculpture |
| memorial-type.10 | This is an obelisk | memorial=obelisk |
| memorial-type.11 | This is a cross | memorial=cross |
| memorial-type.12 | This is a blue plaque | memorial=blue_plaque |
| memorial-type.13 | This is a historic tank, permanently placed in public space as memorial | memorial=tank |
| memorial-type.14 | This is a memorial tree | memorial=tree |
| memorial-type.15 | This is a gravestone; the person is buried here | historic=tomb |
This document is autogenerated from [assets/themes/ghostsigns/ghostsigns.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ghostsigns/ghostsigns.json)

View file

@ -434,7 +434,7 @@ The question is `Does this shop sell bikes?`
- *This shop sells new bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:retail' target='_blank'>service:bicycle:retail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dyes' target='_blank'>yes</a>
- *This shop doesn't sell new bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:retail' target='_blank'>service:bicycle:retail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dno' target='_blank'>no</a>
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddiy' target='_blank'>diy</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddoityourself' target='_blank'>doityourself</a> | service:bicycle:retail~.+
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsports' target='_blank'>sports</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddiy' target='_blank'>diy</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddoityourself' target='_blank'>doityourself</a> | service:bicycle:retail~.+
### bike_second_hand
@ -455,7 +455,7 @@ The question is `Does this shop repair bikes?`
- *This shop only repairs bikes bought here* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:repair' target='_blank'>service:bicycle:repair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:repair%3Donly_sold' target='_blank'>only_sold</a>
- *This shop only repairs bikes of a certain brand* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:repair' target='_blank'>service:bicycle:repair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:repair%3Dbrand' target='_blank'>brand</a>
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:retail' target='_blank'>service:bicycle:retail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:second_hand' target='_blank'>service:bicycle:second_hand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:second_hand%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:second_hand' target='_blank'>service:bicycle:second_hand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:second_hand%3Donly' target='_blank'>only</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle' target='_blank'>bicycle</a> | service:bicycle:repair~.+
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:retail' target='_blank'>service:bicycle:retail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:second_hand' target='_blank'>service:bicycle:second_hand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:second_hand%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:second_hand' target='_blank'>service:bicycle:second_hand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:second_hand%3Donly' target='_blank'>only</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsports' target='_blank'>sports</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle' target='_blank'>bicycle</a> | service:bicycle:repair~.+
### bicycle_rental
@ -464,7 +464,7 @@ The question is `Does this shop rent out bikes?`
- *This shop rents out bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:rental' target='_blank'>service:bicycle:rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:rental%3Dyes' target='_blank'>yes</a>
- *This shop doesn't rent out bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:rental' target='_blank'>service:bicycle:rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:rental%3Dno' target='_blank'>no</a>
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle' target='_blank'>bicycle</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle_repair' target='_blank'>bicycle_repair</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Drental' target='_blank'>rental</a> | service:bicycle:rental~.+
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle' target='_blank'>bicycle</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsports' target='_blank'>sports</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle_repair' target='_blank'>bicycle_repair</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Drental' target='_blank'>rental</a> | service:bicycle:rental~.+
### bicycle-types
@ -586,7 +586,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -578,7 +578,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -587,7 +587,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -59,7 +59,6 @@ Elements must match the expression **<a href='https://wiki.openstreetmap.org/wik
| <a target="_blank" href='https://taginfo.openstreetmap.org/keys/phone#values'><img src='https://mapcomplete.org/assets/svg/search.svg' height='18px'></a> <a target="_blank" href='https://taghistory.raifer.tech/?#***/phone/'><img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'></a> [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | |
| <a target="_blank" href='https://taginfo.openstreetmap.org/keys/email#values'><img src='https://mapcomplete.org/assets/svg/search.svg' height='18px'></a> <a target="_blank" href='https://taghistory.raifer.tech/?#***/email/'><img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'></a> [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | |
| <a target="_blank" href='https://taginfo.openstreetmap.org/keys/website#values'><img src='https://mapcomplete.org/assets/svg/search.svg' height='18px'></a> <a target="_blank" href='https://taghistory.raifer.tech/?#***/website/'><img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'></a> [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | |
| <a target="_blank" href='https://taginfo.openstreetmap.org/keys/wheelchair#values'><img src='https://mapcomplete.org/assets/svg/search.svg' height='18px'></a> <a target="_blank" href='https://taghistory.raifer.tech/?#***/wheelchair/'><img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'></a> [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) [limited](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited) |
### images
This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` and shows the button to upload new images
@ -124,11 +123,8 @@ The question is `Which methods of payment are accepted here?`
### wheelchair
The question is `Is this pharmacy easy to access on a wheelchair?`
- *This pharmacy is easy to access on a wheelchair* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:wheelchair' target='_blank'>wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes' target='_blank'>yes</a>
- *This pharmacy is hard to access on a wheelchair* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:wheelchair' target='_blank'>wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno' target='_blank'>no</a>
- *This pharmacy has limited access for wheelchair users* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:wheelchair' target='_blank'>wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited' target='_blank'>limited</a>
_This tagrendering has no question and is thus read-only_
*wheelchair*
### leftover-questions

View file

@ -595,7 +595,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -592,7 +592,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -592,7 +592,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -578,7 +578,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -587,7 +587,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -582,7 +582,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

File diff suppressed because one or more lines are too long

View file

@ -20,7 +20,7 @@ This layer shows surveillance cameras and allows a contributor to update informa
- [camera_direction](#camera_direction)
- [Operator](#operator)
- [Surveillance type: public, outdoor, indoor](#surveillance-type-public,-outdoor,-indoor)
- [is_indoor](#is_indoor)
- [camera_is_indoor](#camera_is_indoor)
- [Level](#level)
- [Surveillance:zone](#surveillancezone)
- [camera:mount](#cameramount)
@ -109,22 +109,20 @@ The question is `What kind of surveillance is this camera?`
- *An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private driveway, …)* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance' target='_blank'>surveillance</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Doutdoor' target='_blank'>outdoor</a>
- *A private indoor area is surveilled, e.g. a shop, a private underground parking, …* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance' target='_blank'>surveillance</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Dindoor' target='_blank'>indoor</a>
### is_indoor
### camera_is_indoor
The question is `Is the public space surveilled by this camera an indoor or outdoor space?`
The question is `Is this camera located inside or outside?`
- *This camera is located indoors* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:indoor' target='_blank'>indoor</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dyes' target='_blank'>yes</a>
- *This camera is located outdoors* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:indoor' target='_blank'>indoor</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dno' target='_blank'>no</a>
- *This camera is probably located outdoors* is shown if with indoor=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance:type' target='_blank'>surveillance:type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance:type%3Dpublic' target='_blank'>public</a>
### Level
The question is `On which level is this camera located?`
*Located on level {level}* is shown if `level` is set
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:indoor' target='_blank'>indoor</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance:type' target='_blank'>surveillance:type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance:type%3Dye' target='_blank'>ye</a>
This tagrendering is only visible in the popup if the following condition is met: (<a href='https://wiki.openstreetmap.org/wiki/Key:indoor' target='_blank'>indoor</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance' target='_blank'>surveillance</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Dindoor' target='_blank'>indoor</a>) & (<a href='https://wiki.openstreetmap.org/wiki/Key:surveillance:type' target='_blank'>surveillance:type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance:type%3Dalpr' target='_blank'>alpr</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance:type' target='_blank'>surveillance:type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance:type%3Dcamera' target='_blank'>camera</a>) & camera:type!=doorbell
### Surveillance:zone

View file

@ -27,6 +27,7 @@ Layer showing tactile maps, which can be used by visually impaired people to nav
## Themes using this layer
- [blind_osm](https://mapcomplete.org/blind_osm)
- [maps](https://mapcomplete.org/maps)
- [personal](https://mapcomplete.org/personal)
## Presets

View file

@ -28,6 +28,7 @@ Layer showing tactile models, three-dimensional models of the surrounding area.
## Themes using this layer
- [blind_osm](https://mapcomplete.org/blind_osm)
- [maps](https://mapcomplete.org/maps)
- [personal](https://mapcomplete.org/personal)
## Presets

View file

@ -1051,7 +1051,7 @@
"type": "object",
"properties": {
"location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}]",
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array",
"items": {
"type": "string"
@ -1428,7 +1428,14 @@
]
},
"labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array",
"items": {
"type": "string"
@ -1676,7 +1683,14 @@
]
},
"labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array",
"items": {
"type": "string"

View file

@ -1039,7 +1039,7 @@ export default {
"type": "object",
"properties": {
"location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}]",
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array",
"items": {
"type": "string"
@ -1414,7 +1414,14 @@ export default {
]
},
"labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array",
"items": {
"type": "string"
@ -1661,7 +1668,14 @@ export default {
]
},
"labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array",
"items": {
"type": "string"

View file

@ -3,7 +3,7 @@
"type": "object",
"properties": {
"location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}]",
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array",
"items": {
"type": "string"

View file

@ -3,7 +3,7 @@ export default {
"type": "object",
"properties": {
"location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}]",
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array",
"items": {
"type": "string"

View file

@ -114,7 +114,14 @@
]
},
"labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array",
"items": {
"type": "string"

View file

@ -114,7 +114,14 @@ export default {
]
},
"labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array",
"items": {
"type": "string"

View file

@ -931,7 +931,7 @@
"type": "object",
"properties": {
"location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}]",
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array",
"items": {
"type": "string"
@ -1308,7 +1308,14 @@
]
},
"labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array",
"items": {
"type": "string"
@ -1556,7 +1563,14 @@
]
},
"labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array",
"items": {
"type": "string"

View file

@ -919,7 +919,7 @@ export default {
"type": "object",
"properties": {
"location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}]",
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. Does not show an item on polygons\"}, {if: \"value=polygon_centroid\",then: \"Show an icon at a polygon centroid (but not if it is a way)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array",
"items": {
"type": "string"
@ -1294,7 +1294,14 @@ export default {
]
},
"labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array",
"items": {
"type": "string"
@ -1541,7 +1548,14 @@ export default {
]
},
"labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array",
"items": {
"type": "string"

View file

@ -1154,6 +1154,14 @@ Clears all user preferences
<code>`{clear_all()}`</code>
### disabled_questions
Shows which questions are disabled for every layer. Used in 'settings'
#### Example usage of disabled_questions
<code>`{disabled_questions()}`</code>
### auto_apply
A button to run many actions for many features at once. To effectively use this button, you'll need some ingredients:

View file

@ -1917,21 +1917,21 @@
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Second hand shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
"description": "Layer 'Second hand shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": ""
},
{

View file

@ -1926,21 +1926,21 @@
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": ""
},
{

View file

@ -1321,12 +1321,12 @@
},
{
"key": "service:bicycle:retail",
"description": "Layer 'Bike repair/shop' shows service:bicycle:retail=yes with a fixed text, namely 'This shop sells new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=diy | shop=doityourself)",
"description": "Layer 'Bike repair/shop' shows service:bicycle:retail=yes with a fixed text, namely 'This shop sells new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=sports | shop=diy | shop=doityourself)",
"value": "yes"
},
{
"key": "service:bicycle:retail",
"description": "Layer 'Bike repair/shop' shows service:bicycle:retail=no with a fixed text, namely 'This shop doesn't sell new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=diy | shop=doityourself)",
"description": "Layer 'Bike repair/shop' shows service:bicycle:retail=no with a fixed text, namely 'This shop doesn't sell new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=sports | shop=diy | shop=doityourself)",
"value": "no"
},
{
@ -1346,32 +1346,32 @@
},
{
"key": "service:bicycle:repair",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=yes with a fixed text, namely 'This shop repairs bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=yes with a fixed text, namely 'This shop repairs bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"value": "yes"
},
{
"key": "service:bicycle:repair",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=no with a fixed text, namely 'This shop doesn't repair bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=no with a fixed text, namely 'This shop doesn't repair bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"value": "no"
},
{
"key": "service:bicycle:repair",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=only_sold with a fixed text, namely 'This shop only repairs bikes bought here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=only_sold with a fixed text, namely 'This shop only repairs bikes bought here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"value": "only_sold"
},
{
"key": "service:bicycle:repair",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=brand with a fixed text, namely 'This shop only repairs bikes of a certain brand' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=brand with a fixed text, namely 'This shop only repairs bikes of a certain brand' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"value": "brand"
},
{
"key": "service:bicycle:rental",
"description": "Layer 'Bike repair/shop' shows service:bicycle:rental=yes with a fixed text, namely 'This shop rents out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=bicycle_repair | shop=outdoor | shop=rental)",
"description": "Layer 'Bike repair/shop' shows service:bicycle:rental=yes with a fixed text, namely 'This shop rents out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=sports | shop=bicycle_repair | shop=outdoor | shop=rental)",
"value": "yes"
},
{
"key": "service:bicycle:rental",
"description": "Layer 'Bike repair/shop' shows service:bicycle:rental=no with a fixed text, namely 'This shop doesn't rent out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=bicycle_repair | shop=outdoor | shop=rental)",
"description": "Layer 'Bike repair/shop' shows service:bicycle:rental=no with a fixed text, namely 'This shop doesn't rent out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=sports | shop=bicycle_repair | shop=outdoor | shop=rental)",
"value": "no"
},
{
@ -1498,21 +1498,21 @@
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": ""
},
{

View file

@ -929,21 +929,6 @@
"key": "payment:qr_code",
"description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Disaster response and emergency services')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=yes with a fixed text, namely 'This pharmacy is easy to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Disaster response and emergency services')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=no with a fixed text, namely 'This pharmacy is hard to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Disaster response and emergency services')",
"value": "no"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=limited with a fixed text, namely 'This pharmacy has limited access for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Disaster response and emergency services')",
"value": "limited"
}
]
}

View file

@ -2108,21 +2108,21 @@
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": ""
},
{

View file

@ -407,21 +407,6 @@
"description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=yes with a fixed text, namely 'This pharmacy is easy to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=no with a fixed text, namely 'This pharmacy is hard to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare')",
"value": "no"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=limited with a fixed text, namely 'This pharmacy has limited access for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare')",
"value": "limited"
},
{
"key": "shop",
"description": "The MapComplete theme Healthcare has a layer Shop showing features with this tag"
@ -1642,21 +1627,21 @@
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": ""
},
{

View file

@ -2108,21 +2108,21 @@
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": ""
},
{

View file

@ -127,6 +127,132 @@
"key": "map_source:attribution",
"description": "Layer 'Maps' shows map_source:attribution=no with a fixed text, namely 'There is no attribution at all' (in the mapcomplete.org theme 'A map of maps') (This is only shown if map_source~^((O|)pen(S|s)treet(M|m)ap)$ | map_source=osm | map_source=OSM)",
"value": "no"
},
{
"key": "information",
"description": "The MapComplete theme A map of maps has a layer Tactile Maps showing features with this tag",
"value": "tactile_map"
},
{
"key": "id",
"description": "Layer 'Tactile Maps' shows id~.+ with a fixed text, namely 'You just created this element! Thanks for sharing this info with the world and helping people worldwide.' (in the mapcomplete.org theme 'A map of maps') (This is only shown if _backend~.+ & _last_edit:passed_time<300 & (_version_number= | _version_number=1))"
},
{
"key": "image",
"description": "The layer 'Tactile Maps allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "panoramax",
"description": "The layer 'Tactile Maps allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'Tactile Maps allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'Tactile Maps allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'Tactile Maps allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "blind:description:en",
"description": "Layer 'Tactile Maps' shows and asks freeform values for key 'blind:description:en' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "braille",
"description": "Layer 'Tactile Maps' shows braille=yes with a fixed text, namely 'This tactile map has braille text.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "yes"
},
{
"key": "braille",
"description": "Layer 'Tactile Maps' shows braille=no with a fixed text, namely 'This tactile map does not have braille text.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "no"
},
{
"key": "embossed_letters",
"description": "Layer 'Tactile Maps' shows embossed_letters=yes with a fixed text, namely 'This tactile map has embossed letters.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "yes"
},
{
"key": "embossed_letters",
"description": "Layer 'Tactile Maps' shows embossed_letters=no with a fixed text, namely 'This tactile map does not have embossed letters.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "no"
},
{
"key": "website",
"description": "Layer 'Tactile Maps' shows and asks freeform values for key 'website' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "contact:website",
"description": "Layer 'Tactile Maps' shows contact:website~.+ with a fixed text, namely '<a href='{contact:website}' rel='nofollow noopener noreferrer' target='_blank'>{contact:website}</a>' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "information",
"description": "The MapComplete theme A map of maps has a layer Tactile Models showing features with this tag",
"value": "tactile_model"
},
{
"key": "id",
"description": "Layer 'Tactile Models' shows id~.+ with a fixed text, namely 'You just created this element! Thanks for sharing this info with the world and helping people worldwide.' (in the mapcomplete.org theme 'A map of maps') (This is only shown if _backend~.+ & _last_edit:passed_time<300 & (_version_number= | _version_number=1))"
},
{
"key": "image",
"description": "The layer 'Tactile Models allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "panoramax",
"description": "The layer 'Tactile Models allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'Tactile Models allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'Tactile Models allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'Tactile Models allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "blind:description:en",
"description": "Layer 'Tactile Models' shows and asks freeform values for key 'blind:description:en' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "braille",
"description": "Layer 'Tactile Models' shows braille=yes with a fixed text, namely 'There is a braille description.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "yes"
},
{
"key": "braille",
"description": "Layer 'Tactile Models' shows braille=no with a fixed text, namely 'There is no braille description.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "no"
},
{
"key": "embossed_letters",
"description": "Layer 'Tactile Models' shows embossed_letters=yes with a fixed text, namely 'There are embossed letters describing the model.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "yes"
},
{
"key": "embossed_letters",
"description": "Layer 'Tactile Models' shows embossed_letters=no with a fixed text, namely 'There are no embossed letters describing the model.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "no"
},
{
"key": "scale",
"description": "Layer 'Tactile Models' shows and asks freeform values for key 'scale' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "website",
"description": "Layer 'Tactile Models' shows and asks freeform values for key 'website' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "contact:website",
"description": "Layer 'Tactile Models' shows contact:website~.+ with a fixed text, namely '<a href='{contact:website}' rel='nofollow noopener noreferrer' target='_blank'>{contact:website}</a>' (in the mapcomplete.org theme 'A map of maps')"
}
]
}

View file

@ -2666,21 +2666,21 @@
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": ""
},
{
@ -3192,21 +3192,6 @@
"description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=yes with a fixed text, namely 'This pharmacy is easy to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=no with a fixed text, namely 'This pharmacy is hard to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
"value": "no"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=limited with a fixed text, namely 'This pharmacy has limited access for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
"value": "limited"
},
{
"key": "amenity",
"description": "The MapComplete theme OnWheels has a layer Doctors showing features with this tag",

View file

@ -1996,21 +1996,21 @@
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
"description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": ""
},
{

View file

@ -1557,21 +1557,21 @@
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": ""
},
{

View file

@ -1215,21 +1215,21 @@
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": ""
},
{
@ -1450,21 +1450,6 @@
"description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=yes with a fixed text, namely 'This pharmacy is easy to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=no with a fixed text, namely 'This pharmacy is hard to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops')",
"value": "no"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=limited with a fixed text, namely 'This pharmacy has limited access for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops')",
"value": "limited"
},
{
"key": "amenity",
"description": "The MapComplete theme Shops has a layer Ice cream parlors showing features with this tag",

View file

@ -594,6 +594,650 @@
"description": "Layer 'Sports centres' shows wheelchair=no with a fixed text, namely 'This place is not reachable with a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "no"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows and asks freeform values for key 'sport' (in the mapcomplete.org theme 'Sports')"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=9pin with a fixed text, namely 'Nine-pin bowling' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "9pin"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=10pin with a fixed text, namely 'Ten-pin bowling' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "10pin"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=aerobics with a fixed text, namely 'Aerobics' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "aerobics"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=american_football with a fixed text, namely 'American football' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "american_football"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=aikido with a fixed text, namely 'Aikido' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "aikido"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=archery with a fixed text, namely 'Archery' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "archery"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=athletics with a fixed text, namely 'Athletics' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "athletics"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=australian_football with a fixed text, namely 'Australian rules football' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "australian_football"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=badminton with a fixed text, namely 'Badminton' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "badminton"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=bandy with a fixed text, namely 'Bandy' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "bandy"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=base with a fixed text, namely 'BASE jumping' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "base"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=baseball with a fixed text, namely 'Baseball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "baseball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=basketball with a fixed text, namely 'Basketball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "basketball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=beachvolleyball with a fixed text, namely 'Beachvolleyball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "beachvolleyball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=biathlon with a fixed text, namely 'Biathlon' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "biathlon"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=billiards with a fixed text, namely 'Cue sports' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "billiards"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=bmx with a fixed text, namely 'BMX' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "bmx"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=bobsleigh with a fixed text, namely 'Bobsleigh' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "bobsleigh"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=boules with a fixed text, namely 'Boules' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "boules"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=bowls with a fixed text, namely 'Bowls' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "bowls"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=boxing with a fixed text, namely 'Boxing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "boxing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=bullfighting with a fixed text, namely 'Bullfighting' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "bullfighting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=canadian_football with a fixed text, namely 'Canadian football' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "canadian_football"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=canoe with a fixed text, namely 'Canoe' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "canoe"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=chess with a fixed text, namely 'Chess' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "chess"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=cliff_diving with a fixed text, namely 'Non-competitive diving' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "cliff_diving"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=climbing with a fixed text, namely 'Rock climbing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "climbing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=climbing_adventure with a fixed text, namely 'Climbing Adventure' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "climbing_adventure"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=cockfighting with a fixed text, namely 'Cockfighting' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "cockfighting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=cricket with a fixed text, namely 'Cricket' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "cricket"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=crossfit with a fixed text, namely 'CrossFit' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "crossfit"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=croquet with a fixed text, namely 'Croquet' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "croquet"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=curling with a fixed text, namely 'Curling' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "curling"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=cycle_polo with a fixed text, namely 'Cycle Polo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "cycle_polo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=cycling with a fixed text, namely 'Cycling' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "cycling"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=dance with a fixed text, namely 'Dance' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "dance"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=darts with a fixed text, namely 'Darts' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "darts"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=dog_agility with a fixed text, namely 'Dog agility' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "dog_agility"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=dog_racing with a fixed text, namely 'Greyhound racing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "dog_racing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=dragon_boat with a fixed text, namely 'Dragon Boat' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "dragon_boat"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=equestrian with a fixed text, namely 'Equestrianism' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "equestrian"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=fencing with a fixed text, namely 'Fencing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "fencing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=field_hockey with a fixed text, namely 'Field hockey' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "field_hockey"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=fitness with a fixed text, namely 'Fitness' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "fitness"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=five-a-side with a fixed text, namely '5 person soccer' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "five-a-side"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=floorball with a fixed text, namely 'Floorball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "floorball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=four_square with a fixed text, namely 'Four square' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "four_square"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=free_flying with a fixed text, namely 'Paragliding' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "free_flying"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=futsal with a fixed text, namely 'Futsal' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "futsal"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=gaelic_games with a fixed text, namely 'Gaelic games' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "gaelic_games"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=gaga with a fixed text, namely 'Gaga ball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "gaga"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=golf with a fixed text, namely 'Golf' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "golf"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=gymnastics with a fixed text, namely 'Gymnastics' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "gymnastics"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=handball with a fixed text, namely 'Handball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "handball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=hapkido with a fixed text, namely 'Hapkido' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "hapkido"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=hiking with a fixed text, namely 'Hiking' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "hiking"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=horseshoes with a fixed text, namely 'Horseshoes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "horseshoes"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=horse_racing with a fixed text, namely 'Horse racing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "horse_racing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ice_hockey with a fixed text, namely 'Ice Hockey' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ice_hockey"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ice_skating with a fixed text, namely 'Ice skating' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ice_skating"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ice_stock with a fixed text, namely 'Ice stock sport' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ice_stock"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=judo with a fixed text, namely 'Judo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "judo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=karate with a fixed text, namely 'Karate' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "karate"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=karting with a fixed text, namely 'Kart racing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "karting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=kickboxing with a fixed text, namely 'Kickboxing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "kickboxing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=kitesurfing with a fixed text, namely 'Kitesurfing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "kitesurfing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=korfball with a fixed text, namely 'Korfball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "korfball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=krachtball with a fixed text, namely 'Krachtball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "krachtball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=lacrosse with a fixed text, namely 'Lacrosse' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "lacrosse"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=laser_tag with a fixed text, namely 'Laser tag' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "laser_tag"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=martial_arts with a fixed text, namely 'Martial arts' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "martial_arts"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=miniature_golf with a fixed text, namely 'Miniature golf' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "miniature_golf"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=model_aerodrome with a fixed text, namely 'Radio-controlled aircraft' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "model_aerodrome"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=motocross with a fixed text, namely 'Motocross' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "motocross"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=motor with a fixed text, namely 'Motorsport' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "motor"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=multi with a fixed text, namely 'Multiple kind of sports' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "multi"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=netball with a fixed text, namely 'Netball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "netball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=obstacle_course with a fixed text, namely 'Obstacle course' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "obstacle_course"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=orienteering with a fixed text, namely 'Orienteering' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "orienteering"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=paddle_tennis with a fixed text, namely 'Paddle tennis' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "paddle_tennis"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=padel with a fixed text, namely 'Padel' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "padel"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=paintball with a fixed text, namely 'Paintball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "paintball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=parachuting with a fixed text, namely 'Parachuting' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "parachuting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=parkour with a fixed text, namely 'Parkour' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "parkour"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=pelota with a fixed text, namely 'Palota' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "pelota"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=pesäpallo with a fixed text, namely 'Pesäpallo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "pesäpallo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=pickleball with a fixed text, namely 'Pickleball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "pickleball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=pilates with a fixed text, namely 'Pilates' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "pilates"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=pole_dance with a fixed text, namely 'Pole dance' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "pole_dance"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=racquet with a fixed text, namely 'Racquetball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "racquet"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=rc_car with a fixed text, namely 'Radio-controlled car' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "rc_car"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=roller_skating with a fixed text, namely 'Roller skating' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "roller_skating"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=rowing with a fixed text, namely 'Rowing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "rowing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=rugby_league with a fixed text, namely 'Rugby league' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "rugby_league"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=rugby_union with a fixed text, namely 'Rugby union' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "rugby_union"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=running with a fixed text, namely 'Running' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "running"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=sailing with a fixed text, namely 'Sailing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "sailing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=scuba_diving with a fixed text, namely 'Scuba diving' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "scuba_diving"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=shooting with a fixed text, namely 'Shooting' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "shooting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=shot-put with a fixed text, namely 'Shot-put' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "shot-put"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=skateboard with a fixed text, namely 'Skateboard' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "skateboard"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ski_jumping with a fixed text, namely 'Ski jumping' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ski_jumping"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=snooker with a fixed text, namely 'Snooker' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "snooker"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=soccer with a fixed text, namely 'Soccer' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "soccer"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=softball with a fixed text, namely 'Softball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "softball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=speedway with a fixed text, namely 'Motorcycle speedway' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "speedway"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=squash with a fixed text, namely 'Squash' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "squash"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=sumo with a fixed text, namely 'Sumo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "sumo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=surfing with a fixed text, namely 'Surfing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "surfing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=swimming with a fixed text, namely 'Swimming' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "swimming"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=table_tennis with a fixed text, namely 'Table tennis' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "table_tennis"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=table_soccer with a fixed text, namely 'Table soccer' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "table_soccer"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=taekwondo with a fixed text, namely 'Taekwondo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "taekwondo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=tennis with a fixed text, namely 'Tennis' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "tennis"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=teqball with a fixed text, namely 'Teqball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "teqball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=toboggan with a fixed text, namely 'Toboggan' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "toboggan"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=trampoline with a fixed text, namely 'Trampoline' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "trampoline"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ultimate with a fixed text, namely 'Ultimate frisbee' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ultimate"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ultralight_aviation with a fixed text, namely 'Ultralight aviation' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ultralight_aviation"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=volleyball with a fixed text, namely 'Volleyball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "volleyball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=wakeboarding with a fixed text, namely 'Wakeboarding' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "wakeboarding"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=water_polo with a fixed text, namely 'Water polo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "water_polo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=water_ski with a fixed text, namely 'Waterskiing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "water_ski"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=weightlifting with a fixed text, namely 'Olympic weightlifting' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "weightlifting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=windsurfing with a fixed text, namely 'Windsurfing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "windsurfing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=wrestling with a fixed text, namely 'Wrestling' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "wrestling"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=yoga with a fixed text, namely 'Yoga' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "yoga"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=zurkhaneh_sport with a fixed text, namely 'Zurkhaneh sport' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "zurkhaneh_sport"
},
{
"key": "shop",
"description": "The MapComplete theme Sports has a layer Shop showing features with this tag",
@ -1790,21 +2434,21 @@
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": ""
},
{

View file

@ -118,22 +118,22 @@
},
{
"key": "indoor",
"description": "Layer 'Surveillance camera's' shows indoor=yes with a fixed text, namely 'This camera is located indoors' and allows to pick this as a default answer (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if surveillance:type=public)",
"description": "Layer 'Surveillance camera's' shows indoor=yes with a fixed text, namely 'This camera is located indoors' and allows to pick this as a default answer (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if surveillance!=outdoor & surveillance!=indoor)",
"value": "yes"
},
{
"key": "indoor",
"description": "Layer 'Surveillance camera's' shows indoor=no with a fixed text, namely 'This camera is located outdoors' and allows to pick this as a default answer (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if surveillance:type=public)",
"description": "Layer 'Surveillance camera's' shows indoor=no with a fixed text, namely 'This camera is located outdoors' and allows to pick this as a default answer (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if surveillance!=outdoor & surveillance!=indoor)",
"value": "no"
},
{
"key": "indoor",
"description": "Layer 'Surveillance camera's' shows indoor= with a fixed text, namely 'This camera is probably located outdoors' (in the mapcomplete.org theme 'Surveillance under Surveillance') Picking this answer will delete the key indoor. (This is only shown if surveillance:type=public)",
"description": "Layer 'Surveillance camera's' shows indoor= with a fixed text, namely 'This camera is probably located outdoors' (in the mapcomplete.org theme 'Surveillance under Surveillance') Picking this answer will delete the key indoor. (This is only shown if surveillance!=outdoor & surveillance!=indoor)",
"value": ""
},
{
"key": "level",
"description": "Layer 'Surveillance camera's' shows and asks freeform values for key 'level' (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if indoor=yes | surveillance:type=ye)"
"description": "Layer 'Surveillance camera's' shows and asks freeform values for key 'level' (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if camera:type!=doorbell & (indoor=yes | surveillance=indoor) & (surveillance:type=alpr | surveillance:type=camera))"
},
{
"key": "surveillance:zone",

View file

@ -27,6 +27,7 @@ Available languages:
- hu
- pl
- nl
- fr
# Table of contents
@ -608,7 +609,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -627,7 +627,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -22,6 +22,7 @@ Available languages:
- pl
- hu
- uk
- nl
# Layers defined in this theme configuration file
These layers can not be reused in different themes.

View file

@ -20,6 +20,7 @@ Available languages:
- cs
- hu
- uk
- nl
# Layers defined in this theme configuration file
These layers can not be reused in different themes.

View file

@ -20,6 +20,7 @@ Available languages:
- es
- cs
- uk
- nl
# Table of contents
@ -543,6 +544,25 @@ This tagrendering has labels
| artwork-artwork_type.12 | Tilework | artwork_type=tilework |
| artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving |
| id | question | osmTags |
-----|-----|----- |
| memorial-type.0 | *What type of memorial is this?* (default) | |
| memorial-type.1 | This is a statue | memorial=statue |
| memorial-type.2 | This is a plaque | memorial=plaque |
| memorial-type.3 | This is a commemorative bench | memorial=bench |
| memorial-type.4 | This is a ghost bike - a bicycle painted white to remember a cyclist whom deceased because of a car crash | memorial=ghost_bike |
| memorial-type.5 | This is a stolperstein (stumbing stone) | memorial=stolperstein |
| memorial-type.6 | This is a stele | memorial=stele |
| memorial-type.7 | This is a memorial stone | memorial=stone |
| memorial-type.8 | This is a bust | memorial=bust |
| memorial-type.9 | This is a sculpture | memorial=sculpture |
| memorial-type.10 | This is an obelisk | memorial=obelisk |
| memorial-type.11 | This is a cross | memorial=cross |
| memorial-type.12 | This is a blue plaque | memorial=blue_plaque |
| memorial-type.13 | This is a historic tank, permanently placed in public space as memorial | memorial=tank |
| memorial-type.14 | This is a memorial tree | memorial=tree |
| memorial-type.15 | This is a gravestone; the person is buried here | historic=tomb |
This document is autogenerated from [assets/themes/ghostsigns/ghostsigns.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ghostsigns/ghostsigns.json)

View file

@ -26,6 +26,8 @@ Available languages:
- ru
- hu
- uk
- fr
- nl
# Table of contents
@ -1405,7 +1407,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -20,6 +20,7 @@ Available languages:
- ca
- ru
- uk
- nl
# Layers defined in this theme configuration file
These layers can not be reused in different themes.

View file

@ -625,7 +625,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -22,6 +22,8 @@ Available languages:
- ru
- hu
- uk
- fr
- nl
# Layers defined in this theme configuration file
These layers can not be reused in different themes.

View file

@ -17,6 +17,7 @@ Available languages:
- es
- cs
- hu
- nl
# Layers defined in this theme configuration file
These layers can not be reused in different themes.

View file

@ -24,6 +24,7 @@ Available languages:
- cs
- hu
- uk
- nl
# Table of contents
@ -1403,7 +1404,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -21,6 +21,8 @@ Available languages:
- cs
- hu
- uk
- fr
- nl
# Layers defined in this theme configuration file
These layers can not be reused in different themes.

View file

@ -17,6 +17,8 @@ Available languages:
- de
- cs
- es
- fr
- nl
# Table of contents

View file

@ -9,6 +9,8 @@ The theme introduction reads:
This theme contains the following layers:
- [map](../Layers/map.md)
- [tactile_map](../Layers/tactile_map.md)
- [tactile_model](../Layers/tactile_model.md)
Available languages:

View file

@ -26,6 +26,8 @@ Available languages:
- es
- cs
- hu
- fr
- nl
# Table of contents
@ -659,7 +661,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -1177,7 +1177,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -30,6 +30,7 @@ Available languages:
- cs
- hu
- uk
- nl
# Layers defined in this theme configuration file
These layers can not be reused in different themes.

View file

@ -616,7 +616,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet

View file

@ -412,7 +412,7 @@ The default value is _0_
The mode the application starts in, e.g. 'map', 'dashboard' or 'statistics'
This documentation is defined in the source code at [generateDocs.ts](ervdvn/git2/MapComplete/scripts/generateDocs.ts#L436)
This documentation is defined in the source code at [generateDocs.ts](ervdvn/git/MapComplete/scripts/generateDocs.ts#L436)
The default value is _map_

View file

@ -211,7 +211,7 @@
{{service_item
|name= [https://mapcomplete.org/bicycle_parkings bicycle_parkings]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:zh_Hans|en}}, {{#language:it|en}}, {{#language:fil|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:pl|en}}, {{#language:nl|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:zh_Hans|en}}, {{#language:it|en}}, {{#language:fil|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:pl|en}}, {{#language:nl|en}}, {{#language:fr|en}}
|descr= A MapComplete theme: A map showing all types of bicycle parkings
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@ -310,7 +310,7 @@
{{service_item
|name= [https://mapcomplete.org/elongated_coin elongated_coin]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:uk|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:uk|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: Find penny presses to create your own elongated coins
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@ -328,7 +328,7 @@
{{service_item
|name= [https://mapcomplete.org/fireplace fireplace]
|region= Worldwide
|lang= {{#language:de|en}}, {{#language:en|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:nl|en}}
|lang= {{#language:de|en}}, {{#language:en|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:nl|en}}, {{#language:fr|en}}
|descr= A MapComplete theme: Outdoor place to make a fire or a fixed barbecue in an official place
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@ -355,7 +355,7 @@
{{service_item
|name= [https://mapcomplete.org/ghostsigns ghostsigns]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:fr|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: A map showing disused signs on buildings
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@ -364,7 +364,7 @@
{{service_item
|name= [https://mapcomplete.org/glutenfree glutenfree]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: A crowdsourced map with glutenfree items
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@ -373,7 +373,7 @@
{{service_item
|name= [https://mapcomplete.org/guideposts guideposts]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:cs|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:pl|en}}, {{#language:uk|en}}
|lang= {{#language:en|en}}, {{#language:cs|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:pl|en}}, {{#language:uk|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: Guideposts (also known as fingerposts or finger posts) are often found along official hiking, cycling, skiing or horseback riding routes to indicate the directions to different destinations
The position of a signpost can be used by a hiker/biker/rider/s…
@ -411,7 +411,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
{{service_item
|name= [https://mapcomplete.org/icecream icecream]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:cs|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:it|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:cs|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:it|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: A map showing ice cream parlors and ice cream vending machines
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@ -438,7 +438,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
{{service_item
|name= [https://mapcomplete.org/lactosefree lactosefree]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: A crowdsourced map with lactose free shops and restaurants
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@ -447,7 +447,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
{{service_item
|name= [https://mapcomplete.org/lighthouses lighthouses]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:cs|en}}, {{#language:uk|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:fr|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: Lighthouses are tall buildings with a light on top to guide marine traffic
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@ -573,7 +573,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
{{service_item
|name= [https://mapcomplete.org/ski ski]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:cs|en}}, {{#language:uk|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:fr|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: Everything you need to go skiing
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png

View file

@ -240,7 +240,7 @@
"en": "Totem",
"de": "Totem",
"cs": "Totem",
"nl": "Aanplakzuil",
"nl": "Reclamezuil",
"fr": "Totem",
"eu": "Totem",
"pl": "Totem",
@ -797,7 +797,7 @@
"zh_Hans": "图腾",
"it": "un totem",
"uk": "тотем",
"nl": "een totem"
"nl": "eem reclamezuil"
},
"exampleImages": [
"./assets/themes/advertising/AdvertisingTotem_004.jpg",
@ -1139,7 +1139,8 @@
"pl": "To jest totem",
"pt_BR": "Isso é um totem",
"zh_Hans": "这是一个图腾",
"pt": "Isto é um totem"
"pt": "Isto é um totem",
"nl": "Dit is een reclamezuil"
},
"icon": {
"path": "./assets/themes/advertising/totem.svg",

View file

@ -18,10 +18,12 @@
"icon": "circle",
"color": {
"render": "white",
"mappings": [{
"mappings": [
{
"if": "reuse=yes",
"then": "#cccccc"
}]
}
]
}
},
{

View file

@ -35,7 +35,8 @@
]
}
],
"lineRendering": [ {
"lineRendering": [
{
"width": "13",
"color": "black"
},
@ -43,7 +44,6 @@
"width": "8",
"color": "white"
}
],
"allowMove": false
}

View file

@ -5805,20 +5805,6 @@
},
"question": "Quin és el nom de la farmàcia?",
"render": "Aquesta farmàcia es diu {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Aquesta farmàcia és fàcil d'accedir en una cadira de rodes"
},
"1": {
"then": "Aquesta farmàcia es difícil d'accedir amb una cadira de rodes"
},
"2": {
"then": "Aquesta farmàcia té un accés limitat per a usuaris amb cadira de rodes"
}
},
"question": "És fàcil accedir a aquesta farmàcia amb una cadira de rodes?"
}
},
"title": {

View file

@ -6378,20 +6378,6 @@
},
"question": "Jak se lékárna jmenuje?",
"render": "Tato lékárna se jmenuje {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Tato lékárna je snadno přístupná na invalidním vozíku"
},
"1": {
"then": "Tato lékárna je těžko přístupná na invalidním vozíku"
},
"2": {
"then": "Tato lékárna má omezený přístup pro vozíčkáře"
}
},
"question": "Je tato lékárna snadno přístupná na invalidním vozíku?"
}
},
"title": {

View file

@ -7659,20 +7659,6 @@
},
"question": "Wie lautet der Name der Apotheke?",
"render": "Der Name der Apotheke lautet {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Die Apotheke ist für Rollstuhlfahrer leicht zugänglich"
},
"1": {
"then": "Die Apotheke ist für Rollstuhlfahrer nur schwer zugänglich"
},
"2": {
"then": "Die Apotheke ist für Rollstuhlfahrer nur eingeschränkt zugänglich"
}
},
"question": "Ist die Apotheke für Rollstuhlfahrer leicht zugänglich?"
}
},
"title": {

View file

@ -7659,20 +7659,6 @@
},
"question": "What is the name of the pharmacy?",
"render": "This pharmacy is called {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "This pharmacy is easy to access on a wheelchair"
},
"1": {
"then": "This pharmacy is hard to access on a wheelchair"
},
"2": {
"then": "This pharmacy has limited access for wheelchair users"
}
},
"question": "Is this pharmacy easy to access on a wheelchair?"
}
},
"title": {

View file

@ -7645,20 +7645,6 @@
},
"question": "¿Cuál es el nombre de la farmacia?",
"render": "Esta farmacia se llama {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Esta farmacia es de fácil acceso en silla de ruedas"
},
"1": {
"then": "Esta farmacia es de difícil acceso en silla de ruedas"
},
"2": {
"then": "Esta farmacia tiene acceso limitado para usuarios de silla de ruedas"
}
},
"question": "¿Es esta farmacia de fácil acceso en silla de ruedas?"
}
},
"title": {

View file

@ -4744,20 +4744,6 @@
},
"question": "Quel est le nom de cette pharmacie ?",
"render": "Cette pharmacie s'appelle {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Cette pharmacie est facile d'accès en chaise roulante"
},
"1": {
"then": "Cette pharmacie est difficilement accessible en chaise roulante"
},
"2": {
"then": "L'accès à cette pharmacie est limité en chaise roulante"
}
},
"question": "Cette pharmacie est-elle facilement accessible en chaise roulante ?"
}
},
"title": {

View file

@ -6288,20 +6288,6 @@
},
"question": "Wat is de naam van deze apotheek?",
"render": "Deze apotheek heet {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Deze apotheek is makkelijk te bereiken met een rolstoel"
},
"1": {
"then": "Deze apotheek is moeilijk te bereiken met een rolstoel"
},
"2": {
"then": "Deze apotheek is bereikbaar met een rolstoel, maar het is niet makkelijk"
}
},
"question": "Is het mogelijk om deze apotheek te bereiken met een rolstoel?"
}
},
"title": {

View file

@ -2963,13 +2963,6 @@
"name": {
"question": "Jak nazywa się ta apteka?",
"render": "Nazwa tej apteki to {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Ta apteka jest łatwo dostępna na wózku"
}
}
}
},
"title": {

View file

@ -304,10 +304,11 @@
"loginToStart": "Meld je aan om deze vraag te beantwoorden",
"loginWithOpenStreetMap": "Aanmelden met OpenStreetMap",
"logout": "Afmelden",
"mappingsAreHidden": "Sommige opties zijn verborgen. Gebruik zoeken om meer opties te tonen.",
"menu": {
"aboutCurrentThemeTitle": "Over deze kaart",
"aboutMapComplete": "Over MapComplete",
"filter": "Filter data",
"aboutCurrentThemeTitle": "Over deze kaart",
"moreUtilsTitle": "Ontdek meer",
"openHereDifferentApp": "Open de huidige locatie in andere toepassingen",
"showIntroduction": "Toon introductie",
@ -372,6 +373,7 @@
"versionInfo": "v{version} - gemaakt op {date}"
},
"pickLanguage": "Kies je taal",
"poweredByMapComplete": "Powered by MapComplete - crowdsourced, thematische kaarten met OpenStreetMap",
"poweredByOsm": "Gebouwd met OpenStreetMap",
"questionBox": {
"answeredMultiple": "Je beantwoordde {answered} vragen",
@ -387,6 +389,7 @@
},
"readYourMessages": "Gelieve eerst je berichten op OpenStreetMap te lezen alvorens nieuwe objecten toe te voegen.",
"removeLocationHistory": "Verwijder de geschiedenis aan locaties",
"retry": "Opnieuw proberen",
"returnToTheMap": "Ga terug naar de kaart",
"save": "Opslaan",
"screenToSmall": "Open {theme} in een nieuw venster",
@ -400,37 +403,40 @@
"error": "Niet gelukt…",
"instructions": "Gebruik de zoekbalk om locaties, filters of om andere kaarten te zoeken",
"locations": "Plaatsen",
"nMoreFilters": "{n} meer",
"nothing": "Niets gevonden…",
"nothingFor": "Geen resultaten gevonden voor {term}",
"otherMaps": "Andere kaarten",
"pickFilter": "Kies een filter",
"recentThemes": "Recent bezochte kaarten",
"recents": "Recent bekeken plaatsen",
"search": "Zoek naar een locatie, filter of kaart",
"searchShort": "Zoek…",
"searching": "Aan het zoeken…",
"nMoreFilters": "{n} meer",
"nothingFor": "Geen resultaten gevonden voor {term}"
"searching": "Aan het zoeken…"
},
"searchAnswer": "Zoek een optie…",
"seeIndex": "Zie het overzich van alle thematische kaarten",
"share": "Deel deze locatie",
"sharescreen": {
"copiedToClipboard": "Link gekopieerd naar klembord",
"documentation": "Voor meer informatie over beschikbare URL-parameters, <a href='https://github.com/pietervdvn/MapComplete/blob/develop/Docs/URL_Parameters.md' target='_blank'>raadpleeg de documentatie</a>",
"embedIntro": "<h3>Plaats dit op je website</h3>Voeg dit kaartje toe op je eigen website.<br/>We moedigen dit zelfs aan - je hoeft geen toestemming te vragen.<br/> Het is gratis en zal dat altijd blijven. Hoe meer het gebruikt wordt, hoe waardevoller",
"fsUserbadge": "Activeer de login-knop en dus de mogelijkheid om data aan te passen",
"fsWelcomeMessage": "Toon het welkomstbericht en de bijhorende tabbladen",
"intro": "Kopieer onderstaande link om deze kaart naar vrienden en familie door te sturen:",
"thanksForSharing": "Bedankt om te delen!",
"title": "Deel deze kaart",
"fsBackground": "Wisselende achtergronden inschakelen",
"fsFilter": "De mogelijkheid inschakelen om te wisselen tussen lagen en filters",
"fsGeolocation": "Geolocatie inschakelen",
"fsUserbadge": "Activeer de login-knop en dus de mogelijkheid om data aan te passen",
"fsWelcomeMessage": "Toon het welkomstbericht en de bijhorende tabbladen",
"intro": "Kopieer onderstaande link om deze kaart naar vrienden en familie door te sturen:",
"openInOtherApplications": "De huidige locatie openen met een andere kaarttoepassing",
"openLayers": "Open het menu met lagen en filters",
"options": "Opties voor delen",
"stateIsIncluded": "De huidige status van de lagen en filters is opgenomen in de gedeelde link en iframe.",
"documentation": "Voor meer informatie over beschikbare URL-parameters, <a href='https://github.com/pietervdvn/MapComplete/blob/develop/Docs/URL_Parameters.md' target='_blank'>raadpleeg de documentatie</a>"
"thanksForSharing": "Bedankt om te delen!",
"title": "Deel deze kaart"
},
"skip": "Sla deze vraag over",
"testing": "Testmode - wijzigingen worden niet opgeslaan",
"uploadError": "Fout tijdens het uploaden van wijzigingen: {error}",
"uploadGpx": {
"choosePermission": "Kies hieronder of je traject gedeeld moet worden:",
"confirm": "Bevestig upload",
@ -458,6 +464,9 @@
"uploadFinished": "Je traject is geupload!",
"uploading": "Traject uploaden…"
},
"uploadPending": "{count} wijzigingen in behandeling",
"uploadPendingSingle": "Eén wijziging in behandeling",
"uploadingChanges": "Wijzigingen aan het uploaden…",
"useSearch": "Gebruik de zoekfunctie hierboven om meer opties te zien",
"visualFeedback": {
"closestFeaturesAre": "{n} objecten in beeld.",
@ -482,6 +491,8 @@
"straight": "vooruit"
},
"east": "Naar het oosten",
"fromGps": "{distance} {direction} van uw locatie",
"fromMapCenter": "{distance} {direction} van het midden van de kaart",
"in": "Aan het inzoomen naar zoomlevel {z}",
"islocked": "Bewegen vergrendeld rond je huidige locatie. Duw op de geolocatie-knop om te ontgrendelen.",
"locked": "Bewegen vergrendeld rond jouw huidige locatie.",
@ -494,10 +505,9 @@
"unlocked": "Bewegen ontgrendeld",
"viewportCenterCloseToGps": "De kaart is gecentreerd op je huidige GPS-locatie.",
"viewportCenterDetails": "Het kaartbeeldcentrum is {distance} {bearing} vanaf je huidige locatie.",
"west": "Naar het westen",
"fromGps": "{distance} {direction} van uw locatie",
"fromMapCenter": "{distance} {direction} van het midden van de kaart"
"west": "Naar het westen"
},
"waitingForGeopermission": "Aan het wachten op toestemming om geolocatie te gebruiken…",
"waitingForLocation": "Je locatie wordt gezocht…",
"weekdays": {
"abbreviations": {
@ -539,17 +549,7 @@
"searchToShort": "Je zoekopdracht is te kort, vul een langere tekst in",
"searchWikidata": "Zoek op Wikidata",
"wikipediaboxTitle": "Wikipedia"
},
"retry": "Opnieuw proberen",
"searchAnswer": "Zoek een optie…",
"seeIndex": "Zie het overzich van alle thematische kaarten",
"uploadError": "Fout tijdens het uploaden van wijzigingen: {error}",
"mappingsAreHidden": "Sommige opties zijn verborgen. Gebruik zoeken om meer opties te tonen.",
"poweredByMapComplete": "Powered by MapComplete - crowdsourced, thematische kaarten met OpenStreetMap",
"uploadPending": "{count} wijzigingen in behandeling",
"uploadPendingSingle": "Eén wijziging in behandeling",
"uploadingChanges": "Wijzigingen aan het uploaden…",
"waitingForGeopermission": "Aan het wachten op toestemming om geolocatie te gebruiken…"
}
},
"hotkeyDocumentation": {
"action": "Actie",
@ -557,21 +557,21 @@
"geolocate": "Centreer de map op je huidige positie of zoom verder in naar de huidige positie. Vraagt geolocatie-toegang",
"intro": "MapComplete ondersteunt de volgende sneltoetsen:",
"key": "Toets-combinatie",
"openFilterPanel": "Opent het POI-lagen- en filterpaneel",
"openLayersPanel": "Open het paneel met lagen en filters",
"queryCurrentLocation": "Toon het adres dichtst bij het midden van de kaart",
"selectAerial": "Verander de achtergrondlaag naar luchtfoto's of satelietfoto's. Wisselt tussen de twee beste, beschikbare lagen",
"selectFavourites": "Open de pagina met favorieten",
"selectItem": "Selecteer het POI het dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt",
"selectItem2": "Selecteer het POI het op één na dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt",
"selectItem3": "Selecteer het POI het op twee na dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt",
"selectMap": "Gebruik een niet-OpenStreetMap-gebaseerde kaart als achtergrond. Wisselt tussen de twee beste, beschikbare lagen",
"selectMapnik": "Gebruik OpenStreetMap-carto als achtergrondlaag",
"selectOsmbasedmap": "Gebruik een OpenStreetMap-gebaseerde achtergrondkaart (of schakel de achtergrond-rasterlaag uit)",
"selectSearch": "Selecteer de zoekbalk om locaties te zoeken",
"title": "Sneltoetsen",
"queryCurrentLocation": "Toon het adres dichtst bij het midden van de kaart",
"selectFavourites": "Open de pagina met favorieten",
"selectItem2": "Selecteer het POI het op één na dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt",
"shakePhone": "Schudden met je telefoon",
"translationMode": "Vertaalmodus in- of uitschakelen",
"openFilterPanel": "Opent het POI-lagen- en filterpaneel",
"selectItem": "Selecteer het POI het dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt",
"selectItem3": "Selecteer het POI het op twee na dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt"
"title": "Sneltoetsen",
"translationMode": "Vertaalmodus in- of uitschakelen"
},
"image": {
"addPicture": "Voeg foto toe",
@ -580,48 +580,48 @@
"dontDelete": "Annuleren",
"isDeleted": "Verwijderd",
"nearby": {
"link": "Deze afbeelding toont het object",
"seeNearby": "Bekijk foto's in de buurt",
"title": "Straatafbeeldingen uit de buurt",
"failed": "Afbeeldingen ophalen van {service} mislukt",
"close": "Paneel met nabije afbeeldingen samenvouwen",
"noNearbyImages": "Geen afbeeldingen in de buurt gevonden"
"failed": "Afbeeldingen ophalen van {service} mislukt",
"link": "Deze afbeelding toont het object",
"noNearbyImages": "Geen afbeeldingen in de buurt gevonden",
"seeNearby": "Bekijk foto's in de buurt",
"title": "Straatafbeeldingen uit de buurt"
},
"pleaseLogin": "Gelieve je aan te melden om een foto toe te voegen",
"respectPrivacy": "Voeg geen Google Maps, Google Streetview of foto's met auteursrechten toe.",
"toBig": "Je afbeelding is te groot, namelijk {actual_size}. Gelieve afbeeldingen van maximaal {max_size} te gebruiken",
"uploadDone": "Je afbeelding is toegevoegd. Bedankt om te helpen!",
"uploadFailed": "Afbeelding uploaden mislukt. Heb je internet? Gebruik je Brave of UMatrix? Dan moet je derde partijen toelaten.",
"uploadMultipleDone": "{count} afbeeldingen zijn toegevoegd. Bedankt voor je bijdrage!",
"uploadingMultiple": "Bezig met {count} foto's te uploaden…",
"uploadingPicture": "Bezig met een foto te uploaden…",
"panoramax": {
"deletionRequested": "Het rapport is verzonden. Een moderator zal er binnenkort naar kijken",
"freeform": "Is er andere relevante informatie?",
"otherFreeform": "Waarom moet deze afbeelding worden verwijderd:",
"placeholder": "Leg uit waarom de foto verwijderd moet worden",
"report": {
"blur_missing": "Op deze foto is een gezicht of nummerplaat niet geblurd",
"blur_excess": "Er is te geblurd, waardoor de foto onbruikbaar is",
"blur_missing": "Op deze foto is een gezicht of nummerplaat niet geblurd",
"copyright": "De foto bevat auteursrechtelijk beschermde inhoud",
"inappropriate": "Deze foto is ongepast (bevat naakt, roept op tot haat of is geen straatbeeld)",
"mislocated": "De foto is van een andere locatie",
"other": "Een andere reden, specificeer",
"picture_low_quality": "De foto is van lage kwaliteit",
"privacy": "De foto toont een privé-eigendom",
"inappropriate": "Deze foto is ongepast (bevat naakt, roept op tot haat of is geen straatbeeld)"
"privacy": "De foto toont een privé-eigendom"
},
"requestDeletion": "Verwijdering van foto aanvragen",
"title": "Waarom zou dit beeld permanent verwijderd moeten worden?",
"placeholder": "Leg uit waarom de foto verwijderd moet worden"
"title": "Waarom zou dit beeld permanent verwijderd moeten worden?"
},
"pleaseLogin": "Gelieve je aan te melden om een foto toe te voegen",
"processing": "De server is je beeld aan het verwerken",
"respectPrivacy": "Voeg geen Google Maps, Google Streetview of foto's met auteursrechten toe.",
"toBig": "Je afbeelding is te groot, namelijk {actual_size}. Gelieve afbeeldingen van maximaal {max_size} te gebruiken",
"unlink": {
"button": "Link naar foto verwijderen",
"title": "Link naar deze afbeelding verwijderen?",
"explanation": "Door de link naar deze afbeelding te verwijderen, wordt deze niet meer getoond bij dit object. De afbeelding zal nog steeds verschijnen bij nabije afbeeldingen en mogelijk ook andere objecten."
"explanation": "Door de link naar deze afbeelding te verwijderen, wordt deze niet meer getoond bij dit object. De afbeelding zal nog steeds verschijnen bij nabije afbeeldingen en mogelijk ook andere objecten.",
"title": "Link naar deze afbeelding verwijderen?"
},
"upload": {
"failReasons": "Mogelijk heb je geen verbinding meer met het internet"
}
},
"uploadDone": "Je afbeelding is toegevoegd. Bedankt om te helpen!",
"uploadFailed": "Afbeelding uploaden mislukt. Heb je internet? Gebruik je Brave of UMatrix? Dan moet je derde partijen toelaten.",
"uploadMultipleDone": "{count} afbeeldingen zijn toegevoegd. Bedankt voor je bijdrage!",
"uploadingMultiple": "Bezig met {count} foto's te uploaden…",
"uploadingPicture": "Bezig met een foto te uploaden…"
},
"importInspector": {
"title": "Inspecteer en beheer importeer-notas"

12
package-lock.json generated
View file

@ -8020,9 +8020,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001680",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz",
"integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==",
"version": "1.0.30001684",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz",
"integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==",
"dev": true,
"funding": [
{
@ -26969,9 +26969,9 @@
}
},
"caniuse-lite": {
"version": "1.0.30001680",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz",
"integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==",
"version": "1.0.30001684",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz",
"integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==",
"dev": true
},
"canonicalize": {

View file

@ -42,7 +42,7 @@ export class ImgurToPanoramax extends Script {
test: "7f34cf53-27ff-46c9-ac22-78511fa8457a",
cc0: "e9bcb8c0-8ade-4ac9-bc9f-cfa464221fd6", // "1de6f4a1-73ac-4c75-ab7f-2a2aabddf50a", // "f0d6f78a-ff95-4db1-8494-6eb44a17bb37",
ccby: "288a8052-b475-422c-811a-4f6f1a00015e",
ccbysa: "f3d02893-b4c1-4cd6-8b27-e27ab57eb59a"
ccbysa: "f3d02893-b4c1-4cd6-8b27-e27ab57eb59a",
} as const
constructor() {
@ -146,7 +146,7 @@ export class ImgurToPanoramax extends Script {
console.log("Already uploaded", panohash)
return new And([
new Tag(key.replace("image", "panoramax"), panohash),
new Tag(key, "")
new Tag(key, ""),
])
}
}
@ -177,8 +177,8 @@ export class ImgurToPanoramax extends Script {
return undefined
}
const sequence = this.sequenceIds[license.licenseShortName?.toLowerCase()]
console.log("Reading ",path)
if(!existsSync(path)){
console.log("Reading ", path)
if (!existsSync(path)) {
return undefined
}
const handle = await open(path)
@ -193,7 +193,7 @@ export class ImgurToPanoramax extends Script {
const file = new MyFile([], path)
file.stream = function() {
file.stream = function () {
return handle.readableWebStream()
}
@ -230,7 +230,7 @@ export class ImgurToPanoramax extends Script {
const license = await this.getRawInfo("https://i.imgur.com/" + imgurkey + ".jpg")
const date = new Date(license.datetime * 1000)
const panolicense = await this.panoramax.panoramax.search({
ids: [panokey]
ids: [panokey],
})
const panodata = panolicense[0]
const collection: string = panodata.collection
@ -241,13 +241,13 @@ export class ImgurToPanoramax extends Script {
method: "PATCH",
headers: { "content-type": "application/json" },
body: JSON.stringify({
ts: date.getTime()
})
ts: date.getTime(),
}),
})
console.log(
"Patched date of ",
p.createViewLink({
imageId: panokey
imageId: panokey,
}),
url,
"result is",
@ -268,14 +268,8 @@ export class ImgurToPanoramax extends Script {
}*/
const bounds = new BBox([
[
-180,
-90
],
[
180,
90
]
[-180, -90],
[180, 90],
])
const maxcount = 10000
const overpassfilters: RegexTag[] = []
@ -331,7 +325,7 @@ export class ImgurToPanoramax extends Script {
f.properties,
{
theme: "image-mover",
changeType: "link-image"
changeType: "link-image",
}
)
changes.push(...(await action.CreateChangeDescriptions()))

View file

@ -61,7 +61,7 @@ export default class FilteringFeatureSource implements FeatureSource {
selectedElement?.addCallback(() => this.update())
zoomlevel?.mapD(z => Math.floor(z)).addCallback(() => this.update())
zoomlevel?.mapD((z) => Math.floor(z)).addCallback(() => this.update())
this.update()
}
@ -76,7 +76,7 @@ export default class FilteringFeatureSource implements FeatureSource {
const newFeatures = (features ?? []).filter((f) => {
this.registerCallback(f.properties.id)
if(selectedElement === f.properties.id){
if (selectedElement === f.properties.id) {
return true
}

View file

@ -17,7 +17,7 @@ export default class PanoramaxImageProvider extends ImageProvider {
private static defaultPanoramax = new AuthorizedPanoramax(
Constants.panoramax.url,
Constants.panoramax.token,
3000,
3000
)
public defaultKeyPrefixes: string[] = ["panoramax"]
@ -30,7 +30,7 @@ export default class PanoramaxImageProvider extends ImageProvider {
location?: {
lon: number
lat: number
},
}
): BaseUIElement {
const p = new Panoramax(img.host)
return new Link(
@ -39,7 +39,7 @@ export default class PanoramaxImageProvider extends ImageProvider {
imageId: img?.id,
location,
}),
true,
true
)
}
@ -141,7 +141,7 @@ export default class PanoramaxImageProvider extends ImageProvider {
img?.status !== undefined &&
img?.status !== "ready" &&
img?.status !== "broken" &&
img?.status !== "hidden",
img?.status !== "hidden"
)
}
@ -200,7 +200,7 @@ export class PanoramaxUploader implements ImageUploader {
author: string,
noblur: boolean = false,
sequenceId?: string,
datetime?: string,
datetime?: string
): Promise<{
key: string
value: string
@ -221,18 +221,27 @@ export class PanoramaxUploader implements ImageUploader {
const exifLat = latD + latM / 60 + latS / (3600 * latSDenom)
const exifLon = lonD + lonM / 60 + lonS / (3600 * lonSDenom)
if (typeof exifLat === "number" && !isNaN(exifLat) && typeof exifLon === "number" && !isNaN(exifLon)
&& !(exifLat === 0 && exifLon === 0)) {
if (
typeof exifLat === "number" &&
!isNaN(exifLat) &&
typeof exifLon === "number" &&
!isNaN(exifLon) &&
!(exifLat === 0 && exifLon === 0)
) {
lat = exifLat
lon = exifLon
}
const [date, time] = tags.DateTime.value[0].split(" ")
const exifDatetime = new Date(date.replaceAll(":", "-") + "T" + time)
if(exifDatetime.getFullYear() === 1970){
if (exifDatetime.getFullYear() === 1970) {
// The data probably got reset to the epoch
// we don't use the value
console.log("Datetime from picture is probably invalid:", exifDatetime, "using 'now' instead")
}else{
console.log(
"Datetime from picture is probably invalid:",
exifDatetime,
"using 'now' instead"
)
} else {
datetime = exifDatetime.toISOString()
}
console.log("Tags are", tags)

View file

@ -563,13 +563,14 @@ export default class UserRelatedState {
return amendedPrefs
}
/**
* The disabled questions for this theme and layer
*/
public getThemeDisabled(themeId: string, layerId: string): UIEventSource<string[]> {
const flatSource = this.osmConnection.getPreference("disabled-questions-" + themeId + "-" + layerId, "[]")
const flatSource = this.osmConnection.getPreference(
"disabled-questions-" + themeId + "-" + layerId,
"[]"
)
return UIEventSource.asObject<string[]>(flatSource, [])
}
}

View file

@ -3,12 +3,40 @@ import { Utils } from "../../Utils"
export class ThemeMetaTagging {
public static readonly themeName = "usersettings"
public metaTaggging_for_usersettings(feat: {properties: Record<string, string>}) {
Utils.AddLazyProperty(feat.properties, '_mastodon_candidate_md', () => feat.properties._description.match(/\[[^\]]*\]\((.*(mastodon|en.osm.town).*)\).*/)?.at(1) )
Utils.AddLazyProperty(feat.properties, '_d', () => feat.properties._description?.replace(/&lt;/g,'<')?.replace(/&gt;/g,'>') ?? '' )
Utils.AddLazyProperty(feat.properties, '_mastodon_candidate_a', () => (feat => {const e = document.createElement('div');e.innerHTML = feat.properties._d;return Array.from(e.getElementsByTagName("a")).filter(a => a.href.match(/mastodon|en.osm.town/) !== null)[0]?.href }) (feat) )
Utils.AddLazyProperty(feat.properties, '_mastodon_link', () => (feat => {const e = document.createElement('div');e.innerHTML = feat.properties._d;return Array.from(e.getElementsByTagName("a")).filter(a => a.getAttribute("rel")?.indexOf('me') >= 0)[0]?.href})(feat) )
Utils.AddLazyProperty(feat.properties, '_mastodon_candidate', () => feat.properties._mastodon_candidate_md ?? feat.properties._mastodon_candidate_a )
feat.properties['__current_backgroun'] = 'initial_value'
public metaTaggging_for_usersettings(feat: { properties: Record<string, string> }) {
Utils.AddLazyProperty(feat.properties, "_mastodon_candidate_md", () =>
feat.properties._description
.match(/\[[^\]]*\]\((.*(mastodon|en.osm.town).*)\).*/)
?.at(1)
)
Utils.AddLazyProperty(
feat.properties,
"_d",
() => feat.properties._description?.replace(/&lt;/g, "<")?.replace(/&gt;/g, ">") ?? ""
)
Utils.AddLazyProperty(feat.properties, "_mastodon_candidate_a", () =>
((feat) => {
const e = document.createElement("div")
e.innerHTML = feat.properties._d
return Array.from(e.getElementsByTagName("a")).filter(
(a) => a.href.match(/mastodon|en.osm.town/) !== null
)[0]?.href
})(feat)
)
Utils.AddLazyProperty(feat.properties, "_mastodon_link", () =>
((feat) => {
const e = document.createElement("div")
e.innerHTML = feat.properties._d
return Array.from(e.getElementsByTagName("a")).filter(
(a) => a.getAttribute("rel")?.indexOf("me") >= 0
)[0]?.href
})(feat)
)
Utils.AddLazyProperty(
feat.properties,
"_mastodon_candidate",
() => feat.properties._mastodon_candidate_md ?? feat.properties._mastodon_candidate_a
)
feat.properties["__current_backgroun"] = "initial_value"
}
}

View file

@ -504,14 +504,8 @@ export class TagUtils {
* regex.matchesProperties({maxspeed: "50 mph"}) // => true
*/
public static Tag(
json: string,
context?: string | ConversionContext
): FlatTag;
public static Tag(
json: TagConfigJson,
context?: string | ConversionContext
): TagsFilterClosed;
public static Tag(json: string, context?: string | ConversionContext): FlatTag
public static Tag(json: TagConfigJson, context?: string | ConversionContext): TagsFilterClosed
public static Tag(
json: TagConfigJson,
context: string | ConversionContext = ""

View file

@ -210,7 +210,11 @@ export default class FilteredLayer {
* - the specified 'global filters'
* - the 'isShown'-filter set by the layer
*/
public isShown(properties: Record<string, string>, globalFilters?: GlobalFilter[], zoomlevel?: number): boolean {
public isShown(
properties: Record<string, string>,
globalFilters?: GlobalFilter[],
zoomlevel?: number
): boolean {
if (properties._deleted === "yes") {
return false
}
@ -219,7 +223,7 @@ export default class FilteredLayer {
if (neededTags !== undefined) {
const doesMatch = neededTags.matchesProperties(properties)
if (globalFilter.forceShowOnMatch) {
if(doesMatch){
if (doesMatch) {
return true
}
} else if (!doesMatch) {
@ -241,7 +245,10 @@ export default class FilteredLayer {
}
}
if(zoomlevel !== undefined && (this.layerDef.minzoom > zoomlevel || this.layerDef.minzoomVisible < zoomlevel)){
if (
zoomlevel !== undefined &&
(this.layerDef.minzoom > zoomlevel || this.layerDef.minzoomVisible < zoomlevel)
) {
return false
}

View file

@ -20,10 +20,14 @@ export interface MapProperties {
readonly allowRotating: UIEventSource<true | boolean>
readonly rotation: UIEventSource<number>
readonly pitch: UIEventSource<number>
readonly lastClickLocation: Store<{ lon: number; lat: number ; /**
readonly lastClickLocation: Store<{
lon: number
lat: number
/**
* The nearest feature from a MapComplete layer
*/
nearestFeature?: Feature}>
nearestFeature?: Feature
}>
readonly allowZooming: UIEventSource<true | boolean>
readonly useTerrain: Store<boolean>
readonly showScale: UIEventSource<boolean>

View file

@ -41,7 +41,7 @@ export default class PointRenderingConfig extends WithContextLoader {
"end",
"projected_centerpoint",
"polygon_centroid",
"waypoints"
"waypoints",
])
public readonly location: Set<
| "point"

View file

@ -88,7 +88,7 @@ export default class TagRenderingConfig {
| string
| TagRenderingConfigJson
| (QuestionableTagRenderingConfigJson & { questionHintIsMd?: boolean }),
context?: string,
context?: string
) {
let json = <string | QuestionableTagRenderingConfigJson>config
if (json === undefined) {
@ -145,22 +145,22 @@ export default class TagRenderingConfig {
this.questionhint = Translations.T(json.questionHint, translationKey + ".questionHint")
this.questionHintIsMd = json["questionHintIsMd"] ?? false
this.description = Translations.T(json.description, translationKey + ".description")
if(json.onSoftDelete && !Array.isArray(json.onSoftDelete)){
throw context+".onSoftDelete Not an array: "+typeof json.onSoftDelete
if (json.onSoftDelete && !Array.isArray(json.onSoftDelete)) {
throw context + ".onSoftDelete Not an array: " + typeof json.onSoftDelete
}
this.onSoftDelete = json.onSoftDelete?.map(t => {
this.onSoftDelete = json.onSoftDelete?.map((t) => {
const tag = TagUtils.Tag(t, context)
if (tag instanceof RegexTag) {
throw context+".onSoftDelete Invalid onSoftDelete: cannot upload tag " + t
throw context + ".onSoftDelete Invalid onSoftDelete: cannot upload tag " + t
}
if (tag instanceof ComparingTag) {
throw context+".onSoftDelete Invalid onSoftDelete: cannot upload tag " + t
throw context + ".onSoftDelete Invalid onSoftDelete: cannot upload tag " + t
}
return tag
})
this.editButtonAriaLabel = Translations.T(
json.editButtonAriaLabel,
translationKey + ".editButtonAriaLabel",
translationKey + ".editButtonAriaLabel"
)
this.condition = TagUtils.Tag(json.condition ?? { and: [] }, `${context}.condition`)
@ -176,7 +176,7 @@ export default class TagRenderingConfig {
}
this.metacondition = TagUtils.Tag(
json.metacondition ?? { and: [] },
`${context}.metacondition`,
`${context}.metacondition`
)
if (json.freeform) {
if (
@ -194,7 +194,7 @@ export default class TagRenderingConfig {
}, perhaps you meant ${Utils.sortedByLevenshteinDistance(
json.freeform.key,
<any>Validators.availableTypes,
(s) => <any>s,
(s) => <any>s
)}`
}
const type: ValidatorType = <any>json.freeform.type ?? "string"
@ -216,7 +216,7 @@ export default class TagRenderingConfig {
placeholder,
addExtraTags:
json.freeform.addExtraTags?.map((tg, i) =>
TagUtils.ParseUploadableTag(tg, `${context}.extratag[${i}]`),
TagUtils.ParseUploadableTag(tg, `${context}.extratag[${i}]`)
) ?? [],
inline: json.freeform.inline ?? false,
default: json.freeform.default,
@ -282,8 +282,8 @@ export default class TagRenderingConfig {
context,
this.multiAnswer,
this.question !== undefined,
commonIconSize,
),
commonIconSize
)
)
} else {
this.mappings = []
@ -309,7 +309,7 @@ export default class TagRenderingConfig {
for (const expectedKey of keys) {
if (usedKeys.indexOf(expectedKey) < 0) {
const msg = `${context}.mappings[${i}]: This mapping only defines values for ${usedKeys.join(
", ",
", "
)}, but it should also give a value for ${expectedKey}`
this.configuration_warnings.push(msg)
}
@ -356,7 +356,7 @@ export default class TagRenderingConfig {
context: string,
multiAnswer?: boolean,
isQuestionable?: boolean,
commonSize: string = "small",
commonSize: string = "small"
): Mapping {
const ctx = `${translationKey}.mappings.${i}`
if (mapping.if === undefined) {
@ -365,7 +365,7 @@ export default class TagRenderingConfig {
if (mapping.then === undefined) {
if (mapping["render"] !== undefined) {
throw `${ctx}: Invalid mapping: no 'then'-clause found. You might have typed 'render' instead of 'then', change it in ${JSON.stringify(
mapping,
mapping
)}`
}
throw `${ctx}: Invalid mapping: no 'then'-clause found in ${JSON.stringify(mapping)}`
@ -376,7 +376,7 @@ export default class TagRenderingConfig {
if (mapping["render"] !== undefined) {
throw `${ctx}: Invalid mapping: a 'render'-key is present, this is probably a bug: ${JSON.stringify(
mapping,
mapping
)}`
}
if (typeof mapping.if !== "string" && mapping.if["length"] !== undefined) {
@ -387,8 +387,14 @@ export default class TagRenderingConfig {
throw `${ctx}.addExtraTags: expected a list, but got a ${typeof mapping.addExtraTags}`
}
if (mapping.addExtraTags !== undefined && multiAnswer) {
const usedKeys = mapping.addExtraTags?.flatMap((et) => TagUtils.Tag(et, context).usedKeys())
if (usedKeys.some((key) => TagUtils.Tag(mapping.if, context).usedKeys().indexOf(key) > 0)) {
const usedKeys = mapping.addExtraTags?.flatMap((et) =>
TagUtils.Tag(et, context).usedKeys()
)
if (
usedKeys.some(
(key) => TagUtils.Tag(mapping.if, context).usedKeys().indexOf(key) > 0
)
) {
throw `${ctx}: Invalid mapping: got a multi-Answer with addExtraTags which also modifies one of the keys; this is not allowed`
}
}
@ -399,11 +405,11 @@ export default class TagRenderingConfig {
} else if (mapping.hideInAnswer !== undefined) {
hideInAnswer = TagUtils.Tag(
mapping.hideInAnswer,
`${context}.mapping[${i}].hideInAnswer`,
`${context}.mapping[${i}].hideInAnswer`
)
}
const addExtraTags = (mapping.addExtraTags ?? []).map((str, j) =>
TagUtils.SimpleTag(str, `${ctx}.addExtraTags[${j}]`),
TagUtils.SimpleTag(str, `${ctx}.addExtraTags[${j}]`)
)
if (hideInAnswer === true && addExtraTags.length > 0) {
throw `${ctx}: Invalid mapping: 'hideInAnswer' is set to 'true', but 'addExtraTags' is enabled as well. This means that extra tags will be applied if this mapping is chosen as answer, but it cannot be chosen as answer. This either indicates a thought error or obsolete code that must be removed.`
@ -499,7 +505,7 @@ export default class TagRenderingConfig {
* @constructor
*/
public GetRenderValues(
tags: Record<string, string>,
tags: Record<string, string>
): { then: Translation; icon?: string; iconClass?: string }[] {
if (!this.multiAnswer) {
return [this.GetRenderValueWithImage(tags)]
@ -522,7 +528,7 @@ export default class TagRenderingConfig {
return mapping
}
return undefined
}),
})
)
if (freeformKeyDefined && tags[this.freeform.key] !== undefined) {
@ -530,7 +536,7 @@ export default class TagRenderingConfig {
applicableMappings
?.flatMap((m) => m.if?.usedTags() ?? [])
?.filter((kv) => kv.key === this.freeform.key)
?.map((kv) => kv.value),
?.map((kv) => kv.value)
)
const freeformValues = tags[this.freeform.key].split(";")
@ -539,7 +545,7 @@ export default class TagRenderingConfig {
applicableMappings.push({
then: new TypedTranslation<object>(
this.render.replace("{" + this.freeform.key + "}", leftover).translations,
this.render.context,
this.render.context
),
})
}
@ -557,7 +563,7 @@ export default class TagRenderingConfig {
* @constructor
*/
public GetRenderValueWithImage(
tags: Record<string, string>,
tags: Record<string, string>
): { then: TypedTranslation<any>; icon?: string; iconClass?: string } | undefined {
if (this.condition !== undefined) {
if (!this.condition.matchesProperties(tags)) {
@ -626,7 +632,7 @@ export default class TagRenderingConfig {
const answerMappings = this.mappings?.filter((m) => m.hideInAnswer !== true)
if (key === undefined) {
const values: { k: string; v: string }[][] = Utils.NoNull(
answerMappings?.map((m) => m.if.asChange({})) ?? [],
answerMappings?.map((m) => m.if.asChange({})) ?? []
)
if (values.length === 0) {
return
@ -644,15 +650,15 @@ export default class TagRenderingConfig {
return {
key: commonKey,
values: Utils.NoNull(
values.map((arr) => arr.filter((item) => item.k === commonKey)[0]?.v),
values.map((arr) => arr.filter((item) => item.k === commonKey)[0]?.v)
),
}
}
let values = Utils.NoNull(
answerMappings?.map(
(m) => m.if.asChange({}).filter((item) => item.k === key)[0]?.v,
) ?? [],
(m) => m.if.asChange({}).filter((item) => item.k === key)[0]?.v
) ?? []
)
if (values.length === undefined) {
values = undefined
@ -716,7 +722,7 @@ export default class TagRenderingConfig {
freeformValue: string | undefined,
singleSelectedMapping: number,
multiSelectedMapping: boolean[] | undefined,
currentProperties: Record<string, string>,
currentProperties: Record<string, string>
): UploadableTag {
if (typeof freeformValue === "string") {
freeformValue = freeformValue?.trim()
@ -791,7 +797,7 @@ export default class TagRenderingConfig {
new And([
new Tag(this.freeform.key, freeformValue),
...(this.freeform.addExtraTags ?? []),
]),
])
)
}
const and = TagUtils.FlattenMultiAnswer([...selectedMappings, ...unselectedMappings])
@ -874,11 +880,11 @@ export default class TagRenderingConfig {
if (m.ifnot !== undefined) {
msgs.push(
"Unselecting this answer will add " +
m.ifnot.asHumanString(true, false, {}),
m.ifnot.asHumanString(true, false, {})
)
}
return msgs.join(". ")
}),
})
)
}
@ -887,7 +893,7 @@ export default class TagRenderingConfig {
const conditionAsLink = (<TagsFilter>this.condition.optimize()).asHumanString(
true,
false,
{},
{}
)
condition =
"This tagrendering is only visible in the popup if the following condition is met: " +
@ -921,7 +927,7 @@ export default class TagRenderingConfig {
this.metacondition,
this.condition,
this.freeform?.key ? new RegexTag(this.freeform?.key, /.*/) : undefined,
this.invalidValues,
this.invalidValues
)
for (const m of this.mappings ?? []) {
tags.push(m.if)
@ -943,7 +949,7 @@ export default class TagRenderingConfig {
*/
public removeToSetUnknown(
partOfLayer: LayerConfig,
currentTags: Record<string, string>,
currentTags: Record<string, string>
): string[] | undefined {
if (!partOfLayer?.source || !currentTags) {
return
@ -991,7 +997,7 @@ export class TagRenderingConfigUtils {
public static withNameSuggestionIndex(
config: TagRenderingConfig,
tags: UIEventSource<Record<string, string>>,
feature?: Feature,
feature?: Feature
): Store<TagRenderingConfig> {
const isNSI = NameSuggestionIndex.supportedTypes().indexOf(config.freeform?.key) >= 0
if (!isNSI) {
@ -1009,8 +1015,8 @@ export class TagRenderingConfigUtils {
tags,
country.split(";"),
center,
{ sortByFrequency: true },
),
{ sortByFrequency: true }
)
)
})
return extraMappings.map((extraMappings) => {

View file

@ -178,7 +178,7 @@ export default class ThemeViewState implements SpecialVisualizationState {
this.map = new UIEventSource<MlMap>(undefined)
const geolocationState = new GeoLocationState()
const initial = new InitialMapPositioning(layout, geolocationState)
this.mapProperties = new MapLibreAdaptor(this.map, initial, {correctClick: 20})
this.mapProperties = new MapLibreAdaptor(this.map, initial, { correctClick: 20 })
this.featureSwitchIsTesting = this.featureSwitches.featureSwitchIsTesting
this.featureSwitchUserbadge = this.featureSwitches.featureSwitchEnableLogin
@ -557,9 +557,12 @@ export default class ThemeViewState implements SpecialVisualizationState {
})
}
private setSelectedElement(feature: Feature){
private setSelectedElement(feature: Feature) {
const current = this.selectedElement.data
if(current?.properties?.id !== undefined && current.properties.id === feature.properties.id ){
if (
current?.properties?.id !== undefined &&
current.properties.id === feature.properties.id
) {
console.log("Not setting selected, same id", current, feature)
return // already set
}
@ -1002,13 +1005,12 @@ export default class ThemeViewState implements SpecialVisualizationState {
this.userRelatedState.recentlyVisitedSearch.add(r)
})
this.mapProperties.lastClickLocation.addCallbackD(lastClick => {
if(lastClick.mode !== "left" || !lastClick.nearestFeature){
this.mapProperties.lastClickLocation.addCallbackD((lastClick) => {
if (lastClick.mode !== "left" || !lastClick.nearestFeature) {
return
}
const f = lastClick.nearestFeature
this.setSelectedElement(f)
})
this.userRelatedState.showScale.addCallbackAndRun((showScale) => {

View file

@ -65,7 +65,10 @@
{#if $value.length > 0}
<Backspace
on:click={(e) =>{ value.set("") ; e.preventDefault()}}
on:click={(e) => {
value.set("")
e.preventDefault()
}}
color="var(--button-background)"
class="mr-3 h-6 w-6 cursor-pointer"
/>

View file

@ -65,22 +65,24 @@
export let onlyLink: boolean
const t = Translations.t.general.menu
let shown = new UIEventSource(state.guistate.pageStates.menu.data || !onlyLink)
state.guistate.pageStates.menu.addCallback(isShown => {
if(!onlyLink){
state.guistate.pageStates.menu.addCallback((isShown) => {
if (!onlyLink) {
return true
}
if(isShown){
if (isShown) {
shown.setData(true)
}else{
} else {
Utils.waitFor(250).then(() => {
shown.setData(state.guistate.pageStates.menu.data)
})
}
})
</script>
<div class="low-interaction flex h-screen flex-col gap-y-2 overflow-y-auto p-2 sm:gap-y-3 sm:p-3" class:hidden={!$shown}>
<div
class="low-interaction flex h-screen flex-col gap-y-2 overflow-y-auto p-2 sm:gap-y-3 sm:p-3"
class:hidden={!$shown}
>
<div class="flex justify-between">
<h2>
<Tr t={t.title} />

View file

@ -101,7 +101,8 @@
})
let id = 0
adaptor.lastClickLocation.addCallbackD(({ lon, lat }) => {
let projected: Feature<Point, {index:number, id?: number, reuse?: string}> = GeoOperations.nearestPoint(wayGeojson, [lon, lat])
let projected: Feature<Point, { index: number; id?: number; reuse?: string }> =
GeoOperations.nearestPoint(wayGeojson, [lon, lat])
console.log("Added splitpoint", projected, id)
@ -110,36 +111,36 @@
const i = projected.properties.index
const p = projected.geometry.coordinates
const way = wayGeojson.geometry.coordinates
const nextPoint = <[number,number]> way[i + 1]
const nextPoint = <[number, number]>way[i + 1]
const nextDistance = GeoOperations.distanceBetween(nextPoint, p)
const previousPoint = <[number,number]> way[i]
const previousPoint = <[number, number]>way[i]
const previousDistance = GeoOperations.distanceBetween(previousPoint, p)
console.log("ND", nextDistance, "PD", previousDistance)
if(nextDistance <= snapTolerance && previousDistance >= nextDistance){
if (nextDistance <= snapTolerance && previousDistance >= nextDistance) {
projected = {
type:"Feature",
type: "Feature",
geometry: {
type:"Point",
coordinates: nextPoint
type: "Point",
coordinates: nextPoint,
},
properties: {
index: i+1,
reuse: "yes"
index: i + 1,
reuse: "yes",
},
}
}
}
if (previousDistance <= snapTolerance && previousDistance < nextDistance){
if (previousDistance <= snapTolerance && previousDistance < nextDistance) {
projected = {
type:"Feature",
type: "Feature",
geometry: {
type:"Point",
coordinates: previousPoint
type: "Point",
coordinates: previousPoint,
},
properties: {
index: i,
reuse: "yes"
}
reuse: "yes",
},
}
}

View file

@ -38,7 +38,7 @@
let errors = new UIEventSource<Translation[]>([])
async function handleFiles(files: FileList, ignoreGps: boolean= false) {
async function handleFiles(files: FileList, ignoreGps: boolean = false) {
const errs = []
for (let i = 0; i < files.length; i++) {
const file = files.item(i)
@ -102,7 +102,11 @@
capture="environment"
cls="button border-2 flex flex-col"
multiple={true}
on:submit={(e) =>{ handleFiles(e.detail) ; e.preventDefault(); e.stopPropagation()}}
on:submit={(e) => {
handleFiles(e.detail)
e.preventDefault()
e.stopPropagation()
}}
>
<div class="flex w-full items-center justify-center text-2xl">
{#if image !== undefined}
@ -114,7 +118,7 @@
{labelText}
{:else}
<div class="flex flex-col">
<Tr t={t.addPicture}/>
<Tr t={t.addPicture} />
{#if noBlur}
<span class="subtle text-sm">
<Tr t={t.upload.noBlur} />
@ -128,9 +132,13 @@
accept=".jpg, .jpeg"
cls="flex justify-center md:hidden button"
multiple={true}
on:submit={(e) =>{ return handleFiles(e.detail, true) ; e.preventDefault(); e.stopPropagation()}}
on:submit={(e) => {
return handleFiles(e.detail, true)
e.preventDefault()
e.stopPropagation()
}}
>
<Tr t={t.selectFile}/>
<Tr t={t.selectFile} />
</FileSelector>
<div class="subtle text-xs italic">
<Tr t={Translations.t.general.attribution.panoramaxLicenseCCBYSA} />

View file

@ -1,5 +1,10 @@
import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource"
import maplibregl, { Map as MLMap, Map as MlMap, ScaleControl, SourceSpecification } from "maplibre-gl"
import maplibregl, {
Map as MLMap,
Map as MlMap,
ScaleControl,
SourceSpecification,
} from "maplibre-gl"
import { RasterLayerPolygon } from "../../Models/RasterLayers"
import { Utils } from "../../Utils"
import { BBox } from "../../Logic/BBox"
@ -43,10 +48,16 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
readonly allowRotating: UIEventSource<true | boolean | undefined>
readonly allowZooming: UIEventSource<true | boolean | undefined>
readonly lastClickLocation: Store<
undefined | { lon: number; lat: number; mode: "left" | "right" | "middle" , /**
| undefined
| {
lon: number
lat: number
mode: "left" | "right" | "middle"
/**
* The nearest feature from a MapComplete layer
*/
nearestFeature?: Feature }
nearestFeature?: Feature
}
>
readonly minzoom: UIEventSource<number>
readonly maxzoom: UIEventSource<number>
@ -64,9 +75,13 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
private readonly _maplibreMap: Store<MLMap>
constructor(maplibreMap: Store<MLMap>, state?: Partial<MapProperties>, options?:{
constructor(
maplibreMap: Store<MLMap>,
state?: Partial<MapProperties>,
options?: {
correctClick?: number
}) {
}
) {
if (!MapLibreAdaptor.pmtilesInited) {
maplibregl.addProtocol("pmtiles", new Protocol().tile)
MapLibreAdaptor.pmtilesInited = true
@ -106,7 +121,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
const lastClickLocation = new UIEventSource<{
lat: number
lon: number
mode: "left" | "right" | "middle",
mode: "left" | "right" | "middle"
nearestFeature?: Feature
}>(undefined)
this.lastClickLocation = lastClickLocation
@ -126,30 +141,32 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
const mouseEvent: MouseEvent = e.originalEvent
mode = mode ?? clickmodes[mouseEvent.button]
let nearestFeature: Feature = undefined
if(options?.correctClick && maplibreMap.data){
if (options?.correctClick && maplibreMap.data) {
const map = maplibreMap.data
const point = e.point
const buffer = options?.correctClick
const features = map.queryRenderedFeatures([
const features = map
.queryRenderedFeatures([
[point.x - buffer, point.y - buffer],
[point.x + buffer, point.y + buffer]
]).filter(f => f.source.startsWith("mapcomplete_"))
if(features.length === 1){
[point.x + buffer, point.y + buffer],
])
.filter((f) => f.source.startsWith("mapcomplete_"))
if (features.length === 1) {
nearestFeature = features[0]
}else{
} else {
let nearestD: number = undefined
for (const feature of features) {
let d: number // in meter
if(feature.geometry.type === "LineString"){
const way = <Feature<LineString>> feature
const lngLat:[number,number] = [e.lngLat.lng, e.lngLat.lat]
if (feature.geometry.type === "LineString") {
const way = <Feature<LineString>>feature
const lngLat: [number, number] = [e.lngLat.lng, e.lngLat.lat]
const p = GeoOperations.nearestPoint(way, lngLat)
console.log(">>>",p, way, lngLat)
if(!p){
console.log(">>>", p, way, lngLat)
if (!p) {
continue
}
d = p.properties.dist * 1000
if(nearestFeature === undefined || d < nearestD){
if (nearestFeature === undefined || d < nearestD) {
nearestFeature = way
nearestD = d
}
@ -158,7 +175,6 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
}
}
lastClickLocation.setData({ lon, lat, mode, nearestFeature })
}
maplibreMap.addCallbackAndRunD((map) => {

View file

@ -39,7 +39,7 @@ class PointRenderingLayer {
visibility?: Store<boolean>,
fetchStore?: (id: string) => Store<Record<string, string>>,
onClick?: (feature: Feature) => void,
selectedElement?: Store<{ properties: { id?: string } }>,
selectedElement?: Store<{ properties: { id?: string } }>
) {
this._visibility = visibility
this._config = config
@ -98,7 +98,7 @@ class PointRenderingLayer {
" while rendering",
location,
"of",
this._config,
this._config
)
}
const id = feature.properties.id + "-" + location
@ -110,7 +110,10 @@ class PointRenderingLayer {
this.addPoint(feature, <[number, number]>loc)
}
}
if (feature.geometry.type === "MultiLineString" || feature.geometry.type === "Polygon") {
if (
feature.geometry.type === "MultiLineString" ||
feature.geometry.type === "Polygon"
) {
for (const coors of feature.geometry.coordinates) {
for (const loc of coors) {
this.addPoint(feature, <[number, number]>loc)
@ -122,7 +125,7 @@ class PointRenderingLayer {
const loc = GeoOperations.featureToCoordinateWithRenderingType(
<any>feature,
location,
location
)
if (loc === undefined) {
continue
@ -251,7 +254,7 @@ class LineRenderingLayer {
config: LineRenderingConfig,
visibility?: Store<boolean>,
fetchStore?: (id: string) => Store<Record<string, string>>,
onClick?: (feature: Feature) => void,
onClick?: (feature: Feature) => void
) {
this._layername = layername
this._map = map
@ -271,7 +274,7 @@ class LineRenderingLayer {
private async addSymbolLayer(
sourceId: string,
imageAlongWay: { if?: TagsFilter; then: string }[],
imageAlongWay: { if?: TagsFilter; then: string }[]
) {
const map = this._map
await Promise.allSettled(
@ -301,7 +304,7 @@ class LineRenderingLayer {
spec.filter = filter
}
map.addLayer(spec)
}),
})
)
}
@ -311,7 +314,7 @@ class LineRenderingLayer {
* @private
*/
private calculatePropsFor(
properties: Record<string, string>,
properties: Record<string, string>
): Partial<Record<(typeof LineRenderingLayer.lineConfigKeys)[number], string>> {
const config = this._config
@ -393,7 +396,7 @@ class LineRenderingLayer {
} catch (e) {
console.error(
`Invalid dasharray in layer ${this._layername}:`,
this._config.dashArray,
this._config.dashArray
)
}
}
@ -410,11 +413,11 @@ class LineRenderingLayer {
}
map.setFeatureState(
{ source: this._layername, id: feature.properties.id },
this.calculatePropsFor(feature.properties),
this.calculatePropsFor(feature.properties)
)
}
if(this._onClick){
if (this._onClick) {
map.on("click", linelayer, (e) => {
// line-layer-listener
e.originalEvent["consumed"] = true
@ -455,7 +458,7 @@ class LineRenderingLayer {
"Error while setting visibility of layers ",
linelayer,
polylayer,
e,
e
)
}
})
@ -476,7 +479,7 @@ class LineRenderingLayer {
console.trace(
"Got a feature without ID; this causes rendering bugs:",
feature,
"from",
"from"
)
LineRenderingLayer.missingIdTriggered = true
}
@ -488,7 +491,7 @@ class LineRenderingLayer {
if (this._fetchStore === undefined) {
map.setFeatureState(
{ source: this._layername, id },
this.calculatePropsFor(feature.properties),
this.calculatePropsFor(feature.properties)
)
} else {
const tags = this._fetchStore(id)
@ -505,7 +508,7 @@ class LineRenderingLayer {
}
map.setFeatureState(
{ source: this._layername, id },
this.calculatePropsFor(properties),
this.calculatePropsFor(properties)
)
})
}
@ -529,7 +532,7 @@ export default class ShowDataLayer {
layer: LayerConfig
drawMarkers?: true | boolean
drawLines?: true | boolean
},
}
) {
this._options = options
this.onDestroy.push(map.addCallbackAndRunD((map) => this.initDrawFeatures(map)))
@ -539,7 +542,7 @@ export default class ShowDataLayer {
mlmap: UIEventSource<MlMap>,
features: FeatureSource,
layers: LayerConfig[],
options?: Partial<ShowDataLayerOptions>,
options?: Partial<ShowDataLayerOptions>
) {
const perLayer: PerLayerFeatureSourceSplitter<FeatureSourceForLayer> =
new PerLayerFeatureSourceSplitter(
@ -547,7 +550,7 @@ export default class ShowDataLayer {
features,
{
constructStore: (features, layer) => new SimpleFeatureSource(layer, features),
},
}
)
if (options?.zoomToFeatures) {
options.zoomToFeatures = false
@ -571,7 +574,7 @@ export default class ShowDataLayer {
public static showRange(
map: Store<MlMap>,
features: FeatureSource,
doShowLayer?: Store<boolean>,
doShowLayer?: Store<boolean>
): ShowDataLayer {
return new ShowDataLayer(map, {
layer: ShowDataLayer.rangeLayer,
@ -580,8 +583,7 @@ export default class ShowDataLayer {
})
}
public destruct() {
}
public destruct() {}
private static zoomToCurrentFeatures(map: MlMap, features: Feature[]) {
if (!features || !map || features.length == 0) {
@ -618,7 +620,7 @@ export default class ShowDataLayer {
lineRenderingConfig,
doShowLayer,
fetchStore,
onClick,
onClick
)
this.onDestroy.push(l.destruct)
}
@ -634,13 +636,13 @@ export default class ShowDataLayer {
doShowLayer,
fetchStore,
onClick,
selectedElement,
selectedElement
)
}
}
if (this._options.zoomToFeatures) {
features.features.addCallbackAndRunD((features) =>
ShowDataLayer.zoomToCurrentFeatures(map, features),
ShowDataLayer.zoomToCurrentFeatures(map, features)
)
}
}

View file

@ -61,11 +61,11 @@
const changedProperties = TagUtils.changeAsProperties(selectedTags.asChange(tags?.data ?? {}))
const deleteReason = changedProperties[DeleteConfig.deleteReasonKey]
if (deleteReason) {
let softDeletionTags: UploadableTag
if(hasSoftDeletion){
softDeletionTags = new And([deleteConfig.softDeletionTags,
...layer.tagRenderings.flatMap(tr => tr.onSoftDelete ?? []),
if (hasSoftDeletion) {
softDeletionTags = new And([
deleteConfig.softDeletionTags,
...layer.tagRenderings.flatMap((tr) => tr.onSoftDelete ?? []),
])
}

View file

@ -8,9 +8,11 @@
* Shows _all_ disabled questions
*/
export let state
let layers = state.layout.layers.filter(l => l.isNormal())
let layers = state.layout.layers.filter((l) => l.isNormal())
let allDisabled = Stores.concat<string>(layers.map(l => state.userRelatedState.getThemeDisabled(state.layout.id, l.id))).map(l => [].concat(...l))
let allDisabled = Stores.concat<string>(
layers.map((l) => state.userRelatedState.getThemeDisabled(state.layout.id, l.id))
).map((l) => [].concat(...l))
const t = Translations.t.general.questions
</script>

View file

@ -1,33 +1,33 @@
<script lang="ts">/**
<script lang="ts">
/**
* Gives an overview of questions which are disabled for the given theme
*/
import UserRelatedState from "../../Logic/State/UserRelatedState"
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
import ThemeViewState from "../../Models/ThemeViewState"
import Tr from "../Base/Tr.svelte"
import { Translation } from "../i18n/Translation"
import { XMarkIcon } from "@babeard/svelte-heroicons/mini"
import ToSvelte from "../Base/ToSvelte.svelte"
import UserRelatedState from "../../Logic/State/UserRelatedState"
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
import ThemeViewState from "../../Models/ThemeViewState"
import Tr from "../Base/Tr.svelte"
import { Translation } from "../i18n/Translation"
import { XMarkIcon } from "@babeard/svelte-heroicons/mini"
import ToSvelte from "../Base/ToSvelte.svelte"
export let layer: LayerConfig
export let state: ThemeViewState
export let layer: LayerConfig
export let state: ThemeViewState
let disabledQuestions = state.userRelatedState.getThemeDisabled(state.layout.id, layer.id)
let disabledQuestions = state.userRelatedState.getThemeDisabled(state.layout.id, layer.id)
function getQuestion(id: string): Translation {
return layer.tagRenderings.find(q => q.id === id).question.Subs({})
}
function getQuestion(id: string): Translation {
return layer.tagRenderings.find((q) => q.id === id).question.Subs({})
}
function enable(idToEnable: string) {
const newList = disabledQuestions.data.filter(id => id !== idToEnable)
function enable(idToEnable: string) {
const newList = disabledQuestions.data.filter((id) => id !== idToEnable)
disabledQuestions.set(newList)
}
}
</script>
{#if $disabledQuestions.length > 0}
<div class="low-interaction p-2">
<h4 class="flex my-2">
<h4 class="my-2 flex">
<div class="no-image-background block h-6 w-6">
<ToSvelte construct={() => layer.defaultIcon()} />
</div>
@ -37,7 +37,7 @@ function enable(idToEnable: string) {
{#each $disabledQuestions as id}
<button class="badge button-unstyled" on:click={() => enable(id)}>
<Tr cls="ml-2" t={getQuestion(id)} />
<XMarkIcon class="w-4 h-4 mr-2" />
<XMarkIcon class="mr-2 h-4 w-4" />
</button>
{/each}
</div>

View file

@ -88,7 +88,13 @@
{:else if step === "splitting"}
<div class="interactive border-interactive flex flex-col p-2">
<div class="h-80 w-full">
<WaySplitMap {state} {splitPoints} {osmWay} {snapTolerance} mapProperties={{rasterLayer: state.mapProperties.rasterLayer}}/>
<WaySplitMap
{state}
{splitPoints}
{osmWay}
{snapTolerance}
mapProperties={{ rasterLayer: state.mapProperties.rasterLayer }}
/>
</div>
<div class="flex w-full flex-wrap-reverse md:flex-nowrap">
<BackButton

View file

@ -45,16 +45,15 @@
}
const baseQuestions = (layer?.tagRenderings ?? [])?.filter(
(tr) => allowed(tr.labels) && tr.question !== undefined,
(tr) => allowed(tr.labels) && tr.question !== undefined
)
/**
* Ids of skipped questions
*/
let skippedQuestions = new UIEventSource<Set<string>>(new Set<string>())
let layerDisabledForTheme = state.userRelatedState.getThemeDisabled(state.theme.id, layer.id)
layerDisabledForTheme.addCallbackAndRunD(disabled => {
layerDisabledForTheme.addCallbackAndRunD((disabled) => {
skippedQuestions.set(new Set(disabled.concat(Array.from(skippedQuestions.data))))
})
let questionboxElem: HTMLDivElement
@ -78,10 +77,10 @@
}
return questionsToAsk
},
[skippedQuestions],
[skippedQuestions]
)
let firstQuestion: UIEventSource<TagRenderingConfig> = new UIEventSource<TagRenderingConfig>(
undefined,
undefined
)
let allQuestionsToAsk: UIEventSource<TagRenderingConfig[]> = new UIEventSource<
TagRenderingConfig[]
@ -106,7 +105,6 @@
let loginEnabled = state.featureSwitches.featureSwitchEnableLogin
let debug = state.featureSwitches.featureSwitchIsDebugging
function skip(question: { id: string }, didAnswer: boolean = false) {
skippedQuestions.data.add(question.id) // Must use ID, the config object might be a copy of the original
skippedQuestions.ping()
@ -131,13 +129,7 @@
{#if $showAllQuestionsAtOnce}
<div class="flex flex-col gap-y-1">
{#each $allQuestionsToAsk as question (question.id)}
<TagRenderingQuestionDynamic
config={question}
{tags}
{selectedElement}
{state}
{layer}
/>
<TagRenderingQuestionDynamic config={question} {tags} {selectedElement} {state} {layer} />
{/each}
</div>
{:else if $firstQuestion !== undefined}
@ -170,7 +162,6 @@
{/if}
<div class="mt-4 mb-8">
{#if skipped + answered > 0}
<div class="flex justify-center">
{#if answered === 0}
@ -215,7 +206,6 @@
>
<Tr t={Translations.t.general.questionBox.reactivate} />
</button>
{/if}
{/if}
@ -229,7 +219,6 @@
>
Show the disabled questions for this object
</button>
{/if}
{#if $debug}
Skipped questions are {Array.from($skippedQuestions).join(", ")}

View file

@ -93,7 +93,7 @@
return !m.hideInAnswer.matchesProperties(tgs)
})
selectedMapping = mappings?.findIndex(
(mapping) => mapping.if.matchesProperties(tgs) || mapping.alsoShowIf?.matchesProperties(tgs),
(mapping) => mapping.if.matchesProperties(tgs) || mapping.alsoShowIf?.matchesProperties(tgs)
)
if (selectedMapping < 0) {
selectedMapping = undefined
@ -201,7 +201,7 @@
if (freeformValue?.length > 0) {
selectedMapping = config.mappings.length
}
}),
})
)
$: {
@ -219,7 +219,7 @@
$freeformInput,
selectedMapping,
checkedMappings,
tags.data,
tags.data
)
if (featureSwitchIsDebugging?.data) {
console.log(
@ -231,7 +231,7 @@
currentTags: tags.data,
},
" --> ",
selectedTags,
selectedTags
)
}
} catch (e) {
@ -253,7 +253,7 @@
selectedTags = new And([...selectedTags.and, ...extraTagsArray])
} else {
console.error(
"selectedTags is not of type Tag or And, it is a " + JSON.stringify(selectedTags),
"selectedTags is not of type Tag or And, it is a " + JSON.stringify(selectedTags)
)
}
}
@ -322,7 +322,7 @@
onDestroy(
state.osmConnection?.userDetails?.addCallbackAndRun((ud) => {
numberOfCs = ud.csCount
}),
})
)
}
@ -351,7 +351,7 @@
}
function enableQuestion() {
const newList = disabledInTheme.data?.filter(id => id !== config.id)
const newList = disabledInTheme.data?.filter((id) => id !== config.id)
disabledInTheme.set(newList)
menuIsOpened.set(false)
}
@ -359,7 +359,6 @@
{#if question !== undefined}
<div class={clss}>
{#if layer.isNormal()}
<LoginToggle {state}>
<DotMenu hideBackground={true} open={menuIsOpened}>

View file

@ -2116,7 +2116,6 @@ export default class SpecialVisualizations {
constr(state) {
return new SvelteUIElement(DisabledQuestions, { state })
},
},
]

View file

@ -18,7 +18,6 @@
import { DownloadIcon } from "@rgossiaux/svelte-heroicons/solid"
import { GeoOperations } from "../../Logic/GeoOperations"
export let paths: string[]
let downloaded = 0
@ -26,36 +25,38 @@
const filteredLayer = new FilteredLayer(layer)
let allData = <UIEventSource<(ChangeSetData & OsmFeature)[]>>UIEventSource.FromPromise(
Promise.all(paths.map(async p => {
Promise.all(
paths.map(async (p) => {
const r = await Utils.downloadJson<FeatureCollection>(p)
downloaded++
return r
}))
).mapD(list => [].concat(...list.map(f => f.features)))
let overview = allData.mapD(data =>
ChangesetsOverview.fromDirtyData(data)
.filter((cs) => filteredLayer.isShown(<any>cs.properties)), [filteredLayer.currentFilter])
const trs = layer.tagRenderings.filter(
(tr) => tr.mappings?.length > 0 || tr.freeform?.key !== undefined
).filter(tr => tr.question !== undefined)
let diffInDays = overview.mapD(overview => {
const dateStrings = Utils.NoNull(
overview._meta.map((cs) => cs.properties.date)
})
)
).mapD((list) => [].concat(...list.map((f) => f.features)))
let overview = allData.mapD(
(data) =>
ChangesetsOverview.fromDirtyData(data).filter((cs) =>
filteredLayer.isShown(<any>cs.properties)
),
[filteredLayer.currentFilter]
)
const trs = layer.tagRenderings
.filter((tr) => tr.mappings?.length > 0 || tr.freeform?.key !== undefined)
.filter((tr) => tr.question !== undefined)
let diffInDays = overview.mapD((overview) => {
const dateStrings = Utils.NoNull(overview._meta.map((cs) => cs.properties.date))
const dates: number[] = dateStrings.map((d) => new Date(d).getTime())
const mindate = Math.min(...dates)
const maxdate = Math.max(...dates)
return (maxdate - mindate) / (1000 * 60 * 60 * 24)
})
function offerAsDownload(){
function offerAsDownload() {
const data = GeoOperations.toCSV($overview._meta, {
ignoreTags:
/^((deletion:node)|(import:node)|(move:node)|(soft-delete:))/,
ignoreTags: /^((deletion:node)|(import:node)|(move:node)|(soft-delete:))/,
})
Utils.offerContentsAsDownloadableFile(data, "statistics.csv", {
mimetype: "text/csv",
@ -81,7 +82,7 @@
{/each}
</Accordion>
<button on:click={() => offerAsDownload()}>
<DownloadIcon class="w-6 h-6" />
<DownloadIcon class="h-6 w-6" />
Download as CSV
</button>
{/if}

Some files were not shown because too many files have changed in this diff Show more