Merge branch 'master' into develop

This commit is contained in:
Pieter Vander Vennet 2022-10-27 01:50:46 +02:00
commit 9a4cdaf1ad
192 changed files with 9167 additions and 12079 deletions

View file

@ -40,6 +40,7 @@
+ [all_tags](#all_tags)
+ [multilevels](#multilevels)
+ [induction-loop](#induction-loop)
+ [wikidata.tactile_writing-braille](#wikidatatactile_writing-braille)
+ [questions](#questions)
+ [export_as_gpx](#export_as_gpx)
+ [export_as_geojson](#export_as_geojson)
@ -48,6 +49,12 @@
+ [id_presets.shop_types](#id_presetsshop_types)
+ [school.capacity](#schoolcapacity)
+ [school.gender](#schoolgender)
+ [opening_hours_24_7](#opening_hours_24_7)
+ [toilet.toilets-type](#toilettoilets-type)
+ [toilet.toilets-changing-table](#toilettoilets-changing-table)
+ [toilet.toilet-changing_table:location](#toilettoilet-changing_table:location)
+ [toilet.toilet-handwashing](#toilettoilet-handwashing)
+ [toilet.toilet-has-paper](#toilettoilet-has-paper)
+ [wikidata.language](#wikidatalanguage)
@ -88,6 +95,7 @@
- climbing_area
- climbing_gym
- climbing_route
- crossings
- defibrillator
- doctors
- dogpark
@ -96,6 +104,7 @@
- entrance
- extinguisher
- fire_station
- fitness_centre
- food
- ghost_bike
- governments
@ -124,9 +133,11 @@
- shops
- slow_roads
- sport_pitch
- sports_centre
- street_lamps
- surveillance_camera
- toilet
- toilet_at_amenity
- trail
- transit_stops
- tree_node
@ -166,6 +177,7 @@
- climbing_club
- climbing_gym
- doctors
- fitness_centre
- food
- governments
- hackerspace
@ -179,6 +191,7 @@
- recycling
- school
- shops
- sports_centre
- tertiary_education
- veterinary
@ -199,6 +212,7 @@
- climbing_club
- climbing_gym
- doctors
- fitness_centre
- food
- governments
- hackerspace
@ -209,6 +223,7 @@
- recycling
- school
- shops
- sports_centre
- tertiary_education
- veterinary
@ -229,6 +244,7 @@
- climbing_club
- climbing_gym
- doctors
- fitness_centre
- food
- governments
- hackerspace
@ -239,6 +255,7 @@
- recycling
- school
- shops
- sports_centre
- tertiary_education
@ -258,11 +275,16 @@
- climbing_club
- climbing_gym
- doctors
- fitness_centre
- fitness_station
- food
- kindergarten_childcare
- parcel_lockers
- pharmacy
- postoffices
- shops
- sports_centre
- toilet_at_amenity
- veterinary
@ -279,6 +301,7 @@
- bike_themed_object
- climbing_route
- toilet
- toilet_at_amenity
@ -321,12 +344,14 @@
- cafe_pub
- charging_station
- entrance
- fitness_centre
- food
- parking
- picnic_table
- reception_desk
- shops
- toilet
- toilet_at_amenity
@ -361,10 +386,12 @@
- cafe_pub
- defibrillator
- fitness_centre
- food
- hackerspace
- hotel
- observation_tower
- sports_centre
- transit_stops
@ -455,6 +482,7 @@
- cafe_pub
- dogpark
- fitness_centre
- food
- hackerspace
- hotel
@ -588,6 +616,18 @@
### wikidata.tactile_writing-braille
- elevator
- stairs
### questions
@ -680,6 +720,72 @@
### opening_hours_24_7
- toilet
### toilet.toilets-type
- toilet_at_amenity
### toilet.toilets-changing-table
- toilet_at_amenity
### toilet.toilet-changing_table:location
- toilet_at_amenity
### toilet.toilet-handwashing
- toilet_at_amenity
### toilet.toilet-has-paper
- toilet_at_amenity
### wikidata.language

View file

@ -815,6 +815,8 @@ The following layers are included in MapComplete:
- [extinguisher](./Layers/extinguisher.md)
- [filters](./Layers/filters.md)
- [fire_station](./Layers/fire_station.md)
- [fitness_centre](./Layers/fitness_centre.md)
- [fitness_station](./Layers/fitness_station.md)
- [food](./Layers/food.md)
- [ghost_bike](./Layers/ghost_bike.md)
- [governments](./Layers/governments.md)
@ -862,12 +864,17 @@ The following layers are included in MapComplete:
- [shelter](./Layers/shelter.md)
- [shops](./Layers/shops.md)
- [slow_roads](./Layers/slow_roads.md)
- [speed_camera](./Layers/speed_camera.md)
- [speed_display](./Layers/speed_display.md)
- [split_point](./Layers/split_point.md)
- [sport_pitch](./Layers/sport_pitch.md)
- [sports_centre](./Layers/sports_centre.md)
- [stairs](./Layers/stairs.md)
- [street_lamps](./Layers/street_lamps.md)
- [surveillance_camera](./Layers/surveillance_camera.md)
- [tertiary_education](./Layers/tertiary_education.md)
- [toilet](./Layers/toilet.md)
- [toilet_at_amenity](./Layers/toilet_at_amenity.md)
- [trail](./Layers/trail.md)
- [transit_routes](./Layers/transit_routes.md)
- [transit_stops](./Layers/transit_stops.md)

View file

@ -27,6 +27,7 @@ The following items can be easily reused in your layers
+ [dog-access](#dog-access)
+ [description](#description)
+ [opening_hours](#opening_hours)
+ [opening_hours_24_7](#opening_hours_24_7)
+ [service:electricity](#serviceelectricity)
+ [payment-options](#payment-options)
+ [payment-options-advanced](#payment-options-advanced)
@ -263,6 +264,21 @@ What are the opening hours of {title()}?
### opening_hours_24_7
<h3>Opening hours</h3>{opening_hours_table(opening_hours)}
What are the opening hours of {title()}?
- 24/7 opened (including holidays)
### service:electricity

View file

@ -5,7 +5,7 @@
<img src='https://mapcomplete.osm.be/./assets/svg/pencil.svg' height="100px">
Layer to mark any street as cyclestreet
@ -60,7 +60,7 @@ this quick overview is incomplete
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/cyclestreet#values) [cyclestreet](https://wiki.openstreetmap.org/wiki/Key:cyclestreet) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes) [yes](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes) [](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3D) [](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3D)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/traffic_sign#values) [traffic_sign](https://wiki.openstreetmap.org/wiki/Key:traffic_sign) | Multiple choice | [DE:244.1,1020-30](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1020-30) [DE:244.1,1022-12,1024-10](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12,1024-10) [DE:244.1,1022-12](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12) [DE:244.1,1024-10](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1024-10) [DE:244.1](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/cyclestreet:start_date#values) [cyclestreet:start_date](https://wiki.openstreetmap.org/wiki/Key:cyclestreet:start_date) | [date](../SpecialInputElements.md#date) |
@ -89,13 +89,38 @@ The question is Is the street <b>{name}</b> a cyclestreet?
- This street is a cyclestreet (and has a speed limit of 30 km/h) corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:cyclestreet' target='_blank'>cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes' target='_blank'>yes</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:maxspeed' target='_blank'>maxspeed</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:maxspeed%3D30' target='_blank'>30</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:overtaking:motor_vehicle' target='_blank'>overtaking:motor_vehicle</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:overtaking:motor_vehicle%3Dno' target='_blank'>no</a>`
- This street is a bicycle road corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:bicycle_road' target='_blank'>bicycle_road</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bicycle_road%3Dyes' target='_blank'>yes</a>`
- This option cannot be chosen as answer
- This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later) corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:bicycle_road' target='_blank'>bicycle_road</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bicycle_road%3Dyes' target='_blank'>yes</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:maxspeed' target='_blank'>maxspeed</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:maxspeed%3D30' target='_blank'>30</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:source:maxspeed' target='_blank'>source:maxspeed</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:source:maxspeed%3DDE:bicycle_road' target='_blank'>DE:bicycle_road</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:vehicle' target='_blank'>vehicle</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Dno' target='_blank'>no</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:bicycle' target='_blank'>bicycle</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bicycle%3Ddesignated' target='_blank'>designated</a>`
- This street is a cyclestreet corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:cyclestreet' target='_blank'>cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes' target='_blank'>yes</a>`
- This street will become a cyclestreet soon corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:proposed:cyclestreet' target='_blank'>proposed:cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:proposed:cyclestreet%3Dyes' target='_blank'>yes</a>`
- This street will become a bicycle road soon corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:proposed:bicycle_road' target='_blank'>proposed:bicycle_road</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:proposed:bicycle_road%3Dyes' target='_blank'>yes</a>`
- This street is not a cyclestreet corresponds with ``
### supplementary_sign
The question is What sign does this bicycle road have?
- Residents allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1020-30' target='_blank'>DE:244.1,1020-30</a>`
- Motor vehicles allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12,1024-10' target='_blank'>DE:244.1,1022-12,1024-10</a>`
- Motorcycles allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12' target='_blank'>DE:244.1,1022-12</a>`
- Cars allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1024-10' target='_blank'>DE:244.1,1024-10</a>`
- There are no supplementary signs at this bicycle road. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1' target='_blank'>DE:244.1</a>`
Only visible if `bicycle_road=yes&_country=de` is shown
### future_cyclestreet

View file

@ -70,19 +70,10 @@ attribute | type | values which are supported by this layer
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/service:bicycle:retail#values) [service:bicycle:retail](https://wiki.openstreetmap.org/wiki/Key:service:bicycle:retail) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/service:bicycle:repair#values) [service:bicycle:repair](https://wiki.openstreetmap.org/wiki/Key:service:bicycle:repair) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:repair%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:repair%3Dno) [only_sold](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:repair%3Donly_sold) [brand](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:repair%3Dbrand)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/service:bicycle:rental#values) [service:bicycle:rental](https://wiki.openstreetmap.org/wiki/Key:service:bicycle:rental) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:rental%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:rental%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/rental#values) [rental](https://wiki.openstreetmap.org/wiki/Key:rental) | [string](../SpecialInputElements.md#string) | [city_bike](https://wiki.openstreetmap.org/wiki/Tag:rental%3Dcity_bike) [ebike](https://wiki.openstreetmap.org/wiki/Tag:rental%3Debike) [bmx](https://wiki.openstreetmap.org/wiki/Tag:rental%3Dbmx) [mtb](https://wiki.openstreetmap.org/wiki/Tag:rental%3Dmtb) [kid_bike](https://wiki.openstreetmap.org/wiki/Tag:rental%3Dkid_bike) [tandem](https://wiki.openstreetmap.org/wiki/Tag:rental%3Dtandem) [racebike](https://wiki.openstreetmap.org/wiki/Tag:rental%3Dracebike) [bike_helmet](https://wiki.openstreetmap.org/wiki/Tag:rental%3Dbike_helmet)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/capacity:city_bike#values) [capacity:city_bike](https://wiki.openstreetmap.org/wiki/Key:capacity:city_bike) | [pnat](../SpecialInputElements.md#pnat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/capacity:ebike#values) [capacity:ebike](https://wiki.openstreetmap.org/wiki/Key:capacity:ebike) | [pnat](../SpecialInputElements.md#pnat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/capacity:kid_bike#values) [capacity:kid_bike](https://wiki.openstreetmap.org/wiki/Key:capacity:kid_bike) | [pnat](../SpecialInputElements.md#pnat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/capacity:bmx#values) [capacity:bmx](https://wiki.openstreetmap.org/wiki/Key:capacity:bmx) | [pnat](../SpecialInputElements.md#pnat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/capacity:mtb#values) [capacity:mtb](https://wiki.openstreetmap.org/wiki/Key:capacity:mtb) | [pnat](../SpecialInputElements.md#pnat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/capacity:bicycle_pannier#values) [capacity:bicycle_pannier](https://wiki.openstreetmap.org/wiki/Key:capacity:bicycle_pannier) | [pnat](../SpecialInputElements.md#pnat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/capacity:tandem_bicycle#values) [capacity:tandem_bicycle](https://wiki.openstreetmap.org/wiki/Key:capacity:tandem_bicycle) | [pnat](../SpecialInputElements.md#pnat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/service:bicycle:second_hand#values) [service:bicycle:second_hand](https://wiki.openstreetmap.org/wiki/Key:service:bicycle:second_hand) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:second_hand%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:second_hand%3Dno) [only](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:second_hand%3Donly)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/service:bicycle:pump#values) [service:bicycle:pump](https://wiki.openstreetmap.org/wiki/Key:service:bicycle:pump) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:pump%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:pump%3Dno) [separate](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:pump%3Dseparate)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/service:bicycle:diy#values) [service:bicycle:diy](https://wiki.openstreetmap.org/wiki/Key:service:bicycle:diy) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:diy%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:diy%3Dno) [only_sold](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:diy%3Donly_sold)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/service:bicycle:cleaning#values) [service:bicycle:cleaning](https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning%3Dyes) [diy](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning%3Ddiy) [no](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/service:bicycle:cleaning:charge#values) [service:bicycle:cleaning:charge](https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:charge) | [string](../SpecialInputElements.md#string) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [string](../SpecialInputElements.md#string) |
@ -269,157 +260,13 @@ The question is Does this shop rent out bikes?
### bicycle-types
### bicyclerentalbicyclerental
The question is What kind of bicycles and accessories are rented here?
This tagrendering has no question and is thus read-only
This rendering asks information about the property [rental](https://wiki.openstreetmap.org/wiki/Key:rental)
This is rendered with {rental} is rented here
- Normal city bikes can be rented here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:rental' target='_blank'>rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:rental%3Dcity_bike' target='_blank'>city_bike</a>`
- Electrical bikes can be rented here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:rental' target='_blank'>rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:rental%3Debike' target='_blank'>ebike</a>`
- BMX bikes can be rented here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:rental' target='_blank'>rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:rental%3Dbmx' target='_blank'>bmx</a>`
- Mountainbikes can be rented here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:rental' target='_blank'>rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:rental%3Dmtb' target='_blank'>mtb</a>`
- Bikes for children can be rented here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:rental' target='_blank'>rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:rental%3Dkid_bike' target='_blank'>kid_bike</a>`
- Tandem bicycles can be rented here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:rental' target='_blank'>rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:rental%3Dtandem' target='_blank'>tandem</a>`
- Race bicycles can be rented here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:rental' target='_blank'>rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:rental%3Dracebike' target='_blank'>racebike</a>`
- Bike helmets can be rented here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:rental' target='_blank'>rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:rental%3Dbike_helmet' target='_blank'>bike_helmet</a>`
This tagrendering has labels `bicycle_rental`
### rental-capacity-city_bike
The question is How much city bikes can be rented here?
This rendering asks information about the property [capacity:city_bike](https://wiki.openstreetmap.org/wiki/Key:capacity:city_bike)
This is rendered with {capacity:city_bike} city bikes can be rented here
Only visible if `rental~^(.*city_bike.*)$` is shown
This tagrendering has labels `bicycle_rental`
### rental-capacity-ebike
The question is How much electrical bikes can be rented here?
This rendering asks information about the property [capacity:ebike](https://wiki.openstreetmap.org/wiki/Key:capacity:ebike)
This is rendered with {capacity:ebike} electrical bikes can be rented here
Only visible if `rental~^(.*ebike.*)$` is shown
This tagrendering has labels `bicycle_rental`
### rental-capacity-kid_bike
The question is How much bikes for children can be rented here?
This rendering asks information about the property [capacity:kid_bike](https://wiki.openstreetmap.org/wiki/Key:capacity:kid_bike)
This is rendered with {capacity:kid_bike} bikes for children can be rented here
Only visible if `rental~^(.*kid_bike.*)$` is shown
This tagrendering has labels `bicycle_rental`
### rental-capacity-bmx
The question is How much BMX bikes can be rented here?
This rendering asks information about the property [capacity:bmx](https://wiki.openstreetmap.org/wiki/Key:capacity:bmx)
This is rendered with {capacity:bmx} BMX bikes can be rented here
Only visible if `rental~^(.*bmx.*)$` is shown
This tagrendering has labels `bicycle_rental`
### rental-capacity-mtb
The question is How much mountainbike can be rented here?
This rendering asks information about the property [capacity:mtb](https://wiki.openstreetmap.org/wiki/Key:capacity:mtb)
This is rendered with {capacity:mtb} mountainbike can be rented here
Only visible if `rental~^(.*mtb.*)$` is shown
This tagrendering has labels `bicycle_rental`
### rental-capacity-bicycle_pannier
The question is How much bicycle panniers can be rented here?
This rendering asks information about the property [capacity:bicycle_pannier](https://wiki.openstreetmap.org/wiki/Key:capacity:bicycle_pannier)
This is rendered with {capacity:bicycle_pannier} bicycle panniers can be rented here
Only visible if `rental~^(.*bicycle_pannier.*)$` is shown
This tagrendering has labels `bicycle_rental`
### rental-capacity-tandem_bicycle
The question is How much tandem can be rented here?
This rendering asks information about the property [capacity:tandem_bicycle](https://wiki.openstreetmap.org/wiki/Key:capacity:tandem_bicycle)
This is rendered with {capacity:tandem_bicycle} tandem can be rented here
Only visible if `rental~^(.*tandem_bicycle.*)$` is shown
This tagrendering has labels `bicycle_rental`
@ -491,23 +338,12 @@ The question is Are bicycles washed here?
### bike_cleaning-service:bicycle:cleaning:charge
### bikecleaningbikecleaningservicebicyclecleaningcharge
The question is How much does it cost to use the cleaning service?
This tagrendering has no question and is thus read-only
This rendering asks information about the property [service:bicycle:cleaning:charge](https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:charge)
This is rendered with Using the cleaning service costs {service:bicycle:cleaning:charge}
- The cleaning service is free to use corresponds 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 corresponds 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>`
- This option cannot be chosen as answer

View file

@ -68,9 +68,6 @@ attribute | type | values which are supported by this layer
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | [](https://wiki.openstreetmap.org/wiki/Tag:name%3D)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/climbing#values) [climbing](https://wiki.openstreetmap.org/wiki/Key:climbing) | Multiple choice | [boulder](https://wiki.openstreetmap.org/wiki/Tag:climbing%3Dboulder) [crag](https://wiki.openstreetmap.org/wiki/Tag:climbing%3Dcrag) [area](https://wiki.openstreetmap.org/wiki/Tag:climbing%3Darea)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/rock#values) [rock](https://wiki.openstreetmap.org/wiki/Key:rock) | [string](../SpecialInputElements.md#string) | [limestone](https://wiki.openstreetmap.org/wiki/Tag:rock%3Dlimestone)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/url#values) [url](https://wiki.openstreetmap.org/wiki/Key:url) | [url](../SpecialInputElements.md#url) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/charge#values) [charge](https://wiki.openstreetmap.org/wiki/Key:charge) | [string](../SpecialInputElements.md#string) | [](https://wiki.openstreetmap.org/wiki/Tag:charge%3D)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/climbing:boulder#values) [climbing:boulder](https://wiki.openstreetmap.org/wiki/Key:climbing:boulder) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dno) [limited](https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dlimited)
@ -184,59 +181,4 @@ This is rendered with The rock type is {rock}
Only visible if `climbing=crag|natural=cliff|natural=bare_rock` is shown
### website
The question is Is there a (unofficial) website with more informations (e.g. topos)?
This rendering asks information about the property [url](https://wiki.openstreetmap.org/wiki/Key:url)
This is rendered with <a href='{url}' target='_blank'>{url}</a>
Only visible if `leisure!~^(sports_centre)$&sport=climbing` is shown
### fee
The question is Is a fee required to climb here?
This rendering asks information about the property [charge](https://wiki.openstreetmap.org/wiki/Key:charge)
This is rendered with A fee of {charge} should be paid for climbing here
- Climbing here is free of charge corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fee' target='_blank'>fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fee%3Dno' target='_blank'>no</a>`
- Paying a fee is required to climb here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fee' target='_blank'>fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fee%3Dyes' target='_blank'>yes</a>`
### bouldering
The question is Is bouldering possible here?
- Bouldering is possible here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:climbing:boulder' target='_blank'>climbing:boulder</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dyes' target='_blank'>yes</a>`
- Bouldering is not possible here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:climbing:boulder' target='_blank'>climbing:boulder</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dno' target='_blank'>no</a>`
- Bouldering is possible, allthough there are only a few routes corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:climbing:boulder' target='_blank'>climbing:boulder</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dlimited' target='_blank'>limited</a>`
- There are {climbing:boulder} boulder routes corresponds with `climbing:boulder~.+`
- This option cannot be chosen as answer
This document is autogenerated from [assets/layers/climbing_area/climbing_area.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing_area/climbing_area.json)

View file

@ -65,14 +65,7 @@ attribute | type | values which are supported by this layer
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/charge#values) [charge](https://wiki.openstreetmap.org/wiki/Key:charge) | [string](../SpecialInputElements.md#string) | [](https://wiki.openstreetmap.org/wiki/Tag:charge%3D)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/climbing:length#values) [climbing:length](https://wiki.openstreetmap.org/wiki/Key:climbing:length) | [pfloat](../SpecialInputElements.md#pfloat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/climbing:grade:french:min#values) [climbing:grade:french:min](https://wiki.openstreetmap.org/wiki/Key:climbing:grade:french:min) | [string](../SpecialInputElements.md#string) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/climbing:grade:french:max#values) [climbing:grade:french:max](https://wiki.openstreetmap.org/wiki/Key:climbing:grade:french:max) | [string](../SpecialInputElements.md#string) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/climbing:boulder#values) [climbing:boulder](https://wiki.openstreetmap.org/wiki/Key:climbing:boulder) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dno) [limited](https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dlimited)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/climbing:sport#values) [climbing:sport](https://wiki.openstreetmap.org/wiki/Key:climbing:sport) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:climbing:sport%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:climbing:sport%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/climbing:bolts:max#values) [climbing:bolts:max](https://wiki.openstreetmap.org/wiki/Key:climbing:bolts:max) | [pnat](../SpecialInputElements.md#pnat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/climbing:speed#values) [climbing:speed](https://wiki.openstreetmap.org/wiki/Key:climbing:speed) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:climbing:speed%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:climbing:speed%3Dno)
@ -164,26 +157,6 @@ This is rendered with <a href='mailto:{email}' target='_blank'>{email}</a>
### fee
The question is Is a fee required to climb here?
This rendering asks information about the property [charge](https://wiki.openstreetmap.org/wiki/Key:charge)
This is rendered with A fee of {charge} should be paid for climbing here
- Climbing here is free of charge corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fee' target='_blank'>fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fee%3Dno' target='_blank'>no</a>`
- Paying a fee is required to climb here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fee' target='_blank'>fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fee%3Dyes' target='_blank'>yes</a>`
### opening_hours
@ -198,103 +171,6 @@ This is rendered with <h3>Opening hours</h3>{opening_hours_table(opening_hours)
### average_length
The question is What is the (average) length of the routes in meters?
This rendering asks information about the property [climbing:length](https://wiki.openstreetmap.org/wiki/Key:climbing:length)
This is rendered with The routes are <b>{canonical(climbing:length)}</b> long on average
### min_difficulty
The question is What is the grade of the easiest route here, according to the french classification system?
This rendering asks information about the property [climbing:grade:french:min](https://wiki.openstreetmap.org/wiki/Key:climbing:grade:french:min)
This is rendered with The lowest grade is {climbing:grade:french:min} according to the french/belgian system
### max_difficulty
The question is What is the highest grade route here, according to the french classification system?
This rendering asks information about the property [climbing:grade:french:max](https://wiki.openstreetmap.org/wiki/Key:climbing:grade:french:max)
This is rendered with The highest grade is {climbing:grade:french:max} according to the french/belgian system
Only visible if `climbing!~^(route)$&climbing:sport=yes|sport=climbing` is shown
### bouldering
The question is Is bouldering possible here?
- Bouldering is possible here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:climbing:boulder' target='_blank'>climbing:boulder</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dyes' target='_blank'>yes</a>`
- Bouldering is not possible here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:climbing:boulder' target='_blank'>climbing:boulder</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dno' target='_blank'>no</a>`
- Bouldering is possible, allthough there are only a few routes corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:climbing:boulder' target='_blank'>climbing:boulder</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:climbing:boulder%3Dlimited' target='_blank'>limited</a>`
- There are {climbing:boulder} boulder routes corresponds with `climbing:boulder~.+`
- This option cannot be chosen as answer
### sportclimbing
The question is Is sport climbing possible here on fixed anchors?
- Sport climbing is possible here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:climbing:sport' target='_blank'>climbing:sport</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:climbing:sport%3Dyes' target='_blank'>yes</a>`
- Sport climbing is not possible here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:climbing:sport' target='_blank'>climbing:sport</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:climbing:sport%3Dno' target='_blank'>no</a>`
- There are {climbing:sport} sport climbing routes corresponds with `climbing:sport~.+`
- This option cannot be chosen as answer
### max_bolts
The question is How many bolts do routes in {title()} have at most?
This rendering asks information about the property [climbing:bolts:max](https://wiki.openstreetmap.org/wiki/Key:climbing:bolts:max)
This is rendered with The sport climbing routes here have at most {climbing:bolts:max} bolts.<div class='subtle'>This is without relays and indicates how much quickdraws a climber needs</div>
Only visible if `climbing:sport=yes` is shown
### Speed climbing?

View file

@ -27,6 +27,7 @@ Crossings for pedestrians and cyclists
- [blind_osm](https://mapcomplete.osm.be/blind_osm)
- [cycle_infra](https://mapcomplete.osm.be/cycle_infra)
- [kerbs_and_crossings](https://mapcomplete.osm.be/kerbs_and_crossings)
- [personal](https://mapcomplete.osm.be/personal)
@ -69,12 +70,28 @@ attribute | type | values which are supported by this layer
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/crossing:island#values) [crossing:island](https://wiki.openstreetmap.org/wiki/Key:crossing:island) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:crossing:island%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:crossing:island%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/tactile_paving#values) [tactile_paving](https://wiki.openstreetmap.org/wiki/Key:tactile_paving) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:tactile_paving%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:tactile_paving%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/button_operated#values) [button_operated](https://wiki.openstreetmap.org/wiki/Key:button_operated) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:button_operated%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:button_operated%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/traffic_signals:sound#values) [traffic_signals:sound](https://wiki.openstreetmap.org/wiki/Key:traffic_signals:sound) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:sound%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:sound%3Dno) [locate](https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:sound%3Dlocate) [walk](https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:sound%3Dwalk)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/traffic_signals:vibration#values) [traffic_signals:vibration](https://wiki.openstreetmap.org/wiki/Key:traffic_signals:vibration) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:vibration%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:vibration%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/traffic_signals:arrow#values) [traffic_signals:arrow](https://wiki.openstreetmap.org/wiki/Key:traffic_signals:arrow) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:arrow%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:arrow%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/traffic_signals:minimap#values) [traffic_signals:minimap](https://wiki.openstreetmap.org/wiki/Key:traffic_signals:minimap) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:minimap%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:minimap%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/red_turn:right:bicycle#values) [red_turn:right:bicycle](https://wiki.openstreetmap.org/wiki/Key:red_turn:right:bicycle) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:red_turn:right:bicycle%3Dyes) [yes](https://wiki.openstreetmap.org/wiki/Tag:red_turn:right:bicycle%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:red_turn:right:bicycle%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/red_turn:straight:bicycle#values) [red_turn:straight:bicycle](https://wiki.openstreetmap.org/wiki/Key:red_turn:straight:bicycle) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:red_turn:straight:bicycle%3Dyes) [yes](https://wiki.openstreetmap.org/wiki/Tag:red_turn:straight:bicycle%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:red_turn:straight:bicycle%3Dno)
### images
This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata`
This tagrendering has no question and is thus read-only
### crossing-type
@ -188,6 +205,80 @@ Only visible if `highway=traffic_signals|crossing=traffic_signals` is shown
### crossing-sound
The question is Does this traffic light have sound signals to aid crossing?
- This traffic light has sound signals to help crossing, both for finding the crossing and for crossing. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_signals:sound' target='_blank'>traffic_signals:sound</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:sound%3Dyes' target='_blank'>yes</a>`
- This traffic light does not have sound signals to help crossing. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_signals:sound' target='_blank'>traffic_signals:sound</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:sound%3Dno' target='_blank'>no</a>`
- This traffic light has a sound signal to help locate the pole, but no signal to sign that it is safe to cross. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_signals:sound' target='_blank'>traffic_signals:sound</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:sound%3Dlocate' target='_blank'>locate</a>`
- This traffic light has a sound signal to sign that it is safe to cross, but no signal to help locate the pole. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_signals:sound' target='_blank'>traffic_signals:sound</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:sound%3Dwalk' target='_blank'>walk</a>`
Only visible if `crossing=traffic_signals` is shown
### crossing-vibration
The question is Does this traffic light have vibration signals to aid crossing? (usually located at the bottom of the crossing button)
- The button for this traffic light has a vibration signal to indicate that it is safe to cross. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_signals:vibration' target='_blank'>traffic_signals:vibration</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:vibration%3Dyes' target='_blank'>yes</a>`
- The button for this traffic light does not have a vibration signal to indicate that it is safe to cross. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_signals:vibration' target='_blank'>traffic_signals:vibration</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:vibration%3Dno' target='_blank'>no</a>`
Only visible if `crossing=traffic_signals&button_operated=yes` is shown
### crossing-arrow
The question is Does this traffic light have an arrow pointing in the direction of crossing?
- This traffic light has an arrow pointing in the direction of crossing. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_signals:arrow' target='_blank'>traffic_signals:arrow</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:arrow%3Dyes' target='_blank'>yes</a>`
- This traffic light does <b>not</b> have an arrow pointing in the direction of crossing. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_signals:arrow' target='_blank'>traffic_signals:arrow</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:arrow%3Dno' target='_blank'>no</a>`
Only visible if `crossing=traffic_signals` is shown
### crossing-minimap
The question is Does this traffic light have a tactile map showing the layout of the crossing?
- This traffic light has a tactile map showing the layout of the crossing. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_signals:minimap' target='_blank'>traffic_signals:minimap</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:minimap%3Dyes' target='_blank'>yes</a>`
- This traffic light does <b>not</b> have a tactile map showing the layout of the crossing. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_signals:minimap' target='_blank'>traffic_signals:minimap</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_signals:minimap%3Dno' target='_blank'>no</a>`
Only visible if `crossing=traffic_signals` is shown
### crossing-right-turn-through-red

View file

@ -29,6 +29,7 @@ All infrastructure that someone can cycle over, accompanied with questions about
- [blind_osm](https://mapcomplete.osm.be/blind_osm)
- [cycle_infra](https://mapcomplete.osm.be/cycle_infra)
- [kerbs_and_crossings](https://mapcomplete.osm.be/kerbs_and_crossings)
- [onwheels](https://mapcomplete.osm.be/onwheels)

View file

@ -184,7 +184,7 @@ The question is Please give some explanation on where the defibrillator can be
This rendering asks information about the property [defibrillator:location](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location)
This is rendered with <i>Extra information about the location (in the local languagel):</i><br/>{defibrillator:location}
This is rendered with <i>Extra information about the location (in the local language):</i><br/>{defibrillator:location}

File diff suppressed because one or more lines are too long

View file

@ -25,6 +25,7 @@ This layer show elevators and asks for operational status and elevator dimension
- [blind_osm](https://mapcomplete.osm.be/blind_osm)
- [indoors](https://mapcomplete.osm.be/indoors)
- [onwheels](https://mapcomplete.osm.be/onwheels)
- [personal](https://mapcomplete.osm.be/personal)

View file

@ -5,7 +5,7 @@
<img src='https://mapcomplete.osm.be/./assets/themes/cyclestreets/F111.svg' height="100px">
A cyclestreet is a street where motorized traffic is not allowed to overtake a cyclist
@ -39,10 +39,10 @@ Elements must have the all of following tags to be shown on this layer:
- <a href='https://wiki.openstreetmap.org/wiki/Key:cyclestreet' target='_blank'>cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes' target='_blank'>yes</a>
- <a href='https://wiki.openstreetmap.org/wiki/Key:cyclestreet' target='_blank'>cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes' target='_blank'>yes</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:bicycle_road' target='_blank'>bicycle_road</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bicycle_road%3Dyes' target='_blank'>yes</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22cyclestreet%22%3D%22yes%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22bicycle_road%22%3D%22yes%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22cyclestreet%22%3D%22yes%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
@ -59,7 +59,7 @@ this quick overview is incomplete
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/cyclestreet#values) [cyclestreet](https://wiki.openstreetmap.org/wiki/Key:cyclestreet) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes) [yes](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes) [](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3D) [](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3D)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/traffic_sign#values) [traffic_sign](https://wiki.openstreetmap.org/wiki/Key:traffic_sign) | Multiple choice | [DE:244.1,1020-30](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1020-30) [DE:244.1,1022-12,1024-10](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12,1024-10) [DE:244.1,1022-12](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12) [DE:244.1,1024-10](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1024-10) [DE:244.1](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/cyclestreet:start_date#values) [cyclestreet:start_date](https://wiki.openstreetmap.org/wiki/Key:cyclestreet:start_date) | [date](../SpecialInputElements.md#date) |
@ -88,13 +88,38 @@ The question is Is the street <b>{name}</b> a cyclestreet?
- This street is a cyclestreet (and has a speed limit of 30 km/h) corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:cyclestreet' target='_blank'>cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes' target='_blank'>yes</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:maxspeed' target='_blank'>maxspeed</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:maxspeed%3D30' target='_blank'>30</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:overtaking:motor_vehicle' target='_blank'>overtaking:motor_vehicle</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:overtaking:motor_vehicle%3Dno' target='_blank'>no</a>`
- This street is a bicycle road corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:bicycle_road' target='_blank'>bicycle_road</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bicycle_road%3Dyes' target='_blank'>yes</a>`
- This option cannot be chosen as answer
- This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later) corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:bicycle_road' target='_blank'>bicycle_road</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bicycle_road%3Dyes' target='_blank'>yes</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:maxspeed' target='_blank'>maxspeed</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:maxspeed%3D30' target='_blank'>30</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:source:maxspeed' target='_blank'>source:maxspeed</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:source:maxspeed%3DDE:bicycle_road' target='_blank'>DE:bicycle_road</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:vehicle' target='_blank'>vehicle</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Dno' target='_blank'>no</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:bicycle' target='_blank'>bicycle</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bicycle%3Ddesignated' target='_blank'>designated</a>`
- This street is a cyclestreet corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:cyclestreet' target='_blank'>cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes' target='_blank'>yes</a>`
- This street will become a cyclestreet soon corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:proposed:cyclestreet' target='_blank'>proposed:cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:proposed:cyclestreet%3Dyes' target='_blank'>yes</a>`
- This street will become a bicycle road soon corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:proposed:bicycle_road' target='_blank'>proposed:bicycle_road</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:proposed:bicycle_road%3Dyes' target='_blank'>yes</a>`
- This street is not a cyclestreet corresponds with ``
### supplementary_sign
The question is What sign does this bicycle road have?
- Residents allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1020-30' target='_blank'>DE:244.1,1020-30</a>`
- Motor vehicles allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12,1024-10' target='_blank'>DE:244.1,1022-12,1024-10</a>`
- Motorcycles allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12' target='_blank'>DE:244.1,1022-12</a>`
- Cars allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1024-10' target='_blank'>DE:244.1,1024-10</a>`
- There are no supplementary signs at this bicycle road. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1' target='_blank'>DE:244.1</a>`
Only visible if `bicycle_road=yes&_country=de` is shown
### future_cyclestreet

View file

@ -0,0 +1,232 @@
fitness_centre
================
<img src='https://mapcomplete.osm.be/circle:white;./assets/layers/fitness_centre/gym.svg' height="100px">
Layer showing fitness centres
- This layer is shown at zoomlevel **12** and higher
#### Themes using this layer
- [personal](https://mapcomplete.osm.be/personal)
- [sports](https://mapcomplete.osm.be/sports)
Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
- <a href='https://wiki.openstreetmap.org/wiki/Key:leisure' target='_blank'>leisure</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:leisure%3Dfitness_centre' target='_blank'>fitness_centre</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22leisure%22%3D%22fitness_centre%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
Supported attributes
----------------------
Warning:
this quick overview is incomplete
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/wheelchair#values) [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated) [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [limited](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1)
### name
The question is What is the name of this fitness centre?
This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with This fitness centre is called {name}
- This fitness centre has no name corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:noname' target='_blank'>noname</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:noname%3Dyes' target='_blank'>yes</a>`
### images
This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata`
This tagrendering has no question and is thus read-only
### phone
The question is What is the phone number of {title()}?
This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
This is rendered with <a href='tel:{phone}'>{phone}</a>
- <a href='tel:{contact:phone}'>{contact:phone}</a> corresponds with `contact:phone~.+`
- This option cannot be chosen as answer
### email
The question is What is the email address of {title()}?
This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
This is rendered with <a href='mailto:{email}' target='_blank'>{email}</a>
- <a href='mailto:{contact:email}' target='_blank'>{contact:email}</a> corresponds with `contact:email~.+`
- This option cannot be chosen as answer
### website
The question is What is the website of {title()}?
This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
This is rendered with <a href='{website}' target='_blank'>{website}</a>
- <a href='{contact:website}' target='_blank'>{contact:website}</a> corresponds with `contact:website~.+`
- This option cannot be chosen as answer
### opening_hours
The question is What are the opening hours of {title()}?
This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with <h3>Opening hours</h3>{opening_hours_table(opening_hours)}
### wheelchair-access
The question is Is this place accessible with a wheelchair?
- This place is specially adapted for wheelchair users corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:wheelchair' target='_blank'>wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated' target='_blank'>designated</a>`
- This place is easily reachable with a wheelchair corresponds 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>`
- It is possible to reach this place in a wheelchair, but it is not easy corresponds 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 place is not reachable with a wheelchair corresponds 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>`
### level
The question is On what level is this feature located?
This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level)
This is rendered with Located on the {level}th floor
- Located underground corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:location' target='_blank'>location</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:location%3Dunderground' target='_blank'>underground</a>`
- This option cannot be chosen as answer
- Located on the ground floor corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:level' target='_blank'>level</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:level%3D0' target='_blank'>0</a>`
- Located on the ground floor corresponds with ``
- This option cannot be chosen as answer
- Located on the first floor corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:level' target='_blank'>level</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:level%3D1' target='_blank'>1</a>`
- Located on the first basement level corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:level' target='_blank'>level</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:level%3D-1' target='_blank'>-1</a>`
### reviews
Shows the reviews module (including the possibility to leave a review)
This tagrendering has no question and is thus read-only
This document is autogenerated from [assets/layers/fitness_centre/fitness_centre.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/fitness_centre/fitness_centre.json)

View file

@ -0,0 +1,155 @@
fitness_station
=================
<img src='https://mapcomplete.osm.be/circle:white;./assets/layers/fitness_station/fitness.svg' height="100px">
Find a fitness station near you, and add missing ones.
- This layer is shown at zoomlevel **12** and higher
#### Themes using this layer
- [personal](https://mapcomplete.osm.be/personal)
- [sports](https://mapcomplete.osm.be/sports)
Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
- <a href='https://wiki.openstreetmap.org/wiki/Key:leisure' target='_blank'>leisure</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:leisure%3Dfitness_station' target='_blank'>fitness_station</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22leisure%22%3D%22fitness_station%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
Supported attributes
----------------------
Warning:
this quick overview is incomplete
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/fitness_station#values) [fitness_station](https://wiki.openstreetmap.org/wiki/Key:fitness_station) | Multiple choice | [horizontal_bar](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dhorizontal_bar) [sign](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dsign) [sit-up](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dsit-up) [push-up](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dpush-up) [stretch_bars](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dstretch_bars) [hyperextension](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dhyperextension) [rings](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Drings) [horizontal_ladder](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dhorizontal_ladder) [wall_bars](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dwall_bars) [slalom](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dslalom) [stepping_stones](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dstepping_stones) [leapfrog](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dleapfrog) [beam_jump](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dbeam_jump) [hurdling](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dhurdling) [wall](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dwall) [balance_beam](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dbalance_beam) [log_lifting](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dlog_lifting) [captains_chair](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dcaptains_chair) [box](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dbox) [battling_ropes](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dbattling_ropes) [excercise_bike](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dexcercise_bike) [elliptical_trainer](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Delliptical_trainer) [air_walker](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dair_walker) [rower](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Drower) [slackline](https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dslackline)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) |
### name
The question is What is the name of this fitness station?
This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with This fitness station is called {name}
- This fitness station doesn't have a name corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:noname' target='_blank'>noname</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:noname%3Dyes' target='_blank'>yes</a>`
### type
The question is What kind of equipment does this fitness station have?
- This fitness station has a horizontal bar, high enough for pull-ups. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dhorizontal_bar' target='_blank'>horizontal_bar</a>`
- This fitness station has a sign with instructions for a specific exercise. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dsign' target='_blank'>sign</a>`
- This fitness station has a facility for sit-ups. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dsit-up' target='_blank'>sit-up</a>`
- This fitness station has a facility for push-ups. Usually consists of one or more low horizontal bars. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dpush-up' target='_blank'>push-up</a>`
- This fitness station has bars for stretching. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dstretch_bars' target='_blank'>stretch_bars</a>`
- This fitness station has a station for making hyperextensions. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dhyperextension' target='_blank'>hyperextension</a>`
- This fitness station has rings for gymnastic exercises. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Drings' target='_blank'>rings</a>`
- This fitness station has a horizontal ladder, also known as monkey bars. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dhorizontal_ladder' target='_blank'>horizontal_ladder</a>`
- This fitness station has wall bars to climb on. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dwall_bars' target='_blank'>wall_bars</a>`
- This fitness station has posts for performing slalom exercises. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dslalom' target='_blank'>slalom</a>`
- This fitness station has stepping stones. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dstepping_stones' target='_blank'>stepping_stones</a>`
- This fitness station has cones for performing leapfrog jumps. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dleapfrog' target='_blank'>leapfrog</a>`
- This fitness station has beams to jump over. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dbeam_jump' target='_blank'>beam_jump</a>`
- This fitness station has hurdles to cross. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dhurdling' target='_blank'>hurdling</a>`
- This fitness station has a wall to climb on. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dwall' target='_blank'>wall</a>`
- This fitness station has a balance beam. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dbalance_beam' target='_blank'>balance_beam</a>`
- This fitness station has a log with a handle on the end to lift. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dlog_lifting' target='_blank'>log_lifting</a>`
- This fitness station has a chair with only elbow supports and a rear (without seat), for performing leg raises. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dcaptains_chair' target='_blank'>captains_chair</a>`
- This fitness station has a box that can be used for jumping. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dbox' target='_blank'>box</a>`
- This fitness station has battling ropes. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dbattling_ropes' target='_blank'>battling_ropes</a>`
- This fitness station has a stationary bicycle. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dexcercise_bike' target='_blank'>excercise_bike</a>`
- This fitness station has a cross-trainer. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Delliptical_trainer' target='_blank'>elliptical_trainer</a>`
- This fitness station has an air walker. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dair_walker' target='_blank'>air_walker</a>`
- This fitness station has a rower. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Drower' target='_blank'>rower</a>`
- This fitness station has a slackline. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:fitness_station' target='_blank'>fitness_station</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:fitness_station%3Dslackline' target='_blank'>slackline</a>`
### operator
The question is Who maintains this fitness station?
This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
This is rendered with The fitness station is maintained by {operator}.
### opening_hours
The question is What are the opening hours of {title()}?
This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with <h3>Opening hours</h3>{opening_hours_table(opening_hours)}
This document is autogenerated from [assets/layers/fitness_station/fitness_station.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/fitness_station/fitness_station.json)

View file

@ -28,6 +28,7 @@ A layer showing kerbs.
- [blind_osm](https://mapcomplete.osm.be/blind_osm)
- [kerbs_and_crossings](https://mapcomplete.osm.be/kerbs_and_crossings)
- [onwheels](https://mapcomplete.osm.be/onwheels)
- [personal](https://mapcomplete.osm.be/personal)
@ -66,7 +67,7 @@ attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/kerb#values) [kerb](https://wiki.openstreetmap.org/wiki/Key:kerb) | Multiple choice | [raised](https://wiki.openstreetmap.org/wiki/Tag:kerb%3Draised) [lowered](https://wiki.openstreetmap.org/wiki/Tag:kerb%3Dlowered) [flush](https://wiki.openstreetmap.org/wiki/Tag:kerb%3Dflush)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/tactile_paving#values) [tactile_paving](https://wiki.openstreetmap.org/wiki/Key:tactile_paving) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:tactile_paving%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:tactile_paving%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/kerb:height#values) [kerb:height](https://wiki.openstreetmap.org/wiki/Key:kerb:height) | [pnat](../SpecialInputElements.md#pnat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/kerb:height#values) [kerb:height](https://wiki.openstreetmap.org/wiki/Key:kerb:height) | [pnat](../SpecialInputElements.md#pnat) | [0](https://wiki.openstreetmap.org/wiki/Tag:kerb:height%3D0)
@ -138,4 +139,9 @@ This is rendered with Kerb height: {kerb:height}
- This kerb is flush and is lower than 1cm. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:kerb:height' target='_blank'>kerb:height</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:kerb:height%3D0' target='_blank'>0</a>`
This document is autogenerated from [assets/layers/kerbs/kerbs.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/kerbs/kerbs.json)

View file

@ -15,6 +15,7 @@ Shows the allowed speed for every road
- This layer is shown at zoomlevel **16** and higher
- This layer is needed as dependency for layer [speed_camera](#speed_camera)

View file

@ -27,6 +27,7 @@ A layer showing the OpenStreetMap Communities
- [osm_community_index](https://mapcomplete.osm.be/osm_community_index)
- [personal](https://mapcomplete.osm.be/personal)

View file

@ -76,7 +76,7 @@ The question is What kind of parking space is this?
- This is a normal parking space corresponds with ``
- This is a normal parking space. corresponds with ``
- This option cannot be chosen as answer
- This is a normal parking space. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:parking_space' target='_blank'>parking_space</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:parking_space%3Dnormal' target='_blank'>normal</a>`
- This is a disabled parking space. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:parking_space' target='_blank'>parking_space</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:parking_space%3Ddisabled' target='_blank'>disabled</a>`

View file

@ -60,7 +60,14 @@ this quick overview is incomplete
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [24/7](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/post_office#values) [post_office](https://wiki.openstreetmap.org/wiki/Key:post_office) | Multiple choice | [post_partner](https://wiki.openstreetmap.org/wiki/Tag:post_office%3Dpost_partner) [](https://wiki.openstreetmap.org/wiki/Tag:post_office%3D)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/post_office:brand#values) [post_office:brand](https://wiki.openstreetmap.org/wiki/Key:post_office:brand) | [string](../SpecialInputElements.md#string) | [DHL](https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DDHL) [DPD](https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DDPD) [GLS](https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DGLS) [UPS](https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DUPS) [DHL Paketshop](https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DDHL Paketshop) [Hermes PaketShop](https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DHermes PaketShop) [PostNL](https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DPostNL) [bpost](https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3Dbpost)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/post_office:letter_from#values) [post_office:letter_from](https://wiki.openstreetmap.org/wiki/Key:post_office:letter_from) | [string](../SpecialInputElements.md#string) | [yes](https://wiki.openstreetmap.org/wiki/Tag:post_office:letter_from%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:post_office:letter_from%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/post_office:parcel_from#values) [post_office:parcel_from](https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_from) | [string](../SpecialInputElements.md#string) | [yes](https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_from%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_from%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/post_office:parcel_pickup#values) [post_office:parcel_pickup](https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_pickup) | [string](../SpecialInputElements.md#string) | [yes](https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_pickup%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_pickup%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/post_office:parcel_to#values) [post_office:parcel_to](https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_to) | [string](../SpecialInputElements.md#string) | [yes](https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_to%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_to%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/post_office:stamps#values) [post_office:stamps](https://wiki.openstreetmap.org/wiki/Key:post_office:stamps) | [string](../SpecialInputElements.md#string) | [yes](https://wiki.openstreetmap.org/wiki/Tag:post_office:stamps%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:post_office:stamps%3Dno)
@ -87,7 +94,7 @@ This tagrendering has no question and is thus read-only
### OH
### opening_hours
@ -95,13 +102,154 @@ The question is What are the opening hours for this post office?
This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with Opening Hours: {opening_hours_table()}
This is rendered with <h3>Opening hours</h3>{opening_hours_table(opening_hours)}
- 24/7 opened (including holidays) corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:opening_hours' target='_blank'>opening_hours</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7' target='_blank'>24/7</a>`
### post_partner
The question is Is this a post partner?
- This shop is a post partner corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office' target='_blank'>post_office</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office%3Dpost_partner' target='_blank'>post_partner</a>`
- This shop is not a post partner corresponds with ``
Only visible if `post_office=post_partner` is shown
### partner-brand
The question is For which brand does this location offer services?
This rendering asks information about the property [post_office:brand](https://wiki.openstreetmap.org/wiki/Key:post_office:brand)
This is rendered with This location offers services for {post_office:brand}
- This location offers services for DHL corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:brand' target='_blank'>post_office:brand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DDHL' target='_blank'>DHL</a>`
- This location offers services for DPD corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:brand' target='_blank'>post_office:brand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DDPD' target='_blank'>DPD</a>`
- This location offers services for GLS corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:brand' target='_blank'>post_office:brand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DGLS' target='_blank'>GLS</a>`
- This location offers services for UPS corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:brand' target='_blank'>post_office:brand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DUPS' target='_blank'>UPS</a>`
- This location is a DHL Paketshop corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:brand' target='_blank'>post_office:brand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DDHL Paketshop' target='_blank'>DHL Paketshop</a>`
- This location is a Hermes PaketShop corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:brand' target='_blank'>post_office:brand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DHermes PaketShop' target='_blank'>Hermes PaketShop</a>`
- This location is a PostNL-point corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:brand' target='_blank'>post_office:brand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3DPostNL' target='_blank'>PostNL</a>`
- This location offers services for bpost corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:brand' target='_blank'>post_office:brand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:brand%3Dbpost' target='_blank'>bpost</a>`
Only visible if `post_office=post_partner` is shown
### letter-from
The question is Can you post a letter here?
This rendering asks information about the property [post_office:letter_from](https://wiki.openstreetmap.org/wiki/Key:post_office:letter_from)
This is rendered with You can post letters with these companies: {post_office:letter_from}
- You can post letters here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:letter_from' target='_blank'>post_office:letter_from</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:letter_from%3Dyes' target='_blank'>yes</a>`
- You can't post letters here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:letter_from' target='_blank'>post_office:letter_from</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:letter_from%3Dno' target='_blank'>no</a>`
### parcel-from
The question is Can you send a parcel here?
This rendering asks information about the property [post_office:parcel_from](https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_from)
This is rendered with You can post parcels with these companies: {post_office:parcel_from}
- You can send parcels here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_from' target='_blank'>post_office:parcel_from</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_from%3Dyes' target='_blank'>yes</a>`
- You can't send parcels here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_from' target='_blank'>post_office:parcel_from</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_from%3Dno' target='_blank'>no</a>`
### parcel-pickup
The question is Can you pick up missed parcels here?
This rendering asks information about the property [post_office:parcel_pickup](https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_pickup)
This is rendered with You can pick up parcels from these companies: {post_office:parcel_pickup}
- You can pick up missed parcels here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_pickup' target='_blank'>post_office:parcel_pickup</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_pickup%3Dyes' target='_blank'>yes</a>`
- You can't pick up missed parcels here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_pickup' target='_blank'>post_office:parcel_pickup</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_pickup%3Dno' target='_blank'>no</a>`
### parcel-to
The question is Can you send parcels to here for pickup?
This rendering asks information about the property [post_office:parcel_to](https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_to)
This is rendered with You can send parcels to here for pickup with these companies: {post_office:parcel_to}
- You can send parcels to here for pickup corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_to' target='_blank'>post_office:parcel_to</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_to%3Dyes' target='_blank'>yes</a>`
- You can't send parcels to here for pickup corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:parcel_to' target='_blank'>post_office:parcel_to</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:parcel_to%3Dno' target='_blank'>no</a>`
### stamps
The question is Can you buy stamps here?
This rendering asks information about the property [post_office:stamps](https://wiki.openstreetmap.org/wiki/Key:post_office:stamps)
This is rendered with You can buy stamps from companies: {post_office:stamps}
- You can buy stamps here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:stamps' target='_blank'>post_office:stamps</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:stamps%3Dyes' target='_blank'>yes</a>`
- You can't buy stamps here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:post_office:stamps' target='_blank'>post_office:stamps</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:post_office:stamps%3Dno' target='_blank'>no</a>`
This document is autogenerated from [assets/layers/postoffices/postoffices.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/postoffices/postoffices.json)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,93 @@
speed_camera
==============
<img src='https://mapcomplete.osm.be/square:white;./assets/layers/speed_camera/speed_camera.svg' height="100px">
Layer showing speed cameras
- This layer is shown at zoomlevel **12** and higher
- This layer will automatically load [maxspeed](./maxspeed.md) into the layout as it depends on it: a preset snaps to this layer (presets[0])
#### Themes using this layer
- [maxspeed](https://mapcomplete.osm.be/maxspeed)
- [personal](https://mapcomplete.osm.be/personal)
Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
- <a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dspeed_camera' target='_blank'>speed_camera</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22highway%22%3D%22speed_camera%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
Supported attributes
----------------------
Warning:
this quick overview is incomplete
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/maxspeed#values) [maxspeed](https://wiki.openstreetmap.org/wiki/Key:maxspeed) | [pnat](../SpecialInputElements.md#pnat) |
### maxspeed
The question is What is the maximum speed allowed at this speed camera?
This rendering asks information about the property [maxspeed](https://wiki.openstreetmap.org/wiki/Key:maxspeed)
This is rendered with The maximum speed allowed is {canonical(maxspeed)}
### ref
This tagrendering has no question and is thus read-only
Only visible if `ref~.+` is shown
This document is autogenerated from [assets/layers/speed_camera/speed_camera.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/speed_camera/speed_camera.json)

View file

@ -0,0 +1,95 @@
speed_display
===============
<img src='https://mapcomplete.osm.be/./assets/layers/speed_display/speed_display.svg' height="100px">
Layer showing speed displays that alert drivers of their speed.
- This layer is shown at zoomlevel **12** and higher
#### Themes using this layer
- [maxspeed](https://mapcomplete.osm.be/maxspeed)
- [personal](https://mapcomplete.osm.be/personal)
Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
- <a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dspeed_display' target='_blank'>speed_display</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22highway%22%3D%22speed_display%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
Supported attributes
----------------------
Warning:
this quick overview is incomplete
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/maxspeed#values) [maxspeed](https://wiki.openstreetmap.org/wiki/Key:maxspeed) | [pnat](../SpecialInputElements.md#pnat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/inscription#values) [inscription](https://wiki.openstreetmap.org/wiki/Key:inscription) | [string](../SpecialInputElements.md#string) |
### maxspeed
The question is What is the maximum speed allowed at this speed display?
This rendering asks information about the property [maxspeed](https://wiki.openstreetmap.org/wiki/Key:maxspeed)
This is rendered with The maximum speed allowed at this speed display is {canonical(maxspeed)}
### inscription
The question is What is the text on this speed display?
This rendering asks information about the property [inscription](https://wiki.openstreetmap.org/wiki/Key:inscription)
This is rendered with The text on this speed display is {inscription}
This document is autogenerated from [assets/layers/speed_display/speed_display.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/speed_display/speed_display.json)

View file

@ -27,6 +27,7 @@ A sport pitch
- [personal](https://mapcomplete.osm.be/personal)
- [sport_pitches](https://mapcomplete.osm.be/sport_pitches)
- [sports](https://mapcomplete.osm.be/sports)

View file

@ -0,0 +1,174 @@
sports_centre
===============
<img src='https://mapcomplete.osm.be/circle:white;./assets/layers/sports_centre/sports_centre.svg' height="100px">
Indoor and outdoor sports centres can be found on this layer
- This layer is shown at zoomlevel **12** and higher
#### Themes using this layer
- [personal](https://mapcomplete.osm.be/personal)
- [sports](https://mapcomplete.osm.be/sports)
Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
- <a href='https://wiki.openstreetmap.org/wiki/Key:leisure' target='_blank'>leisure</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:leisure%3Dsports_centre' target='_blank'>sports_centre</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22leisure%22%3D%22sports_centre%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
Supported attributes
----------------------
Warning:
this quick overview is incomplete
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/wheelchair#values) [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated) [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [limited](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno)
### images
This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata`
This tagrendering has no question and is thus read-only
### opening_hours
The question is What are the opening hours of {title()}?
This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with <h3>Opening hours</h3>{opening_hours_table(opening_hours)}
### phone
The question is What is the phone number of {title()}?
This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
This is rendered with <a href='tel:{phone}'>{phone}</a>
- <a href='tel:{contact:phone}'>{contact:phone}</a> corresponds with `contact:phone~.+`
- This option cannot be chosen as answer
### website
The question is What is the website of {title()}?
This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
This is rendered with <a href='{website}' target='_blank'>{website}</a>
- <a href='{contact:website}' target='_blank'>{contact:website}</a> corresponds with `contact:website~.+`
- This option cannot be chosen as answer
### email
The question is What is the email address of {title()}?
This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
This is rendered with <a href='mailto:{email}' target='_blank'>{email}</a>
- <a href='mailto:{contact:email}' target='_blank'>{contact:email}</a> corresponds with `contact:email~.+`
- This option cannot be chosen as answer
### wheelchair-access
The question is Is this place accessible with a wheelchair?
- This place is specially adapted for wheelchair users corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:wheelchair' target='_blank'>wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated' target='_blank'>designated</a>`
- This place is easily reachable with a wheelchair corresponds 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>`
- It is possible to reach this place in a wheelchair, but it is not easy corresponds 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 place is not reachable with a wheelchair corresponds 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 document is autogenerated from [assets/layers/sports_centre/sports_centre.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/sports_centre/sports_centre.json)

124
Docs/Layers/stairs.md Normal file
View file

@ -0,0 +1,124 @@
stairs
========
Layer showing stairs and escalators
- This layer is shown at zoomlevel **17** and higher
- Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
#### Themes using this layer
- [blind_osm](https://mapcomplete.osm.be/blind_osm)
- [personal](https://mapcomplete.osm.be/personal)
Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
- <a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dsteps' target='_blank'>steps</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22highway%22%3D%22steps%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
Supported attributes
----------------------
Warning:
this quick overview is incomplete
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/handrail#values) [handrail](https://wiki.openstreetmap.org/wiki/Key:handrail) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:handrail%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:handrail%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/conveying#values) [conveying](https://wiki.openstreetmap.org/wiki/Key:conveying) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:conveying%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:conveying%3Dno)
### handrail
The question is Does this stair have a handrail?
- These stairs have a handrail corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:handrail' target='_blank'>handrail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:handrail%3Dyes' target='_blank'>yes</a>`
- These stairs do <b>not</b> have a handrail corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:handrail' target='_blank'>handrail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:handrail%3Dno' target='_blank'>no</a>`
### ramp
The question is Is there a ramp at these stairs?
- There is a ramp for bicycles here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:ramp:bicycle' target='_blank'>ramp:bicycle</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:ramp:bicycle%3Dyes' target='_blank'>yes</a>`
- Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:ramp:bicycle' target='_blank'>ramp:bicycle</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:ramp:bicycle%3Dno' target='_blank'>no</a>
- There is a ramp for wheelchairs here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:ramp:wheelchair' target='_blank'>ramp:wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:ramp:wheelchair%3Dyes' target='_blank'>yes</a>`
- Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:ramp:wheelchair' target='_blank'>ramp:wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:ramp:wheelchair%3Dno' target='_blank'>no</a>
- There is ramp for wheelchairs here, but it is shown separately on the map corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:ramp' target='_blank'>ramp</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:ramp%3Dseparate' target='_blank'>separate</a>`
- This option cannot be chosen as answer
- There is a ramp for strollers here corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:ramp:stroller' target='_blank'>ramp:stroller</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:ramp:stroller%3Dyes' target='_blank'>yes</a>`
- Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:ramp:stroller' target='_blank'>ramp:stroller</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:ramp:stroller%3Dno' target='_blank'>no</a>
- There is no ramp at these stairs corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:ramp' target='_blank'>ramp</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:ramp%3Dno' target='_blank'>no</a>`
- Unselecting this answer will add
### conveying
This tagrendering has no question and is thus read-only
- This is an escalator corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:conveying' target='_blank'>conveying</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:conveying%3Dyes' target='_blank'>yes</a>`
- This is not an escalator corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:conveying' target='_blank'>conveying</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:conveying%3Dno' target='_blank'>no</a>`
This document is autogenerated from [assets/layers/stairs/stairs.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/stairs/stairs.json)

View file

@ -62,8 +62,6 @@ attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/amenity#values) [amenity](https://wiki.openstreetmap.org/wiki/Key:amenity) | Multiple choice | [college](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dcollege) [university](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Duniversity)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/isced:2011:level#values) [isced:2011:level](https://wiki.openstreetmap.org/wiki/Key:isced:2011:level) | Multiple choice | [bachelor](https://wiki.openstreetmap.org/wiki/Tag:isced:2011:level%3Dbachelor) [master](https://wiki.openstreetmap.org/wiki/Tag:isced:2011:level%3Dmaster) [doctorate](https://wiki.openstreetmap.org/wiki/Tag:isced:2011:level%3Ddoctorate)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/capacity#values) [capacity](https://wiki.openstreetmap.org/wiki/Key:capacity) | [pnat](../SpecialInputElements.md#pnat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/school:gender#values) [school:gender](https://wiki.openstreetmap.org/wiki/Key:school:gender) | Multiple choice | [mixed](https://wiki.openstreetmap.org/wiki/Tag:school:gender%3Dmixed) [separated](https://wiki.openstreetmap.org/wiki/Tag:school:gender%3Dseparated) [male](https://wiki.openstreetmap.org/wiki/Tag:school:gender%3Dmale) [female](https://wiki.openstreetmap.org/wiki/Tag:school:gender%3Dfemale)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
@ -106,38 +104,6 @@ Only visible if `amenity=university` is shown
### capacity
The question is How much students can at most enroll in this school?
This rendering asks information about the property [capacity](https://wiki.openstreetmap.org/wiki/Key:capacity)
This is rendered with This school can enroll at most {capacity} students
### gender
The question is Which genders can enroll at this school?
- Both boys and girls can enroll here and have classes together corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:school:gender' target='_blank'>school:gender</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:school:gender%3Dmixed' target='_blank'>mixed</a>`
- Both boys and girls can enroll here but they are separated (e.g. they have lessons in different classrooms or at different times) corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:school:gender' target='_blank'>school:gender</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:school:gender%3Dseparated' target='_blank'>separated</a>`
- This is a boys only-school corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:school:gender' target='_blank'>school:gender</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:school:gender%3Dmale' target='_blank'>male</a>`
- This is a girls-only school corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:school:gender' target='_blank'>school:gender</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:school:gender%3Dfemale' target='_blank'>female</a>`
### website

View file

@ -5,7 +5,7 @@
<img src='https://mapcomplete.osm.be/./assets/themes/cyclestreets/F113.svg' height="100px">
This street will become a cyclestreet soon
@ -39,10 +39,10 @@ Elements must have the all of following tags to be shown on this layer:
- <a href='https://wiki.openstreetmap.org/wiki/Key:proposed:cyclestreet' target='_blank'>proposed:cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:proposed:cyclestreet%3Dyes' target='_blank'>yes</a>
- <a href='https://wiki.openstreetmap.org/wiki/Key:proposed:cyclestreet' target='_blank'>proposed:cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:proposed:cyclestreet%3Dyes' target='_blank'>yes</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:proposed:bicycle_road' target='_blank'>proposed:bicycle_road</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:proposed:bicycle_road%3Dyes' target='_blank'>yes</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22proposed%3Acyclestreet%22%3D%22yes%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22proposed%3Abicycle_road%22%3D%22yes%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22proposed%3Acyclestreet%22%3D%22yes%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
@ -59,7 +59,7 @@ this quick overview is incomplete
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/cyclestreet#values) [cyclestreet](https://wiki.openstreetmap.org/wiki/Key:cyclestreet) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes) [yes](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes) [](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3D) [](https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3D)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/traffic_sign#values) [traffic_sign](https://wiki.openstreetmap.org/wiki/Key:traffic_sign) | Multiple choice | [DE:244.1,1020-30](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1020-30) [DE:244.1,1022-12,1024-10](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12,1024-10) [DE:244.1,1022-12](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12) [DE:244.1,1024-10](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1024-10) [DE:244.1](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/cyclestreet:start_date#values) [cyclestreet:start_date](https://wiki.openstreetmap.org/wiki/Key:cyclestreet:start_date) | [date](../SpecialInputElements.md#date) |
@ -88,13 +88,38 @@ The question is Is the street <b>{name}</b> a cyclestreet?
- This street is a cyclestreet (and has a speed limit of 30 km/h) corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:cyclestreet' target='_blank'>cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes' target='_blank'>yes</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:maxspeed' target='_blank'>maxspeed</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:maxspeed%3D30' target='_blank'>30</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:overtaking:motor_vehicle' target='_blank'>overtaking:motor_vehicle</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:overtaking:motor_vehicle%3Dno' target='_blank'>no</a>`
- This street is a bicycle road corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:bicycle_road' target='_blank'>bicycle_road</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bicycle_road%3Dyes' target='_blank'>yes</a>`
- This option cannot be chosen as answer
- This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later) corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:bicycle_road' target='_blank'>bicycle_road</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bicycle_road%3Dyes' target='_blank'>yes</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:maxspeed' target='_blank'>maxspeed</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:maxspeed%3D30' target='_blank'>30</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:source:maxspeed' target='_blank'>source:maxspeed</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:source:maxspeed%3DDE:bicycle_road' target='_blank'>DE:bicycle_road</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:vehicle' target='_blank'>vehicle</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Dno' target='_blank'>no</a>&<a href='https://wiki.openstreetmap.org/wiki/Key:bicycle' target='_blank'>bicycle</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bicycle%3Ddesignated' target='_blank'>designated</a>`
- This street is a cyclestreet corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:cyclestreet' target='_blank'>cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cyclestreet%3Dyes' target='_blank'>yes</a>`
- This street will become a cyclestreet soon corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:proposed:cyclestreet' target='_blank'>proposed:cyclestreet</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:proposed:cyclestreet%3Dyes' target='_blank'>yes</a>`
- This street will become a bicycle road soon corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:proposed:bicycle_road' target='_blank'>proposed:bicycle_road</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:proposed:bicycle_road%3Dyes' target='_blank'>yes</a>`
- This street is not a cyclestreet corresponds with ``
### supplementary_sign
The question is What sign does this bicycle road have?
- Residents allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1020-30' target='_blank'>DE:244.1,1020-30</a>`
- Motor vehicles allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12,1024-10' target='_blank'>DE:244.1,1022-12,1024-10</a>`
- Motorcycles allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1022-12' target='_blank'>DE:244.1,1022-12</a>`
- Cars allowed corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1,1024-10' target='_blank'>DE:244.1,1024-10</a>`
- There are no supplementary signs at this bicycle road. corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:traffic_sign' target='_blank'>traffic_sign</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DDE:244.1' target='_blank'>DE:244.1</a>`
Only visible if `bicycle_road=yes&_country=de` is shown
### future_cyclestreet

View file

@ -192,7 +192,7 @@ Only visible if `fee=yes` is shown
### Opening-hours
### opening_hours_24_7
@ -200,13 +200,13 @@ The question is When are these toilets opened?
This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with {opening_hours_table()}
This is rendered with <h3>Opening hours</h3>{opening_hours_table(opening_hours)}
- Opened 24/7 corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:opening_hours' target='_blank'>opening_hours</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7' target='_blank'>24/7</a>`
- 24/7 opened (including holidays) corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:opening_hours' target='_blank'>opening_hours</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7' target='_blank'>24/7</a>`
@ -240,6 +240,8 @@ This is rendered with The door to the wheelchair-accessible toilet is {canonica
Only visible if `wheelchair=yes|wheelchair=designated` is shown
### toilets-type

View file

@ -0,0 +1,277 @@
toilet_at_amenity
===================
<img src='https://mapcomplete.osm.be/./assets/layers/toilet/toilets.svg' height="100px">
A layer showing (public) toilets located at different places.
- This layer is shown at zoomlevel **12** and higher
#### Themes using this layer
- [personal](https://mapcomplete.osm.be/personal)
- [toilets](https://mapcomplete.osm.be/toilets)
Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
- <a href='https://wiki.openstreetmap.org/wiki/Key:toilets' target='_blank'>toilets</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets%3Dyes' target='_blank'>yes</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22toilets%22%3D%22yes%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
Supported attributes
----------------------
Warning:
this quick overview is incomplete
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:access#values) [toilets:access](https://wiki.openstreetmap.org/wiki/Key:toilets:access) | [string](../SpecialInputElements.md#string) | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dyes) [customers](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dcustomers) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dno) [key](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dkey)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:fee#values) [toilets:fee](https://wiki.openstreetmap.org/wiki/Key:toilets:fee) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:fee%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:fee%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:charge#values) [toilets:charge](https://wiki.openstreetmap.org/wiki/Key:toilets:charge) | [string](../SpecialInputElements.md#string) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:wheelchair#values) [toilets:wheelchair](https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Dno) [designated](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Ddesignated)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:door:width#values) [toilets:door:width](https://wiki.openstreetmap.org/wiki/Key:toilets:door:width) | [pfloat](../SpecialInputElements.md#pfloat) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:description#values) [toilets:description](https://wiki.openstreetmap.org/wiki/Key:toilets:description) | [string](../SpecialInputElements.md#string) |
### images
This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata`
This tagrendering has no question and is thus read-only
### level
The question is On what level is this feature located?
This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level)
This is rendered with Located on the {level}th floor
- Located underground corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:location' target='_blank'>location</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:location%3Dunderground' target='_blank'>underground</a>`
- This option cannot be chosen as answer
- Located on the ground floor corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:level' target='_blank'>level</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:level%3D0' target='_blank'>0</a>`
- Located on the ground floor corresponds with ``
- This option cannot be chosen as answer
- Located on the first floor corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:level' target='_blank'>level</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:level%3D1' target='_blank'>1</a>`
- Located on the first basement level corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:level' target='_blank'>level</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:level%3D-1' target='_blank'>-1</a>`
### toilet-access
The question is Are these toilets publicly accessible?
This rendering asks information about the property [toilets:access](https://wiki.openstreetmap.org/wiki/Key:toilets:access)
This is rendered with Access is {toilets:access}
- Public access corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:access' target='_blank'>toilets:access</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dyes' target='_blank'>yes</a>`
- Only access to customers of the amenity corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:access' target='_blank'>toilets:access</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dcustomers' target='_blank'>customers</a>`
- Not accessible, even for customers of the amenity corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:access' target='_blank'>toilets:access</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dno' target='_blank'>no</a>`
- Accessible, but one has to ask a key to enter corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:access' target='_blank'>toilets:access</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dkey' target='_blank'>key</a>`
- Public access corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:access' target='_blank'>toilets:access</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dpublic' target='_blank'>public</a>`
- This option cannot be chosen as answer
### toilets-fee
The question is Are these toilets free to use?
- These are paid toilets corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:fee' target='_blank'>toilets:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:fee%3Dyes' target='_blank'>yes</a>`
- Free to use corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:fee' target='_blank'>toilets:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:fee%3Dno' target='_blank'>no</a>`
### toilet-charge
The question is How much does one have to pay for these toilets?
This rendering asks information about the property [toilets:charge](https://wiki.openstreetmap.org/wiki/Key:toilets:charge)
This is rendered with The fee is {toilets:charge}
Only visible if `toilets:fee=yes` is shown
### opening_hours
The question is When is the amenity where these toilets are located open?
This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with <h3>Opening hours</h3>{opening_hours_table(opening_hours)}
### toilets-wheelchair
The question is Is there a dedicated toilet for wheelchair users?
- There is a dedicated toilet for wheelchair users corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair' target='_blank'>toilets:wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Dyes' target='_blank'>yes</a>`
- No wheelchair access corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair' target='_blank'>toilets:wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Dno' target='_blank'>no</a>`
- There is only a dedicated toilet for wheelchair users corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair' target='_blank'>toilets:wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Ddesignated' target='_blank'>designated</a>`
### wheelchair-door-width
The question is What is the width of the door to the wheelchair accessible toilet?
This rendering asks information about the property [toilets:door:width](https://wiki.openstreetmap.org/wiki/Key:toilets:door:width)
This is rendered with The door to the wheelchair-accessible toilet is {canonical(toilets:door:width)} wide
Only visible if `toilets:wheelchair=yes|toilets:wheelchair=designated` is shown
### toilettoiletstype
This tagrendering has no question and is thus read-only
### toilettoiletschangingtable
This tagrendering has no question and is thus read-only
### toilettoiletchangingtablelocation
This tagrendering has no question and is thus read-only
### toilettoilethandwashing
This tagrendering has no question and is thus read-only
### toilettoilethaspaper
This tagrendering has no question and is thus read-only
### description
The question is Is there still something relevant you couldn't give in the previous questions? Add it here.<br/><span style='font-size: small'>Don't repeat already stated facts</span>
This rendering asks information about the property [toilets:description](https://wiki.openstreetmap.org/wiki/Key:toilets:description)
This is rendered with {toilets:description}
This document is autogenerated from [assets/layers/toilet_at_amenity/toilet_at_amenity.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/toilet_at_amenity/toilet_at_amenity.json)

View file

@ -25,6 +25,7 @@ Layer showing different types of transit stops.
- [blind_osm](https://mapcomplete.osm.be/blind_osm)
- [personal](https://mapcomplete.osm.be/personal)
- [transit](https://mapcomplete.osm.be/transit)

File diff suppressed because it is too large Load diff

View file

@ -143,78 +143,10 @@
"key": "contact:email",
"description": "Layer 'Climbing gyms' shows contact:email~.+ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "charge",
"description": "Layer 'Climbing gyms' shows and asks freeform values for key 'charge' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "fee",
"description": "Layer 'Climbing gyms' shows fee=no with a fixed text, namely 'Climbing here is free of charge' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "no"
},
{
"key": "fee",
"description": "Layer 'Climbing gyms' shows fee=yes with a fixed text, namely 'Paying a fee is required to climb here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "yes"
},
{
"key": "charge",
"description": "Layer 'Climbing gyms' shows fee=yes with a fixed text, namely 'Paying a fee is required to climb here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map') Picking this answer will delete the key charge.",
"value": ""
},
{
"key": "opening_hours",
"description": "Layer 'Climbing gyms' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "climbing:length",
"description": "Layer 'Climbing gyms' shows and asks freeform values for key 'climbing:length' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "climbing:grade:french:min",
"description": "Layer 'Climbing gyms' shows and asks freeform values for key 'climbing:grade:french:min' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "climbing:grade:french:max",
"description": "Layer 'Climbing gyms' shows and asks freeform values for key 'climbing:grade:french:max' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "climbing:boulder",
"description": "Layer 'Climbing gyms' shows climbing:boulder=yes with a fixed text, namely 'Bouldering is possible here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "yes"
},
{
"key": "climbing:boulder",
"description": "Layer 'Climbing gyms' shows climbing:boulder=no with a fixed text, namely 'Bouldering is not possible here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "no"
},
{
"key": "climbing:boulder",
"description": "Layer 'Climbing gyms' shows climbing:boulder=limited with a fixed text, namely 'Bouldering is possible, allthough there are only a few routes' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "limited"
},
{
"key": "climbing:boulder",
"description": "Layer 'Climbing gyms' shows climbing:boulder~.+ with a fixed text, namely 'There are {climbing:boulder} boulder routes' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "climbing:sport",
"description": "Layer 'Climbing gyms' shows climbing:sport=yes with a fixed text, namely 'Sport climbing is possible here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "yes"
},
{
"key": "climbing:sport",
"description": "Layer 'Climbing gyms' shows climbing:sport=no with a fixed text, namely 'Sport climbing is not possible here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "no"
},
{
"key": "climbing:sport",
"description": "Layer 'Climbing gyms' shows climbing:sport~.+ with a fixed text, namely 'There are {climbing:sport} sport climbing routes' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "climbing:bolts:max",
"description": "Layer 'Climbing gyms' shows and asks freeform values for key 'climbing:bolts:max' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "climbing:speed",
"description": "Layer 'Climbing gyms' shows climbing:speed=yes with a fixed text, namely 'There is a speed climbing wall' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
@ -402,48 +334,6 @@
"description": "Layer 'Climbing opportunities' shows rock=limestone with a fixed text, namely 'Limestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "limestone"
},
{
"key": "url",
"description": "Layer 'Climbing opportunities' shows and asks freeform values for key 'url' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "charge",
"description": "Layer 'Climbing opportunities' shows and asks freeform values for key 'charge' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "fee",
"description": "Layer 'Climbing opportunities' shows fee=no with a fixed text, namely 'Climbing here is free of charge' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "no"
},
{
"key": "fee",
"description": "Layer 'Climbing opportunities' shows fee=yes with a fixed text, namely 'Paying a fee is required to climb here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "yes"
},
{
"key": "charge",
"description": "Layer 'Climbing opportunities' shows fee=yes with a fixed text, namely 'Paying a fee is required to climb here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map') Picking this answer will delete the key charge.",
"value": ""
},
{
"key": "climbing:boulder",
"description": "Layer 'Climbing opportunities' shows climbing:boulder=yes with a fixed text, namely 'Bouldering is possible here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "yes"
},
{
"key": "climbing:boulder",
"description": "Layer 'Climbing opportunities' shows climbing:boulder=no with a fixed text, namely 'Bouldering is not possible here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "no"
},
{
"key": "climbing:boulder",
"description": "Layer 'Climbing opportunities' shows climbing:boulder=limited with a fixed text, namely 'Bouldering is possible, allthough there are only a few routes' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",
"value": "limited"
},
{
"key": "climbing:boulder",
"description": "Layer 'Climbing opportunities' shows climbing:boulder~.+ with a fixed text, namely 'There are {climbing:boulder} boulder routes' (in the MapComplete.osm.be theme 'Open Climbing Map')"
},
{
"key": "access",
"description": "Layer 'Climbing opportunities' shows access=yes with a fixed text, namely 'Publicly accessible to anyone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')",

View file

@ -680,6 +680,22 @@
"description": "The MapComplete theme Bicycle infrastructure has a layer Crossings showing features with this tag",
"value": "crossing"
},
{
"key": "image",
"description": "The layer 'Crossings allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'Crossings allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'Crossings allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'Crossings allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "crossing",
"description": "Layer 'Crossings' shows crossing=uncontrolled with a fixed text, namely 'Crossing, without traffic lights' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
@ -755,6 +771,56 @@
"description": "Layer 'Crossings' shows button_operated=no with a fixed text, namely 'This traffic light does not have a button to request green light' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
"value": "no"
},
{
"key": "traffic_signals:sound",
"description": "Layer 'Crossings' shows traffic_signals:sound=yes with a fixed text, namely 'This traffic light has sound signals to help crossing, both for finding the crossing and for crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
"value": "yes"
},
{
"key": "traffic_signals:sound",
"description": "Layer 'Crossings' shows traffic_signals:sound=no with a fixed text, namely 'This traffic light does not have sound signals to help crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
"value": "no"
},
{
"key": "traffic_signals:sound",
"description": "Layer 'Crossings' shows traffic_signals:sound=locate with a fixed text, namely 'This traffic light has a sound signal to help locate the pole, but no signal to sign that it is safe to cross.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
"value": "locate"
},
{
"key": "traffic_signals:sound",
"description": "Layer 'Crossings' shows traffic_signals:sound=walk with a fixed text, namely 'This traffic light has a sound signal to sign that it is safe to cross, but no signal to help locate the pole.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
"value": "walk"
},
{
"key": "traffic_signals:vibration",
"description": "Layer 'Crossings' shows traffic_signals:vibration=yes with a fixed text, namely 'The button for this traffic light has a vibration signal to indicate that it is safe to cross.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
"value": "yes"
},
{
"key": "traffic_signals:vibration",
"description": "Layer 'Crossings' shows traffic_signals:vibration=no with a fixed text, namely 'The button for this traffic light does not have a vibration signal to indicate that it is safe to cross.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
"value": "no"
},
{
"key": "traffic_signals:arrow",
"description": "Layer 'Crossings' shows traffic_signals:arrow=yes with a fixed text, namely 'This traffic light has an arrow pointing in the direction of crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
"value": "yes"
},
{
"key": "traffic_signals:arrow",
"description": "Layer 'Crossings' shows traffic_signals:arrow=no with a fixed text, namely 'This traffic light does <b>not</b> have an arrow pointing in the direction of crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
"value": "no"
},
{
"key": "traffic_signals:minimap",
"description": "Layer 'Crossings' shows traffic_signals:minimap=yes with a fixed text, namely 'This traffic light has a tactile map showing the layout of the crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
"value": "yes"
},
{
"key": "traffic_signals:minimap",
"description": "Layer 'Crossings' shows traffic_signals:minimap=no with a fixed text, namely 'This traffic light does <b>not</b> have a tactile map showing the layout of the crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",
"value": "no"
},
{
"key": "red_turn:right:bicycle",
"description": "Layer 'Crossings' shows red_turn:right:bicycle=yes with a fixed text, namely 'A cyclist can turn right if the light is red' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')",

View file

@ -15,6 +15,11 @@
"description": "The MapComplete theme Cyclestreets has a layer Cyclestreets showing features with this tag",
"value": "yes"
},
{
"key": "bicycle_road",
"description": "The MapComplete theme Cyclestreets has a layer Cyclestreets showing features with this tag",
"value": "yes"
},
{
"key": "image",
"description": "The layer 'Cyclestreets allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
@ -51,6 +56,41 @@
"description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
"value": ""
},
{
"key": "bicycle_road",
"description": "Layer 'Cyclestreets' shows bicycle_road=yes with a fixed text, namely 'This street is a bicycle road' (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "bicycle_road",
"description": "Layer 'Cyclestreets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "proposed:bicycle_road",
"description": "Layer 'Cyclestreets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:bicycle_road.",
"value": ""
},
{
"key": "maxspeed",
"description": "Layer 'Cyclestreets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "30"
},
{
"key": "source:maxspeed",
"description": "Layer 'Cyclestreets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:bicycle_road"
},
{
"key": "vehicle",
"description": "Layer 'Cyclestreets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "no"
},
{
"key": "bicycle",
"description": "Layer 'Cyclestreets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "designated"
},
{
"key": "cyclestreet",
"description": "Layer 'Cyclestreets' shows cyclestreet=yes with a fixed text, namely 'This street is a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
@ -71,6 +111,16 @@
"description": "Layer 'Cyclestreets' shows proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclestreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "bicycle_road",
"description": "Layer 'Cyclestreets' shows proposed:bicycle_road=yes with a fixed text, namely 'This street will become a bicycle road soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key bicycle_road.",
"value": ""
},
{
"key": "proposed:bicycle_road",
"description": "Layer 'Cyclestreets' shows proposed:bicycle_road=yes with a fixed text, namely 'This street will become a bicycle road soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "cyclestreet",
"description": "Layer 'Cyclestreets' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.",
@ -81,11 +131,46 @@
"description": "Layer 'Cyclestreets' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
"value": ""
},
{
"key": "bicycle_road",
"description": "Layer 'Cyclestreets' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key bicycle_road.",
"value": ""
},
{
"key": "proposed:bicycle_road",
"description": "Layer 'Cyclestreets' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:bicycle_road.",
"value": ""
},
{
"key": "overtaking:motor_vehicle",
"description": "Layer 'Cyclestreets' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.",
"value": ""
},
{
"key": "traffic_sign",
"description": "Layer 'Cyclestreets' shows traffic_sign=DE:244.1,1020-30 with a fixed text, namely 'Residents allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1020-30"
},
{
"key": "traffic_sign",
"description": "Layer 'Cyclestreets' shows traffic_sign=DE:244.1,1022-12,1024-10 with a fixed text, namely 'Motor vehicles allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1022-12,1024-10"
},
{
"key": "traffic_sign",
"description": "Layer 'Cyclestreets' shows traffic_sign=DE:244.1,1022-12 with a fixed text, namely 'Motorcycles allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1022-12"
},
{
"key": "traffic_sign",
"description": "Layer 'Cyclestreets' shows traffic_sign=DE:244.1,1024-10 with a fixed text, namely 'Cars allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1024-10"
},
{
"key": "traffic_sign",
"description": "Layer 'Cyclestreets' shows traffic_sign=DE:244.1 with a fixed text, namely 'There are no supplementary signs at this bicycle road.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1"
},
{
"key": "cyclestreet:start_date",
"description": "Layer 'Cyclestreets' shows and asks freeform values for key 'cyclestreet:start_date' (in the MapComplete.osm.be theme 'Cyclestreets')"
@ -95,6 +180,11 @@
"description": "The MapComplete theme Cyclestreets has a layer Future cyclestreet showing features with this tag",
"value": "yes"
},
{
"key": "proposed:bicycle_road",
"description": "The MapComplete theme Cyclestreets has a layer Future cyclestreet showing features with this tag",
"value": "yes"
},
{
"key": "image",
"description": "The layer 'Future cyclestreet allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
@ -131,6 +221,41 @@
"description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
"value": ""
},
{
"key": "bicycle_road",
"description": "Layer 'Future cyclestreet' shows bicycle_road=yes with a fixed text, namely 'This street is a bicycle road' (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "bicycle_road",
"description": "Layer 'Future cyclestreet' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "proposed:bicycle_road",
"description": "Layer 'Future cyclestreet' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:bicycle_road.",
"value": ""
},
{
"key": "maxspeed",
"description": "Layer 'Future cyclestreet' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "30"
},
{
"key": "source:maxspeed",
"description": "Layer 'Future cyclestreet' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:bicycle_road"
},
{
"key": "vehicle",
"description": "Layer 'Future cyclestreet' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "no"
},
{
"key": "bicycle",
"description": "Layer 'Future cyclestreet' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "designated"
},
{
"key": "cyclestreet",
"description": "Layer 'Future cyclestreet' shows cyclestreet=yes with a fixed text, namely 'This street is a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
@ -151,6 +276,16 @@
"description": "Layer 'Future cyclestreet' shows proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclestreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "bicycle_road",
"description": "Layer 'Future cyclestreet' shows proposed:bicycle_road=yes with a fixed text, namely 'This street will become a bicycle road soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key bicycle_road.",
"value": ""
},
{
"key": "proposed:bicycle_road",
"description": "Layer 'Future cyclestreet' shows proposed:bicycle_road=yes with a fixed text, namely 'This street will become a bicycle road soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "cyclestreet",
"description": "Layer 'Future cyclestreet' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.",
@ -161,11 +296,46 @@
"description": "Layer 'Future cyclestreet' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
"value": ""
},
{
"key": "bicycle_road",
"description": "Layer 'Future cyclestreet' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key bicycle_road.",
"value": ""
},
{
"key": "proposed:bicycle_road",
"description": "Layer 'Future cyclestreet' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:bicycle_road.",
"value": ""
},
{
"key": "overtaking:motor_vehicle",
"description": "Layer 'Future cyclestreet' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.",
"value": ""
},
{
"key": "traffic_sign",
"description": "Layer 'Future cyclestreet' shows traffic_sign=DE:244.1,1020-30 with a fixed text, namely 'Residents allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1020-30"
},
{
"key": "traffic_sign",
"description": "Layer 'Future cyclestreet' shows traffic_sign=DE:244.1,1022-12,1024-10 with a fixed text, namely 'Motor vehicles allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1022-12,1024-10"
},
{
"key": "traffic_sign",
"description": "Layer 'Future cyclestreet' shows traffic_sign=DE:244.1,1022-12 with a fixed text, namely 'Motorcycles allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1022-12"
},
{
"key": "traffic_sign",
"description": "Layer 'Future cyclestreet' shows traffic_sign=DE:244.1,1024-10 with a fixed text, namely 'Cars allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1024-10"
},
{
"key": "traffic_sign",
"description": "Layer 'Future cyclestreet' shows traffic_sign=DE:244.1 with a fixed text, namely 'There are no supplementary signs at this bicycle road.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1"
},
{
"key": "cyclestreet:start_date",
"description": "Layer 'Future cyclestreet' shows and asks freeform values for key 'cyclestreet:start_date' (in the MapComplete.osm.be theme 'Cyclestreets')"
@ -221,6 +391,41 @@
"description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
"value": ""
},
{
"key": "bicycle_road",
"description": "Layer 'All streets' shows bicycle_road=yes with a fixed text, namely 'This street is a bicycle road' (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "bicycle_road",
"description": "Layer 'All streets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "proposed:bicycle_road",
"description": "Layer 'All streets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:bicycle_road.",
"value": ""
},
{
"key": "maxspeed",
"description": "Layer 'All streets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "30"
},
{
"key": "source:maxspeed",
"description": "Layer 'All streets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:bicycle_road"
},
{
"key": "vehicle",
"description": "Layer 'All streets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "no"
},
{
"key": "bicycle",
"description": "Layer 'All streets' shows bicycle_road=yes&maxspeed=30&source:maxspeed=DE:bicycle_road&vehicle=no&bicycle=designated with a fixed text, namely 'This street is a bicycle road (has a speed limit of 30 km/h and vehicles are not allowed) (sign will be asked later)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "designated"
},
{
"key": "cyclestreet",
"description": "Layer 'All streets' shows cyclestreet=yes with a fixed text, namely 'This street is a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
@ -241,6 +446,16 @@
"description": "Layer 'All streets' shows proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclestreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "bicycle_road",
"description": "Layer 'All streets' shows proposed:bicycle_road=yes with a fixed text, namely 'This street will become a bicycle road soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key bicycle_road.",
"value": ""
},
{
"key": "proposed:bicycle_road",
"description": "Layer 'All streets' shows proposed:bicycle_road=yes with a fixed text, namely 'This street will become a bicycle road soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "yes"
},
{
"key": "cyclestreet",
"description": "Layer 'All streets' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.",
@ -251,11 +466,46 @@
"description": "Layer 'All streets' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.",
"value": ""
},
{
"key": "bicycle_road",
"description": "Layer 'All streets' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key bicycle_road.",
"value": ""
},
{
"key": "proposed:bicycle_road",
"description": "Layer 'All streets' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:bicycle_road.",
"value": ""
},
{
"key": "overtaking:motor_vehicle",
"description": "Layer 'All streets' shows with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.",
"value": ""
},
{
"key": "traffic_sign",
"description": "Layer 'All streets' shows traffic_sign=DE:244.1,1020-30 with a fixed text, namely 'Residents allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1020-30"
},
{
"key": "traffic_sign",
"description": "Layer 'All streets' shows traffic_sign=DE:244.1,1022-12,1024-10 with a fixed text, namely 'Motor vehicles allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1022-12,1024-10"
},
{
"key": "traffic_sign",
"description": "Layer 'All streets' shows traffic_sign=DE:244.1,1022-12 with a fixed text, namely 'Motorcycles allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1022-12"
},
{
"key": "traffic_sign",
"description": "Layer 'All streets' shows traffic_sign=DE:244.1,1024-10 with a fixed text, namely 'Cars allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1,1024-10"
},
{
"key": "traffic_sign",
"description": "Layer 'All streets' shows traffic_sign=DE:244.1 with a fixed text, namely 'There are no supplementary signs at this bicycle road.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')",
"value": "DE:244.1"
},
{
"key": "cyclestreet:start_date",
"description": "Layer 'All streets' shows and asks freeform values for key 'cyclestreet:start_date' (in the MapComplete.osm.be theme 'Cyclestreets')"

View file

@ -452,78 +452,6 @@
"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.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "no"
},
{
"key": "rental",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'rental' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
},
{
"key": "rental",
"description": "Layer 'Bike repair/shop' shows rental=city_bike with a fixed text, namely 'Normal city bikes can be rented here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "city_bike"
},
{
"key": "rental",
"description": "Layer 'Bike repair/shop' shows rental=ebike with a fixed text, namely 'Electrical bikes can be rented here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "ebike"
},
{
"key": "rental",
"description": "Layer 'Bike repair/shop' shows rental=bmx with a fixed text, namely 'BMX bikes can be rented here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "bmx"
},
{
"key": "rental",
"description": "Layer 'Bike repair/shop' shows rental=mtb with a fixed text, namely 'Mountainbikes can be rented here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "mtb"
},
{
"key": "rental",
"description": "Layer 'Bike repair/shop' shows rental=kid_bike with a fixed text, namely 'Bikes for children can be rented here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "kid_bike"
},
{
"key": "rental",
"description": "Layer 'Bike repair/shop' shows rental=tandem with a fixed text, namely 'Tandem bicycles can be rented here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "tandem"
},
{
"key": "rental",
"description": "Layer 'Bike repair/shop' shows rental=racebike with a fixed text, namely 'Race bicycles can be rented here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "racebike"
},
{
"key": "rental",
"description": "Layer 'Bike repair/shop' shows rental=bike_helmet with a fixed text, namely 'Bike helmets can be rented here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "bike_helmet"
},
{
"key": "capacity:city_bike",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'capacity:city_bike' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
},
{
"key": "capacity:ebike",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'capacity:ebike' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
},
{
"key": "capacity:kid_bike",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'capacity:kid_bike' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
},
{
"key": "capacity:bmx",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'capacity:bmx' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
},
{
"key": "capacity:mtb",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'capacity:mtb' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
},
{
"key": "capacity:bicycle_pannier",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'capacity:bicycle_pannier' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
},
{
"key": "capacity:tandem_bicycle",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'capacity:tandem_bicycle' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
},
{
"key": "service:bicycle:second_hand",
"description": "Layer 'Bike repair/shop' shows service:bicycle:second_hand=yes with a fixed text, namely 'This shop sells second-hand bikes' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
@ -584,25 +512,6 @@
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning=no with a fixed text, namely 'This shop doesn't offer bicycle cleaning' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "no"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
},
{
"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.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "no"
},
{
"key": "service:bicycle:cleaning:fee",
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes with a fixed text, namely 'Free to use' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "yes"
},
{
"key": "service:bicycle:cleaning:charge",
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes with a fixed text, namely 'Free to use' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key service:bicycle:cleaning:charge.",
"value": ""
},
{
"key": "description",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"

File diff suppressed because it is too large Load diff

View file

@ -81,94 +81,94 @@
},
{
"key": "highway",
"description": "The MapComplete theme Indoors has a layer elevator showing features with this tag",
"description": "The MapComplete theme Indoors has a layer Elevator showing features with this tag",
"value": "elevator"
},
{
"key": "image",
"description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
"description": "The layer 'Elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
"description": "The layer 'Elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
"description": "The layer 'Elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
"description": "The layer 'Elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "level",
"description": "Layer 'elevator' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Indoors')"
"description": "Layer 'Elevator' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Indoors')"
},
{
"key": "location",
"description": "Layer 'elevator' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Indoors')",
"description": "Layer 'Elevator' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Indoors')",
"value": "underground"
},
{
"key": "level",
"description": "Layer 'elevator' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"description": "Layer 'Elevator' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"value": "0"
},
{
"key": "level",
"description": "Layer 'elevator' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Indoors') Picking this answer will delete the key level.",
"description": "Layer 'Elevator' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Indoors') Picking this answer will delete the key level.",
"value": ""
},
{
"key": "level",
"description": "Layer 'elevator' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"description": "Layer 'Elevator' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"value": "1"
},
{
"key": "level",
"description": "Layer 'elevator' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"description": "Layer 'Elevator' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"value": "-1"
},
{
"key": "operational_status",
"description": "Layer 'elevator' shows operational_status=broken with a fixed text, namely 'This elevator is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"description": "Layer 'Elevator' shows operational_status=broken with a fixed text, namely 'This elevator is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"value": "broken"
},
{
"key": "operational_status",
"description": "Layer 'elevator' shows operational_status=closed with a fixed text, namely 'This elevator is closed <span class='subtle'>e.g. because renovation works are going on</span>' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"description": "Layer 'Elevator' shows operational_status=closed with a fixed text, namely 'This elevator is closed <span class='subtle'>e.g. because renovation works are going on</span>' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"value": "closed"
},
{
"key": "operational_status",
"description": "Layer 'elevator' shows operational_status=ok with a fixed text, namely 'This elevator works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"description": "Layer 'Elevator' shows operational_status=ok with a fixed text, namely 'This elevator works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"value": "ok"
},
{
"key": "operational_status",
"description": "Layer 'elevator' shows with a fixed text, namely 'This elevator works' (in the MapComplete.osm.be theme 'Indoors') Picking this answer will delete the key operational_status.",
"description": "Layer 'Elevator' shows with a fixed text, namely 'This elevator works' (in the MapComplete.osm.be theme 'Indoors') Picking this answer will delete the key operational_status.",
"value": ""
},
{
"key": "door:width",
"description": "Layer 'elevator' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'Indoors')"
"description": "Layer 'Elevator' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'Indoors')"
},
{
"key": "elevator:width",
"description": "Layer 'elevator' shows and asks freeform values for key 'elevator:width' (in the MapComplete.osm.be theme 'Indoors')"
"description": "Layer 'Elevator' shows and asks freeform values for key 'elevator:width' (in the MapComplete.osm.be theme 'Indoors')"
},
{
"key": "elevator:depth",
"description": "Layer 'elevator' shows and asks freeform values for key 'elevator:depth' (in the MapComplete.osm.be theme 'Indoors')"
"description": "Layer 'Elevator' shows and asks freeform values for key 'elevator:depth' (in the MapComplete.osm.be theme 'Indoors')"
},
{
"key": "hearing_loop",
"description": "Layer 'elevator' shows hearing_loop=yes with a fixed text, namely 'This place has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"description": "Layer 'Elevator' shows hearing_loop=yes with a fixed text, namely 'This place has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"value": "yes"
},
{
"key": "hearing_loop",
"description": "Layer 'elevator' shows hearing_loop=no with a fixed text, namely 'This place <b>does not</b> have an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"description": "Layer 'Elevator' shows hearing_loop=no with a fixed text, namely 'This place <b>does not</b> have an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Indoors')",
"value": "no"
},
{

View file

@ -568,6 +568,22 @@
"description": "The MapComplete theme Kerbs and crossings has a layer Crossings showing features with this tag",
"value": "crossing"
},
{
"key": "image",
"description": "The layer 'Crossings allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'Crossings allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'Crossings allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'Crossings allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "crossing",
"description": "Layer 'Crossings' shows crossing=uncontrolled with a fixed text, namely 'Crossing, without traffic lights' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
@ -643,6 +659,56 @@
"description": "Layer 'Crossings' shows button_operated=no with a fixed text, namely 'This traffic light does not have a button to request green light' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "traffic_signals:sound",
"description": "Layer 'Crossings' shows traffic_signals:sound=yes with a fixed text, namely 'This traffic light has sound signals to help crossing, both for finding the crossing and for crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "traffic_signals:sound",
"description": "Layer 'Crossings' shows traffic_signals:sound=no with a fixed text, namely 'This traffic light does not have sound signals to help crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "traffic_signals:sound",
"description": "Layer 'Crossings' shows traffic_signals:sound=locate with a fixed text, namely 'This traffic light has a sound signal to help locate the pole, but no signal to sign that it is safe to cross.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "locate"
},
{
"key": "traffic_signals:sound",
"description": "Layer 'Crossings' shows traffic_signals:sound=walk with a fixed text, namely 'This traffic light has a sound signal to sign that it is safe to cross, but no signal to help locate the pole.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "walk"
},
{
"key": "traffic_signals:vibration",
"description": "Layer 'Crossings' shows traffic_signals:vibration=yes with a fixed text, namely 'The button for this traffic light has a vibration signal to indicate that it is safe to cross.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "traffic_signals:vibration",
"description": "Layer 'Crossings' shows traffic_signals:vibration=no with a fixed text, namely 'The button for this traffic light does not have a vibration signal to indicate that it is safe to cross.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "traffic_signals:arrow",
"description": "Layer 'Crossings' shows traffic_signals:arrow=yes with a fixed text, namely 'This traffic light has an arrow pointing in the direction of crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "traffic_signals:arrow",
"description": "Layer 'Crossings' shows traffic_signals:arrow=no with a fixed text, namely 'This traffic light does <b>not</b> have an arrow pointing in the direction of crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "traffic_signals:minimap",
"description": "Layer 'Crossings' shows traffic_signals:minimap=yes with a fixed text, namely 'This traffic light has a tactile map showing the layout of the crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "traffic_signals:minimap",
"description": "Layer 'Crossings' shows traffic_signals:minimap=no with a fixed text, namely 'This traffic light does <b>not</b> have a tactile map showing the layout of the crossing.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "red_turn:right:bicycle",
"description": "Layer 'Crossings' shows red_turn:right:bicycle=yes with a fixed text, namely 'A cyclist can turn right if the light is red' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
@ -737,6 +803,11 @@
{
"key": "kerb:height",
"description": "Layer 'Kerbs' shows and asks freeform values for key 'kerb:height' (in the MapComplete.osm.be theme 'Kerbs and crossings')"
},
{
"key": "kerb:height",
"description": "Layer 'Kerbs' shows kerb:height=0 with a fixed text, namely 'This kerb is flush and is lower than 1cm.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "0"
}
]
}

View file

@ -93,6 +93,28 @@
"key": "highway",
"description": "Layer 'Maxspeed' shows highway=living_street with a fixed text, namely 'This is a living street, which has a maxspeed of 20km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Maxspeed')",
"value": "living_street"
},
{
"key": "highway",
"description": "The MapComplete theme Maxspeed has a layer Speed Camera showing features with this tag",
"value": "speed_camera"
},
{
"key": "maxspeed",
"description": "Layer 'Speed Camera' shows and asks freeform values for key 'maxspeed' (in the MapComplete.osm.be theme 'Maxspeed')"
},
{
"key": "highway",
"description": "The MapComplete theme Maxspeed has a layer Speed Display showing features with this tag",
"value": "speed_display"
},
{
"key": "maxspeed",
"description": "Layer 'Speed Display' shows and asks freeform values for key 'maxspeed' (in the MapComplete.osm.be theme 'Maxspeed')"
},
{
"key": "inscription",
"description": "Layer 'Speed Display' shows and asks freeform values for key 'inscription' (in the MapComplete.osm.be theme 'Maxspeed')"
}
]
}

View file

@ -743,7 +743,7 @@
},
{
"key": "opening_hours",
"description": "Layer 'Toilets' shows opening_hours=24/7 with a fixed text, namely 'Opened 24/7' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')",
"description": "Layer 'Toilets' shows opening_hours=24/7 with a fixed text, namely '24/7 opened (including holidays)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')",
"value": "24/7"
},
{

View file

@ -1007,6 +1007,11 @@
"key": "kerb:height",
"description": "Layer 'Kerbs' shows and asks freeform values for key 'kerb:height' (in the MapComplete.osm.be theme 'OnWheels')"
},
{
"key": "kerb:height",
"description": "Layer 'Kerbs' shows kerb:height=0 with a fixed text, namely 'This kerb is flush and is lower than 1cm.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "0"
},
{
"key": "amenity",
"description": "The MapComplete theme OnWheels has a layer Parking showing features with this tag",
@ -1154,810 +1159,6 @@
"key": "name",
"description": "Layer 'Shop' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'OnWheels')"
},
{
"key": "shop",
"description": "Layer 'Shop' shows and asks freeform values for key 'shop' (in the MapComplete.osm.be theme 'OnWheels')"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=agrarian with a fixed text, namely 'Farm Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "agrarian"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=alcohol with a fixed text, namely 'Liquor Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "alcohol"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=anime with a fixed text, namely 'Anime / Manga Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "anime"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=antiques with a fixed text, namely 'Antiques Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "antiques"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=appliance with a fixed text, namely 'Appliance Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "appliance"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=art with a fixed text, namely 'Art Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "art"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=baby_goods with a fixed text, namely 'Baby Goods Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "baby_goods"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bag with a fixed text, namely 'Bag/Luggage Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "bag"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bakery with a fixed text, namely 'Bakery' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "bakery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bathroom_furnishing with a fixed text, namely 'Bathroom Furnishing Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "bathroom_furnishing"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=beauty with a fixed text, namely 'Beauty Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "beauty"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bed with a fixed text, namely 'Bedding/Mattress Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "bed"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=beverages with a fixed text, namely 'Beverage Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "beverages"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bicycle with a fixed text, namely 'Bicycle Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "bicycle"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=boat with a fixed text, namely 'Boat Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "boat"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bookmaker with a fixed text, namely 'Bookmaker' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "bookmaker"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=books with a fixed text, namely 'Book Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "books"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=brewing_supplies with a fixed text, namely 'Brewing Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "brewing_supplies"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=butcher with a fixed text, namely 'Butcher' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "butcher"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=camera with a fixed text, namely 'Camera Equipment Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "camera"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=candles with a fixed text, namely 'Candle Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "candles"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=cannabis with a fixed text, namely 'Cannabis Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "cannabis"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=car with a fixed text, namely 'Car Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "car"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=car_parts with a fixed text, namely 'Car Parts Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "car_parts"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=car_repair with a fixed text, namely 'Car Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "car_repair"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=caravan with a fixed text, namely 'RV Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "caravan"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=carpet with a fixed text, namely 'Carpet Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "carpet"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=catalogue with a fixed text, namely 'Catalog Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "catalogue"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=charity with a fixed text, namely 'Charity Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "charity"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=cheese with a fixed text, namely 'Cheese Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "cheese"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=chemist with a fixed text, namely 'Drugstore' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "chemist"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=chocolate with a fixed text, namely 'Chocolate Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "chocolate"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=clothes with a fixed text, namely 'Clothing Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "clothes"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=coffee with a fixed text, namely 'Coffee Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "coffee"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=collector with a fixed text, namely 'Collectibles Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "collector"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=computer with a fixed text, namely 'Computer Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "computer"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=confectionery with a fixed text, namely 'Candy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "confectionery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=convenience with a fixed text, namely 'Convenience Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "convenience"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=copyshop with a fixed text, namely 'Copy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "copyshop"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=cosmetics with a fixed text, namely 'Cosmetics Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "cosmetics"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=country_store with a fixed text, namely 'Country Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "country_store"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=craft with a fixed text, namely 'Arts & Crafts Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "craft"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=curtain with a fixed text, namely 'Curtain Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "curtain"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=dairy with a fixed text, namely 'Dairy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "dairy"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=deli with a fixed text, namely 'Deli' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "deli"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=department_store with a fixed text, namely 'Department Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "department_store"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=doityourself with a fixed text, namely 'DIY Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "doityourself"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=doors with a fixed text, namely 'Door Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "doors"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=dry_cleaning with a fixed text, namely 'Dry Cleaner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "dry_cleaning"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=e-cigarette with a fixed text, namely 'E-Cigarette Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "e-cigarette"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=electrical with a fixed text, namely 'Electrical Equipment Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "electrical"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=electronics with a fixed text, namely 'Electronics Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "electronics"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=erotic with a fixed text, namely 'Erotic Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "erotic"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=fabric with a fixed text, namely 'Fabric Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "fabric"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=farm with a fixed text, namely 'Produce Stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "farm"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=fashion_accessories with a fixed text, namely 'Fashion Accessories Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "fashion_accessories"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=fireplace with a fixed text, namely 'Fireplace Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "fireplace"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=fishing with a fixed text, namely 'Fishing Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "fishing"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=flooring with a fixed text, namely 'Flooring Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "flooring"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=florist with a fixed text, namely 'Florist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "florist"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=frame with a fixed text, namely 'Framing Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "frame"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=frozen_food with a fixed text, namely 'Frozen Food Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "frozen_food"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=fuel with a fixed text, namely 'Fuel Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "fuel"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=funeral_directors with a fixed text, namely 'Funeral Home' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "funeral_directors"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=furniture with a fixed text, namely 'Furniture Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "furniture"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=games with a fixed text, namely 'Tabletop Game Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "games"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=garden_centre with a fixed text, namely 'Garden Center' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "garden_centre"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=gas with a fixed text, namely 'Bottled Gas Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "gas"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=general with a fixed text, namely 'General Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "general"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=gift with a fixed text, namely 'Gift Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "gift"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=greengrocer with a fixed text, namely 'Greengrocer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "greengrocer"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hairdresser with a fixed text, namely 'Hairdresser' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "hairdresser"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hairdresser_supply with a fixed text, namely 'Hairdresser Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "hairdresser_supply"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hardware with a fixed text, namely 'Hardware Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "hardware"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=health_food with a fixed text, namely 'Health Food Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "health_food"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hearing_aids with a fixed text, namely 'Hearing Aids Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "hearing_aids"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=herbalist with a fixed text, namely 'Herbalist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "herbalist"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hifi with a fixed text, namely 'Hifi Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "hifi"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hobby with a fixed text, namely 'Hobby Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "hobby"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=household_linen with a fixed text, namely 'Household Linen Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "household_linen"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=houseware with a fixed text, namely 'Houseware Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "houseware"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hunting with a fixed text, namely 'Hunting Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "hunting"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=interior_decoration with a fixed text, namely 'Interior Decoration Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "interior_decoration"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=jewelry with a fixed text, namely 'Jewelry Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "jewelry"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=kiosk with a fixed text, namely 'Kiosk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "kiosk"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=kitchen with a fixed text, namely 'Kitchen Design Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "kitchen"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=laundry with a fixed text, namely 'Laundry' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "laundry"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=leather with a fixed text, namely 'Leather Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "leather"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=lighting with a fixed text, namely 'Lighting Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "lighting"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=locksmith with a fixed text, namely 'Locksmith' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "locksmith"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=lottery with a fixed text, namely 'Lottery Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "lottery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=mall with a fixed text, namely 'Mall' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "mall"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=massage with a fixed text, namely 'Massage Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "massage"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=medical_supply with a fixed text, namely 'Medical Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "medical_supply"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=military_surplus with a fixed text, namely 'Military Surplus Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "military_surplus"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=mobile_phone with a fixed text, namely 'Mobile Phone Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "mobile_phone"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=model with a fixed text, namely 'Model Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "model"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=money_lender with a fixed text, namely 'Money Lender' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "money_lender"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=motorcycle with a fixed text, namely 'Motorcycle Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "motorcycle"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=motorcycle_repair with a fixed text, namely 'Motorcycle Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "motorcycle_repair"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=music with a fixed text, namely 'Music Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "music"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=musical_instrument with a fixed text, namely 'Musical Instrument Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "musical_instrument"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=newsagent with a fixed text, namely 'Newspaper/Magazine Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "newsagent"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=nutrition_supplements with a fixed text, namely 'Nutrition Supplements Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "nutrition_supplements"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=optician with a fixed text, namely 'Optician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "optician"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=outdoor with a fixed text, namely 'Outdoors Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "outdoor"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=outpost with a fixed text, namely 'Online Retailer Outpost' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "outpost"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=paint with a fixed text, namely 'Paint Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "paint"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=party with a fixed text, namely 'Party Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "party"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pastry with a fixed text, namely 'Pastry Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "pastry"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pawnbroker with a fixed text, namely 'Pawn Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "pawnbroker"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=perfumery with a fixed text, namely 'Perfume Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "perfumery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pet with a fixed text, namely 'Pet Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "pet"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pet_grooming with a fixed text, namely 'Pet Grooming Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "pet_grooming"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=photo with a fixed text, namely 'Photography Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "photo"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pottery with a fixed text, namely 'Pottery Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "pottery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=printer_ink with a fixed text, namely 'Printer Ink Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "printer_ink"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=psychic with a fixed text, namely 'Psychic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "psychic"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pyrotechnics with a fixed text, namely 'Fireworks Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "pyrotechnics"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=radiotechnics with a fixed text, namely 'Radio/Electronic Component Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "radiotechnics"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=religion with a fixed text, namely 'Religious Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "religion"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=rental with a fixed text, namely 'Rental Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "rental"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=repair with a fixed text, namely 'Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "repair"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=scuba_diving with a fixed text, namely 'Scuba Diving Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "scuba_diving"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=seafood with a fixed text, namely 'Seafood Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "seafood"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=second_hand with a fixed text, namely 'Consignment/Thrift Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "second_hand"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=sewing with a fixed text, namely 'Sewing Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "sewing"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=shoe_repair with a fixed text, namely 'Shoe Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "shoe_repair"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=shoes with a fixed text, namely 'Shoe Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "shoes"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=spices with a fixed text, namely 'Spice Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "spices"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=sports with a fixed text, namely 'Sporting Goods Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "sports"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=stationery with a fixed text, namely 'Stationery Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "stationery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=storage_rental with a fixed text, namely 'Storage Rental' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "storage_rental"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=supermarket with a fixed text, namely 'Supermarket' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "supermarket"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=swimming_pool with a fixed text, namely 'Pool Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "swimming_pool"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tailor with a fixed text, namely 'Tailor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "tailor"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tattoo with a fixed text, namely 'Tattoo Parlor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "tattoo"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tea with a fixed text, namely 'Tea Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "tea"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=telecommunication with a fixed text, namely 'Telecom Retail Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "telecommunication"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=ticket with a fixed text, namely 'Ticket Seller' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "ticket"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tiles with a fixed text, namely 'Tile Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "tiles"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tobacco with a fixed text, namely 'Tobacco Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "tobacco"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tool_hire with a fixed text, namely 'Tool Rental' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "tool_hire"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=toys with a fixed text, namely 'Toy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "toys"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=trade with a fixed text, namely 'Trade Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "trade"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=travel_agency with a fixed text, namely 'Travel Agency' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "travel_agency"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=trophy with a fixed text, namely 'Trophy Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "trophy"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tyres with a fixed text, namely 'Tire Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "tyres"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=vacuum_cleaner with a fixed text, namely 'Vacuum Cleaner Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "vacuum_cleaner"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=variety_store with a fixed text, namely 'Variety Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "variety_store"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=video with a fixed text, namely 'Video Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "video"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=video_games with a fixed text, namely 'Video Game Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "video_games"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=watches with a fixed text, namely 'Watches Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "watches"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=water with a fixed text, namely 'Drinking Water Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "water"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=water_sports with a fixed text, namely 'Watersport/Swim Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "water_sports"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=weapons with a fixed text, namely 'Weapon Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "weapons"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=wholesale with a fixed text, namely 'Wholesale Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "wholesale"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=wigs with a fixed text, namely 'Wig Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "wigs"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=window_blind with a fixed text, namely 'Window Blind Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "window_blind"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=wine with a fixed text, namely 'Wine Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "wine"
},
{
"key": "opening_hours",
"description": "Layer 'Shop' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'OnWheels')"
@ -2208,7 +1409,7 @@
},
{
"key": "opening_hours",
"description": "Layer 'Toilets' shows opening_hours=24/7 with a fixed text, namely 'Opened 24/7' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"description": "Layer 'Toilets' shows opening_hours=24/7 with a fixed text, namely '24/7 opened (including holidays)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "24/7"
},
{
@ -2562,94 +1763,94 @@
},
{
"key": "highway",
"description": "The MapComplete theme OnWheels has a layer elevator showing features with this tag",
"description": "The MapComplete theme OnWheels has a layer Elevator showing features with this tag",
"value": "elevator"
},
{
"key": "image",
"description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
"description": "The layer 'Elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
"description": "The layer 'Elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
"description": "The layer 'Elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
"description": "The layer 'Elevator allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "level",
"description": "Layer 'elevator' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')"
"description": "Layer 'Elevator' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'OnWheels')"
},
{
"key": "location",
"description": "Layer 'elevator' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')",
"description": "Layer 'Elevator' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'OnWheels')",
"value": "underground"
},
{
"key": "level",
"description": "Layer 'elevator' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"description": "Layer 'Elevator' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "0"
},
{
"key": "level",
"description": "Layer 'elevator' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.",
"description": "Layer 'Elevator' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key level.",
"value": ""
},
{
"key": "level",
"description": "Layer 'elevator' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"description": "Layer 'Elevator' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "1"
},
{
"key": "level",
"description": "Layer 'elevator' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"description": "Layer 'Elevator' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "-1"
},
{
"key": "operational_status",
"description": "Layer 'elevator' shows operational_status=broken with a fixed text, namely 'This elevator is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"description": "Layer 'Elevator' shows operational_status=broken with a fixed text, namely 'This elevator is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "broken"
},
{
"key": "operational_status",
"description": "Layer 'elevator' shows operational_status=closed with a fixed text, namely 'This elevator is closed <span class='subtle'>e.g. because renovation works are going on</span>' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"description": "Layer 'Elevator' shows operational_status=closed with a fixed text, namely 'This elevator is closed <span class='subtle'>e.g. because renovation works are going on</span>' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "closed"
},
{
"key": "operational_status",
"description": "Layer 'elevator' shows operational_status=ok with a fixed text, namely 'This elevator works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"description": "Layer 'Elevator' shows operational_status=ok with a fixed text, namely 'This elevator works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "ok"
},
{
"key": "operational_status",
"description": "Layer 'elevator' shows with a fixed text, namely 'This elevator works' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key operational_status.",
"description": "Layer 'Elevator' shows with a fixed text, namely 'This elevator works' (in the MapComplete.osm.be theme 'OnWheels') Picking this answer will delete the key operational_status.",
"value": ""
},
{
"key": "door:width",
"description": "Layer 'elevator' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'OnWheels')"
"description": "Layer 'Elevator' shows and asks freeform values for key 'door:width' (in the MapComplete.osm.be theme 'OnWheels')"
},
{
"key": "elevator:width",
"description": "Layer 'elevator' shows and asks freeform values for key 'elevator:width' (in the MapComplete.osm.be theme 'OnWheels')"
"description": "Layer 'Elevator' shows and asks freeform values for key 'elevator:width' (in the MapComplete.osm.be theme 'OnWheels')"
},
{
"key": "elevator:depth",
"description": "Layer 'elevator' shows and asks freeform values for key 'elevator:depth' (in the MapComplete.osm.be theme 'OnWheels')"
"description": "Layer 'Elevator' shows and asks freeform values for key 'elevator:depth' (in the MapComplete.osm.be theme 'OnWheels')"
},
{
"key": "hearing_loop",
"description": "Layer 'elevator' shows hearing_loop=yes with a fixed text, namely 'This place has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"description": "Layer 'Elevator' shows hearing_loop=yes with a fixed text, namely 'This place has an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "yes"
},
{
"key": "hearing_loop",
"description": "Layer 'elevator' shows hearing_loop=no with a fixed text, namely 'This place <b>does not</b> have an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"description": "Layer 'Elevator' shows hearing_loop=no with a fixed text, namely 'This place <b>does not</b> have an audio induction loop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')",
"value": "no"
},
{

View file

@ -140,7 +140,7 @@
},
{
"key": "parking_space",
"description": "Layer 'Parking Spaces' shows with a fixed text, namely 'This is a normal parking space' (in the MapComplete.osm.be theme 'Parking') Picking this answer will delete the key parking_space.",
"description": "Layer 'Parking Spaces' shows with a fixed text, namely 'This is a normal parking space.' (in the MapComplete.osm.be theme 'Parking') Picking this answer will delete the key parking_space.",
"value": ""
},
{

File diff suppressed because it is too large Load diff

View file

@ -554,810 +554,6 @@
"key": "name",
"description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'shop' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=agrarian with a fixed text, namely 'Farm Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "agrarian"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=alcohol with a fixed text, namely 'Liquor Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "alcohol"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=anime with a fixed text, namely 'Anime / Manga Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "anime"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=antiques with a fixed text, namely 'Antiques Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "antiques"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=appliance with a fixed text, namely 'Appliance Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "appliance"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=art with a fixed text, namely 'Art Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "art"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=baby_goods with a fixed text, namely 'Baby Goods Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "baby_goods"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=bag with a fixed text, namely 'Bag/Luggage Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "bag"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=bakery with a fixed text, namely 'Bakery' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "bakery"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=bathroom_furnishing with a fixed text, namely 'Bathroom Furnishing Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "bathroom_furnishing"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=beauty with a fixed text, namely 'Beauty Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "beauty"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=bed with a fixed text, namely 'Bedding/Mattress Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "bed"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=beverages with a fixed text, namely 'Beverage Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "beverages"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=bicycle with a fixed text, namely 'Bicycle Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "bicycle"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=boat with a fixed text, namely 'Boat Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "boat"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=bookmaker with a fixed text, namely 'Bookmaker' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "bookmaker"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=books with a fixed text, namely 'Book Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "books"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=brewing_supplies with a fixed text, namely 'Brewing Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "brewing_supplies"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=butcher with a fixed text, namely 'Butcher' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "butcher"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=camera with a fixed text, namely 'Camera Equipment Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "camera"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=candles with a fixed text, namely 'Candle Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "candles"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=cannabis with a fixed text, namely 'Cannabis Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "cannabis"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=car with a fixed text, namely 'Car Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "car"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=car_parts with a fixed text, namely 'Car Parts Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "car_parts"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=car_repair with a fixed text, namely 'Car Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "car_repair"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=caravan with a fixed text, namely 'RV Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "caravan"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=carpet with a fixed text, namely 'Carpet Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "carpet"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=catalogue with a fixed text, namely 'Catalog Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "catalogue"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=charity with a fixed text, namely 'Charity Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "charity"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=cheese with a fixed text, namely 'Cheese Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "cheese"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=chemist with a fixed text, namely 'Drugstore' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "chemist"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=chocolate with a fixed text, namely 'Chocolate Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "chocolate"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=clothes with a fixed text, namely 'Clothing Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "clothes"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=coffee with a fixed text, namely 'Coffee Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "coffee"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=collector with a fixed text, namely 'Collectibles Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "collector"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=computer with a fixed text, namely 'Computer Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "computer"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=confectionery with a fixed text, namely 'Candy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "confectionery"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=convenience with a fixed text, namely 'Convenience Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "convenience"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=copyshop with a fixed text, namely 'Copy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "copyshop"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=cosmetics with a fixed text, namely 'Cosmetics Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "cosmetics"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=country_store with a fixed text, namely 'Country Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "country_store"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=craft with a fixed text, namely 'Arts & Crafts Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "craft"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=curtain with a fixed text, namely 'Curtain Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "curtain"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=dairy with a fixed text, namely 'Dairy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "dairy"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=deli with a fixed text, namely 'Deli' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "deli"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=department_store with a fixed text, namely 'Department Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "department_store"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=doityourself with a fixed text, namely 'DIY Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "doityourself"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=doors with a fixed text, namely 'Door Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "doors"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=dry_cleaning with a fixed text, namely 'Dry Cleaner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "dry_cleaning"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=e-cigarette with a fixed text, namely 'E-Cigarette Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "e-cigarette"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=electrical with a fixed text, namely 'Electrical Equipment Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "electrical"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=electronics with a fixed text, namely 'Electronics Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "electronics"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=erotic with a fixed text, namely 'Erotic Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "erotic"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=fabric with a fixed text, namely 'Fabric Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "fabric"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=farm with a fixed text, namely 'Produce Stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "farm"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=fashion_accessories with a fixed text, namely 'Fashion Accessories Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "fashion_accessories"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=fireplace with a fixed text, namely 'Fireplace Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "fireplace"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=fishing with a fixed text, namely 'Fishing Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "fishing"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=flooring with a fixed text, namely 'Flooring Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "flooring"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=florist with a fixed text, namely 'Florist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "florist"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=frame with a fixed text, namely 'Framing Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "frame"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=frozen_food with a fixed text, namely 'Frozen Food Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "frozen_food"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=fuel with a fixed text, namely 'Fuel Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "fuel"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=funeral_directors with a fixed text, namely 'Funeral Home' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "funeral_directors"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=furniture with a fixed text, namely 'Furniture Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "furniture"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=games with a fixed text, namely 'Tabletop Game Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "games"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=garden_centre with a fixed text, namely 'Garden Center' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "garden_centre"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=gas with a fixed text, namely 'Bottled Gas Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "gas"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=general with a fixed text, namely 'General Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "general"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=gift with a fixed text, namely 'Gift Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "gift"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=greengrocer with a fixed text, namely 'Greengrocer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "greengrocer"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=hairdresser with a fixed text, namely 'Hairdresser' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "hairdresser"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=hairdresser_supply with a fixed text, namely 'Hairdresser Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "hairdresser_supply"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=hardware with a fixed text, namely 'Hardware Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "hardware"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=health_food with a fixed text, namely 'Health Food Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "health_food"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=hearing_aids with a fixed text, namely 'Hearing Aids Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "hearing_aids"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=herbalist with a fixed text, namely 'Herbalist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "herbalist"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=hifi with a fixed text, namely 'Hifi Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "hifi"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=hobby with a fixed text, namely 'Hobby Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "hobby"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=household_linen with a fixed text, namely 'Household Linen Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "household_linen"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=houseware with a fixed text, namely 'Houseware Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "houseware"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=hunting with a fixed text, namely 'Hunting Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "hunting"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=interior_decoration with a fixed text, namely 'Interior Decoration Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "interior_decoration"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=jewelry with a fixed text, namely 'Jewelry Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "jewelry"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=kiosk with a fixed text, namely 'Kiosk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "kiosk"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=kitchen with a fixed text, namely 'Kitchen Design Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "kitchen"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=laundry with a fixed text, namely 'Laundry' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "laundry"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=leather with a fixed text, namely 'Leather Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "leather"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=lighting with a fixed text, namely 'Lighting Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "lighting"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=locksmith with a fixed text, namely 'Locksmith' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "locksmith"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=lottery with a fixed text, namely 'Lottery Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "lottery"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=mall with a fixed text, namely 'Mall' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "mall"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=massage with a fixed text, namely 'Massage Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "massage"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=medical_supply with a fixed text, namely 'Medical Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "medical_supply"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=military_surplus with a fixed text, namely 'Military Surplus Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "military_surplus"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=mobile_phone with a fixed text, namely 'Mobile Phone Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "mobile_phone"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=model with a fixed text, namely 'Model Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "model"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=money_lender with a fixed text, namely 'Money Lender' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "money_lender"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=motorcycle with a fixed text, namely 'Motorcycle Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "motorcycle"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=motorcycle_repair with a fixed text, namely 'Motorcycle Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "motorcycle_repair"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=music with a fixed text, namely 'Music Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "music"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=musical_instrument with a fixed text, namely 'Musical Instrument Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "musical_instrument"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=newsagent with a fixed text, namely 'Newspaper/Magazine Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "newsagent"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=nutrition_supplements with a fixed text, namely 'Nutrition Supplements Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "nutrition_supplements"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=optician with a fixed text, namely 'Optician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "optician"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=outdoor with a fixed text, namely 'Outdoors Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "outdoor"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=outpost with a fixed text, namely 'Online Retailer Outpost' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "outpost"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=paint with a fixed text, namely 'Paint Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "paint"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=party with a fixed text, namely 'Party Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "party"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=pastry with a fixed text, namely 'Pastry Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "pastry"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=pawnbroker with a fixed text, namely 'Pawn Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "pawnbroker"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=perfumery with a fixed text, namely 'Perfume Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "perfumery"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=pet with a fixed text, namely 'Pet Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "pet"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=pet_grooming with a fixed text, namely 'Pet Grooming Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "pet_grooming"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=photo with a fixed text, namely 'Photography Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "photo"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=pottery with a fixed text, namely 'Pottery Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "pottery"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=printer_ink with a fixed text, namely 'Printer Ink Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "printer_ink"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=psychic with a fixed text, namely 'Psychic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "psychic"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=pyrotechnics with a fixed text, namely 'Fireworks Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "pyrotechnics"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=radiotechnics with a fixed text, namely 'Radio/Electronic Component Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "radiotechnics"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=religion with a fixed text, namely 'Religious Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "religion"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=rental with a fixed text, namely 'Rental Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "rental"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=repair with a fixed text, namely 'Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "repair"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=scuba_diving with a fixed text, namely 'Scuba Diving Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "scuba_diving"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=seafood with a fixed text, namely 'Seafood Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "seafood"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=second_hand with a fixed text, namely 'Consignment/Thrift Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "second_hand"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=sewing with a fixed text, namely 'Sewing Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "sewing"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=shoe_repair with a fixed text, namely 'Shoe Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "shoe_repair"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=shoes with a fixed text, namely 'Shoe Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "shoes"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=spices with a fixed text, namely 'Spice Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "spices"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=sports with a fixed text, namely 'Sporting Goods Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "sports"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=stationery with a fixed text, namely 'Stationery Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "stationery"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=storage_rental with a fixed text, namely 'Storage Rental' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "storage_rental"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=supermarket with a fixed text, namely 'Supermarket' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "supermarket"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=swimming_pool with a fixed text, namely 'Pool Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "swimming_pool"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=tailor with a fixed text, namely 'Tailor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "tailor"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=tattoo with a fixed text, namely 'Tattoo Parlor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "tattoo"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=tea with a fixed text, namely 'Tea Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "tea"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=telecommunication with a fixed text, namely 'Telecom Retail Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "telecommunication"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=ticket with a fixed text, namely 'Ticket Seller' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "ticket"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=tiles with a fixed text, namely 'Tile Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "tiles"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=tobacco with a fixed text, namely 'Tobacco Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "tobacco"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=tool_hire with a fixed text, namely 'Tool Rental' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "tool_hire"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=toys with a fixed text, namely 'Toy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "toys"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=trade with a fixed text, namely 'Trade Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "trade"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=travel_agency with a fixed text, namely 'Travel Agency' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "travel_agency"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=trophy with a fixed text, namely 'Trophy Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "trophy"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=tyres with a fixed text, namely 'Tire Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "tyres"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=vacuum_cleaner with a fixed text, namely 'Vacuum Cleaner Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "vacuum_cleaner"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=variety_store with a fixed text, namely 'Variety Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "variety_store"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=video with a fixed text, namely 'Video Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "video"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=video_games with a fixed text, namely 'Video Game Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "video_games"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=watches with a fixed text, namely 'Watches Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "watches"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=water with a fixed text, namely 'Drinking Water Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "water"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=water_sports with a fixed text, namely 'Watersport/Swim Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "water_sports"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=weapons with a fixed text, namely 'Weapon Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "weapons"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=wholesale with a fixed text, namely 'Wholesale Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "wholesale"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=wigs with a fixed text, namely 'Wig Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "wigs"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=window_blind with a fixed text, namely 'Window Blind Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "window_blind"
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=wine with a fixed text, namely 'Wine Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "wine"
},
{
"key": "opening_hours",
"description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')"

View file

@ -62,9 +62,128 @@
"description": "Layer 'Post offices' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Postbox and Post Office Map')"
},
{
"key": "opening_hours",
"description": "Layer 'Post offices' shows opening_hours=24/7 with a fixed text, namely '24/7 opened (including holidays)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "24/7"
"key": "post_office",
"description": "Layer 'Post offices' shows post_office=post_partner with a fixed text, namely 'This shop is a post partner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "post_partner"
},
{
"key": "post_office",
"description": "Layer 'Post offices' shows with a fixed text, namely 'This shop is not a post partner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map') Picking this answer will delete the key post_office.",
"value": ""
},
{
"key": "post_office:brand",
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:brand' (in the MapComplete.osm.be theme 'Postbox and Post Office Map')"
},
{
"key": "post_office:brand",
"description": "Layer 'Post offices' shows post_office:brand=DHL with a fixed text, namely 'This location offers services for DHL' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "DHL"
},
{
"key": "post_office:brand",
"description": "Layer 'Post offices' shows post_office:brand=DPD with a fixed text, namely 'This location offers services for DPD' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "DPD"
},
{
"key": "post_office:brand",
"description": "Layer 'Post offices' shows post_office:brand=GLS with a fixed text, namely 'This location offers services for GLS' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "GLS"
},
{
"key": "post_office:brand",
"description": "Layer 'Post offices' shows post_office:brand=UPS with a fixed text, namely 'This location offers services for UPS' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "UPS"
},
{
"key": "post_office:brand",
"description": "Layer 'Post offices' shows post_office:brand=DHL Paketshop with a fixed text, namely 'This location is a DHL Paketshop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "DHL Paketshop"
},
{
"key": "post_office:brand",
"description": "Layer 'Post offices' shows post_office:brand=Hermes PaketShop with a fixed text, namely 'This location is a Hermes PaketShop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "Hermes PaketShop"
},
{
"key": "post_office:brand",
"description": "Layer 'Post offices' shows post_office:brand=PostNL with a fixed text, namely 'This location is a PostNL-point' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "PostNL"
},
{
"key": "post_office:brand",
"description": "Layer 'Post offices' shows post_office:brand=bpost with a fixed text, namely 'This location offers services for bpost' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "bpost"
},
{
"key": "post_office:letter_from",
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:letter_from' (in the MapComplete.osm.be theme 'Postbox and Post Office Map')"
},
{
"key": "post_office:letter_from",
"description": "Layer 'Post offices' shows post_office:letter_from=yes with a fixed text, namely 'You can post letters here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "yes"
},
{
"key": "post_office:letter_from",
"description": "Layer 'Post offices' shows post_office:letter_from=no with a fixed text, namely 'You can't post letters here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "no"
},
{
"key": "post_office:parcel_from",
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:parcel_from' (in the MapComplete.osm.be theme 'Postbox and Post Office Map')"
},
{
"key": "post_office:parcel_from",
"description": "Layer 'Post offices' shows post_office:parcel_from=yes with a fixed text, namely 'You can send parcels here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "yes"
},
{
"key": "post_office:parcel_from",
"description": "Layer 'Post offices' shows post_office:parcel_from=no with a fixed text, namely 'You can't send parcels here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "no"
},
{
"key": "post_office:parcel_pickup",
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:parcel_pickup' (in the MapComplete.osm.be theme 'Postbox and Post Office Map')"
},
{
"key": "post_office:parcel_pickup",
"description": "Layer 'Post offices' shows post_office:parcel_pickup=yes with a fixed text, namely 'You can pick up missed parcels here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "yes"
},
{
"key": "post_office:parcel_pickup",
"description": "Layer 'Post offices' shows post_office:parcel_pickup=no with a fixed text, namely 'You can't pick up missed parcels here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "no"
},
{
"key": "post_office:parcel_to",
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:parcel_to' (in the MapComplete.osm.be theme 'Postbox and Post Office Map')"
},
{
"key": "post_office:parcel_to",
"description": "Layer 'Post offices' shows post_office:parcel_to=yes with a fixed text, namely 'You can send parcels to here for pickup' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "yes"
},
{
"key": "post_office:parcel_to",
"description": "Layer 'Post offices' shows post_office:parcel_to=no with a fixed text, namely 'You can't send parcels to here for pickup' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "no"
},
{
"key": "post_office:stamps",
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:stamps' (in the MapComplete.osm.be theme 'Postbox and Post Office Map')"
},
{
"key": "post_office:stamps",
"description": "Layer 'Post offices' shows post_office:stamps=yes with a fixed text, namely 'You can buy stamps here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "yes"
},
{
"key": "post_office:stamps",
"description": "Layer 'Post offices' shows post_office:stamps=no with a fixed text, namely 'You can't buy stamps here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Postbox and Post Office Map')",
"value": "no"
},
{
"key": "amenity",

View file

@ -34,810 +34,6 @@
"key": "name",
"description": "Layer 'Shop' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Open Shop Map')"
},
{
"key": "shop",
"description": "Layer 'Shop' shows and asks freeform values for key 'shop' (in the MapComplete.osm.be theme 'Open Shop Map')"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=agrarian with a fixed text, namely 'Farm Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "agrarian"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=alcohol with a fixed text, namely 'Liquor Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "alcohol"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=anime with a fixed text, namely 'Anime / Manga Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "anime"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=antiques with a fixed text, namely 'Antiques Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "antiques"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=appliance with a fixed text, namely 'Appliance Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "appliance"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=art with a fixed text, namely 'Art Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "art"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=baby_goods with a fixed text, namely 'Baby Goods Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "baby_goods"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bag with a fixed text, namely 'Bag/Luggage Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "bag"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bakery with a fixed text, namely 'Bakery' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "bakery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bathroom_furnishing with a fixed text, namely 'Bathroom Furnishing Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "bathroom_furnishing"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=beauty with a fixed text, namely 'Beauty Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "beauty"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bed with a fixed text, namely 'Bedding/Mattress Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "bed"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=beverages with a fixed text, namely 'Beverage Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "beverages"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bicycle with a fixed text, namely 'Bicycle Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "bicycle"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=boat with a fixed text, namely 'Boat Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "boat"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=bookmaker with a fixed text, namely 'Bookmaker' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "bookmaker"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=books with a fixed text, namely 'Book Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "books"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=brewing_supplies with a fixed text, namely 'Brewing Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "brewing_supplies"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=butcher with a fixed text, namely 'Butcher' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "butcher"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=camera with a fixed text, namely 'Camera Equipment Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "camera"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=candles with a fixed text, namely 'Candle Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "candles"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=cannabis with a fixed text, namely 'Cannabis Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "cannabis"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=car with a fixed text, namely 'Car Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "car"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=car_parts with a fixed text, namely 'Car Parts Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "car_parts"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=car_repair with a fixed text, namely 'Car Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "car_repair"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=caravan with a fixed text, namely 'RV Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "caravan"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=carpet with a fixed text, namely 'Carpet Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "carpet"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=catalogue with a fixed text, namely 'Catalog Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "catalogue"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=charity with a fixed text, namely 'Charity Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "charity"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=cheese with a fixed text, namely 'Cheese Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "cheese"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=chemist with a fixed text, namely 'Drugstore' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "chemist"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=chocolate with a fixed text, namely 'Chocolate Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "chocolate"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=clothes with a fixed text, namely 'Clothing Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "clothes"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=coffee with a fixed text, namely 'Coffee Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "coffee"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=collector with a fixed text, namely 'Collectibles Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "collector"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=computer with a fixed text, namely 'Computer Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "computer"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=confectionery with a fixed text, namely 'Candy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "confectionery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=convenience with a fixed text, namely 'Convenience Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "convenience"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=copyshop with a fixed text, namely 'Copy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "copyshop"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=cosmetics with a fixed text, namely 'Cosmetics Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "cosmetics"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=country_store with a fixed text, namely 'Country Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "country_store"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=craft with a fixed text, namely 'Arts & Crafts Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "craft"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=curtain with a fixed text, namely 'Curtain Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "curtain"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=dairy with a fixed text, namely 'Dairy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "dairy"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=deli with a fixed text, namely 'Deli' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "deli"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=department_store with a fixed text, namely 'Department Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "department_store"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=doityourself with a fixed text, namely 'DIY Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "doityourself"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=doors with a fixed text, namely 'Door Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "doors"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=dry_cleaning with a fixed text, namely 'Dry Cleaner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "dry_cleaning"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=e-cigarette with a fixed text, namely 'E-Cigarette Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "e-cigarette"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=electrical with a fixed text, namely 'Electrical Equipment Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "electrical"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=electronics with a fixed text, namely 'Electronics Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "electronics"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=erotic with a fixed text, namely 'Erotic Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "erotic"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=fabric with a fixed text, namely 'Fabric Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "fabric"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=farm with a fixed text, namely 'Produce Stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "farm"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=fashion_accessories with a fixed text, namely 'Fashion Accessories Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "fashion_accessories"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=fireplace with a fixed text, namely 'Fireplace Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "fireplace"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=fishing with a fixed text, namely 'Fishing Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "fishing"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=flooring with a fixed text, namely 'Flooring Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "flooring"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=florist with a fixed text, namely 'Florist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "florist"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=frame with a fixed text, namely 'Framing Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "frame"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=frozen_food with a fixed text, namely 'Frozen Food Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "frozen_food"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=fuel with a fixed text, namely 'Fuel Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "fuel"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=funeral_directors with a fixed text, namely 'Funeral Home' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "funeral_directors"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=furniture with a fixed text, namely 'Furniture Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "furniture"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=games with a fixed text, namely 'Tabletop Game Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "games"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=garden_centre with a fixed text, namely 'Garden Center' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "garden_centre"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=gas with a fixed text, namely 'Bottled Gas Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "gas"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=general with a fixed text, namely 'General Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "general"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=gift with a fixed text, namely 'Gift Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "gift"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=greengrocer with a fixed text, namely 'Greengrocer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "greengrocer"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hairdresser with a fixed text, namely 'Hairdresser' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "hairdresser"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hairdresser_supply with a fixed text, namely 'Hairdresser Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "hairdresser_supply"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hardware with a fixed text, namely 'Hardware Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "hardware"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=health_food with a fixed text, namely 'Health Food Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "health_food"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hearing_aids with a fixed text, namely 'Hearing Aids Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "hearing_aids"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=herbalist with a fixed text, namely 'Herbalist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "herbalist"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hifi with a fixed text, namely 'Hifi Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "hifi"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hobby with a fixed text, namely 'Hobby Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "hobby"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=household_linen with a fixed text, namely 'Household Linen Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "household_linen"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=houseware with a fixed text, namely 'Houseware Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "houseware"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=hunting with a fixed text, namely 'Hunting Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "hunting"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=interior_decoration with a fixed text, namely 'Interior Decoration Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "interior_decoration"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=jewelry with a fixed text, namely 'Jewelry Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "jewelry"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=kiosk with a fixed text, namely 'Kiosk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "kiosk"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=kitchen with a fixed text, namely 'Kitchen Design Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "kitchen"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=laundry with a fixed text, namely 'Laundry' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "laundry"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=leather with a fixed text, namely 'Leather Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "leather"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=lighting with a fixed text, namely 'Lighting Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "lighting"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=locksmith with a fixed text, namely 'Locksmith' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "locksmith"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=lottery with a fixed text, namely 'Lottery Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "lottery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=mall with a fixed text, namely 'Mall' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "mall"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=massage with a fixed text, namely 'Massage Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "massage"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=medical_supply with a fixed text, namely 'Medical Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "medical_supply"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=military_surplus with a fixed text, namely 'Military Surplus Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "military_surplus"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=mobile_phone with a fixed text, namely 'Mobile Phone Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "mobile_phone"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=model with a fixed text, namely 'Model Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "model"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=money_lender with a fixed text, namely 'Money Lender' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "money_lender"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=motorcycle with a fixed text, namely 'Motorcycle Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "motorcycle"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=motorcycle_repair with a fixed text, namely 'Motorcycle Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "motorcycle_repair"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=music with a fixed text, namely 'Music Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "music"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=musical_instrument with a fixed text, namely 'Musical Instrument Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "musical_instrument"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=newsagent with a fixed text, namely 'Newspaper/Magazine Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "newsagent"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=nutrition_supplements with a fixed text, namely 'Nutrition Supplements Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "nutrition_supplements"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=optician with a fixed text, namely 'Optician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "optician"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=outdoor with a fixed text, namely 'Outdoors Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "outdoor"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=outpost with a fixed text, namely 'Online Retailer Outpost' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "outpost"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=paint with a fixed text, namely 'Paint Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "paint"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=party with a fixed text, namely 'Party Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "party"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pastry with a fixed text, namely 'Pastry Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "pastry"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pawnbroker with a fixed text, namely 'Pawn Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "pawnbroker"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=perfumery with a fixed text, namely 'Perfume Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "perfumery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pet with a fixed text, namely 'Pet Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "pet"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pet_grooming with a fixed text, namely 'Pet Grooming Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "pet_grooming"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=photo with a fixed text, namely 'Photography Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "photo"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pottery with a fixed text, namely 'Pottery Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "pottery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=printer_ink with a fixed text, namely 'Printer Ink Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "printer_ink"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=psychic with a fixed text, namely 'Psychic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "psychic"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=pyrotechnics with a fixed text, namely 'Fireworks Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "pyrotechnics"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=radiotechnics with a fixed text, namely 'Radio/Electronic Component Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "radiotechnics"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=religion with a fixed text, namely 'Religious Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "religion"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=rental with a fixed text, namely 'Rental Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "rental"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=repair with a fixed text, namely 'Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "repair"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=scuba_diving with a fixed text, namely 'Scuba Diving Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "scuba_diving"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=seafood with a fixed text, namely 'Seafood Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "seafood"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=second_hand with a fixed text, namely 'Consignment/Thrift Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "second_hand"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=sewing with a fixed text, namely 'Sewing Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "sewing"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=shoe_repair with a fixed text, namely 'Shoe Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "shoe_repair"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=shoes with a fixed text, namely 'Shoe Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "shoes"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=spices with a fixed text, namely 'Spice Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "spices"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=sports with a fixed text, namely 'Sporting Goods Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "sports"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=stationery with a fixed text, namely 'Stationery Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "stationery"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=storage_rental with a fixed text, namely 'Storage Rental' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "storage_rental"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=supermarket with a fixed text, namely 'Supermarket' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "supermarket"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=swimming_pool with a fixed text, namely 'Pool Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "swimming_pool"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tailor with a fixed text, namely 'Tailor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "tailor"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tattoo with a fixed text, namely 'Tattoo Parlor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "tattoo"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tea with a fixed text, namely 'Tea Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "tea"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=telecommunication with a fixed text, namely 'Telecom Retail Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "telecommunication"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=ticket with a fixed text, namely 'Ticket Seller' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "ticket"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tiles with a fixed text, namely 'Tile Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "tiles"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tobacco with a fixed text, namely 'Tobacco Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "tobacco"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tool_hire with a fixed text, namely 'Tool Rental' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "tool_hire"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=toys with a fixed text, namely 'Toy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "toys"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=trade with a fixed text, namely 'Trade Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "trade"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=travel_agency with a fixed text, namely 'Travel Agency' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "travel_agency"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=trophy with a fixed text, namely 'Trophy Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "trophy"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=tyres with a fixed text, namely 'Tire Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "tyres"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=vacuum_cleaner with a fixed text, namely 'Vacuum Cleaner Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "vacuum_cleaner"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=variety_store with a fixed text, namely 'Variety Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "variety_store"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=video with a fixed text, namely 'Video Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "video"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=video_games with a fixed text, namely 'Video Game Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "video_games"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=watches with a fixed text, namely 'Watches Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "watches"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=water with a fixed text, namely 'Drinking Water Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "water"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=water_sports with a fixed text, namely 'Watersport/Swim Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "water_sports"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=weapons with a fixed text, namely 'Weapon Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "weapons"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=wholesale with a fixed text, namely 'Wholesale Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "wholesale"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=wigs with a fixed text, namely 'Wig Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "wigs"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=window_blind with a fixed text, namely 'Window Blind Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "window_blind"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=wine with a fixed text, namely 'Wine Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "wine"
},
{
"key": "opening_hours",
"description": "Layer 'Shop' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Open Shop Map')"

View file

@ -0,0 +1,654 @@
{
"data_format": 1,
"project": {
"name": "MapComplete Sports",
"description": "Map showing sport facilities.",
"project_url": "https://mapcomplete.osm.be/sports",
"doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
"icon_url": "https://mapcomplete.osm.be/assets/themes/sports/sport.svg",
"contact_name": "Pieter Vander Vennet",
"contact_email": "pietervdvn@posteo.net"
},
"tags": [
{
"key": "leisure",
"description": "The MapComplete theme Sports has a layer Sport pitches showing features with this tag",
"value": "pitch"
},
{
"key": "image",
"description": "The layer 'Sport pitches allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'Sport pitches allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'Sport pitches allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'Sport pitches allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "sport",
"description": "Layer 'Sport pitches' shows and asks freeform values for key 'sport' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "sport",
"description": "Layer 'Sport pitches' shows sport=basketball with a fixed text, namely 'Basketball is played here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "basketball"
},
{
"key": "sport",
"description": "Layer 'Sport pitches' shows sport=soccer with a fixed text, namely 'Soccer is played here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "soccer"
},
{
"key": "sport",
"description": "Layer 'Sport pitches' shows sport=table_tennis with a fixed text, namely 'This is a pingpong table' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "table_tennis"
},
{
"key": "sport",
"description": "Layer 'Sport pitches' shows sport=tennis with a fixed text, namely 'Tennis is played here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "tennis"
},
{
"key": "sport",
"description": "Layer 'Sport pitches' shows sport=korfball with a fixed text, namely 'Korfball is played here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "korfball"
},
{
"key": "sport",
"description": "Layer 'Sport pitches' shows sport=basket with a fixed text, namely 'Basketball is played here' (in the MapComplete.osm.be theme 'Sports')",
"value": "basket"
},
{
"key": "surface",
"description": "Layer 'Sport pitches' shows and asks freeform values for key 'surface' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "surface",
"description": "Layer 'Sport pitches' shows surface=grass with a fixed text, namely 'The surface is <b>grass</b>' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "grass"
},
{
"key": "surface",
"description": "Layer 'Sport pitches' shows surface=sand with a fixed text, namely 'The surface is <b>sand</b>' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "sand"
},
{
"key": "surface",
"description": "Layer 'Sport pitches' shows surface=paving_stones with a fixed text, namely 'The surface is <b>paving stones</b>' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "paving_stones"
},
{
"key": "surface",
"description": "Layer 'Sport pitches' shows surface=asphalt with a fixed text, namely 'The surface is <b>asphalt</b>' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "asphalt"
},
{
"key": "surface",
"description": "Layer 'Sport pitches' shows surface=concrete with a fixed text, namely 'The surface is <b>concrete</b>' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "concrete"
},
{
"key": "access",
"description": "Layer 'Sport pitches' shows access=yes with a fixed text, namely 'Public access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "access",
"description": "Layer 'Sport pitches' shows access=limited with a fixed text, namely 'Limited access (e.g. only with an appointment, during certain hours, …)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "limited"
},
{
"key": "access",
"description": "Layer 'Sport pitches' shows access=members with a fixed text, namely 'Only accessible for members of the club' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "members"
},
{
"key": "access",
"description": "Layer 'Sport pitches' shows access=private with a fixed text, namely 'Private - not accessible to the public' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "private"
},
{
"key": "access",
"description": "Layer 'Sport pitches' shows access=public with a fixed text, namely 'Public access' (in the MapComplete.osm.be theme 'Sports')",
"value": "public"
},
{
"key": "reservation",
"description": "Layer 'Sport pitches' shows reservation=required with a fixed text, namely 'Making an appointment is obligatory to use this sport pitch' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "required"
},
{
"key": "reservation",
"description": "Layer 'Sport pitches' shows reservation=recommended with a fixed text, namely 'Making an appointment is recommended when using this sport pitch' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "recommended"
},
{
"key": "reservation",
"description": "Layer 'Sport pitches' shows reservation=yes with a fixed text, namely 'Making an appointment is possible, but not necessary to use this sport pitch' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "reservation",
"description": "Layer 'Sport pitches' shows reservation=no with a fixed text, namely 'Making an appointment is not possible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "no"
},
{
"key": "phone",
"description": "Layer 'Sport pitches' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "email",
"description": "Layer 'Sport pitches' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "opening_hours",
"description": "Layer 'Sport pitches' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "opening_hours",
"description": "Layer 'Sport pitches' shows with a fixed text, namely 'Always accessible' (in the MapComplete.osm.be theme 'Sports') Picking this answer will delete the key opening_hours.",
"value": ""
},
{
"key": "opening_hours",
"description": "Layer 'Sport pitches' shows opening_hours=24/7 with a fixed text, namely 'Always accessible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "24/7"
},
{
"key": "leisure",
"description": "The MapComplete theme Sports has a layer Fitness Centres showing features with this tag",
"value": "fitness_centre"
},
{
"key": "name",
"description": "Layer 'Fitness Centres' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "noname",
"description": "Layer 'Fitness Centres' shows noname=yes with a fixed text, namely 'This fitness centre has no name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "image",
"description": "The layer 'Fitness Centres allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'Fitness Centres allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'Fitness Centres allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'Fitness Centres allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "phone",
"description": "Layer 'Fitness Centres' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "contact:phone",
"description": "Layer 'Fitness Centres' shows contact:phone~.+ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "email",
"description": "Layer 'Fitness Centres' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "contact:email",
"description": "Layer 'Fitness Centres' shows contact:email~.+ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "website",
"description": "Layer 'Fitness Centres' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "contact:website",
"description": "Layer 'Fitness Centres' shows contact:website~.+ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "opening_hours",
"description": "Layer 'Fitness Centres' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "wheelchair",
"description": "Layer 'Fitness Centres' shows wheelchair=designated with a fixed text, namely 'This place is specially adapted for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "designated"
},
{
"key": "wheelchair",
"description": "Layer 'Fitness Centres' shows wheelchair=yes with a fixed text, namely 'This place is easily reachable with a wheelchair' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Fitness Centres' shows wheelchair=limited with a fixed text, namely 'It is possible to reach this place in a wheelchair, but it is not easy' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "limited"
},
{
"key": "wheelchair",
"description": "Layer 'Fitness 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.osm.be theme 'Sports')",
"value": "no"
},
{
"key": "level",
"description": "Layer 'Fitness Centres' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "location",
"description": "Layer 'Fitness Centres' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Sports')",
"value": "underground"
},
{
"key": "level",
"description": "Layer 'Fitness Centres' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "0"
},
{
"key": "level",
"description": "Layer 'Fitness Centres' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Sports') Picking this answer will delete the key level.",
"value": ""
},
{
"key": "level",
"description": "Layer 'Fitness Centres' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "1"
},
{
"key": "level",
"description": "Layer 'Fitness Centres' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "-1"
},
{
"key": "leisure",
"description": "The MapComplete theme Sports has a layer Fitness Stations showing features with this tag",
"value": "fitness_station"
},
{
"key": "name",
"description": "Layer 'Fitness Stations' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "noname",
"description": "Layer 'Fitness Stations' shows noname=yes with a fixed text, namely 'This fitness station doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=horizontal_bar with a fixed text, namely 'This fitness station has a horizontal bar, high enough for pull-ups.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "horizontal_bar"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=sign with a fixed text, namely 'This fitness station has a sign with instructions for a specific exercise.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "sign"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=sit-up with a fixed text, namely 'This fitness station has a facility for sit-ups.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "sit-up"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=push-up with a fixed text, namely 'This fitness station has a facility for push-ups. Usually consists of one or more low horizontal bars.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "push-up"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=stretch_bars with a fixed text, namely 'This fitness station has bars for stretching.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "stretch_bars"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=hyperextension with a fixed text, namely 'This fitness station has a station for making hyperextensions.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "hyperextension"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=rings with a fixed text, namely 'This fitness station has rings for gymnastic exercises.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "rings"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=horizontal_ladder with a fixed text, namely 'This fitness station has a horizontal ladder, also known as monkey bars.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "horizontal_ladder"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=wall_bars with a fixed text, namely 'This fitness station has wall bars to climb on.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "wall_bars"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=slalom with a fixed text, namely 'This fitness station has posts for performing slalom exercises.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "slalom"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=stepping_stones with a fixed text, namely 'This fitness station has stepping stones.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "stepping_stones"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=leapfrog with a fixed text, namely 'This fitness station has cones for performing leapfrog jumps.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "leapfrog"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=beam_jump with a fixed text, namely 'This fitness station has beams to jump over.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "beam_jump"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=hurdling with a fixed text, namely 'This fitness station has hurdles to cross.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "hurdling"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=wall with a fixed text, namely 'This fitness station has a wall to climb on.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "wall"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=balance_beam with a fixed text, namely 'This fitness station has a balance beam.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "balance_beam"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=log_lifting with a fixed text, namely 'This fitness station has a log with a handle on the end to lift.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "log_lifting"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=captains_chair with a fixed text, namely 'This fitness station has a chair with only elbow supports and a rear (without seat), for performing leg raises.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "captains_chair"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=box with a fixed text, namely 'This fitness station has a box that can be used for jumping.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "box"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=battling_ropes with a fixed text, namely 'This fitness station has battling ropes.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "battling_ropes"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=excercise_bike with a fixed text, namely 'This fitness station has a stationary bicycle.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "excercise_bike"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=elliptical_trainer with a fixed text, namely 'This fitness station has a cross-trainer.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "elliptical_trainer"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=air_walker with a fixed text, namely 'This fitness station has an air walker.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "air_walker"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=rower with a fixed text, namely 'This fitness station has a rower.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "rower"
},
{
"key": "fitness_station",
"description": "Layer 'Fitness Stations' shows fitness_station=slackline with a fixed text, namely 'This fitness station has a slackline.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "slackline"
},
{
"key": "operator",
"description": "Layer 'Fitness Stations' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "opening_hours",
"description": "Layer 'Fitness Stations' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "leisure",
"description": "The MapComplete theme Sports has a layer Sports centres showing features with this tag",
"value": "sports_centre"
},
{
"key": "image",
"description": "The layer 'Sports centres allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'Sports centres allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'Sports centres allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'Sports centres allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "opening_hours",
"description": "Layer 'Sports centres' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "phone",
"description": "Layer 'Sports centres' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "contact:phone",
"description": "Layer 'Sports centres' shows contact:phone~.+ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "website",
"description": "Layer 'Sports centres' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "contact:website",
"description": "Layer 'Sports centres' shows contact:website~.+ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "email",
"description": "Layer 'Sports centres' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "contact:email",
"description": "Layer 'Sports centres' shows contact:email~.+ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "wheelchair",
"description": "Layer 'Sports centres' shows wheelchair=designated with a fixed text, namely 'This place is specially adapted for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "designated"
},
{
"key": "wheelchair",
"description": "Layer 'Sports centres' shows wheelchair=yes with a fixed text, namely 'This place is easily reachable with a wheelchair' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Sports centres' shows wheelchair=limited with a fixed text, namely 'It is possible to reach this place in a wheelchair, but it is not easy' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "limited"
},
{
"key": "wheelchair",
"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.osm.be theme 'Sports')",
"value": "no"
},
{
"key": "shop",
"description": "The MapComplete theme Sports has a layer Shop showing features with this tag",
"value": "sports"
},
{
"key": "image",
"description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "name",
"description": "Layer 'Shop' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "opening_hours",
"description": "Layer 'Shop' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "website",
"description": "Layer 'Shop' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "contact:website",
"description": "Layer 'Shop' shows contact:website~.+ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "email",
"description": "Layer 'Shop' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "contact:email",
"description": "Layer 'Shop' shows contact:email~.+ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "phone",
"description": "Layer 'Shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "contact:phone",
"description": "Layer 'Shop' shows contact:phone~.+ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "payment:cash",
"description": "Layer 'Shop' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "payment:cards",
"description": "Layer 'Shop' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "level",
"description": "Layer 'Shop' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "location",
"description": "Layer 'Shop' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Sports')",
"value": "underground"
},
{
"key": "level",
"description": "Layer 'Shop' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "0"
},
{
"key": "level",
"description": "Layer 'Shop' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Sports') Picking this answer will delete the key level.",
"value": ""
},
{
"key": "level",
"description": "Layer 'Shop' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "1"
},
{
"key": "level",
"description": "Layer 'Shop' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "-1"
},
{
"key": "service:print:A4",
"description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "service:print:A3",
"description": "Layer 'Shop' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "service:print:A2",
"description": "Layer 'Shop' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "service:print:A1",
"description": "Layer 'Shop' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "service:print:A0",
"description": "Layer 'Shop' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "internet_access",
"description": "Layer 'Shop' shows internet_access=wlan with a fixed text, namely 'This place offers wireless internet access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "wlan"
},
{
"key": "internet_access",
"description": "Layer 'Shop' shows internet_access=no with a fixed text, namely 'This place <b>does not</b> offer internet access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "no"
},
{
"key": "internet_access",
"description": "Layer 'Shop' shows internet_access=yes with a fixed text, namely 'This place offers internet access' (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "internet_access",
"description": "Layer 'Shop' shows internet_access=terminal with a fixed text, namely 'This place offers internet access via a terminal or computer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "terminal"
},
{
"key": "internet_access",
"description": "Layer 'Shop' shows internet_access=wired with a fixed text, namely 'This place offers wired internet access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "wired"
},
{
"key": "internet_access:fee",
"description": "Layer 'Shop' shows internet_access:fee=yes with a fixed text, namely 'There is a fee for the internet access at this place' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "yes"
},
{
"key": "internet_access:fee",
"description": "Layer 'Shop' shows internet_access:fee=no with a fixed text, namely 'Internet access is free at this place' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "no"
},
{
"key": "internet_access:fee",
"description": "Layer 'Shop' shows internet_access:fee=customers with a fixed text, namely 'Internet access is free at this place, for customers only' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "customers"
},
{
"key": "internet_access:ssid",
"description": "Layer 'Shop' shows and asks freeform values for key 'internet_access:ssid' (in the MapComplete.osm.be theme 'Sports')"
},
{
"key": "internet_access:ssid",
"description": "Layer 'Shop' shows internet_access:ssid=Telekom with a fixed text, namely 'Telekom' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports')",
"value": "Telekom"
}
]
}

View file

@ -119,7 +119,7 @@
},
{
"key": "opening_hours",
"description": "Layer 'Toilets' shows opening_hours=24/7 with a fixed text, namely 'Opened 24/7' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"description": "Layer 'Toilets' shows opening_hours=24/7 with a fixed text, namely '24/7 opened (including holidays)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "24/7"
},
{
@ -218,6 +218,126 @@
{
"key": "description",
"description": "Layer 'Toilets' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'Open Toilet Map')"
},
{
"key": "toilets",
"description": "The MapComplete theme Open Toilet Map has a layer Toilets at other amenities showing features with this tag",
"value": "yes"
},
{
"key": "image",
"description": "The layer 'Toilets at other amenities allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'Toilets at other amenities allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'Toilets at other amenities allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'Toilets at other amenities allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "level",
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Open Toilet Map')"
},
{
"key": "location",
"description": "Layer 'Toilets at other amenities' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "underground"
},
{
"key": "level",
"description": "Layer 'Toilets at other amenities' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "0"
},
{
"key": "level",
"description": "Layer 'Toilets at other amenities' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Open Toilet Map') Picking this answer will delete the key level.",
"value": ""
},
{
"key": "level",
"description": "Layer 'Toilets at other amenities' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "1"
},
{
"key": "level",
"description": "Layer 'Toilets at other amenities' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "-1"
},
{
"key": "toilets:access",
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'toilets:access' (in the MapComplete.osm.be theme 'Open Toilet Map')"
},
{
"key": "toilets:access",
"description": "Layer 'Toilets at other amenities' shows toilets:access=yes with a fixed text, namely 'Public access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "yes"
},
{
"key": "toilets:access",
"description": "Layer 'Toilets at other amenities' shows toilets:access=customers with a fixed text, namely 'Only access to customers of the amenity' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "customers"
},
{
"key": "toilets:access",
"description": "Layer 'Toilets at other amenities' shows toilets:access=no with a fixed text, namely 'Not accessible, even for customers of the amenity' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "no"
},
{
"key": "toilets:access",
"description": "Layer 'Toilets at other amenities' shows toilets:access=key with a fixed text, namely 'Accessible, but one has to ask a key to enter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "key"
},
{
"key": "toilets:access",
"description": "Layer 'Toilets at other amenities' shows toilets:access=public with a fixed text, namely 'Public access' (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "public"
},
{
"key": "toilets:fee",
"description": "Layer 'Toilets at other amenities' shows toilets:fee=yes with a fixed text, namely 'These are paid toilets' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "yes"
},
{
"key": "toilets:fee",
"description": "Layer 'Toilets at other amenities' shows toilets:fee=no with a fixed text, namely 'Free to use' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "no"
},
{
"key": "toilets:charge",
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'toilets:charge' (in the MapComplete.osm.be theme 'Open Toilet Map')"
},
{
"key": "opening_hours",
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Open Toilet Map')"
},
{
"key": "toilets:wheelchair",
"description": "Layer 'Toilets at other amenities' shows toilets:wheelchair=yes with a fixed text, namely 'There is a dedicated toilet for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "yes"
},
{
"key": "toilets:wheelchair",
"description": "Layer 'Toilets at other amenities' shows toilets:wheelchair=no with a fixed text, namely 'No wheelchair access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "no"
},
{
"key": "toilets:wheelchair",
"description": "Layer 'Toilets at other amenities' shows toilets:wheelchair=designated with a fixed text, namely 'There is only a dedicated toilet for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "designated"
},
{
"key": "toilets:door:width",
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'toilets:door:width' (in the MapComplete.osm.be theme 'Open Toilet Map')"
},
{
"key": "toilets:description",
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'toilets:description' (in the MapComplete.osm.be theme 'Open Toilet Map')"
}
]
}

View file

@ -18,7 +18,11 @@ import * as licenses from "../assets/generated/license_info.json"
import TagRenderingConfig from "../Models/ThemeConfig/TagRenderingConfig"
import { FixImages } from "../Models/ThemeConfig/Conversion/FixImages"
import Svg from "../Svg"
import {DoesImageExist, PrevalidateTheme, ValidateThemeAndLayers} from "../Models/ThemeConfig/Conversion/Validation";
import {
DoesImageExist,
PrevalidateTheme,
ValidateThemeAndLayers,
} from "../Models/ThemeConfig/Conversion/Validation"
export default class DetermineLayout {
private static readonly _knownImages = new Set(Array.from(licenses).map((l) => l.path))
@ -188,7 +192,7 @@ export default class DetermineLayout {
}
{
let { errors } = new ValidateThemeAndLayers(
new DoesImageExist(new Set<string>(), _ => true),
new DoesImageExist(new Set<string>(), (_) => true),
"",
false,
SharedTagRenderings.SharedTagRendering

View file

@ -2,7 +2,7 @@ import FeatureSource, {FeatureSourceForLayer, Tiled} from "../FeatureSource"
import { ImmutableStore, Store } from "../../UIEventSource"
import FilteredLayer from "../../../Models/FilteredLayer"
import { BBox } from "../../BBox"
import {Feature} from "geojson";
import { Feature } from "geojson"
/**
* A simple, read only feature store.

View file

@ -8,12 +8,13 @@ import {
booleanWithin,
Coord,
Feature,
Geometry, Lines,
Geometry,
Lines,
MultiPolygon,
Polygon,
Properties,
} from "@turf/turf"
import {GeoJSON, LineString, Point} from "geojson";
import { GeoJSON, LineString, Point } from "geojson"
export class GeoOperations {
private static readonly _earthRadius = 6378137

View file

@ -19,7 +19,11 @@ export default class CreateNewNodeAction extends OsmCreateAction {
private readonly _lon: number
private readonly _snapOnto: OsmWay
private readonly _reusePointDistance: number
private readonly meta: { changeType: "create" | "import"; theme: string; specialMotivation?: string }
private readonly meta: {
changeType: "create" | "import"
theme: string
specialMotivation?: string
}
private readonly _reusePreviouslyCreatedPoint: boolean
constructor(

View file

@ -6,7 +6,7 @@ import ChangeTagAction from "./ChangeTagAction"
import { TagsFilter } from "../../Tags/TagsFilter"
import { And } from "../../Tags/And"
import { Tag } from "../../Tags/Tag"
import {OsmId} from "../../../Models/OsmFeature";
import { OsmId } from "../../../Models/OsmFeature"
import { Utils } from "../../../Utils"
export default class DeleteAction extends OsmChangeAction {
@ -19,7 +19,6 @@ export default class DeleteAction extends OsmChangeAction {
private readonly _id: OsmId
private readonly _hardDelete: boolean
constructor(
id: OsmId,
softDeletionTags: TagsFilter | undefined,
@ -42,8 +41,9 @@ export default class DeleteAction extends OsmChangeAction {
new Tag(
"fixme",
`A mapcomplete user marked this feature to be deleted (${meta.specialMotivation})`
),
])
)
]))
}
}
/**
@ -63,8 +63,11 @@ export default class DeleteAction extends OsmChangeAction {
* const descr = await da.CreateChangeDescriptions(new Changes(), obj)
* descr[0] // => {doDelete: true, meta: {theme: "test", specialMotivation: "Testcase", changeType: "deletion"}, type: "node",id: 1 }
*/
public async CreateChangeDescriptions(changes: Changes, object?: OsmObject): Promise<ChangeDescription[]> {
const osmObject = object ?? await OsmObject.DownloadObjectAsync(this._id)
public async CreateChangeDescriptions(
changes: Changes,
object?: OsmObject
): Promise<ChangeDescription[]> {
const osmObject = object ?? (await OsmObject.DownloadObjectAsync(this._id))
if (this._hardDelete) {
return [

View file

@ -13,7 +13,7 @@ import { Utils } from "../../../Utils"
import { OsmConnection } from "../OsmConnection"
import { Feature } from "@turf/turf"
import FeaturePipeline from "../../FeatureSource/FeaturePipeline"
import {Geometry, LineString, Point, Polygon} from "geojson";
import { Geometry, LineString, Point, Polygon } from "geojson"
export default class ReplaceGeometryAction extends OsmChangeAction {
/**

View file

@ -4,7 +4,7 @@ import {Store, UIEventSource} from "../UIEventSource"
import { BBox } from "../BBox"
import * as OsmToGeoJson from "osmtogeojson"
import { NodeId, OsmFeature, OsmId, OsmTags, RelationId, WayId } from "../../Models/OsmFeature"
import {Feature, LineString, Polygon} from "geojson";
import { Feature, LineString, Polygon } from "geojson"
export abstract class OsmObject {
private static defaultBackend = "https://www.openstreetmap.org/"
@ -41,9 +41,9 @@ export abstract class OsmObject {
this.backendURL = url
}
public static DownloadObject(id: NodeId, forceRefresh?: boolean): Store<OsmNode> ;
public static DownloadObject(id: RelationId, forceRefresh?: boolean): Store<OsmRelation> ;
public static DownloadObject(id: WayId, forceRefresh?: boolean): Store<OsmWay> ;
public static DownloadObject(id: NodeId, forceRefresh?: boolean): Store<OsmNode>
public static DownloadObject(id: RelationId, forceRefresh?: boolean): Store<OsmRelation>
public static DownloadObject(id: WayId, forceRefresh?: boolean): Store<OsmWay>
public static DownloadObject(id: string, forceRefresh: boolean = false): Store<OsmObject> {
let src: UIEventSource<OsmObject>
if (OsmObject.objectCache.has(id)) {
@ -73,12 +73,30 @@ export abstract class OsmObject {
return rawData.elements[0].tags
}
static async DownloadObjectAsync(id: NodeId, maxCacheAgeInSecs?: number): Promise<OsmNode | undefined>
static async DownloadObjectAsync(id: WayId, maxCacheAgeInSecs?: number): Promise<OsmWay | undefined>
static async DownloadObjectAsync(id: RelationId, maxCacheAgeInSecs?: number): Promise<OsmRelation | undefined>
static async DownloadObjectAsync(id: OsmId, maxCacheAgeInSecs?: number): Promise<OsmObject | undefined>
static async DownloadObjectAsync(id: string, maxCacheAgeInSecs?: number): Promise<OsmObject | undefined>
static async DownloadObjectAsync(id: string, maxCacheAgeInSecs?: number): Promise<OsmObject | undefined> {
static async DownloadObjectAsync(
id: NodeId,
maxCacheAgeInSecs?: number
): Promise<OsmNode | undefined>
static async DownloadObjectAsync(
id: WayId,
maxCacheAgeInSecs?: number
): Promise<OsmWay | undefined>
static async DownloadObjectAsync(
id: RelationId,
maxCacheAgeInSecs?: number
): Promise<OsmRelation | undefined>
static async DownloadObjectAsync(
id: OsmId,
maxCacheAgeInSecs?: number
): Promise<OsmObject | undefined>
static async DownloadObjectAsync(
id: string,
maxCacheAgeInSecs?: number
): Promise<OsmObject | undefined>
static async DownloadObjectAsync(
id: string,
maxCacheAgeInSecs?: number
): Promise<OsmObject | undefined> {
const splitted = id.split("/")
const type = splitted[0]
const idN = Number(splitted[1])
@ -264,8 +282,10 @@ export abstract class OsmObject {
return false
}
private static constructPolygonFeatures(): Map<string,
{ values: Set<string>; blacklist: boolean }> {
private static constructPolygonFeatures(): Map<
string,
{ values: Set<string>; blacklist: boolean }
> {
const result = new Map<string, { values: Set<string>; blacklist: boolean }>()
for (const polygonFeature of polygon_features["default"] ?? polygon_features) {
const key = polygonFeature.key

View file

@ -9,7 +9,7 @@ import LayerConfig from "../Models/ThemeConfig/LayerConfig"
import { CountryCoder } from "latlon2country"
import Constants from "../Models/Constants"
import { TagUtils } from "./Tags/TagUtils"
import {Feature, LineString} from "geojson";
import { Feature, LineString } from "geojson"
export class SimpleMetaTagger {
public readonly keys: string[]
@ -426,21 +426,24 @@ export default class SimpleMetaTaggers {
{
keys: ["_direction:centerpoint"],
isLazy: true,
doc: "_direction:centerpoint is the direction of the linestring (in degrees) if one were standing at the projected centerpoint."
doc: "_direction:centerpoint is the direction of the linestring (in degrees) if one were standing at the projected centerpoint.",
},
(feature: Feature) => {
if (feature.geometry.type !== "LineString") {
return false
}
const ls = <Feature<LineString>> feature;
const ls = <Feature<LineString>>feature
Object.defineProperty(feature.properties, "_direction:centerpoint", {
enumerable: false,
configurable: true,
get: () => {
const centroid = GeoOperations.centerpoint(feature)
const projected = GeoOperations.nearestPoint(ls, <[number,number]> centroid.geometry.coordinates)
const projected = GeoOperations.nearestPoint(
ls,
<[number, number]>centroid.geometry.coordinates
)
const nextPoint = ls.geometry.coordinates[projected.properties.index + 1]
const bearing = GeoOperations.bearing(projected.geometry.coordinates, nextPoint)
delete feature.properties["_direction:centerpoint"]

View file

@ -557,7 +557,7 @@ export class TagUtils {
if (tag.indexOf("~~") >= 0) {
const split = Utils.SplitFirst(tag, "~~")
let keyRegex: RegExp;
let keyRegex: RegExp
if (split[0] === "*") {
keyRegex = new RegExp(".+", "i")
} else {
@ -569,10 +569,7 @@ export class TagUtils {
} else {
valueRegex = new RegExp("^(" + split[1] + ")$", "s")
}
return new RegexTag(
keyRegex,
valueRegex
)
return new RegexTag(keyRegex, valueRegex)
}
const withRegex = TagUtils.parseRegexOperator(tag)
if (withRegex != null) {
@ -627,7 +624,7 @@ export class TagUtils {
)
}
if (split[1] === "") {
return new RegexTag(split[0], /.+/si)
return new RegexTag(split[0], /.+/is)
}
return new RegexTag(split[0], split[1], true)
}

View file

@ -683,12 +683,18 @@ export class UIEventSource<T> extends Store<T> {
* Given a function 'f', will construct a new UIEventSource where the contents will always be "f(this.data)'
*/
public mapD<J>(f: (t: T) => J, extraSources: Store<any>[] = []): Store<J | undefined> {
return new MappedStore(this, t => {
return new MappedStore(
this,
(t) => {
if (t === undefined) {
return undefined
}
return f(t)
}, extraSources, this._callbacks, this.data === undefined ? undefined : f(this.data))
},
extraSources,
this._callbacks,
this.data === undefined ? undefined : f(this.data)
)
}
/**

View file

@ -1,4 +1,14 @@
import {Concat, Conversion, DesugaringContext, DesugaringStep, Each, FirstOf, Fuse, On, SetDefault,} from "./Conversion"
import {
Concat,
Conversion,
DesugaringContext,
DesugaringStep,
Each,
FirstOf,
Fuse,
On,
SetDefault,
} from "./Conversion"
import { LayerConfigJson } from "../Json/LayerConfigJson"
import { TagRenderingConfigJson } from "../Json/TagRenderingConfigJson"
import { Utils } from "../../../Utils"
@ -8,27 +18,32 @@ import Translations from "../../../UI/i18n/Translations"
import { Translation } from "../../../UI/i18n/Translation"
import * as tagrenderingconfigmeta from "../../../assets/tagrenderingconfigmeta.json"
import { AddContextToTranslations } from "./AddContextToTranslations"
import FilterConfigJson from "../Json/FilterConfigJson";
import FilterConfigJson from "../Json/FilterConfigJson"
import * as predifined_filters from "../../../assets/layers/filters/filters.json"
class ExpandFilter extends DesugaringStep<LayerConfigJson> {
private static load_filters(): Map<string, FilterConfigJson> {
let filters = new Map<string, FilterConfigJson>();
for (const filter of (<FilterConfigJson[]>predifined_filters.filter)) {
let filters = new Map<string, FilterConfigJson>()
for (const filter of <FilterConfigJson[]>predifined_filters.filter) {
filters.set(filter.id, filter)
}
return filters;
return filters
}
private static readonly predefinedFilters = ExpandFilter.load_filters();
private static readonly predefinedFilters = ExpandFilter.load_filters()
constructor() {
super("Expands filters: replaces a shorthand by the value found in 'filters.json'", ["filter"], "ExpandFilter");
super(
"Expands filters: replaces a shorthand by the value found in 'filters.json'",
["filter"],
"ExpandFilter"
)
}
convert(json: LayerConfigJson, context: string): { result: LayerConfigJson; errors?: string[]; warnings?: string[]; information?: string[] } {
convert(
json: LayerConfigJson,
context: string
): { result: LayerConfigJson; errors?: string[]; warnings?: string[]; information?: string[] } {
if (json.filter === undefined || json.filter === null) {
return { result: json } // Nothing to change here
}
@ -39,7 +54,7 @@ class ExpandFilter extends DesugaringStep<LayerConfigJson>{
const newFilters: FilterConfigJson[] = []
const errors: string[] = []
for (const filter of (<(FilterConfigJson|string)[]> json.filter)) {
for (const filter of <(FilterConfigJson | string)[]>json.filter) {
if (typeof filter !== "string") {
newFilters.push(filter)
continue
@ -47,18 +62,29 @@ class ExpandFilter extends DesugaringStep<LayerConfigJson>{
// Search for the filter:
const found = ExpandFilter.predefinedFilters.get(filter)
if (found === undefined) {
const suggestions = Utils.sortedByLevenshteinDistance(filter, Array.from(ExpandFilter.predefinedFilters.keys()), t => t)
const err = context+".filter: while searching for predifined filter "+filter+": this filter is not found. Perhaps you meant one of: "+suggestions
const suggestions = Utils.sortedByLevenshteinDistance(
filter,
Array.from(ExpandFilter.predefinedFilters.keys()),
(t) => t
)
const err =
context +
".filter: while searching for predifined filter " +
filter +
": this filter is not found. Perhaps you meant one of: " +
suggestions
errors.push(err)
}
newFilters.push(found)
}
return {result: {
...json, filter: newFilters
}, errors};
return {
result: {
...json,
filter: newFilters,
},
errors,
}
}
}
class ExpandTagRendering extends Conversion<

View file

@ -14,8 +14,8 @@ import {And} from "../../../Logic/Tags/And"
import Translations from "../../../UI/i18n/Translations"
import Svg from "../../../Svg"
import { QuestionableTagRenderingConfigJson } from "../Json/QuestionableTagRenderingConfigJson"
import FilterConfigJson from "../Json/FilterConfigJson";
import DeleteConfig from "../DeleteConfig";
import FilterConfigJson from "../Json/FilterConfigJson"
import DeleteConfig from "../DeleteConfig"
class ValidateLanguageCompleteness extends DesugaringStep<any> {
private readonly _languages: string[]
@ -227,7 +227,6 @@ class ValidateTheme extends DesugaringStep<LayoutConfigJson> {
try {
if (this._isBuiltin) {
if (theme.id !== theme.id.toLowerCase()) {
errors.push("Theme ids should be in lowercase, but it is " + theme.id)
}
@ -870,27 +869,40 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
}
}
export class DetectDuplicateFilters extends DesugaringStep<{ layers: LayerConfigJson[], themes: LayoutConfigJson[]}> {
export class DetectDuplicateFilters extends DesugaringStep<{
layers: LayerConfigJson[]
themes: LayoutConfigJson[]
}> {
constructor() {
super("Tries to detect layers where a shared filter can be used (or where similar filters occur)", [], "DetectDuplicateFilters");
super(
"Tries to detect layers where a shared filter can be used (or where similar filters occur)",
[],
"DetectDuplicateFilters"
)
}
/**
* Add all filter options into 'perOsmTag'
*/
private addLayerFilters(layer: LayerConfigJson, perOsmTag: Map<string, {
private addLayerFilters(
layer: LayerConfigJson,
layout: LayoutConfigJson | undefined,
perOsmTag: Map<
string,
{
layer: LayerConfigJson
layout: LayoutConfigJson | undefined
filter: FilterConfigJson
}[]>, layout?: LayoutConfigJson | undefined): void {
}[]
>,
layout?: LayoutConfigJson | undefined
): void {
if (layer.filter === undefined || layer.filter === null) {
return;
return
}
if (layer.filter["sameAs"] !== undefined) {
return;
return
}
for (const filter of (<(string | FilterConfigJson) []>layer.filter)) {
for (const filter of <(string | FilterConfigJson)[]>layer.filter) {
if (typeof filter === "string") {
continue
}
@ -908,26 +920,36 @@ export class DetectDuplicateFilters extends DesugaringStep<{ layers: LayerConfig
perOsmTag.set(key, [])
}
perOsmTag.get(key).push({
layer, filter, layout
layer,
filter,
layout,
})
}
}
}
}
convert(json: { layers: LayerConfigJson[]; themes: LayoutConfigJson[] }, context: string): { result: { layers: LayerConfigJson[]; themes: LayoutConfigJson[] }; errors?: string[]; warnings?: string[]; information?: string[] } {
convert(
json: { layers: LayerConfigJson[]; themes: LayoutConfigJson[] },
context: string
): {
result: { layers: LayerConfigJson[]; themes: LayoutConfigJson[] }
errors?: string[]
warnings?: string[]
information?: string[]
} {
const errors: string[] = []
const warnings: string[] = []
const information: string[] = []
const { layers, themes } = json
const perOsmTag = new Map<string, {
layer: LayerConfigJson,
layout: LayoutConfigJson | undefined,
const perOsmTag = new Map<
string,
{
layer: LayerConfigJson
layout: LayoutConfigJson | undefined
filter: FilterConfigJson
}[]>()
}[]
>()
for (const layer of layers) {
this.addLayerFilters(layer, perOsmTag)
@ -948,12 +970,11 @@ export class DetectDuplicateFilters extends DesugaringStep<{ layers: LayerConfig
}
}
// At this point, we have gathered all filters per tag - time to find duplicates
perOsmTag.forEach((value, key) => {
if (value.length <= 1) {
// Seen this key just once, it is unique
return;
return
}
let msg = "Possible duplicate filter: " + key
for (const { filter, layer, layout } of value) {
@ -970,8 +991,7 @@ export class DetectDuplicateFilters extends DesugaringStep<{ layers: LayerConfig
result: json,
errors,
warnings,
information
};
information,
}
}
}

View file

@ -267,7 +267,10 @@ export default class TagRenderingConfig {
if (this.freeform.key === "wikidata" && txt.indexOf("{wikipedia()") >= 0) {
continue
}
if (this.freeform.type === "wikidata" && txt.indexOf(`{wikidata_label(${this.freeform.key})`) >= 0) {
if (
this.freeform.type === "wikidata" &&
txt.indexOf(`{wikidata_label(${this.freeform.key})`) >= 0
) {
continue
}
throw `${context}: The rendering for language ${ln} does not contain the freeform key {${this.freeform.key}}. This is a bug, as this rendering should show exactly this freeform key!\nThe rendering is ${txt} `

View file

@ -7,7 +7,6 @@ import Svg from "../../Svg"
* The little 'translate'-icon next to every icon + some static helper functions
*/
export default class LinkToWeblate extends VariableUiElement {
constructor(context: string, availableTranslations: object) {
super(
Locale.language.map(

View file

@ -3,7 +3,7 @@ import Loc from "../../Models/Loc"
import BaseLayer from "../../Models/BaseLayer"
import { UIEventSource } from "../../Logic/UIEventSource"
import { BBox } from "../../Logic/BBox"
import {deprecate} from "util";
import { deprecate } from "util"
export interface MinimapOptions {
background?: UIEventSource<BaseLayer>

View file

@ -114,15 +114,15 @@ export default class MinimapImplementation extends BaseUIElement implements Mini
* @param format: image: give a base64 encoded png image;
* @constructor
*/
public async TakeScreenshot(): Promise<string> ;
public async TakeScreenshot(format: "image"): Promise<string> ;
public async TakeScreenshot(format: "blob"): Promise<Blob> ;
public async TakeScreenshot(format: "image" | "blob"): Promise<string | Blob> ;
public async TakeScreenshot(): Promise<string>
public async TakeScreenshot(format: "image"): Promise<string>
public async TakeScreenshot(format: "blob"): Promise<Blob>
public async TakeScreenshot(format: "image" | "blob"): Promise<string | Blob>
public async TakeScreenshot(format: "image" | "blob" = "image"): Promise<string | Blob> {
console.log("Taking a screenshot...")
const screenshotter = new SimpleMapScreenshoter()
screenshotter.addTo(this.leafletMap.data)
const result = <any> await screenshotter.takeScreen((<any> format) ?? "image")
const result = <any>await screenshotter.takeScreen(<any>format ?? "image")
if (format === "image" && typeof result === "string") {
return result
}

View file

@ -148,7 +148,13 @@ export default abstract class BaseUIElement {
} catch (e) {
const domExc = e as DOMException
if (domExc) {
console.error("An exception occured", domExc.code, domExc.message, domExc.name, domExc)
console.error(
"An exception occured",
domExc.code,
domExc.message,
domExc.name,
domExc
)
}
console.error(e)
}

View file

@ -1,62 +1,73 @@
import Combine from "../Base/Combine";
import {FlowPanelFactory, FlowStep} from "../ImportFlow/FlowStep";
import {ImmutableStore, Store, UIEventSource} from "../../Logic/UIEventSource";
import {InputElement} from "../Input/InputElement";
import {SvgToPdf, SvgToPdfOptions} from "../../Utils/svgToPdf";
import {FixedInputElement} from "../Input/FixedInputElement";
import {FixedUiElement} from "../Base/FixedUiElement";
import FileSelectorButton from "../Input/FileSelectorButton";
import InputElementMap from "../Input/InputElementMap";
import {RadioButton} from "../Input/RadioButton";
import {Utils} from "../../Utils";
import {VariableUiElement} from "../Base/VariableUIElement";
import Loading from "../Base/Loading";
import BaseUIElement from "../BaseUIElement";
import Img from "../Base/Img";
import Title from "../Base/Title";
import {CheckBox} from "../Input/Checkboxes";
import Minimap from "../Base/Minimap";
import SearchAndGo from "./SearchAndGo";
import Toggle from "../Input/Toggle";
import List from "../Base/List";
import LeftIndex from "../Base/LeftIndex";
import Constants from "../../Models/Constants";
import Toggleable from "../Base/Toggleable";
import Lazy from "../Base/Lazy";
import LinkToWeblate from "../Base/LinkToWeblate";
import Link from "../Base/Link";
import {SearchablePillsSelector} from "../Input/SearchableMappingsSelector";
import Combine from "../Base/Combine"
import { FlowPanelFactory, FlowStep } from "../ImportFlow/FlowStep"
import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource"
import { InputElement } from "../Input/InputElement"
import { SvgToPdf, SvgToPdfOptions } from "../../Utils/svgToPdf"
import { FixedInputElement } from "../Input/FixedInputElement"
import { FixedUiElement } from "../Base/FixedUiElement"
import FileSelectorButton from "../Input/FileSelectorButton"
import InputElementMap from "../Input/InputElementMap"
import { RadioButton } from "../Input/RadioButton"
import { Utils } from "../../Utils"
import { VariableUiElement } from "../Base/VariableUIElement"
import Loading from "../Base/Loading"
import BaseUIElement from "../BaseUIElement"
import Img from "../Base/Img"
import Title from "../Base/Title"
import { CheckBox } from "../Input/Checkboxes"
import Minimap from "../Base/Minimap"
import SearchAndGo from "./SearchAndGo"
import Toggle from "../Input/Toggle"
import List from "../Base/List"
import LeftIndex from "../Base/LeftIndex"
import Constants from "../../Models/Constants"
import Toggleable from "../Base/Toggleable"
import Lazy from "../Base/Lazy"
import LinkToWeblate from "../Base/LinkToWeblate"
import Link from "../Base/Link"
import { SearchablePillsSelector } from "../Input/SearchableMappingsSelector"
import * as languages from "../../assets/language_translations.json"
import {Translation} from "../i18n/Translation";
import { Translation } from "../i18n/Translation"
class SelectTemplate extends Combine implements FlowStep<{ title: string, pages: string[] }> {
readonly IsValid: Store<boolean>;
readonly Value: Store<{ title: string, pages: string[] }>;
class SelectTemplate extends Combine implements FlowStep<{ title: string; pages: string[] }> {
readonly IsValid: Store<boolean>
readonly Value: Store<{ title: string; pages: string[] }>
constructor() {
const elements: InputElement<{ templateName: string, pages: string[] }>[] = []
const elements: InputElement<{ templateName: string; pages: string[] }>[] = []
for (const templateName in SvgToPdf.templates) {
const template = SvgToPdf.templates[templateName]
elements.push(new FixedInputElement(
new Combine([new FixedUiElement(templateName).SetClass("font-bold pr-2"),
template.description
])
, new UIEventSource({templateName, pages: template.pages})))
elements.push(
new FixedInputElement(
new Combine([
new FixedUiElement(templateName).SetClass("font-bold pr-2"),
template.description,
]),
new UIEventSource({ templateName, pages: template.pages })
)
)
}
const file = new FileSelectorButton(new FixedUiElement("Select an svg image which acts as template"), {
const file = new FileSelectorButton(
new FixedUiElement("Select an svg image which acts as template"),
{
acceptType: "image/svg+xml",
allowMultiple: true
})
const fileMapped = new InputElementMap<FileList, { templateName: string, pages: string[], fromFile: true }>(file, (x0, x1) => x0 === x1,
allowMultiple: true,
}
)
const fileMapped = new InputElementMap<
FileList,
{ templateName: string; pages: string[]; fromFile: true }
>(
file,
(x0, x1) => x0 === x1,
(filelist) => {
if (filelist === undefined) {
return undefined;
return undefined
}
const pages = []
let templateName: string = undefined;
let templateName: string = undefined
for (const file of Array.from(filelist)) {
if (templateName == undefined) {
templateName = file.name.substring(file.name.lastIndexOf("/") + 1)
templateName = templateName.substring(0, templateName.lastIndexOf("."))
@ -67,40 +78,46 @@ class SelectTemplate extends Combine implements FlowStep<{ title: string, pages:
return {
templateName,
pages,
fromFile: true
fromFile: true,
}
},
_ => undefined
(_) => undefined
)
elements.push(fileMapped)
const radio = new RadioButton(elements, { selectFirstAsDefault: true })
const loaded: Store<{ success: { title: string, pages: string[] } } | { error: any }> = radio.GetValue().bind(template => {
const loaded: Store<{ success: { title: string; pages: string[] } } | { error: any }> =
radio.GetValue().bind((template) => {
if (template === undefined) {
return undefined
}
if (template["fromFile"]) {
return UIEventSource.FromPromiseWithErr(Promise.all(template.pages).then(pages => ({
return UIEventSource.FromPromiseWithErr(
Promise.all(template.pages).then((pages) => ({
title: template.templateName,
pages
})))
}
const urls = template.pages.map(p => SelectTemplate.ToUrl(p))
const dloadAll: Promise<{ title: string, pages: string[] }> = Promise.all(urls.map(url => Utils.download(url))).then(pages => ({
pages,
title: template.templateName
}))
)
}
const urls = template.pages.map((p) => SelectTemplate.ToUrl(p))
const dloadAll: Promise<{ title: string; pages: string[] }> = Promise.all(
urls.map((url) => Utils.download(url))
).then((pages) => ({
pages,
title: template.templateName,
}))
return UIEventSource.FromPromiseWithErr(dloadAll)
})
const preview = new VariableUiElement(
loaded.map(pages => {
loaded.map((pages) => {
if (pages === undefined) {
return new Loading()
}
if (pages["error"] !== undefined) {
return new FixedUiElement("Loading preview failed: " + pages["err"]).SetClass("alert")
return new FixedUiElement("Loading preview failed: " + pages["err"]).SetClass(
"alert"
)
}
const svgs = pages["success"].pages
if (svgs.length === 0) {
@ -108,22 +125,16 @@ class SelectTemplate extends Combine implements FlowStep<{ title: string, pages:
}
const els: BaseUIElement[] = []
for (const pageSrc of svgs) {
const el = new Img(pageSrc, true)
.SetClass("w-96 m-2 border-black border-2")
const el = new Img(pageSrc, true).SetClass("w-96 m-2 border-black border-2")
els.push(el)
}
return new Combine(els).SetClass("flex border border-subtle rounded-xl");
return new Combine(els).SetClass("flex border border-subtle rounded-xl")
})
)
super([
new Title("Select template"),
radio,
new Title("Preview"),
preview
]);
this.Value = loaded.map(l => l === undefined ? undefined : l["success"])
this.IsValid = this.Value.map(v => v !== undefined)
super([new Title("Select template"), radio, new Title("Preview"), preview])
this.Value = loaded.map((l) => (l === undefined ? undefined : l["success"]))
this.IsValid = this.Value.map((v) => v !== undefined)
}
public static ToUrl(spec: string) {
@ -134,63 +145,78 @@ class SelectTemplate extends Combine implements FlowStep<{ title: string, pages:
path = path.substring(0, path.lastIndexOf("/"))
return window.location.protocol + "//" + window.location.host + path + "/" + spec
}
}
class SelectPdfOptions extends Combine implements FlowStep<{ title: string, pages: string[], options: SvgToPdfOptions }> {
readonly IsValid: Store<boolean>;
readonly Value: Store<{ title: string, pages: string[], options: SvgToPdfOptions }>;
class SelectPdfOptions
extends Combine
implements FlowStep<{ title: string; pages: string[]; options: SvgToPdfOptions }>
{
readonly IsValid: Store<boolean>
readonly Value: Store<{ title: string; pages: string[]; options: SvgToPdfOptions }>
constructor(title: string, pages: string[], getFreeDiv: () => string) {
const dummy = new CheckBox("Don't add data to the map (to quickly preview the PDF)", false)
const overrideMapLocation = new CheckBox("Override map location: use a selected location instead of the location set in the template", false)
const overrideMapLocation = new CheckBox(
"Override map location: use a selected location instead of the location set in the template",
false
)
const locationInput = Minimap.createMiniMap().SetClass("block w-full")
const searchField = new SearchAndGo({ leafletMap: locationInput.leafletMap })
const selectLocation =
new Combine([
new Toggle(new Combine([new Title("Select override location"), searchField]).SetClass("flex"), undefined, overrideMapLocation.GetValue()),
new Toggle(locationInput.SetStyle("height: 20rem"), undefined, overrideMapLocation.GetValue()).SetStyle("height: 20rem")
]).SetClass("block").SetStyle("height: 25rem")
super([new Title("Select options"),
dummy,
overrideMapLocation,
selectLocation
]);
this.Value = dummy.GetValue().map((disableMaps) => {
const selectLocation = new Combine([
new Toggle(
new Combine([new Title("Select override location"), searchField]).SetClass("flex"),
undefined,
overrideMapLocation.GetValue()
),
new Toggle(
locationInput.SetStyle("height: 20rem"),
undefined,
overrideMapLocation.GetValue()
).SetStyle("height: 20rem"),
])
.SetClass("block")
.SetStyle("height: 25rem")
super([new Title("Select options"), dummy, overrideMapLocation, selectLocation])
this.Value = dummy.GetValue().map(
(disableMaps) => {
return {
pages,
title,
options: <SvgToPdfOptions>{
disableMaps,
getFreeDiv,
overrideLocation: overrideMapLocation.GetValue().data ? locationInput.location.data : undefined
overrideLocation: overrideMapLocation.GetValue().data
? locationInput.location.data
: undefined,
},
}
}
}, [overrideMapLocation.GetValue(), locationInput.location])
},
[overrideMapLocation.GetValue(), locationInput.location]
)
this.IsValid = new ImmutableStore(true)
}
}
class PreparePdf extends Combine implements FlowStep<{ svgToPdf: SvgToPdf, languages: string[] }> {
readonly IsValid: Store<boolean>;
readonly Value: Store<{ svgToPdf: SvgToPdf, languages: string[] }>;
class PreparePdf extends Combine implements FlowStep<{ svgToPdf: SvgToPdf; languages: string[] }> {
readonly IsValid: Store<boolean>
readonly Value: Store<{ svgToPdf: SvgToPdf; languages: string[] }>
constructor(title: string, pages: string[], options: SvgToPdfOptions) {
const svgToPdf = new SvgToPdf(title, pages, options)
const languageOptions = [
new FixedInputElement("Nederlands", "nl"),
new FixedInputElement("English", "en")
new FixedInputElement("English", "en"),
]
const langs: string[] = Array.from(Object.keys(languages["default"] ?? languages))
console.log("Available languages are:", langs)
const languageSelector = new SearchablePillsSelector(
langs.map(l => ({
langs.map((l) => ({
show: new Translation(languages[l]),
value: l,
mainTerm: languages[l]
})), {
mode: "select-many"
mainTerm: languages[l],
})),
{
mode: "select-many",
}
)
@ -202,10 +228,11 @@ class PreparePdf extends Combine implements FlowStep<{ svgToPdf: SvgToPdf, langu
new Toggle(
new Loading("Preparing maps..."),
undefined,
isPrepared.map(p => p === undefined)
)
]);
this.Value = isPrepared.map(isPrepped => {
isPrepared.map((p) => p === undefined)
),
])
this.Value = isPrepared.map(
(isPrepped) => {
if (isPrepped === undefined) {
return undefined
}
@ -218,28 +245,36 @@ class PreparePdf extends Combine implements FlowStep<{ svgToPdf: SvgToPdf, langu
}
return { svgToPdf, languages: langs }
}
return undefined;
}, [languageSelector.GetValue()])
this.IsValid = this.Value.map(v => v !== undefined)
return undefined
},
[languageSelector.GetValue()]
)
this.IsValid = this.Value.map((v) => v !== undefined)
}
}
}
class InspectStrings extends Toggle implements FlowStep<{ svgToPdf: SvgToPdf, languages: string[] }> {
readonly IsValid: Store<boolean>;
readonly Value: Store<{ svgToPdf: SvgToPdf; languages: string[] }>;
class InspectStrings
extends Toggle
implements FlowStep<{ svgToPdf: SvgToPdf; languages: string[] }>
{
readonly IsValid: Store<boolean>
readonly Value: Store<{ svgToPdf: SvgToPdf; languages: string[] }>
constructor(svgToPdf: SvgToPdf, languages: string[]) {
const didLoadLanguages = UIEventSource.FromPromiseWithErr(
svgToPdf.PrepareLanguages(languages)
).map((l) => l !== undefined && l["success"] !== undefined)
const didLoadLanguages = UIEventSource.FromPromiseWithErr(svgToPdf.PrepareLanguages(languages)).map(l => l !== undefined && l["success"] !== undefined)
super(new Combine([
super(
new Combine([
new Title("Inspect translation strings"),
...languages.map(l => new Lazy(() => InspectStrings.createOverviewPanel(svgToPdf, l)))
...languages.map(
(l) => new Lazy(() => InspectStrings.createOverviewPanel(svgToPdf, l))
),
]),
new Loading(),
didLoadLanguages
);
)
this.Value = new ImmutableStore({ svgToPdf, languages })
this.IsValid = didLoadLanguages
}
@ -259,65 +294,83 @@ class InspectStrings extends Toggle implements FlowStep<{ svgToPdf: SvgToPdf, la
if (translated) {
foundTranslations++
}
const linkToWeblate = new Link(spec, LinkToWeblate.hrefToWeblate(language, spec), true).SetClass("font-bold link-underline")
elements.push(new Combine([
const linkToWeblate = new Link(
spec,
LinkToWeblate.hrefToWeblate(language, spec),
true
).SetClass("font-bold link-underline")
elements.push(
new Combine([
linkToWeblate,
"&nbsp;",
translated ?? new FixedUiElement("No translation found!").SetClass("alert")
]))
translated ?? new FixedUiElement("No translation found!").SetClass("alert"),
])
)
}
return new Toggleable(
new Title("Translations for " + language),
new Combine([
`${foundTranslations}/${allKeys.length} of translations are found (${Math.floor(100 * foundTranslations / allKeys.length)}%)`,
`${foundTranslations}/${allKeys.length} of translations are found (${Math.floor(
(100 * foundTranslations) / allKeys.length
)}%)`,
"The following keys are used:",
new List(elements)
new List(elements),
]),
{closeOnClick: false, height: "15rem"})
{ closeOnClick: false, height: "15rem" }
)
}
}
class SavePdf extends Combine {
constructor(svgToPdf: SvgToPdf, languages: string[]) {
super([
new Title("Generating your pdfs..."),
new List(languages.map(lng => new Toggle(
new List(
languages.map(
(lng) =>
new Toggle(
lng + " is done!",
new Loading("Creating pdf for " + lng),
UIEventSource.FromPromiseWithErr(svgToPdf.ConvertSvg(lng).then(() => true))
.map(x => x !== undefined && x["success"] === true)
)))
]);
UIEventSource.FromPromiseWithErr(
svgToPdf.ConvertSvg(lng).then(() => true)
).map((x) => x !== undefined && x["success"] === true)
)
)
),
])
}
}
export class PdfExportGui extends LeftIndex {
constructor(freeDivId: string) {
let i = 0
const createDiv = (): string => {
const div = document.createElement("div")
div.id = "freediv-" + (i++)
div.id = "freediv-" + i++
document.getElementById(freeDivId).append(div)
return div.id
}
Constants.defaultOverpassUrls.splice(0, 1)
const { flow, furthestStep, titles } = FlowPanelFactory.start(
new Title("Select template"), new SelectTemplate()
).then(new Title("Select options"), ({title, pages}) => new SelectPdfOptions(title, pages, createDiv))
.then("Generate maps...", ({title, pages, options}) => new PreparePdf(title, pages, options))
.then("Inspect translations", (({svgToPdf, languages}) => new InspectStrings(svgToPdf, languages)))
new Title("Select template"),
new SelectTemplate()
)
.then(
new Title("Select options"),
({ title, pages }) => new SelectPdfOptions(title, pages, createDiv)
)
.then(
"Generate maps...",
({ title, pages, options }) => new PreparePdf(title, pages, options)
)
.then(
"Inspect translations",
({ svgToPdf, languages }) => new InspectStrings(svgToPdf, languages)
)
.finish("Generating...", ({ svgToPdf, languages }) => new SavePdf(svgToPdf, languages))
const toc = new List(
titles.map(
(title, i) =>
@ -338,9 +391,7 @@ export class PdfExportGui extends LeftIndex {
true
)
const leftContents: BaseUIElement[] = [
toc
].map((el) => el?.SetClass("pl-4"))
const leftContents: BaseUIElement[] = [toc].map((el) => el?.SetClass("pl-4"))
super(leftContents, flow)
}

View file

@ -26,7 +26,7 @@ import BaseLayer from "../../Models/BaseLayer"
import Loading from "../Base/Loading"
import Hash from "../../Logic/Web/Hash"
import { GlobalFilter } from "../../Logic/State/MapState"
import {WayId} from "../../Models/OsmFeature";
import { WayId } from "../../Models/OsmFeature"
/*
* The SimpleAddUI is a single panel, which can have multiple states:

View file

@ -70,7 +70,7 @@ export default class ExportPDF {
console.error(e)
self.cleanup()
}
}, 500)
}, 500),
})
minimap.SetStyle(

View file

@ -3,10 +3,10 @@ import { UIEventSource } from "../../Logic/UIEventSource"
import { Utils } from "../../Utils"
import BaseUIElement from "../BaseUIElement"
import InputElementMap from "./InputElementMap"
import Translations from "../i18n/Translations";
import Translations from "../i18n/Translations"
export class CheckBox extends InputElementMap<number[], boolean> {
constructor(el: (BaseUIElement | string), defaultValue?: boolean) {
constructor(el: BaseUIElement | string, defaultValue?: boolean) {
super(
new CheckBoxes([Translations.W(el)]),
(x0, x1) => x0 === x1,

View file

@ -15,24 +15,26 @@ import ShowDataLayer from "../ShowDataLayer/ShowDataLayer"
import BaseUIElement from "../BaseUIElement"
import Toggle from "./Toggle"
import * as matchpoint from "../../assets/layers/matchpoint/matchpoint.json"
import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig";
import FilteredLayer from "../../Models/FilteredLayer";
import {ElementStorage} from "../../Logic/ElementStorage";
import AvailableBaseLayers from "../../Logic/Actors/AvailableBaseLayers";
import {RelationId, WayId} from "../../Models/OsmFeature";
import {Feature, LineString, Polygon} from "geojson";
import {OsmObject, OsmWay} from "../../Logic/Osm/OsmObject";
import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"
import FilteredLayer from "../../Models/FilteredLayer"
import { ElementStorage } from "../../Logic/ElementStorage"
import AvailableBaseLayers from "../../Logic/Actors/AvailableBaseLayers"
import { RelationId, WayId } from "../../Models/OsmFeature"
import { Feature, LineString, Polygon } from "geojson"
import { OsmObject, OsmWay } from "../../Logic/Osm/OsmObject"
export default class LocationInput
extends BaseUIElement
implements ReadonlyInputElement<Loc>, MinimapObj {
implements ReadonlyInputElement<Loc>, MinimapObj
{
private static readonly matchLayer = new LayerConfig(
matchpoint,
"LocationInput.matchpoint",
true
)
public readonly snappedOnto: UIEventSource<Feature & { properties : { id : WayId} }> = new UIEventSource(undefined)
public readonly snappedOnto: UIEventSource<Feature & { properties: { id: WayId } }> =
new UIEventSource(undefined)
public readonly _matching_layer: LayerConfig
public readonly leafletMap: UIEventSource<any>
public readonly bounds
@ -43,7 +45,9 @@ export default class LocationInput
* The features to which the input should be snapped
* @private
*/
private readonly _snapTo: Store< (Feature<LineString | Polygon> & {properties: {id : WayId}})[]>
private readonly _snapTo: Store<
(Feature<LineString | Polygon> & { properties: { id: WayId } })[]
>
/**
* The features to which the input should be snapped without cleanup of relations and memberships
* Used for rendering
@ -59,10 +63,10 @@ export default class LocationInput
private readonly clickLocation: UIEventSource<Loc>
private readonly _minZoom: number
private readonly _state: {
readonly filteredLayers: Store<FilteredLayer[]>;
readonly backgroundLayer: UIEventSource<BaseLayer>;
readonly layoutToUse: LayoutConfig;
readonly selectedElement: UIEventSource<any>;
readonly filteredLayers: Store<FilteredLayer[]>
readonly backgroundLayer: UIEventSource<BaseLayer>
readonly layoutToUse: LayoutConfig
readonly selectedElement: UIEventSource<any>
readonly allElements: ElementStorage
}
@ -74,8 +78,12 @@ export default class LocationInput
*
* @private
*/
private static async prepareSnapOnto(features: Feature[]): Promise<(Feature<LineString | Polygon> & {properties : {id: WayId}})[]> {
const linesAndPolygon : Feature<LineString | Polygon>[] = <any> features.filter(f => f.geometry.type !== "Point")
private static async prepareSnapOnto(
features: Feature[]
): Promise<(Feature<LineString | Polygon> & { properties: { id: WayId } })[]> {
const linesAndPolygon: Feature<LineString | Polygon>[] = <any>(
features.filter((f) => f.geometry.type !== "Point")
)
// Clean the features: multipolygons are split into their it's members
const linestrings: (Feature<LineString | Polygon> & { properties: { id: WayId } })[] = []
for (const feature of linesAndPolygon) {
@ -87,14 +95,18 @@ export default class LocationInput
// We have a multipolygon, thus: a relation
// Download the members
const relation = await OsmObject.DownloadObjectAsync(<RelationId> feature.properties.id, 60 * 60)
const members: OsmWay[] = await Promise.all(relation.members
.filter(m => m.type === "way")
.map(m => OsmObject.DownloadObjectAsync(<WayId> ("way/"+m.ref), 60 * 60)))
linestrings.push(...members.map(m => m.asGeoJson()))
const relation = await OsmObject.DownloadObjectAsync(
<RelationId>feature.properties.id,
60 * 60
)
const members: OsmWay[] = await Promise.all(
relation.members
.filter((m) => m.type === "way")
.map((m) => OsmObject.DownloadObjectAsync(<WayId>("way/" + m.ref), 60 * 60))
)
linestrings.push(...members.map((m) => m.asGeoJson()))
}
return linestrings
}
constructor(options?: {
@ -107,19 +119,31 @@ export default class LocationInput
centerLocation?: UIEventSource<Loc>
bounds?: UIEventSource<BBox>
state?: {
readonly filteredLayers: Store<FilteredLayer[]>;
readonly backgroundLayer: UIEventSource<BaseLayer>;
readonly layoutToUse: LayoutConfig;
readonly selectedElement: UIEventSource<any>;
readonly filteredLayers: Store<FilteredLayer[]>
readonly backgroundLayer: UIEventSource<BaseLayer>
readonly layoutToUse: LayoutConfig
readonly selectedElement: UIEventSource<any>
readonly allElements: ElementStorage
}
}) {
super()
this._snapToRaw = options?.snapTo?.map(feats => feats.filter(f => f.feature.geometry.type !== "Point"))
this._snapTo = options?.snapTo?.bind((features) => UIEventSource.FromPromise(LocationInput.prepareSnapOnto(features.map(f => f.feature))))?.map(f => f ?? [])
this._snapToRaw = options?.snapTo?.map((feats) =>
feats.filter((f) => f.feature.geometry.type !== "Point")
)
this._snapTo = options?.snapTo
?.bind((features) =>
UIEventSource.FromPromise(
LocationInput.prepareSnapOnto(features.map((f) => f.feature))
)
)
?.map((f) => f ?? [])
this._maxSnapDistance = options?.maxSnapDistance
this._centerLocation = options?.centerLocation ?? new UIEventSource<Loc>({
lat: 0, lon: 0, zoom: 0
this._centerLocation =
options?.centerLocation ??
new UIEventSource<Loc>({
lat: 0,
lon: 0,
zoom: 0,
})
this._snappedPointTags = options?.snappedPointTags
this._bounds = options?.bounds
@ -152,11 +176,11 @@ export default class LocationInput
return undefined
}
// We reproject the location onto every 'snap-to-feature' and select the closest
let min = undefined
let matchedWay: Feature<LineString | Polygon> & {properties : {id : WayId}} = undefined
let matchedWay: Feature<LineString | Polygon> & { properties: { id: WayId } } =
undefined
for (const feature of self._snapTo.data ?? []) {
try {
const nearestPointOnLine = GeoOperations.nearestPoint(feature, [
@ -199,8 +223,6 @@ export default class LocationInput
if (matchedWay.properties.id.startsWith("relation/")) {
// We matched a relation instead of a way
console.log("Snapping onto a relation. The relation is", matchedWay)
}
self.snappedOnto.setData(<any>matchedWay)
return min
@ -217,7 +239,10 @@ export default class LocationInput
}
})
}
this.mapBackground = options?.mapBackground ?? this._state?.backgroundLayer ?? new UIEventSource<BaseLayer>(AvailableBaseLayers.osmCarto)
this.mapBackground =
options?.mapBackground ??
this._state?.backgroundLayer ??
new UIEventSource<BaseLayer>(AvailableBaseLayers.osmCarto)
this.SetClass("block h-full")
this.clickLocation = new UIEventSource<Loc>(undefined)
@ -335,9 +360,9 @@ export default class LocationInput
}
}
TakeScreenshot(format: "image"): Promise<string>;
TakeScreenshot(format: "blob"): Promise<Blob>;
TakeScreenshot(format: "image" | "blob"): Promise<string | Blob>;
TakeScreenshot(format: "image"): Promise<string>
TakeScreenshot(format: "blob"): Promise<Blob>
TakeScreenshot(format: "image" | "blob"): Promise<string | Blob>
TakeScreenshot(format: "image" | "blob"): Promise<string | Blob> {
return this.map.TakeScreenshot(format)
}

View file

@ -18,7 +18,7 @@ import Title from "../Base/Title"
import { GlobalFilter } from "../../Logic/State/MapState"
import { VariableUiElement } from "../Base/VariableUIElement"
import { Tag } from "../../Logic/Tags/Tag"
import {WayId} from "../../Models/OsmFeature";
import { WayId } from "../../Models/OsmFeature"
export default class ConfirmLocationOfPoint extends Combine {
constructor(
@ -76,7 +76,7 @@ export default class ConfirmLocationOfPoint extends Combine {
snappedPointTags: tags,
maxSnapDistance: preset.preciseInput.maxSnapDistance,
bounds: mapBounds,
state: <any> state
state: <any>state,
})
preciseInput.installBounds(preset.boundsFactor ?? 0.25, true)
preciseInput

View file

@ -22,7 +22,7 @@ import Title from "../Base/Title"
import { SubstitutedTranslation } from "../SubstitutedTranslation"
import FeaturePipelineState from "../../Logic/State/FeaturePipelineState"
import TagRenderingQuestion from "./TagRenderingQuestion"
import {OsmId} from "../../Models/OsmFeature";
import { OsmId } from "../../Models/OsmFeature"
export default class DeleteWizard extends Toggle {
/**

View file

@ -248,8 +248,7 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
)
editElements.push(
Toggle.If(state.featureSwitchIsDebugging,
() => {
Toggle.If(state.featureSwitchIsDebugging, () => {
const config_all_tags: TagRenderingConfig = new TagRenderingConfig(
{ render: "{all_tags()}" },
""
@ -269,8 +268,7 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
new TagRenderingAnswer(tags, config_id, state),
"This is layer " + layerConfig.id,
])
}
)
})
)
return new Combine(editElements).SetClass("flex flex-col")

View file

@ -145,7 +145,7 @@ export default class MoveWizard extends Toggle {
minZoom: reason.minZoom,
centerLocation: loc,
mapBackground: new UIEventSource<BaseLayer>(preferredBackground), // We detach the layer
state: <any> state
state: <any>state,
})
if (reason.lockBounds) {

View file

@ -304,7 +304,7 @@ export default class TagRenderingQuestion extends Combine {
const patchedMapping = <Mapping>{
...mapping,
iconClass: mapping.iconClass ?? `small-height`,
icon: mapping.icon ?? (addIcons ? "./assets/svg/none.svg" : undefined)
icon: mapping.icon ?? (addIcons ? "./assets/svg/none.svg" : undefined),
}
const fancy = TagRenderingQuestion.GenerateMappingContent(
patchedMapping,

View file

@ -10,12 +10,15 @@ import * as clusterstyle from "../../assets/layers/cluster_style/cluster_style.j
export default class ShowTileInfo {
public static readonly styling = new LayerConfig(clusterstyle, "ShowTileInfo", true)
constructor(options: {
constructor(
options: {
source: FeatureSource & Tiled
leafletMap: UIEventSource<any>
layer?: LayerConfig
doShowLayer?: UIEventSource<boolean>
}, state) {
},
state
) {
const source = options.source
const metaFeature: Store<{ feature; freshness: Date }[]> = source.features.map(
(features) => {
@ -55,7 +58,7 @@ export default class ShowTileInfo {
features: new StaticFeatureSource(metaFeature),
leafletMap: options.leafletMap,
doShowLayer: options.doShowLayer,
state
state,
})
}
}

View file

@ -13,12 +13,11 @@ import MapState from "../Logic/State/MapState"
import BaseUIElement from "./BaseUIElement"
import Title from "./Base/Title"
import { FixedUiElement } from "./Base/FixedUiElement"
import List from "./Base/List";
import List from "./Base/List"
class StatisticsForOverviewFile extends Combine {
constructor(homeUrl: string, paths: string[]) {
paths = paths.filter(p => !p.endsWith("file-overview.json"))
paths = paths.filter((p) => !p.endsWith("file-overview.json"))
const layer = AllKnownLayouts.allKnownLayouts.get("mapcomplete-changes").layers[0]
const filteredLayer = MapState.InitializeFilteredLayers(
{ id: "statistics-view", layers: [layer] },
@ -55,7 +54,6 @@ class StatisticsForOverviewFile extends Combine {
)
)
super([
filterPanel,
new VariableUiElement(
@ -117,9 +115,10 @@ class StatisticsForOverviewFile extends Combine {
"import",
"conflation",
"link-image",
"soft-delete"]
"soft-delete",
]
const allThemes = Utils.Dedup(overview._meta.map(f => f.properties.theme))
const allThemes = Utils.Dedup(overview._meta.map((f) => f.properties.theme))
const excludedThemes = new Set<string>()
if (allThemes.length > 1) {
@ -127,17 +126,21 @@ class StatisticsForOverviewFile extends Combine {
excludedThemes.add("etymology")
}
const summedValues = valuesToSum
.map(key => [key, overview.sum(key, excludedThemes)])
.filter(kv => kv[1] != 0)
.map(kv => kv.join(": "))
.map((key) => [key, overview.sum(key, excludedThemes)])
.filter((kv) => kv[1] != 0)
.map((kv) => kv.join(": "))
const elements: BaseUIElement[] = [
new Title(allThemes .length === 1 ? "General statistics for "+allThemes[0] :"General statistics (excluding etymology- and GRB-theme changes)"),
new Title(
allThemes.length === 1
? "General statistics for " + allThemes[0]
: "General statistics (excluding etymology- and GRB-theme changes)"
),
new Combine([
overview._meta.length + " changesets match the filters",
new List(summedValues)
new List(summedValues),
]).SetClass("flex flex-col border rounded-xl"),
new Title("Breakdown")
new Title("Breakdown"),
]
for (const tr of trs) {
let total = undefined
@ -280,8 +283,7 @@ class ChangesetsOverview {
}
try {
cs.properties.host = new URL(cs.properties.host).host
} catch (e) {
}
} catch (e) {}
return cs
}
}

View file

@ -41,7 +41,10 @@ export default class Translations {
* translation.textFor("nl") // => "Nederlands"
*
*/
static T(t: string | undefined | null | Translation | TypedTranslation<object>, context = undefined): TypedTranslation<object> {
static T(
t: string | undefined | null | Translation | TypedTranslation<object>,
context = undefined
): TypedTranslation<object> {
if (t === undefined || t === null) {
return undefined
}

View file

@ -1,25 +1,28 @@
import FeaturePipelineState from "../Logic/State/FeaturePipelineState";
import MinimapImplementation from "../UI/Base/MinimapImplementation";
import {UIEventSource} from "../Logic/UIEventSource";
import Loc from "../Models/Loc";
import ShowDataLayer from "../UI/ShowDataLayer/ShowDataLayer";
import {BBox} from "../Logic/BBox";
import Minimap from "../UI/Base/Minimap";
import AvailableBaseLayers from "../Logic/Actors/AvailableBaseLayers";
import {Utils} from "../Utils";
import FeaturePipelineState from "../Logic/State/FeaturePipelineState"
import MinimapImplementation from "../UI/Base/MinimapImplementation"
import { UIEventSource } from "../Logic/UIEventSource"
import Loc from "../Models/Loc"
import ShowDataLayer from "../UI/ShowDataLayer/ShowDataLayer"
import { BBox } from "../Logic/BBox"
import Minimap from "../UI/Base/Minimap"
import AvailableBaseLayers from "../Logic/Actors/AvailableBaseLayers"
import { Utils } from "../Utils"
export interface PngMapCreatorOptions {
readonly divId: string; readonly width: number; readonly height: number; readonly scaling?: 1 | number,
readonly divId: string
readonly width: number
readonly height: number
readonly scaling?: 1 | number
readonly dummyMode?: boolean
}
export class PngMapCreator {
private readonly _state: FeaturePipelineState | undefined;
private readonly _options: PngMapCreatorOptions;
private readonly _state: FeaturePipelineState | undefined
private readonly _options: PngMapCreatorOptions
constructor(state: FeaturePipelineState | undefined, options: PngMapCreatorOptions) {
this._state = state;
this._options = {...options, scaling: options.scaling ?? 1};
this._state = state
this._options = { ...options, scaling: options.scaling ?? 1 }
}
/**
@ -27,10 +30,13 @@ export class PngMapCreator {
* @private
*/
private async createAndLoadMinimap(): Promise<MinimapImplementation> {
const state = this._state;
const state = this._state
const options = this._options
const baselayer = AvailableBaseLayers.layerOverview.find(bl => bl.id === state.layoutToUse.defaultBackgroundId) ?? AvailableBaseLayers.osmCarto
return new Promise(resolve => {
const baselayer =
AvailableBaseLayers.layerOverview.find(
(bl) => bl.id === state.layoutToUse.defaultBackgroundId
) ?? AvailableBaseLayers.osmCarto
return new Promise((resolve) => {
const minimap = Minimap.createMiniMap({
location: new UIEventSource<Loc>(state.locationControl.data), // We remove the link between the old and the new UI-event source as moving the map while the export is running fucks up the screenshot
background: new UIEventSource(baselayer),
@ -38,24 +44,24 @@ export class PngMapCreator {
onFullyLoaded: (_) =>
window.setTimeout(() => {
resolve(<MinimapImplementation>minimap)
}, 250)
}, 250),
})
const style = `width: ${options.width * options.scaling}mm; height: ${options.height * options.scaling}mm;`
const style = `width: ${options.width * options.scaling}mm; height: ${
options.height * options.scaling
}mm;`
minimap.SetStyle(style)
minimap.AttachTo(options.divId)
})
}
/**
* Creates a base64-encoded PNG image
* @constructor
*/
public async CreatePng(format: "image" ): Promise<string > ;
public async CreatePng(format: "blob"): Promise<Blob> ;
public async CreatePng(format: "image" | "blob"): Promise<string | Blob>;
public async CreatePng(format: "image"): Promise<string>
public async CreatePng(format: "blob"): Promise<Blob>
public async CreatePng(format: "image" | "blob"): Promise<string | Blob>
public async CreatePng(format: "image" | "blob"): Promise<string | Blob> {
// Lets first init the minimap and wait for all background tiles to load
const minimap = await this.createAndLoadMinimap()
const state = this._state
@ -67,7 +73,9 @@ export class PngMapCreator {
if (dummyMode) {
console.warn("Dummy mode is active - not loading map layers")
} else {
const bounds = BBox.fromLeafletBounds(leaflet.getBounds().pad(0.1).pad(-state.layoutToUse.widenFactor))
const bounds = BBox.fromLeafletBounds(
leaflet.getBounds().pad(0.1).pad(-state.layoutToUse.widenFactor)
)
state.currentBounds.setData(bounds)
if (!state.featurePipeline.sufficientlyZoomed.data) {
console.warn("Not sufficiently zoomed!")
@ -77,7 +85,9 @@ export class PngMapCreator {
// A query is running!
// Let's wait for it to complete
console.log("Waiting for the query to complete")
await state.featurePipeline.runningQuery.AsPromise(isRunning => !isRunning)
await state.featurePipeline.runningQuery.AsPromise(
(isRunning) => !isRunning
)
console.log("Query has completeted!")
}
@ -96,12 +106,19 @@ export class PngMapCreator {
})
await Utils.waitFor(2000)
}
minimap.TakeScreenshot(format).then(async result => {
minimap
.TakeScreenshot(format)
.then(async (result) => {
const divId = this._options.divId
await Utils.waitFor(250)
document.getElementById(divId).removeChild(/*Will fetch the cached htmlelement:*/minimap.ConstructElement())
return resolve(result);
}).catch(failreason => {
document
.getElementById(divId)
.removeChild(
/*Will fetch the cached htmlelement:*/ minimap.ConstructElement()
)
return resolve(result)
})
.catch((failreason) => {
console.error("Could no make a screenshot due to ", failreason)
reject(failreason)
})

View file

@ -1,43 +1,48 @@
import jsPDF, {Matrix} from "jspdf";
import {Translation, TypedTranslation} from "../UI/i18n/Translation";
import FeaturePipelineState from "../Logic/State/FeaturePipelineState";
import {PngMapCreator} from "./pngMapCreator";
import {AllKnownLayouts} from "../Customizations/AllKnownLayouts";
import {Store} from "../Logic/UIEventSource";
import jsPDF, { Matrix } from "jspdf"
import { Translation, TypedTranslation } from "../UI/i18n/Translation"
import FeaturePipelineState from "../Logic/State/FeaturePipelineState"
import { PngMapCreator } from "./pngMapCreator"
import { AllKnownLayouts } from "../Customizations/AllKnownLayouts"
import { Store } from "../Logic/UIEventSource"
import "../assets/templates/Ubuntu-M-normal.js"
import "../assets/templates/Ubuntu-L-normal.js"
import "../assets/templates/UbuntuMono-B-bold.js"
import {makeAbsolute, parseSVG} from 'svg-path-parser';
import Translations from "../UI/i18n/Translations";
import {Utils} from "../Utils";
import Constants from "../Models/Constants";
import Hash from "../Logic/Web/Hash";
import { makeAbsolute, parseSVG } from "svg-path-parser"
import Translations from "../UI/i18n/Translations"
import { Utils } from "../Utils"
import Constants from "../Models/Constants"
import Hash from "../Logic/Web/Hash"
class SvgToPdfInternals {
private readonly doc: jsPDF;
private readonly doc: jsPDF
private static readonly dummyDoc: jsPDF = new jsPDF()
private readonly matrices: Matrix[] = []
private readonly matricesInverted: Matrix[] = []
private currentMatrix: Matrix;
private currentMatrixInverted: Matrix;
private currentMatrix: Matrix
private currentMatrixInverted: Matrix
private readonly _images: Record<string, HTMLImageElement>;
private readonly _rects: Record<string, SVGRectElement>;
private readonly extractTranslation: (string) => string;
private readonly _images: Record<string, HTMLImageElement>
private readonly _rects: Record<string, SVGRectElement>
private readonly extractTranslation: (string) => string
constructor(advancedApi: jsPDF, images: Record<string, HTMLImageElement>, rects: Record<string, SVGRectElement>, extractTranslation: (string) => string) {
this.doc = advancedApi;
this._images = images;
this._rects = rects;
this.extractTranslation = s => extractTranslation(s)?.replace(/&nbsp;/g, " ");
this.currentMatrix = this.doc.unitMatrix;
this.currentMatrixInverted = this.doc.unitMatrix;
constructor(
advancedApi: jsPDF,
images: Record<string, HTMLImageElement>,
rects: Record<string, SVGRectElement>,
extractTranslation: (string) => string
) {
this.doc = advancedApi
this._images = images
this._rects = rects
this.extractTranslation = (s) => extractTranslation(s)?.replace(/&nbsp;/g, " ")
this.currentMatrix = this.doc.unitMatrix
this.currentMatrixInverted = this.doc.unitMatrix
}
applyMatrices(): void {
let multiplied = this.doc.unitMatrix;
let multipliedInv = this.doc.unitMatrix;
let multiplied = this.doc.unitMatrix
let multipliedInv = this.doc.unitMatrix
for (const matrix of this.matrices) {
multiplied = this.doc.matrixMult(multiplied, matrix)
}
@ -51,21 +56,19 @@ class SvgToPdfInternals {
addMatrix(m: Matrix) {
this.matrices.push(m)
this.matricesInverted.push(m.inversed())
this.doc.setCurrentTransformationMatrix(m);
this.doc.setCurrentTransformationMatrix(m)
this.applyMatrices()
}
public static extractMatrix(element: Element): Matrix {
const t = element.getAttribute("transform")
if (t === null) {
return null;
return null
}
const scaleMatch = t.match(/scale\(([-0-9.]+)\)/)
if (scaleMatch !== null) {
const s = Number(scaleMatch[1])
return SvgToPdfInternals.dummyDoc.Matrix(1 / s, 0, 0, 1 / s, 0, 0);
return SvgToPdfInternals.dummyDoc.Matrix(1 / s, 0, 0, 1 / s, 0, 0)
}
const translateMatch = t.match(/translate\(([-0-9.]+), ?([-0-9.]*)\)/)
@ -73,11 +76,12 @@ class SvgToPdfInternals {
const dx = Number(translateMatch[1])
const dy = Number(translateMatch[2])
console.log("Translating", dx, dy)
return SvgToPdfInternals.dummyDoc.Matrix(1, 0, 0, 1, dx, dy);
return SvgToPdfInternals.dummyDoc.Matrix(1, 0, 0, 1, dx, dy)
}
const transformMatch = t.match(/matrix\(([-0-9.]*),([-0-9.]*),([-0-9.]*),([-0-9.]*),([-0-9.]*),([-0-9.]*)\)/)
const transformMatch = t.match(
/matrix\(([-0-9.]*),([-0-9.]*),([-0-9.]*),([-0-9.]*),([-0-9.]*),([-0-9.]*)\)/
)
if (transformMatch !== null) {
const vals = [1, 0, 0, 1, 0, 0]
const invVals = [1, 0, 0, 1, 0, 0]
@ -90,20 +94,26 @@ class SvgToPdfInternals {
vals[i] = ti
}
}
return SvgToPdfInternals.dummyDoc.Matrix(vals[0], vals[1], vals[2], vals[3], vals[4], vals[5]);
return SvgToPdfInternals.dummyDoc.Matrix(
vals[0],
vals[1],
vals[2],
vals[3],
vals[4],
vals[5]
)
}
return null;
return null
}
public setTransform(element: Element): boolean {
const m = SvgToPdfInternals.extractMatrix(element)
if (m === null) {
return false;
return false
}
this.addMatrix(m)
return true;
return true
}
public undoTransform(): void {
@ -111,7 +121,6 @@ class SvgToPdfInternals {
const i = this.matricesInverted.pop()
this.doc.setCurrentTransformationMatrix(i)
this.applyMatrices()
}
public static parseCss(styleContent: string, separator: string = ";"): Record<string, string> {
@ -121,12 +130,12 @@ class SvgToPdfInternals {
const r: Record<string, string> = {}
for (const rule of styleContent.split(separator)) {
const [k, v] = rule.split(":").map(x => x.trim())
const [k, v] = rule.split(":").map((x) => x.trim())
r[k] = v
}
return r
};
}
private drawRect(element: SVGRectElement) {
const x = Number(element.getAttribute("x"))
@ -156,19 +165,20 @@ class SvgToPdfInternals {
if (css["fill-opacity"] !== "0" && css["fill"] !== "none") {
this.doc.setFillColor(css["fill"] ?? "black")
this.doc.circle(x, y, r, "F")
}
if (css["stroke"] && css["stroke"] !== "none") {
this.doc.setLineWidth(Number(css["stroke-width"] ?? 1))
this.doc.setDrawColor(css["stroke"] ?? "black")
this.doc.circle(x, y, r, "S")
}
return
}
private static attr(element: Element, name: string, recurseup: boolean = true): string | undefined {
private static attr(
element: Element,
name: string,
recurseup: boolean = true
): string | undefined {
if (element === null || element === undefined) {
return undefined
}
@ -188,22 +198,20 @@ class SvgToPdfInternals {
* @private
*/
private static css(element: Element): Record<string, string> {
if (element.parentElement == undefined || element.parentElement == element) {
return SvgToPdfInternals.parseCss(element.getAttribute("style"))
}
const css = SvgToPdfInternals.css(element.parentElement);
const css = SvgToPdfInternals.css(element.parentElement)
const style = element.getAttribute("style")
if (style === undefined || style == null) {
return css
}
for (const rule of style.split(";")) {
const [k, v] = rule.split(":").map(x => x.trim())
const [k, v] = rule.split(":").map((x) => x.trim())
css[k] = v
}
return css
}
static attrNumber(element: Element, name: string, recurseup: boolean = true): number {
@ -233,15 +241,14 @@ class SvgToPdfInternals {
}
}
let fontFamily = css["font-family"] ?? "Ubuntu";
let fontFamily = css["font-family"] ?? "Ubuntu"
if (fontFamily === "sans-serif") {
fontFamily = "Ubuntu"
}
let fontWeight = css["font-weight"] ?? "normal";
let fontWeight = css["font-weight"] ?? "normal"
this.doc.setFont(fontFamily, fontWeight)
const fontColor = css["fill"]
if (fontColor) {
this.doc.setTextColor(fontColor)
@ -279,13 +286,13 @@ class SvgToPdfInternals {
if (list) {
const key = list[1]
console.log("Generating a list with key" + key)
let r = this.extractTranslation("$" + key + "0");
let r = this.extractTranslation("$" + key + "0")
let i = 0
result += "\n"
while (r !== undefined && i < 100) {
result += "• " + r + "\n"
i++
r = this.extractTranslation("$" + key + i);
r = this.extractTranslation("$" + key + i)
}
result += "\n"
addSpace = false
@ -298,10 +305,15 @@ class SvgToPdfInternals {
addSpace = true
}
}
this.doc.text(result, x, y, {
this.doc.text(
result,
x,
y,
{
maxWidth,
}, this.currentMatrix)
},
this.currentMatrix
)
}
private drawSvgViaCanvas(element: Element): void {
@ -310,14 +322,13 @@ class SvgToPdfInternals {
const width = SvgToPdfInternals.attrNumber(element, "width")
const height = SvgToPdfInternals.attrNumber(element, "height")
const base64src = SvgToPdfInternals.attr(element, "xlink:href")
const svgXml = atob(base64src.substring(base64src.indexOf(";base64,") + ";base64,".length));
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(svgXml, "text/xml");
const svgRoot = xmlDoc.getElementsByTagName("svg")[0];
const svgXml = atob(base64src.substring(base64src.indexOf(";base64,") + ";base64,".length))
const parser = new DOMParser()
const xmlDoc = parser.parseFromString(svgXml, "text/xml")
const svgRoot = xmlDoc.getElementsByTagName("svg")[0]
const svgWidth = SvgToPdfInternals.attrNumber(svgRoot, "width")
const svgHeight = SvgToPdfInternals.attrNumber(svgRoot, "height")
let img = this._images[base64src]
// This is an svg image, we use the canvas to convert it to a png
const canvas = document.createElement("canvas")
@ -325,22 +336,29 @@ class SvgToPdfInternals {
canvas.width = svgWidth
canvas.height = svgHeight
img.style.width = `${(svgWidth)}px`
img.style.height = `${(svgHeight)}px`
img.style.width = `${svgWidth}px`
img.style.height = `${svgHeight}px`
ctx.drawImage(img, 0, 0, svgWidth, svgHeight)
const base64img = canvas.toDataURL("image/png")
this.addMatrix(this.doc.Matrix(width / svgWidth, 0, 0, height / svgHeight, 0, 0))
const p = this.currentMatrixInverted.applyToPoint({ x, y })
this.doc.addImage(base64img, "png", p.x * svgWidth / width, p.y * svgHeight / height, svgWidth, svgHeight)
this.doc.addImage(
base64img,
"png",
(p.x * svgWidth) / width,
(p.y * svgHeight) / height,
svgWidth,
svgHeight
)
this.undoTransform()
}
private drawImage(element: Element): void {
const href = SvgToPdfInternals.attr(element, "xlink:href")
if (href.endsWith('svg') || href.startsWith("data:image/svg")) {
this.drawSvgViaCanvas(element);
if (href.endsWith("svg") || href.startsWith("data:image/svg")) {
this.drawSvgViaCanvas(element)
} else {
const x = SvgToPdfInternals.attrNumber(element, "x")
const y = SvgToPdfInternals.attrNumber(element, "y")
@ -354,7 +372,7 @@ class SvgToPdfInternals {
private drawPath(element: SVGPathElement): void {
const path = element.getAttribute("d")
const parsed: { code: string, x: number, y: number, x2?, y2?, x1?, y1? }[] = parseSVG(path)
const parsed: { code: string; x: number; y: number; x2?; y2?; x1?; y1? }[] = parseSVG(path)
makeAbsolute(parsed)
for (const c of parsed) {
@ -413,7 +431,6 @@ class SvgToPdfInternals {
public handleElement(element: SVGSVGElement | Element): void {
const isTransformed = this.setTransform(element)
try {
if (element.tagName === "tspan") {
if (element.childElementCount == 0) {
this.drawTspan(element)
@ -433,7 +450,6 @@ class SvgToPdfInternals {
}
if (element.tagName === "g" || element.tagName === "text") {
for (let child of Array.from(element.children)) {
this.handleElement(child)
}
@ -446,7 +462,6 @@ class SvgToPdfInternals {
if (element.tagName === "circle") {
this.drawCircle(<any>element)
}
} catch (e) {
console.error("Could not handle element", element, "due to", e)
}
@ -461,7 +476,7 @@ class SvgToPdfInternals {
* @param mapSpec
* @constructor
*/
static GetActualXY(mapSpec: SVGTSpanElement): { x: number, y: number } {
static GetActualXY(mapSpec: SVGTSpanElement): { x: number; y: number } {
let runningM = SvgToPdfInternals.dummyDoc.unitMatrix
let e: Element = mapSpec
@ -480,30 +495,27 @@ class SvgToPdfInternals {
}
export interface SvgToPdfOptions {
getFreeDiv: () => string,
getFreeDiv: () => string
disableMaps?: false | true
textSubstitutions?: Record<string, string>,
beforePage?: (i: number) => void,
overrideLocation?: { lat: number, lon: number }
textSubstitutions?: Record<string, string>
beforePage?: (i: number) => void
overrideLocation?: { lat: number; lon: number }
}
export class SvgToPdfPage {
private images: Record<string, HTMLImageElement> = {}
private rects: Record<string, SVGRectElement> = {}
public readonly _svgRoot: SVGSVGElement;
public readonly _svgRoot: SVGSVGElement
public readonly currentState: Store<string>
private readonly importedTranslations: Record<string, string> = {}
private readonly layerTranslations: Record<string, Record<string, any>> = {}
private readonly options: SvgToPdfOptions
constructor(page: string, options?: SvgToPdfOptions) {
this.options = options ?? (<SvgToPdfOptions>{})
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(page, "image/svg+xml");
this._svgRoot = xmlDoc.getElementsByTagName("svg")[0];
this.options = options ?? <SvgToPdfOptions>{}
const parser = new DOMParser()
const xmlDoc = parser.parseFromString(page, "image/svg+xml")
this._svgRoot = xmlDoc.getElementsByTagName("svg")[0]
}
private loadImage(element: Element): Promise<void> {
@ -511,11 +523,13 @@ export class SvgToPdfPage {
let img = document.createElement("img")
if (xlink.startsWith("data:image/svg+xml;")) {
const base64src = xlink;
let svgXml = atob(base64src.substring(base64src.indexOf(";base64,") + ";base64,".length));
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(svgXml, "text/xml");
const svgRoot = xmlDoc.getElementsByTagName("svg")[0];
const base64src = xlink
let svgXml = atob(
base64src.substring(base64src.indexOf(";base64,") + ";base64,".length)
)
const parser = new DOMParser()
const xmlDoc = parser.parseFromString(svgXml, "text/xml")
const svgRoot = xmlDoc.getElementsByTagName("svg")[0]
const svgWidthStr = svgRoot.getAttribute("width")
const svgHeightStr = svgRoot.getAttribute("height")
const svgWidth = parseFloat(svgWidthStr)
@ -533,20 +547,20 @@ export class SvgToPdfPage {
this.images[xlink] = img
return new Promise((resolve) => {
img.onload = _ => {
img.onload = (_) => {
resolve()
}
})
}
public extractTranslations(): Set<string> {
const textContents: string[] = Array.from(this._svgRoot.getElementsByTagName("tspan"))
.map(t => t.textContent)
const textContents: string[] = Array.from(this._svgRoot.getElementsByTagName("tspan")).map(
(t) => t.textContent
)
const translations = new Set<string>()
console.log("Extracting translations, contents are", textContents)
for (const tc of textContents) {
const parts = tc.split(" ").filter(p => p.startsWith("$") && p.indexOf("(") < 0)
const parts = tc.split(" ").filter((p) => p.startsWith("$") && p.indexOf("(") < 0)
for (let part of parts) {
part = part.substring(1) // Drop the $
let path = part.split(".")
@ -562,9 +576,12 @@ export class SvgToPdfPage {
return translations
}
public async prepareElement(element: SVGSVGElement | Element, mapTextSpecs: SVGTSpanElement[]): Promise<void> {
public async prepareElement(
element: SVGSVGElement | Element,
mapTextSpecs: SVGTSpanElement[]
): Promise<void> {
if (element.tagName === "rect") {
this.rects[element.id] = <SVGRectElement>element;
this.rects[element.id] = <SVGRectElement>element
}
if (element.tagName === "image") {
@ -572,17 +589,26 @@ export class SvgToPdfPage {
}
if (element.tagName === "tspan" && element.childElementCount == 0) {
const specialValues = element.textContent.split(" ").filter(t => t.startsWith("$"))
const specialValues = element.textContent.split(" ").filter((t) => t.startsWith("$"))
for (let specialValue of specialValues) {
const importMatch = element.textContent.match(/\$import ([a-zA-Z-_0-9.? ]+) as ([a-zA-Z0-9]+)/)
const importMatch = element.textContent.match(
/\$import ([a-zA-Z-_0-9.? ]+) as ([a-zA-Z0-9]+)/
)
if (importMatch !== null) {
const [, pathRaw, as] = importMatch
this.importedTranslations[as] = pathRaw
}
const setPropertyMatch = element.textContent.match(/\$set\(([a-zA-Z-_0-9.?:]+),(.+)\)/)
const setPropertyMatch = element.textContent.match(
/\$set\(([a-zA-Z-_0-9.?:]+),(.+)\)/
)
if (setPropertyMatch) {
this.options.textSubstitutions[setPropertyMatch[1].trim()] = setPropertyMatch[2].trim()
console.log("Setting a property:", setPropertyMatch, this.options.textSubstitutions)
this.options.textSubstitutions[setPropertyMatch[1].trim()] =
setPropertyMatch[2].trim()
console.log(
"Setting a property:",
setPropertyMatch,
this.options.textSubstitutions
)
}
if (element.textContent.startsWith("$map(")) {
mapTextSpecs.push(<any>element)
@ -590,18 +616,21 @@ export class SvgToPdfPage {
}
}
if (element.tagName === "g" || element.tagName === "text" || element.tagName === "tspan" || element.tagName === "defs") {
if (
element.tagName === "g" ||
element.tagName === "text" ||
element.tagName === "tspan" ||
element.tagName === "defs"
) {
for (let child of Array.from(element.children)) {
await this.prepareElement(child, mapTextSpecs)
}
}
}
private _isPrepared = false;
private _isPrepared = false
private async prepareMap(mapSpec: SVGTSpanElement,): Promise<void> {
private async prepareMap(mapSpec: SVGTSpanElement): Promise<void> {
// Upper left point of the tspan
const { x, y } = SvgToPdfInternals.GetActualXY(mapSpec)
@ -618,7 +647,7 @@ export class SvgToPdfPage {
const params = SvgToPdfInternals.parseCss(match[1], ",")
let smallestRect: SVGRectElement = undefined
let smallestSurface: number = undefined;
let smallestSurface: number = undefined
// We iterate over all the rectangles and pick the smallest (by surface area) that contains the upper left point of the tspan
for (const id in this.rects) {
const rect = this.rects[id]
@ -635,14 +664,17 @@ export class SvgToPdfPage {
smallestSurface = surface
smallestRect = rect
}
}
if (smallestRect === undefined) {
throw "No rectangle found around " + spec + ". Draw a rectangle around it, the map will be projected on that one"
throw (
"No rectangle found around " +
spec +
". Draw a rectangle around it, the map will be projected on that one"
)
}
const svgImage = document.createElement('image')
const svgImage = document.createElement("image")
svgImage.setAttribute("x", smallestRect.getAttribute("x"))
svgImage.setAttribute("y", smallestRect.getAttribute("y"))
const width = SvgToPdfInternals.attrNumber(smallestRect, "width")
@ -653,7 +685,9 @@ export class SvgToPdfPage {
let layout = AllKnownLayouts.allKnownLayouts.get(params["theme"])
if (layout === undefined) {
console.error("Could not show map with parameters", params)
throw "Theme not found:" + params["theme"] + ". Use theme: to define which theme to use. "
throw (
"Theme not found:" + params["theme"] + ". Use theme: to define which theme to use. "
)
}
layout.widenFactor = 0
layout.overpassTimeout = 600
@ -662,7 +696,7 @@ export class SvgToPdfPage {
if (paramsKey.startsWith("layer-")) {
const layerName = paramsKey.substring("layer-".length)
const key = params[paramsKey].toLowerCase().trim()
const layer = layout.layers.find(l => l.id === layerName)
const layer = layout.layers.find((l) => l.id === layerName)
if (layer === undefined) {
throw "No layer found for " + paramsKey
}
@ -672,7 +706,7 @@ export class SvgToPdfPage {
}
}
}
const zoom = Number(params["zoom"] ?? params["z"] ?? 14);
const zoom = Number(params["zoom"] ?? params["z"] ?? 14)
Hash.hash.setData(undefined)
// QueryParameters.ClearAll()
@ -681,7 +715,7 @@ export class SvgToPdfPage {
state.locationControl.setData({
zoom,
lat: this.options?.overrideLocation?.lat ?? Number(params["lat"] ?? 51.05016),
lon: this.options?.overrideLocation?.lon ?? Number(params["lon"] ?? 3.717842)
lon: this.options?.overrideLocation?.lon ?? Number(params["lon"] ?? 3.717842),
})
console.log("Params are", params, params["layers"] === "none")
@ -689,7 +723,9 @@ export class SvgToPdfPage {
const fl = state.filteredLayers.data
for (const filteredLayer of fl) {
if (params["layer-" + filteredLayer.layerDef.id] !== undefined) {
filteredLayer.isDisplayed.setData(params["layer-" + filteredLayer.layerDef.id].trim().toLowerCase() !== "false")
filteredLayer.isDisplayed.setData(
params["layer-" + filteredLayer.layerDef.id].trim().toLowerCase() !== "false"
)
} else if (params["layers"] === "none") {
filteredLayer.isDisplayed.setData(false)
} else if (filteredLayer.layerDef.id.startsWith("note_import")) {
@ -701,16 +737,23 @@ export class SvgToPdfPage {
if (paramsKey.startsWith("layer-")) {
const layerName = paramsKey.substring("layer-".length)
const key = params[paramsKey].toLowerCase().trim()
const isDisplayed = key === "true" || key === "force";
const layer = state.filteredLayers.data.find(l => l.layerDef.id === layerName)
console.log("Setting ", layer?.layerDef?.id, " to visibility", isDisplayed, "(minzoom:", layer?.layerDef?.minzoomVisible, layer?.layerDef?.minzoom, ")")
layer.isDisplayed.setData(
isDisplayed
const isDisplayed = key === "true" || key === "force"
const layer = state.filteredLayers.data.find((l) => l.layerDef.id === layerName)
console.log(
"Setting ",
layer?.layerDef?.id,
" to visibility",
isDisplayed,
"(minzoom:",
layer?.layerDef?.minzoomVisible,
layer?.layerDef?.minzoom,
")"
)
layer.isDisplayed.setData(isDisplayed)
if (key === "force") {
layer.layerDef.minzoom = 0
layer.layerDef.minzoomVisible = 0
layer.isDisplayed.addCallback(isDisplayed => {
layer.isDisplayed.addCallback((isDisplayed) => {
if (!isDisplayed) {
console.warn("Forcing layer " + paramsKey + " as true")
layer.isDisplayed.setData(true)
@ -720,44 +763,53 @@ export class SvgToPdfPage {
}
}
const pngCreator = new PngMapCreator(
state,
{
const pngCreator = new PngMapCreator(state, {
width,
height,
scaling: Number(params["scaling"] ?? 1.5),
divId: this.options.getFreeDiv(),
dummyMode: this.options.disableMaps
}
)
dummyMode: this.options.disableMaps,
})
const png = await pngCreator.CreatePng("image")
svgImage.setAttribute('xlink:href', png)
svgImage.setAttribute("xlink:href", png)
smallestRect.parentElement.insertBefore(svgImage, smallestRect)
await this.prepareElement(svgImage, [])
const smallestRectCss = SvgToPdfInternals.parseCss(smallestRect.getAttribute("style"))
smallestRectCss["fill-opacity"] = "0"
smallestRect.setAttribute("style", Object.keys(smallestRectCss).map(k => k + ":" + smallestRectCss[k]).join(";"))
smallestRect.setAttribute(
"style",
Object.keys(smallestRectCss)
.map((k) => k + ":" + smallestRectCss[k])
.join(";")
)
textElement.parentElement.removeChild(textElement)
}
public async PrepareLanguage(language: string) {
// Always fetch the remote data - it's cached anyway
this.layerTranslations[language] = await Utils.downloadJsonCached("https://raw.githubusercontent.com/pietervdvn/MapComplete/develop/langs/layers/" + language + ".json", 24 * 60 * 60 * 1000)
const shared_questions = await Utils.downloadJsonCached("https://raw.githubusercontent.com/pietervdvn/MapComplete/develop/langs/shared-questions/" + language + ".json", 24 * 60 * 60 * 1000)
this.layerTranslations[language] = await Utils.downloadJsonCached(
"https://raw.githubusercontent.com/pietervdvn/MapComplete/develop/langs/layers/" +
language +
".json",
24 * 60 * 60 * 1000
)
const shared_questions = await Utils.downloadJsonCached(
"https://raw.githubusercontent.com/pietervdvn/MapComplete/develop/langs/shared-questions/" +
language +
".json",
24 * 60 * 60 * 1000
)
this.layerTranslations[language]["shared-questions"] = shared_questions["shared_questions"]
}
public async Prepare() {
if (this._isPrepared) {
return
}
this._isPrepared = true;
this._isPrepared = true
const mapSpecs: SVGTSpanElement[] = []
for (let child of Array.from(this._svgRoot.children)) {
await this.prepareElement(<any>child, mapSpecs)
@ -766,8 +818,6 @@ export class SvgToPdfPage {
for (const mapSpec of mapSpecs) {
await this.prepareMap(mapSpec)
}
}
public drawPage(advancedApi: jsPDF, i: number, language): void {
@ -779,16 +829,21 @@ export class SvgToPdfPage {
this.options.beforePage(i)
}
const self = this
const internal = new SvgToPdfInternals(advancedApi, this.images, this.rects, key => self.extractTranslation(key, language));
const internal = new SvgToPdfInternals(advancedApi, this.images, this.rects, (key) =>
self.extractTranslation(key, language)
)
for (let child of Array.from(this._svgRoot.children)) {
internal.handleElement(<any>child)
}
}
extractTranslation(text: string, language: string, strict: boolean = false) {
if (text === "$version") {
return new Date().toISOString().substring(0, "2022-01-02THH:MM".length) + " - v" + Constants.vNumber
return (
new Date().toISOString().substring(0, "2022-01-02THH:MM".length) +
" - v" +
Constants.vNumber
)
}
const pathPart = text.match(/\$(([_a-zA-Z0-9? ]+\.)+[_a-zA-Z0-9? ]+)(.*)/)
if (pathPart === null) {
@ -833,40 +888,47 @@ export class SvgToPdfPage {
console.error("Could not get textFor from ", t, "for path", text)
}
}
}
export class SvgToPdf {
public static readonly templates: Record<string, { pages: string[], description: string | Translation }> = {
public static readonly templates: Record<
string,
{ pages: string[]; description: string | Translation }
> = {
flyer_a4: {
pages: ["/assets/templates/MapComplete-flyer.svg", "/assets/templates/MapComplete-flyer.back.svg"],
description: Translations.t.flyer.description
pages: [
"/assets/templates/MapComplete-flyer.svg",
"/assets/templates/MapComplete-flyer.back.svg",
],
description: Translations.t.flyer.description,
},
poster_a3: {
pages: ["/assets/templates/MapComplete-poster-a3.svg"],
description: "A basic A3 poster (similar to the flyer)"
description: "A basic A3 poster (similar to the flyer)",
},
poster_a2: {
pages: ["/assets/templates/MapComplete-poster-a2.svg"],
description: "A basic A2 poster (similar to the flyer); scaled up from the A3 poster"
description: "A basic A2 poster (similar to the flyer); scaled up from the A3 poster",
},
}
}
private readonly _title: string;
private readonly _title: string
private readonly _pages: SvgToPdfPage[]
constructor(title: string, pages: string[], options?: SvgToPdfOptions) {
this._title = title;
this._title = title
options = options ?? <SvgToPdfOptions>{}
options.textSubstitutions = options.textSubstitutions ?? {}
const mapCount = "" + Array.from(AllKnownLayouts.allKnownLayouts.values()).filter(th => !th.hideFromOverview).length;
const mapCount =
"" +
Array.from(AllKnownLayouts.allKnownLayouts.values()).filter(
(th) => !th.hideFromOverview
).length
options.textSubstitutions["mapCount"] = mapCount
this._pages = pages.map(page => new SvgToPdfPage(page, options))
this._pages = pages.map((page) => new SvgToPdfPage(page, options))
}
public async ConvertSvg(language: string): Promise<void> {
const firstPage = this._pages[0]._svgRoot
const width = SvgToPdfInternals.attrNumber(firstPage, "width")
@ -880,7 +942,7 @@ export class SvgToPdf {
}
const doc = new jsPDF(mode, undefined, [width, height])
doc.advancedAPI(advancedApi => {
doc.advancedAPI((advancedApi) => {
for (let i = 0; i < this._pages.length; i++) {
if (i > 0) {
const page = this._pages[i]._svgRoot
@ -888,24 +950,31 @@ export class SvgToPdf {
const height = SvgToPdfInternals.attrNumber(page, "height")
advancedApi.addPage([width, height])
const mediabox: { bottomLeftX: number, bottomLeftY: number, topRightX: number, topRightY: number } = advancedApi.getCurrentPageInfo().pageContext.mediaBox
const mediabox: {
bottomLeftX: number
bottomLeftY: number
topRightX: number
topRightY: number
} = advancedApi.getCurrentPageInfo().pageContext.mediaBox
const targetWidth = 297
const targetHeight = 210
const sx = mediabox.topRightX / targetWidth
const sy = mediabox.topRightY / targetHeight
advancedApi.setCurrentTransformationMatrix(advancedApi.Matrix(sx, 0, 0, -sy, 0, mediabox.topRightY))
advancedApi.setCurrentTransformationMatrix(
advancedApi.Matrix(sx, 0, 0, -sy, 0, mediabox.topRightY)
)
}
this._pages[i].drawPage(advancedApi, i, language)
}
})
await doc.save(this._title + "." + language + ".pdf");
await doc.save(this._title + "." + language + ".pdf")
}
public translationKeys(): Set<string> {
const allTranslations = this._pages[0].extractTranslations()
for (let i = 1; i < this._pages.length; i++) {
const translations = this._pages[i].extractTranslations()
translations.forEach(t => allTranslations.add(t))
translations.forEach((t) => allTranslations.add(t))
}
allTranslations.delete("import")
allTranslations.delete("version")
@ -927,7 +996,9 @@ export class SvgToPdf {
for (const page of this._pages) {
// Load all languages at once.
// We don't parallelize the pages, as they'll probably reload the same languages anyway (and they are cached)
await Promise.all(languages.map(async language => await page.PrepareLanguage(language)))
await Promise.all(
languages.map(async (language) => await page.PrepareLanguage(language))
)
}
return true
}

View file

@ -1,11 +1,11 @@
import MinimapImplementation from "./UI/Base/MinimapImplementation";
import MinimapImplementation from "./UI/Base/MinimapImplementation"
import { Utils } from "./Utils"
import AllThemesGui from "./UI/AllThemesGui"
import { QueryParameters } from "./Logic/Web/QueryParameters"
import StatisticsGUI from "./UI/StatisticsGUI"
import { FixedUiElement } from "./UI/Base/FixedUiElement"
import {PdfExportGui} from "./UI/BigComponents/PdfExportGui";
import { PdfExportGui } from "./UI/BigComponents/PdfExportGui"
const layout = QueryParameters.GetQueryParameter("layout", undefined).data ?? ""
const customLayout = QueryParameters.GetQueryParameter("userlayout", undefined).data ?? ""

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1,004 KiB

After

Width:  |  Height:  |  Size: 1,003 KiB

View file

@ -29,10 +29,10 @@
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.5378574"
inkscape:cx="611.68629"
inkscape:cy="588.44593"
inkscape:current-layer="layer6"
inkscape:zoom="0.50706283"
inkscape:cx="901.26898"
inkscape:cy="411.19165"
inkscape:current-layer="svg8"
inkscape:window-width="1920"
inkscape:window-height="995"
inkscape:window-x="0"
@ -68,9 +68,13 @@
orientation="1,0"
id="guide8724" />
<sodipodi:guide
position="-10.409528,340.20558"
position="-44.831442,320.04602"
orientation="0,-1"
id="guide9421" />
<sodipodi:guide
position="400.13196,78.02807"
orientation="0,-1"
id="guide1342" />
</sodipodi:namedview>
<defs
id="defs2">
@ -2075,7 +2079,7 @@
style="display:inline">
<g
id="g1383"
transform="matrix(1.360707,0,0,1.360707,45.569024,-58.983598)">
transform="matrix(1.360707,0,0,1.360707,45.672847,-44.915596)">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#aaaaaa;stroke-width:0.0873813;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
id="path2317"
@ -2520,6 +2524,9 @@
</g>
</g>
</g>
<g
id="g1512"
transform="translate(0,-6.0271117)">
<g
id="g839"
transform="matrix(1.4782289,0,0,1.4782289,713.41215,399.14907)">
@ -2917,21 +2924,22 @@
id="path1982" />
</g>
</g>
</g>
<text
xml:space="preserve"
id="text7464"
style="white-space:pre;shape-inside:url(#rect7466);fill:#000000"
transform="matrix(1.0367869,0,0,1.0367869,-116.43303,-84.366224)"><tspan
transform="matrix(1.0367869,0,0,1.0367869,-116.43303,-78.344741)"><tspan
x="566.99609"
y="257.90817"
id="tspan10027"><tspan
id="tspan1873"><tspan
style="font-weight:bold;font-size:93.3333px;-inkscape-font-specification:'sans-serif, Bold'"
id="tspan10025">MapComplete</tspan></tspan></text>
id="tspan1871">MapComplete</tspan></tspan></text>
<text
xml:space="preserve"
id="text16582"
style="white-space:pre;shape-inside:url(#rect16584);fill:#000000"
transform="matrix(1.0367869,0,0,1.0367869,-142.96208,37.044569)"
transform="matrix(1.0367869,0,0,1.0367869,-142.96208,30.862319)"
x="341.71875"
y="0"
inkscape:export-filename="/home/pietervdvn/git/MapComplete/assets/text16582.png"
@ -2939,15 +2947,15 @@
inkscape:export-ydpi="96"><tspan
x="580.88522"
y="232.22157"
id="tspan10031"><tspan
id="tspan1877"><tspan
style="font-weight:bold;font-size:64.3012px;-inkscape-font-specification:'sans-serif, Bold';text-align:center;text-anchor:middle"
id="tspan10029">Edit OpenStreetMap
id="tspan1875">Edit OpenStreetMap
</tspan></tspan><tspan
x="831.71642"
y="312.59807"
id="tspan10035"><tspan
id="tspan1881"><tspan
style="font-weight:bold;font-size:64.3012px;-inkscape-font-specification:'sans-serif, Bold';text-align:center;text-anchor:middle"
id="tspan10033"> easily</tspan></tspan></text>
id="tspan1879"> easily</tspan></tspan></text>
<text
xml:space="preserve"
id="text25150"

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 3.1 MiB

View file

@ -1,11 +1,11 @@
{
"contributors": [
{
"commits": 4464,
"commits": 4594,
"contributor": "Pieter Vander Vennet"
},
{
"commits": 184,
"commits": 244,
"contributor": "Robin van der Linde"
},
{
@ -41,7 +41,7 @@
"contributor": "Ward"
},
{
"commits": 22,
"commits": 23,
"contributor": "riQQ"
},
{
@ -74,11 +74,11 @@
},
{
"commits": 15,
"contributor": "ToastHawaii"
"contributor": "Brice Maron"
},
{
"commits": 14,
"contributor": "Brice Maron"
"commits": 15,
"contributor": "ToastHawaii"
},
{
"commits": 13,
@ -100,6 +100,10 @@
"commits": 10,
"contributor": "LiamSimons"
},
{
"commits": 9,
"contributor": "wjtje"
},
{
"commits": 9,
"contributor": "RobJN"
@ -120,6 +124,10 @@
"commits": 7,
"contributor": "Binnette"
},
{
"commits": 6,
"contributor": "David Haberthür"
},
{
"commits": 6,
"contributor": "Thibault Molleman"
@ -133,8 +141,8 @@
"contributor": "pelderson"
},
{
"commits": 5,
"contributor": "David Haberthür"
"commits": 4,
"contributor": "Nadhem"
},
{
"commits": 4,
@ -160,6 +168,10 @@
"commits": 3,
"contributor": "Léo Villeveygoux"
},
{
"commits": 2,
"contributor": "Jiří Podhorecký"
},
{
"commits": 2,
"contributor": "pdassori"
@ -200,6 +212,14 @@
"commits": 2,
"contributor": "Stanislas Gueniffey"
},
{
"commits": 1,
"contributor": "bgo-eiu"
},
{
"commits": 1,
"contributor": "Wouter van der Wal"
},
{
"commits": 1,
"contributor": "eMerzh"
@ -244,10 +264,6 @@
"commits": 1,
"contributor": "Štefan Baebler"
},
{
"commits": 1,
"contributor": "Jiří Podhorecký"
},
{
"commits": 1,
"contributor": "Mark Rogerson"

View file

@ -412,7 +412,8 @@
"if": "artwork_type=woodcarving",
"then": {
"nl": "Houtsculptuur",
"en": "Woodcarving"
"en": "Woodcarving",
"de": "Holzschnitzerei"
}
}
],
@ -421,10 +422,14 @@
{
"id": "artwork-artist-wikidata",
"render": {
"en": "This artwork was made by {wikidata_label(artist:wikidata):font-weight:bold}<br/>{wikipedia(artist:wikidata)}"
"en": "This artwork was made by {wikidata_label(artist:wikidata):font-weight:bold}<br/>{wikipedia(artist:wikidata)}",
"de": "Dieses Kunstwerk wurde geschaffen von {wikidata_label(artist:wikidata):font-weight:bold}<br/>{wikipedia(artist:wikidata)}",
"nl": "Dit kunstwerk is gemaakt door {wikidata_label(artist:wikidata):font-weight:bold}<br/>{wikipedia(artist:wikidata)}"
},
"question": {
"en": "Who made this artwork?"
"en": "Who made this artwork?",
"de": "Wer hat dieses Kunstwerk geschaffen?",
"nl": "Wie heeft dit kunstwerk gemaakt?"
},
"freeform": {
"key": "artist:wikidata",
@ -526,14 +531,18 @@
"id": "artwork_subject",
"condition": "subject:wikidata~*",
"question": {
"en": "What does this artwork depict?"
"en": "What does this artwork depict?",
"de": "Was zeigt dieses Kunstwerk?",
"nl": "Wat beeldt dit kunstwerk af?"
},
"freeform": {
"key": "subject:wikidata",
"type": "wikidata"
},
"render": {
"en": "This artwork depicts {wikidata_label(subject:wikidata)}{wikipedia(subject:wikidata)}"
"en": "This artwork depicts {wikidata_label(subject:wikidata)}{wikipedia(subject:wikidata)}",
"de": "Das Kunstwerk zeigt {wikidata_label(subject:wikidata)}{wikipedia(subject:wikidata)}",
"nl": "Dit kunstwerk beeldt {wikidata_label(subject:wikidata)}{wikipedia(subject:wikidata)} af"
}
}
],

View file

@ -79,7 +79,7 @@
"en": "Does <b>not</b> have a backrest",
"de": "Die Sitzbank hat <b>keine</b> Rückenlehne",
"fr": "Dossier : Non",
"nl": "Heeft geen rugleuning",
"nl": "Heeft <b>geen</b> rugleuning",
"es": "Respaldo: no",
"hu": "Háttámla nincs",
"id": "Sandaran: Tidak",

View file

@ -3166,12 +3166,12 @@
"group": "technical",
"question": {
"en": "What voltage do the plugs with <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> offer?",
"nl": "Welke spanning levert de stekker van type <div style='display: inline-block'><b><b>Tesla Supercharger (destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div>",
"nl": "Welke spanning levert de stekker van type <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div>",
"de": "Welche Spannung bieten die <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div>?"
},
"render": {
"en": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> outputs {socket:tesla_destination:voltage} volt",
"nl": "<div style='display: inline-block'><b><b>Tesla Supercharger (destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> heeft een spanning van {socket:tesla_destination:voltage} volt",
"nl": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> heeft een spanning van {socket:tesla_destination:voltage} volt",
"de": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> liefert {socket:tesla_destination:voltage} Volt"
},
"freeform": {
@ -3183,7 +3183,7 @@
"if": "socket:tesla_destination:voltage=480 V",
"then": {
"en": "<b>Tesla Supercharger (Destination)</b> outputs 480 volt",
"nl": "<b>Tesla Supercharger (destination)</b> heeft een spanning van 480 volt",
"nl": "<b>Tesla Supercharger (Destination)</b> heeft een spanning van 480 volt",
"de": "<b>Tesla Supercharger (Destination)</b> liefert 480 Volt"
},
"icon": {
@ -3204,13 +3204,13 @@
"group": "technical",
"question": {
"en": "What current do the plugs with <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> offer?",
"nl": "Welke stroom levert de stekker van type <div style='display: inline-block'><b><b>Tesla Supercharger (destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div>?",
"nl": "Welke stroom levert de stekker van type <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div>?",
"da": "Hvilken strømstyrke har stikkene med <div style='display: inline-block'><b><b> Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> med Tesla Supercharger (Destination) ?",
"de": "Welche Stromstärke liefern die Anschlüsse mit <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div>?"
},
"render": {
"en": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> outputs at most {socket:tesla_destination:current}A",
"nl": "<div style='display: inline-block'><b><b>Tesla Supercharger (destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> levert een stroom van maximaal {socket:tesla_destination:current}A",
"nl": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> levert een stroom van maximaal {socket:tesla_destination:current}A",
"da": "<div style='display: inline-block'><b><b>Tesla Supercharger (destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> udgange højst {socket:tesla_destination:current}A",
"de": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b></b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Tesla-hpwc-model-s.svg'/></div> liefert maximal {socket:tesla_destination:current} A"
},
@ -3285,7 +3285,7 @@
"if": "socket:tesla_destination:output=150 kW",
"then": {
"en": "<b>Tesla Supercharger (Destination)</b> outputs at most 150 kw A",
"nl": "<b>Tesla Supercharger (destination)</b> levert een vermogen van maximaal 150 kw A",
"nl": "<b>Tesla Supercharger (Destination)</b> levert een vermogen van maximaal 150 kw A",
"de": "<b>Tesla Supercharger (Destination)</b> liefert maximal 150 kw A"
},
"icon": {
@ -3335,7 +3335,7 @@
"if": "socket:tesla_destination:voltage=230 V",
"then": {
"en": "<b>Tesla Supercharger (Destination)</b> (A Type 2 with cable branded as Tesla) outputs 230 volt",
"nl": "<b>Tesla supercharger (destination</b> (Een Type 2 met kabel en Tesla-logo) heeft een spanning van 230 volt",
"nl": "<b>Tesla Supercharger (Destination</b> (Een Type 2 met kabel en Tesla-logo) heeft een spanning van 230 volt",
"de": "<b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel von Tesla) liefert 230 Volt"
},
"icon": {
@ -3347,7 +3347,7 @@
"if": "socket:tesla_destination:voltage=400 V",
"then": {
"en": "<b>Tesla Supercharger (Destination)</b> (A Type 2 with cable branded as Tesla) outputs 400 volt",
"nl": "<b>Tesla supercharger (destination</b> (Een Type 2 met kabel en Tesla-logo) heeft een spanning van 400 volt",
"nl": "<b>Tesla Supercharger (Destination</b> (Een Type 2 met kabel en Tesla-logo) heeft een spanning van 400 volt",
"de": "<b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel von Tesla) liefert 400 Volt"
},
"icon": {
@ -3368,13 +3368,13 @@
"group": "technical",
"question": {
"en": "What current do the plugs with <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (A Type 2 with cable branded as Tesla)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> offer?",
"nl": "Welke stroom levert de stekker van type <div style='display: inline-block'><b><b>Tesla supercharger (destination)</b> (Een Type 2 met kabel en Tesla-logo)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div>?",
"nl": "Welke stroom levert de stekker van type <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (Een Type 2 met kabel en Tesla-logo)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div>?",
"da": "Hvilken strømstyrke har stikkene med <div style='display: inline-block'><b><b> Tesla Supercharger (Destination)</b> (A Type 2 med kabel med Tesla-mærket)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> ?",
"de": "Welche Stromstärke liefern die Stecker mit <div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel von Tesla)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div>?"
},
"render": {
"en": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (A Type 2 with cable branded as Tesla)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> outputs at most {socket:tesla_destination:current}A",
"nl": "<div style='display: inline-block'><b><b>Tesla supercharger (destination)</b> (Een Type 2 met kabel en Tesla-logo)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> levert een stroom van maximaal {socket:tesla_destination:current}A",
"nl": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (Een Type 2 met kabel en Tesla-logo)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> levert een stroom van maximaal {socket:tesla_destination:current}A",
"de": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel von Tesla)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> liefert maximal {socket:tesla_destination:current} A"
},
"freeform": {
@ -3386,7 +3386,7 @@
"if": "socket:tesla_destination:current=16 A",
"then": {
"en": "<b>Tesla Supercharger (Destination)</b> (A Type 2 with cable branded as tesla) outputs at most 16 A",
"nl": "<b>Tesla supercharger (destination</b> (Een Type 2 met kabel en Tesla-logo) levert een stroom van maximaal 16 A",
"nl": "<b>Tesla supercharger (Destination</b> (Een Type 2 met kabel en Tesla-logo) levert een stroom van maximaal 16 A",
"da": "<b>Tesla Supercharger (Destination)</b> (A Type 2 med kabel mærket som tesla) yder højst 16 A",
"de": "<b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel) liefert maximal 16 A"
},
@ -3399,7 +3399,7 @@
"if": "socket:tesla_destination:current=32 A",
"then": {
"en": "<b>Tesla Supercharger (Destination)</b> (A Type 2 with cable branded as Tesla) outputs at most 32 A",
"nl": "<b>Tesla supercharger (destination</b> (Een Type 2 met kabel en Tesla-logo) levert een stroom van maximaal 32 A",
"nl": "<b>Tesla Supercharger (Destination</b> (Een Type 2 met kabel en Tesla-logo) levert een stroom van maximaal 32 A",
"da": "<b>Tesla Supercharger (Destination)</b> (A Type 2 med kabel af Tesla-mærket) yder højst 32 A",
"de": "<b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel von Tesla) liefert maximal 32 A"
},
@ -3426,7 +3426,7 @@
},
"render": {
"en": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (A Type 2 with cable branded as Tesla)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> outputs at most {socket:tesla_destination:output}",
"nl": "<div style='display: inline-block'><b><b>Tesla supercharger (destination)</b> (Een Type 2 met kabel en Tesla-logo)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> levert een vermogen van maximaal {socket:tesla_destination:output}",
"nl": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (Een Type 2 met kabel en Tesla-logo)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> levert een vermogen van maximaal {socket:tesla_destination:output}",
"de": "<div style='display: inline-block'><b><b>Tesla Supercharger (Destination)</b> (Typ 2 mit Kabel von Tesla)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/Type2_tethered.svg'/></div> liefert maximal {socket:tesla_destination:output}"
},
"freeform": {
@ -3857,7 +3857,7 @@
]
},
"then": {
"nl": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/café/ziekenhuis/...",
"nl": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/café/ziekenhuis/",
"en": "Paid use, but free for customers of the hotel/pub/hospital/… who operates the charging station",
"da": "Betalt brug, men gratis for kunder på det hotel/pub/hospital/... der driver ladestationen",
"de": "Die Nutzung ist kostenpflichtig, aber für Kunden des Betreibers der Einrichtung, wie Hotel, Krankenhaus, … kostenlos",

View file

@ -42,7 +42,8 @@
"en": "Climbing crag <b>{name}</b>",
"fr": "Mur descalade <b>{name}</b>",
"it": "Muro da arrampicata <b>{name}</b>",
"de": "Klettergarten <b>{name}</b>"
"de": "Klettergarten <b>{name}</b>",
"nl": ""
}
},
{

View file

@ -201,7 +201,7 @@
"ca": "No accessible al públic en general (ex. només accesible a treballadors, propietaris, ...)",
"es": "No accesible al público en general (ex. sólo accesible a trabajadores, propietarios, ...)",
"fr": "Non accessible au public (par exemple réservé au personnel, au propriétaire…)",
"nl": "Niet toegankelijk voor het publiek (bv. enkel voor personeel, de eigenaar, ...)",
"nl": "Niet toegankelijk voor het publiek (bv. enkel voor personeel, de eigenaar, )",
"de": "Der Defibrillator ist nicht öffentlich zugänglich (z.B. nur für Personal, Eigentümer, …)",
"it": "Non accessibile al pubblico (ad esempio riservato al personale, ai proprietari, etc.)",
"sl": "Ni dostopen splošni javnosti (npr. samo za osebje, za lastnike, ...)"
@ -353,8 +353,8 @@
},
{
"render": {
"nl": "<i>Meer informatie over de locatie (lokale taal):</i><br/>{defibrillator:location}",
"en": "<i>Extra information about the location (in the local languagel):</i><br/>{defibrillator:location}",
"nl": "<i>Meer informatie over de locatie (in de lokale taal):</i><br/>{defibrillator:location}",
"en": "<i>Extra information about the location (in the local language):</i><br/>{defibrillator:location}",
"fr": "<i>Informations supplémentaires à propos de l'emplacement (dans la langue locale) :</i><br/>{defibrillator:location}",
"it": "<i>Informazioni supplementari circa la posizione (in lingua locale):</i><br/>{defibrillator:location}",
"de": "<i>Zusätzliche Informationen über den Standort (in der Landessprache):</i><br/>{defibrillator:location}",

View file

@ -65,7 +65,9 @@
},
{
"question": {
"en": "Has at least one image"
"en": "Has at least one image",
"de": "Hat mindestens ein Bild",
"nl": "Heeft minstens één afbeelding"
},
"osmTags": {
"or": [
@ -80,7 +82,9 @@
},
{
"question": {
"en": "Probably does not have an image"
"en": "Probably does not have an image",
"de": "Hat wahrscheinlich kein Bild",
"nl": "Heeft waarschijnlijk geen afbeelding"
},
"osmTags": {
"and": [

View file

@ -142,7 +142,8 @@
"title": {
"render": {
"en": "MapRoulette Item: {parentName}",
"de": "MapRoulette-Element: {parentName}"
"de": "MapRoulette-Element: {parentName}",
"nl": "MapRoulette Item: {parentName}"
}
},
"titleIcons": [

View file

@ -3,7 +3,8 @@
"name": null,
"description": {
"en": "Layer showing tasks of a MapRoulette challenge",
"de": "Ebene mit Aufgaben einer MapRoulette-Kampagne"
"de": "Ebene mit Aufgaben einer MapRoulette-Kampagne",
"nl": "Laag met taken van een MapRoulette uitdaging"
},
"source": {
"osmTags": "mr_taskId~*",
@ -13,7 +14,8 @@
"title": {
"render": {
"en": "Item in MapRoulette",
"de": "Aufgabe in MapRoulette"
"de": "Aufgabe in MapRoulette",
"nl": "Item uit MapRoulette"
}
},
"titleIcons": [
@ -81,56 +83,64 @@
"if": "mr_taskStatus=Created",
"then": {
"en": "Task is created",
"de": "Aufgabe wurde erstellt"
"de": "Aufgabe wurde erstellt",
"nl": "Taak is aangemaakt"
}
},
{
"if": "mr_taskStatus=Fixed",
"then": {
"en": "Task is fixed",
"de": "Aufgabe wurde erledigt"
"de": "Aufgabe wurde erledigt",
"nl": "Taak is opgelost"
}
},
{
"if": "mr_taskStatus=False positive",
"then": {
"en": "Task is a false positive",
"de": "Aufgabe ist ein falsches Positiv"
"de": "Aufgabe ist ein falsches Positiv",
"nl": "Taak is vals positief"
}
},
{
"if": "mr_taskStatus=Skipped",
"then": {
"en": "Task is skipped",
"de": "Aufgabe wurde übersprungen"
"de": "Aufgabe wurde übersprungen",
"nl": "Taak is overgeslagen"
}
},
{
"if": "mr_taskStatus=Deleted",
"then": {
"en": "Task is deleted",
"de": "Aufgabe wurde gelöscht"
"de": "Aufgabe wurde gelöscht",
"nl": "Taak is verwijderd"
}
},
{
"if": "mr_taskStatus=Already fixed",
"then": {
"en": "Task is already fixed",
"de": "Aufgabe wurde bereits erledigt"
"de": "Aufgabe wurde bereits erledigt",
"nl": "Taak is al opgelost"
}
},
{
"if": "mr_taskStatus=Too hard",
"then": {
"en": "Task is marked as too hard",
"de": "Aufgabe wurde als zu schwer markiert"
"de": "Aufgabe wurde als zu schwer markiert",
"nl": "Taak is gemarkeerd als te lastig"
}
},
{
"if": "mr_taskStatus=Disabled",
"then": {
"en": "Task is disabled",
"de": "Aufgabe wurde deaktiviert"
"de": "Aufgabe wurde deaktiviert",
"nl": "Taak is uitgeschakeld"
}
}
]

View file

@ -2,11 +2,13 @@
"id": "parcel_lockers",
"name": {
"en": "Parcel Lockers",
"de": "Paketschließfächer"
"de": "Paketschließfächer",
"nl": "Pakketautomaten"
},
"description": {
"en": "Layer showing parcel lockers for collecting and sending parcels.",
"de": "Ebene mit Paketschließfächern zum Abholen und Versenden von Paketen."
"de": "Ebene mit Paketschließfächern zum Abholen und Versenden von Paketen.",
"nl": "Laag met pakketautomaten voor het ophalen en verzenden van paketten."
},
"minzoom": 12,
"source": {
@ -40,14 +42,16 @@
"title": {
"render": {
"en": "Parcel Locker",
"de": "Paketschließfach"
"de": "Paketschließfach",
"nl": "Pakketautomaat"
},
"mappings": [
{
"if": "brand~*",
"then": {
"en": "{brand} parcel locker",
"de": "{brand} Paketschließfach"
"de": "{brand} Paketschließfach",
"nl": "{brand} pakketautomaat"
}
}
]
@ -58,14 +62,16 @@
"id": "brand",
"question": {
"en": "What is the brand of the parcel locker?",
"de": "Welche Marke hat das Paketschließfach?"
"de": "Welche Marke hat das Paketschließfach?",
"nl": "Wat is het merk van deze pakketautomaat?"
},
"freeform": {
"key": "brand",
"type": "string",
"placeholder": {
"en": "Brand",
"de": "Marke"
"de": "Marke",
"nl": "Merk"
}
},
"mappings": [
@ -73,7 +79,8 @@
"if": "brand=Amazon Locker",
"then": {
"en": "This is an Amazon Locker",
"de": "Dies ist ein Amazon Locker"
"de": "Dies ist ein Amazon Locker",
"nl": "Dit is een Amazon Locker"
},
"addExtraTags": [
"brand:wikidata=Q16974764",
@ -85,7 +92,8 @@
"if": "brand=DHL Packstation",
"then": {
"en": "This is a DHL Packstation",
"de": "Dies ist eine DHL-Packstation"
"de": "Dies ist eine DHL-Packstation",
"nl": "Dit is een DHL Packstation"
},
"addExtraTags": [
"brand:wikidata=Q1766703",
@ -98,7 +106,8 @@
"if": "brand=Pickup Station",
"then": {
"en": "This is a DPD Pickup Station",
"de": "Dies ist eine DPD Pickup Station"
"de": "Dies ist eine DPD Pickup Station",
"nl": "Dit is een DPD Pickup Station"
},
"addExtraTags": [
"operator=DPD"
@ -120,26 +129,30 @@
],
"render": {
"en": "This is a {brand} parcel locker",
"de": "Dies ist ein Paketschließfach von {brand}"
"de": "Dies ist ein Paketschließfach von {brand}",
"nl": "Dit is een {brand} pakketautomaat"
}
},
{
"id": "operator",
"question": {
"en": "What is the operator of the parcel locker?",
"de": "Was ist der Betreiber des Paketschließfachs?"
"de": "Was ist der Betreiber des Paketschließfachs?",
"nl": "Wat is de beheerder van deze pakketautomaat?"
},
"freeform": {
"key": "operator",
"type": "string",
"placeholder": {
"en": "Operator",
"de": "Betreiber"
"de": "Betreiber",
"nl": "Beheerder"
}
},
"render": {
"en": "This parcel locker is operated by {operator}",
"de": "Dieses Paketschließfach wird von {operator} betrieben"
"de": "Dieses Paketschließfach wird von {operator} betrieben",
"nl": "Deze pakketautomaat wordt beheerd door {operator}"
}
},
"opening_hours",
@ -147,40 +160,46 @@
"id": "ref",
"question": {
"en": "What is the reference number/identifier of this parcel locker?",
"de": "Wie lautet die Referenznummer/Kennung dieses Paketschließfachs?"
"de": "Wie lautet die Referenznummer/Kennung dieses Paketschließfachs?",
"nl": "Wat is het referentienummer/identificator van deze pakketautomaat?"
},
"freeform": {
"key": "ref",
"type": "string",
"placeholder": {
"en": "Reference",
"de": "Referenz"
"de": "Referenz",
"nl": "Referentie"
}
},
"render": {
"en": "This parcel locker has the reference {ref}",
"de": "Dieses Paketschließfach hat die Kennnummer {ref}"
"de": "Dieses Paketschließfach hat die Kennnummer {ref}",
"nl": "Deze pakketautomaat heeft de referentie {ref}"
}
},
{
"id": "mail-in",
"question": {
"en": "Can you send packages from this parcel locker?",
"de": "Können Sie von diesem Paketschließfach aus Pakete versenden?"
"de": "Können Sie von diesem Paketschließfach aus Pakete versenden?",
"nl": "Kan je pakketten versturen vanuit deze pakketautomaat?"
},
"mappings": [
{
"if": "parcel_mail_in=yes",
"then": {
"en": "You can send packages from this parcel locker",
"de": "Sie können Pakete von diesem Paketschließfach aus versenden"
"de": "Sie können Pakete von diesem Paketschließfach aus versenden",
"nl": "Je kan pakketten versturen vanuit deze pakketautomaat"
}
},
{
"if": "parcel_mail_in=no",
"then": {
"en": "You <b>can't</b> send packages from this parcel locker",
"de": "Sie können <b>keine</b> Pakete von diesem Paketschließfach aus versenden"
"de": "Sie können <b>keine</b> Pakete von diesem Paketschließfach aus versenden",
"nl": "Je kan <b>geen</b> pakketten versturen vanuit deze pakketautomaat"
}
}
],
@ -190,21 +209,24 @@
"id": "pickup",
"question": {
"en": "Can you pick up packages from this parcel locker?",
"de": "Können Sie Pakete aus diesem Paketschließfach abholen?"
"de": "Können Sie Pakete aus diesem Paketschließfach abholen?",
"nl": "Kan je pakketten ophalen bij deze pakketautomaat?"
},
"mappings": [
{
"if": "parcel_pickup=yes",
"then": {
"en": "You can pick up packages from this parcel locker",
"de": "Sie können Pakete von diesem Paketschließfach abholen"
"de": "Sie können Pakete von diesem Paketschließfach abholen",
"nl": "Je kan pakketten ophalen bij deze pakketautomaat"
}
},
{
"if": "parcel_pickup=no",
"then": {
"en": "You <b>can't</b> pick up packages from this parcel locker",
"de": "Sie können <b>keine</b> Pakete von diesem Paketschließfach abholen"
"de": "Sie können <b>keine</b> Pakete von diesem Paketschließfach abholen",
"nl": "Je kan <b>geen</b> pakketten ophalen bij deze pakketautomaat"
}
}
],

View file

@ -2,11 +2,13 @@
"id": "parking_spaces",
"name": {
"en": "Parking Spaces",
"de": "Stellplätze"
"de": "Stellplätze",
"nl": "Parkeerplekken"
},
"description": {
"en": "Layer showing individual parking spaces.",
"de": "Ebene mit den einzelnen PKW Stellplätzen."
"de": "Ebene mit den einzelnen PKW Stellplätzen.",
"nl": "Laag met individuele parkeerplekken."
},
"minzoom": 19,
"source": {
@ -17,14 +19,16 @@
"id": "type",
"question": {
"en": "What kind of parking space is this?",
"de": "Welche Art von Stellplatz ist dies?"
"de": "Welche Art von Stellplatz ist dies?",
"nl": "Wat voor parkeerplek is dit?"
},
"mappings": [
{
"if": "parking_space=",
"then": {
"en": "This is a normal parking space",
"de": "Dies ist ein normaler Stellplatz"
"en": "This is a normal parking space.",
"de": "Dies ist ein normaler Stellplatz.",
"nl": "Dit is een normale parkeerplek."
},
"hideInAnswer": true
},
@ -32,98 +36,112 @@
"if": "parking_space=normal",
"then": {
"en": "This is a normal parking space.",
"de": "Dies ist ein normaler Stellplatz."
"de": "Dies ist ein normaler Stellplatz.",
"nl": "Dit is een normale parkeerplek."
}
},
{
"if": "parking_space=disabled",
"then": {
"en": "This is a disabled parking space.",
"de": "Dies ist ein Behindertenstellplatz."
"de": "Dies ist ein Behindertenstellplatz.",
"nl": "Dit is een gehandicaptenparkeerplaats."
}
},
{
"if": "parking_space=private",
"then": {
"en": "This is a private parking space.",
"de": "Dies ist ein privater Stellplatz."
"de": "Dies ist ein privater Stellplatz.",
"nl": "Dit is een privéparkeerplek."
}
},
{
"if": "parking_space=charging",
"then": {
"en": "This is parking space reserved for charging vehicles.",
"de": "Dies ist ein Stellplatz, der für das Laden von Fahrzeugen reserviert ist."
"de": "Dies ist ein Stellplatz, der für das Laden von Fahrzeugen reserviert ist.",
"nl": "Deze parkeerplek is gereserveerd voor het opladen van voertuigen."
}
},
{
"if": "parking_space=delivery",
"then": {
"en": "This is parking space reserved for deliveries.",
"de": "Dies ist ein Stellplatz, der für Lieferfahrzeuge reserviert ist."
"de": "Dies ist ein Stellplatz, der für Lieferfahrzeuge reserviert ist.",
"nl": "Deze parkeerplek is gereserveerd voor leveringen."
}
},
{
"if": "parking_space=hgv",
"then": {
"en": "This is parking space reserved for heavy goods vehicles.",
"de": "Dies ist ein Stellplatz, der für Lastkraftwagen reserviert ist."
"de": "Dies ist ein Stellplatz, der für Lastkraftwagen reserviert ist.",
"nl": "Deze parkeerplek is gereserveerd voor vrachtwagens."
}
},
{
"if": "parking_space=caravan",
"then": {
"en": "This is parking space reserved for caravans or RVs.",
"de": "Dieser Stellplatz ist für Wohnwagen oder Wohnmobile reserviert."
"de": "Dieser Stellplatz ist für Wohnwagen oder Wohnmobile reserviert.",
"nl": "Deze parkeerplek is gereserveerd voor caravans of campers."
}
},
{
"if": "parking_space=bus",
"then": {
"en": "This is parking space reserved for buses.",
"de": "Dies ist ein Stellplatz, der für Busse reserviert ist."
"de": "Dies ist ein Stellplatz, der für Busse reserviert ist.",
"nl": "Deze parkeerplek is gereserveerd voor bussen."
}
},
{
"if": "parking_space=motorcycle",
"then": {
"en": "This is parking space reserved for motorcycles.",
"de": "Dies ist ein Stellplatz, der für Motorräder reserviert ist."
"de": "Dies ist ein Stellplatz, der für Motorräder reserviert ist.",
"nl": "Deze parkeerplek is gereserveerd voor motoren."
}
},
{
"if": "parking_space=parent",
"then": {
"en": "This is a parking space reserved for parents with children.",
"de": "Dies ist ein Stellplatz, der für Eltern mit Kindern reserviert ist."
"de": "Dies ist ein Stellplatz, der für Eltern mit Kindern reserviert ist.",
"nl": "Deze parkeerplek is gereserveerd voor ouders met kinderen."
}
},
{
"if": "parking_space=staff",
"then": {
"en": "This is a parking space reserved for staff.",
"de": "Dies ist ein Stellplatz, der für das Personal reserviert ist."
"de": "Dies ist ein Stellplatz, der für das Personal reserviert ist.",
"nl": "Deze parkeerplek is gereserveerd voor personeel."
}
},
{
"if": "parking_space=taxi",
"then": {
"en": "This is a parking space reserved for taxis.",
"de": "Dies ist ein Stellplatz, der für Taxis reserviert ist."
"de": "Dies ist ein Stellplatz, der für Taxis reserviert ist.",
"nl": "Deze parkeerplek is gereserveerd voor taxis."
}
},
{
"if": "parking_space=trailer",
"then": {
"en": "This is a parking space reserved for vehicles towing a trailer.",
"de": "Dies ist ein Stellplatz, der für Fahrzeuge mit Anhänger reserviert ist."
"de": "Dies ist ein Stellplatz, der für Fahrzeuge mit Anhänger reserviert ist.",
"nl": "Deze parkeerplek is gereserveerd voor voertuigen met een aanhanger."
}
},
{
"if": "parking_space=car_sharing",
"then": {
"en": "This is a parking space reserved for car sharing.",
"de": "Dies ist ein Stellplatz, der für Carsharing reserviert ist."
"de": "Dies ist ein Stellplatz, der für Carsharing reserviert ist.",
"nl": "Deze parkeerplek is gereserveerd voor autodelen."
}
}
]
@ -132,14 +150,16 @@
"id": "capacity",
"render": {
"en": "This parking spaces has {capacity} spaces.",
"de": "Dieser Parkplatz hat {capacity} Stellplätze."
"de": "Dieser Parkplatz hat {capacity} Stellplätze.",
"nl": "Deze parkeerplek heeft {capacity} plaatsen."
},
"mappings": [
{
"if": "capacity=1",
"then": {
"en": "This parking space has 1 space.",
"de": "Dieser Parkplatz hat 1 Stellplatz."
"de": "Dieser Parkplatz hat 1 Stellplatz.",
"nl": "Deze parkeerplek heeft 1 plaats."
}
}
]
@ -148,7 +168,8 @@
"title": {
"render": {
"en": "Parking Space",
"de": "Stellplatz"
"de": "Stellplatz",
"nl": "Parkeerplek"
}
},
"mapRendering": [

View file

@ -15,21 +15,24 @@
"title": {
"render": {
"en": "Crossing",
"de": "Überweg"
"de": "Überweg",
"nl": "Oversteekplaats"
}
},
"presets": [
{
"title": {
"en": "a crossing",
"de": "einen Überweg"
"de": "einen Überweg",
"nl": "een oversteekplaats"
},
"tags": [
"highway=crossing"
],
"description": {
"en": "Pedestrian crossing",
"de": "Fußgängerüberweg"
"de": "Fußgängerüberweg",
"nl": "Voetgangersoversteekplaats"
},
"preciseInput": {
"preferredBackground": [

View file

@ -78,7 +78,8 @@
"human": {
"en": "meter",
"fr": "mètre",
"de": "Meter"
"de": "Meter",
"nl": "meter"
}
},
{
@ -90,7 +91,8 @@
"human": {
"en": "centimeter",
"fr": "centimètre",
"de": "Zentimeter"
"de": "Zentimeter",
"nl": "centimeter"
}
}
]

View file

@ -2,7 +2,8 @@
"id": "shelter",
"name": {
"en": "Shelter",
"de": "Unterstände"
"de": "Unterstände",
"nl": "Schuilplaats"
},
"description": {
"en": "Layer showing shelter structures",
@ -19,7 +20,8 @@
"title": {
"render": {
"en": "Shelter",
"de": "Unterstand"
"de": "Unterstand",
"nl": "Schuilplaats"
}
},
"mapRendering": [
@ -39,7 +41,8 @@
"if": "shelter_type=public_transport",
"then": {
"en": "This is a shelter at a public transport stop.",
"de": "Das ist ein Unterstand an einer Haltestelle für öffentliche Verkehrsmittel."
"de": "Das ist ein Unterstand an einer Haltestelle für öffentliche Verkehrsmittel.",
"nl": "Dit is een schuilplaats bij een halte voor openbaar vervoer."
}
},
{
@ -84,7 +87,8 @@
],
"question": {
"en": "What kind of shelter is this?",
"de": "Um welche Art von Unterstand handelt es sich?"
"de": "Um welche Art von Unterstand handelt es sich?",
"nl": "Wat voor schuilplaats is dit?"
},
"render": {
"en": "Shelter type: {shelter_type}",

View file

@ -30,7 +30,8 @@
"then": {
"en": "Stop {name}",
"de": "Haltestelle {name}",
"da": "Stop {name}"
"da": "Stop {name}",
"nl": "Halte {name}"
}
}
]
@ -139,7 +140,8 @@
"then": {
"en": "This stop has a bench",
"de": "Die Haltestelle hat eine Bank",
"da": "Dette stop har en bænk"
"da": "Dette stop har en bænk",
"nl": "Deze halte heeft een zitbank"
}
},
{
@ -147,14 +149,16 @@
"then": {
"en": "This stop does not have a bench",
"de": "Die Haltestelle hat keine Bank",
"da": "Dette stoppested har ingen bænk"
"da": "Dette stoppested har ingen bænk",
"nl": "Deze halte heeft geen zitbank"
}
},
{
"if": "bench=separate",
"then": {
"en": "This stop has a bench, that's separately mapped",
"de": "Die Haltestelle hat eine Bank, die separat kartiert ist"
"de": "Die Haltestelle hat eine Bank, die separat kartiert ist",
"nl": "Deze halte heeft een zitbank, die los aangegeven is op de kaart"
},
"hideInAnswer": true
}
@ -162,7 +166,8 @@
"question": {
"en": "Does this stop have a bench?",
"de": "Gibt es an der Haltestelle eine Sitzbank?",
"da": "Har dette stop en bænk?"
"da": "Har dette stop en bænk?",
"nl": "Heeft deze halte een zitbank?"
}
},
{
@ -173,7 +178,8 @@
"then": {
"en": "This stop has a bin",
"de": "Die Haltestelle hat einen Mülleimer",
"da": "Dette stop har en skraldespand"
"da": "Dette stop har en skraldespand",
"nl": "Deze halte heeft een vuilnisbak"
}
},
{
@ -181,14 +187,16 @@
"then": {
"en": "This stop does not have a bin",
"de": "Die Haltestelle hat keinen Mülleimer",
"da": "Dette stoppested har ikke en skraldespand"
"da": "Dette stoppested har ikke en skraldespand",
"nl": "Deze halte heeft geen vuilnisbak"
}
},
{
"if": "bin=separate",
"then": {
"en": "This stop has a bin, that's separately mapped",
"de": "Die Haltestelle hat einen Mülleimer, der separat kartiert ist"
"de": "Die Haltestelle hat einen Mülleimer, der separat kartiert ist",
"nl": "Deze heeft een vuilnisbak, die los op de kaart staat"
},
"hideInAnswer": true
}
@ -196,7 +204,8 @@
"question": {
"en": "Does this stop have a bin?",
"de": "Hat die Haltestelle einen Mülleimer?",
"da": "Har dette stop en skraldespand?"
"da": "Har dette stop en skraldespand?",
"nl": "Heeft deze halte een vuilnisbak?"
}
},
"wheelchair-access",
@ -318,7 +327,10 @@
"options": [
{
"osmTags": {
"or": ["shelter=yes", "shelter=separate"]
"or": [
"shelter=yes",
"shelter=separate"
]
},
"question": {
"en": "With a shelter"
@ -331,7 +343,10 @@
"options": [
{
"osmTags": {
"or": ["bench=yes", "bench=separate"]
"or": [
"bench=yes",
"bench=separate"
]
},
"question": {
"en": "With a bench"
@ -344,7 +359,10 @@
"options": [
{
"osmTags": {
"or": ["bin=yes", "bin=separate"]
"or": [
"bin=yes",
"bin=separate"
]
},
"question": {
"en": "With a bin"

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