Merge branch 'master' into develop
This commit is contained in:
commit
9a4cdaf1ad
192 changed files with 9167 additions and 12079 deletions
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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`
|
||||
|
||||
|
||||
|
||||
|
@ -452,7 +299,7 @@ The question is Does this shop offer a bike pump for use by anyone?
|
|||
|
||||
- This shop offers a bike pump for anyone corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:pump' target='_blank'>service:bicycle:pump</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:pump%3Dyes' target='_blank'>yes</a>`
|
||||
- This shop doesn't offer a bike pump for anyone corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:pump' target='_blank'>service:bicycle:pump</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:pump%3Dno' target='_blank'>no</a>`
|
||||
- There is bicycle pump, it is shown as a separate point corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:pump' target='_blank'>service:bicycle:pump</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:pump%3Dseparate' target='_blank'>separate</a>`
|
||||
- There is bicycle pump, it is shown as a separate point corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:pump' target='_blank'>service:bicycle:pump</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:pump%3Dseparate' target='_blank'>separate</a>`
|
||||
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
||||
|
||||
|
@ -182,61 +179,6 @@ This is rendered with The rock type is {rock}
|
|||
- Limestone corresponds with `<a href='https://wiki.openstreetmap.org/wiki/Key:rock' target='_blank'>rock</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:rock%3Dlimestone' target='_blank'>limestone</a>`
|
||||
|
||||
|
||||
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
|
||||
|
||||
Only visible if `climbing=crag|natural=cliff|natural=bare_rock` is shown
|
||||
|
||||
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)
|
|
@ -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?
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
232
Docs/Layers/fitness_centre.md
Normal file
232
Docs/Layers/fitness_centre.md
Normal 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)
|
155
Docs/Layers/fitness_station.md
Normal file
155
Docs/Layers/fitness_station.md
Normal 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)
|
|
@ -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)
|
||||
|
||||
|
||||
|
||||
|
@ -136,6 +137,11 @@ This rendering asks information about the property [kerb:height](https://wiki.o
|
|||
|
||||
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)
|
|
@ -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)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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>`
|
||||
|
|
|
@ -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
93
Docs/Layers/speed_camera.md
Normal file
93
Docs/Layers/speed_camera.md
Normal 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)
|
95
Docs/Layers/speed_display.md
Normal file
95
Docs/Layers/speed_display.md
Normal 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)
|
|
@ -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)
|
||||
|
||||
|
||||
|
||||
|
|
174
Docs/Layers/sports_centre.md
Normal file
174
Docs/Layers/sports_centre.md
Normal 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
124
Docs/Layers/stairs.md
Normal 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)
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
277
Docs/Layers/toilet_at_amenity.md
Normal file
277
Docs/Layers/toilet_at_amenity.md
Normal 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)
|
|
@ -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)
|
||||
|
||||
|
|
1100
Docs/TagInfo/mapcomplete_blind_osm.json
Normal file
1100
Docs/TagInfo/mapcomplete_blind_osm.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -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')",
|
||||
|
|
|
@ -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')",
|
||||
|
|
|
@ -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')"
|
||||
|
|
|
@ -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')",
|
||||
|
@ -551,7 +479,7 @@
|
|||
},
|
||||
{
|
||||
"key": "service:bicycle:pump",
|
||||
"description": "Layer 'Bike repair/shop' shows service:bicycle:pump=separate with a fixed text, namely 'There is bicycle pump, it is shown as a separate point ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
|
||||
"description": "Layer 'Bike repair/shop' shows service:bicycle:pump=separate with a fixed text, namely 'There is bicycle pump, it is shown as a separate point' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
|
||||
"value": "separate"
|
||||
},
|
||||
{
|
||||
|
@ -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
|
@ -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"
|
||||
},
|
||||
{
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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')"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
},
|
||||
{
|
||||
|
|
|
@ -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"
|
||||
},
|
||||
{
|
||||
|
|
|
@ -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
|
@ -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')"
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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')"
|
||||
|
|
654
Docs/TagInfo/mapcomplete_sports.json
Normal file
654
Docs/TagInfo/mapcomplete_sports.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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')"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -191,7 +191,7 @@ export default class OverpassFeatureSource implements FeatureSource {
|
|||
|
||||
const self = this
|
||||
const overpassUrls = self.state.overpassUrl.data
|
||||
if(overpassUrls === undefined || overpassUrls.length === 0){
|
||||
if (overpassUrls === undefined || overpassUrls.length === 0) {
|
||||
throw "Panic: overpassFeatureSource didn't receive any overpassUrls"
|
||||
}
|
||||
let bounds: BBox
|
||||
|
|
|
@ -46,9 +46,9 @@ export default class TitleHandler {
|
|||
if (Utils.runningFromConsole) {
|
||||
return
|
||||
}
|
||||
try{
|
||||
document.title = title
|
||||
}catch (e) {
|
||||
try {
|
||||
document.title = title
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,24 +1,28 @@
|
|||
import LayoutConfig from "../Models/ThemeConfig/LayoutConfig"
|
||||
import {QueryParameters} from "./Web/QueryParameters"
|
||||
import {AllKnownLayouts} from "../Customizations/AllKnownLayouts"
|
||||
import {FixedUiElement} from "../UI/Base/FixedUiElement"
|
||||
import {Utils} from "../Utils"
|
||||
import { QueryParameters } from "./Web/QueryParameters"
|
||||
import { AllKnownLayouts } from "../Customizations/AllKnownLayouts"
|
||||
import { FixedUiElement } from "../UI/Base/FixedUiElement"
|
||||
import { Utils } from "../Utils"
|
||||
import Combine from "../UI/Base/Combine"
|
||||
import {SubtleButton} from "../UI/Base/SubtleButton"
|
||||
import { SubtleButton } from "../UI/Base/SubtleButton"
|
||||
import BaseUIElement from "../UI/BaseUIElement"
|
||||
import {UIEventSource} from "./UIEventSource"
|
||||
import {LocalStorageSource} from "./Web/LocalStorageSource"
|
||||
import { UIEventSource } from "./UIEventSource"
|
||||
import { LocalStorageSource } from "./Web/LocalStorageSource"
|
||||
import LZString from "lz-string"
|
||||
import {FixLegacyTheme} from "../Models/ThemeConfig/Conversion/LegacyJsonConvert"
|
||||
import {LayerConfigJson} from "../Models/ThemeConfig/Json/LayerConfigJson"
|
||||
import { FixLegacyTheme } from "../Models/ThemeConfig/Conversion/LegacyJsonConvert"
|
||||
import { LayerConfigJson } from "../Models/ThemeConfig/Json/LayerConfigJson"
|
||||
import SharedTagRenderings from "../Customizations/SharedTagRenderings"
|
||||
import * as known_layers from "../assets/generated/known_layers.json"
|
||||
import {PrepareTheme} from "../Models/ThemeConfig/Conversion/PrepareTheme"
|
||||
import { PrepareTheme } from "../Models/ThemeConfig/Conversion/PrepareTheme"
|
||||
import * as licenses from "../assets/generated/license_info.json"
|
||||
import TagRenderingConfig from "../Models/ThemeConfig/TagRenderingConfig"
|
||||
import {FixImages} from "../Models/ThemeConfig/Conversion/FixImages"
|
||||
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))
|
||||
|
@ -130,11 +134,11 @@ export default class DetermineLayout {
|
|||
}),
|
||||
json !== undefined
|
||||
? new SubtleButton(Svg.download_svg(), "Download the JSON file").onClick(() => {
|
||||
Utils.offerContentsAsDownloadableFile(
|
||||
JSON.stringify(json, null, " "),
|
||||
"theme_definition.json"
|
||||
)
|
||||
})
|
||||
Utils.offerContentsAsDownloadableFile(
|
||||
JSON.stringify(json, null, " "),
|
||||
"theme_definition.json"
|
||||
)
|
||||
})
|
||||
: undefined,
|
||||
])
|
||||
.SetClass("flex flex-col clickable")
|
||||
|
@ -181,14 +185,14 @@ export default class DetermineLayout {
|
|||
json.id = forceId ?? json.id
|
||||
|
||||
{
|
||||
let {errors} = new PrevalidateTheme().convert(json, "validation")
|
||||
let { errors } = new PrevalidateTheme().convert(json, "validation")
|
||||
if (errors.length > 0) {
|
||||
throw "Detected errors: " + errors.join("\n")
|
||||
}
|
||||
}
|
||||
{
|
||||
let {errors} = new ValidateThemeAndLayers(
|
||||
new DoesImageExist(new Set<string>(), _ => true),
|
||||
let { errors } = new ValidateThemeAndLayers(
|
||||
new DoesImageExist(new Set<string>(), (_) => true),
|
||||
"",
|
||||
false,
|
||||
SharedTagRenderings.SharedTagRendering
|
||||
|
|
|
@ -84,7 +84,7 @@ export class NewGeometryFromChangesFeatureSource implements FeatureSource {
|
|||
}
|
||||
|
||||
try {
|
||||
const tags: OsmTags & {id: OsmId & string} = {
|
||||
const tags: OsmTags & { id: OsmId & string } = {
|
||||
id: <OsmId & string>(change.type + "/" + change.id),
|
||||
}
|
||||
for (const kv of change.tags) {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import FeatureSource, {FeatureSourceForLayer, Tiled} from "../FeatureSource"
|
||||
import {ImmutableStore, Store} from "../../UIEventSource"
|
||||
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 { BBox } from "../../BBox"
|
||||
import { Feature } from "geojson"
|
||||
|
||||
/**
|
||||
* A simple, read only feature store.
|
||||
|
|
|
@ -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
|
||||
|
@ -28,7 +29,7 @@ export class GeoOperations {
|
|||
* @param feature
|
||||
*/
|
||||
static centerpoint(feature: any): Feature<Point> {
|
||||
const newFeature : Feature<Point> = turf.center(feature)
|
||||
const newFeature: Feature<Point> = turf.center(feature)
|
||||
newFeature.properties = feature.properties
|
||||
newFeature.id = feature.id
|
||||
return newFeature
|
||||
|
@ -286,10 +287,10 @@ export class GeoOperations {
|
|||
way = { ...way }
|
||||
way.geometry = { ...way.geometry }
|
||||
way.geometry.type = "LineString"
|
||||
way.geometry.coordinates = (<Polygon> way.geometry).coordinates[0]
|
||||
way.geometry.coordinates = (<Polygon>way.geometry).coordinates[0]
|
||||
}
|
||||
|
||||
return turf.nearestPointOnLine(<Feature<LineString>> way, point, { units: "kilometers" })
|
||||
return turf.nearestPointOnLine(<Feature<LineString>>way, point, { units: "kilometers" })
|
||||
}
|
||||
|
||||
public static toCSV(features: any[]): string {
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -3,10 +3,10 @@ import OsmChangeAction from "./OsmChangeAction"
|
|||
import { Changes } from "../Changes"
|
||||
import { ChangeDescription } from "./ChangeDescription"
|
||||
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 { TagsFilter } from "../../Tags/TagsFilter"
|
||||
import { And } from "../../Tags/And"
|
||||
import { Tag } from "../../Tags/Tag"
|
||||
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,
|
||||
|
@ -39,11 +38,12 @@ export default class DeleteAction extends OsmChangeAction {
|
|||
this._softDeletionTags = new And(
|
||||
Utils.NoNull([
|
||||
softDeletionTags,
|
||||
new Tag(
|
||||
"fixme",
|
||||
`A mapcomplete user marked this feature to be deleted (${meta.specialMotivation})`
|
||||
)
|
||||
]))
|
||||
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 [
|
||||
|
|
|
@ -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 {
|
||||
/**
|
||||
|
@ -85,7 +85,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction {
|
|||
public async getPreview(): Promise<FeatureSource> {
|
||||
const { closestIds, allNodesById, detachedNodes, reprojectedNodes } =
|
||||
await this.GetClosestIds()
|
||||
const preview: Feature<Geometry> [] = closestIds.map((newId, i) => {
|
||||
const preview: Feature<Geometry>[] = closestIds.map((newId, i) => {
|
||||
if (this.identicalTo[i] !== undefined) {
|
||||
return undefined
|
||||
}
|
||||
|
@ -390,7 +390,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction {
|
|||
const node = allNodesById.get(id)
|
||||
|
||||
// Project the node onto the target way to calculate the new coordinates
|
||||
const way = <Feature<LineString>> {
|
||||
const way = <Feature<LineString>>{
|
||||
type: "Feature",
|
||||
properties: {},
|
||||
geometry: {
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import {Utils} from "../../Utils"
|
||||
import { Utils } from "../../Utils"
|
||||
import * as polygon_features from "../../assets/polygon-features.json"
|
||||
import {Store, UIEventSource} from "../UIEventSource"
|
||||
import {BBox} from "../BBox"
|
||||
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 { NodeId, OsmFeature, OsmId, OsmTags, RelationId, WayId } from "../../Models/OsmFeature"
|
||||
import { Feature, LineString, Polygon } from "geojson"
|
||||
|
||||
export abstract class OsmObject {
|
||||
private static defaultBackend = "https://www.openstreetmap.org/"
|
||||
|
@ -17,7 +17,7 @@ export abstract class OsmObject {
|
|||
/**
|
||||
* The OSM tags as simple object
|
||||
*/
|
||||
tags: OsmTags & {id: OsmId}
|
||||
tags: OsmTags & { id: OsmId }
|
||||
version: number
|
||||
public changed: boolean = false
|
||||
timestamp: Date
|
||||
|
@ -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])
|
||||
|
@ -210,7 +228,7 @@ export abstract class OsmObject {
|
|||
case "relation":
|
||||
osmObject = new OsmRelation(idN)
|
||||
const allGeojsons = OsmToGeoJson.default(
|
||||
{elements},
|
||||
{ elements },
|
||||
// @ts-ignore
|
||||
{
|
||||
flatProperties: true,
|
||||
|
@ -264,14 +282,16 @@ 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
|
||||
|
||||
if (polygonFeature.polygon === "all") {
|
||||
result.set(key, {values: null, blacklist: false})
|
||||
result.set(key, { values: null, blacklist: false })
|
||||
continue
|
||||
}
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
@ -424,23 +424,26 @@ export default class SimpleMetaTaggers {
|
|||
|
||||
private static directionCenterpoint = new SimpleMetaTagger(
|
||||
{
|
||||
keys:["_direction:centerpoint"],
|
||||
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"){
|
||||
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"]
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import {Tag} from "./Tag"
|
||||
import {TagsFilter} from "./TagsFilter"
|
||||
import {And} from "./And"
|
||||
import {Utils} from "../../Utils"
|
||||
import { Tag } from "./Tag"
|
||||
import { TagsFilter } from "./TagsFilter"
|
||||
import { And } from "./And"
|
||||
import { Utils } from "../../Utils"
|
||||
import ComparingTag from "./ComparingTag"
|
||||
import {RegexTag} from "./RegexTag"
|
||||
import { RegexTag } from "./RegexTag"
|
||||
import SubstitutingTag from "./SubstitutingTag"
|
||||
import {Or} from "./Or"
|
||||
import {TagConfigJson} from "../../Models/ThemeConfig/Json/TagConfigJson"
|
||||
import {isRegExp} from "util"
|
||||
import { Or } from "./Or"
|
||||
import { TagConfigJson } from "../../Models/ThemeConfig/Json/TagConfigJson"
|
||||
import { isRegExp } from "util"
|
||||
import * as key_counts from "../../assets/key_totals.json"
|
||||
|
||||
type Tags = Record<string, string>
|
||||
|
@ -373,7 +373,7 @@ export class TagUtils {
|
|||
return null
|
||||
}
|
||||
const [_, key, invert, modifier, value] = match
|
||||
return {key, value, invert: invert == "!", modifier: modifier == "i~" ? "i" : ""}
|
||||
return { key, value, invert: invert == "!", modifier: modifier == "i~" ? "i" : "" }
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -557,9 +557,9 @@ 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")
|
||||
keyRegex = new RegExp(".+", "i")
|
||||
} else {
|
||||
keyRegex = new RegExp("^(" + split[0] + ")$")
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -681,14 +681,20 @@ export class UIEventSource<T> extends Store<T> {
|
|||
/**
|
||||
* Monoidal map which results in a read-only store. 'undefined' is passed 'as is'
|
||||
* 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 => {
|
||||
if(t === undefined){
|
||||
return undefined
|
||||
}
|
||||
return f(t)
|
||||
}, extraSources, this._callbacks, this.data === undefined ? undefined : f(this.data))
|
||||
return new MappedStore(
|
||||
this,
|
||||
(t) => {
|
||||
if (t === undefined) {
|
||||
return undefined
|
||||
}
|
||||
return f(t)
|
||||
},
|
||||
extraSources,
|
||||
this._callbacks,
|
||||
this.data === undefined ? undefined : f(this.data)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -6,7 +6,7 @@ import Hash from "./Hash"
|
|||
import { Utils } from "../../Utils"
|
||||
|
||||
export class QueryParameters {
|
||||
static defaults : Record<string, string> = {}
|
||||
static defaults: Record<string, string> = {}
|
||||
static documentation: Map<string, string> = new Map<string, string>()
|
||||
private static order: string[] = ["layout", "test", "z", "lat", "lon"]
|
||||
protected static readonly _wasInitialized: Set<string> = new Set()
|
||||
|
@ -105,9 +105,9 @@ export class QueryParameters {
|
|||
}
|
||||
if (!Utils.runningFromConsole) {
|
||||
// Don't pollute the history every time a parameter changes
|
||||
try{
|
||||
try {
|
||||
history.replaceState(null, "", "?" + parts.join("&") + Hash.Current())
|
||||
}catch(e){
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,64 +1,90 @@
|
|||
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"
|
||||
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"
|
||||
import RewritableConfigJson from "../Json/RewritableConfigJson"
|
||||
import SpecialVisualizations from "../../../UI/SpecialVisualizations"
|
||||
import Translations from "../../../UI/i18n/Translations"
|
||||
import {Translation} from "../../../UI/i18n/Translation"
|
||||
import { Translation } from "../../../UI/i18n/Translation"
|
||||
import * as tagrenderingconfigmeta from "../../../assets/tagrenderingconfigmeta.json"
|
||||
import {AddContextToTranslations} from "./AddContextToTranslations"
|
||||
import FilterConfigJson from "../Json/FilterConfigJson";
|
||||
import { AddContextToTranslations } from "./AddContextToTranslations"
|
||||
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)) {
|
||||
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) {
|
||||
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[] } {
|
||||
if(json.filter === undefined || json.filter === null){
|
||||
return {result: json} // Nothing to change here
|
||||
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
|
||||
}
|
||||
|
||||
if( json.filter["sameAs"] !== undefined){
|
||||
return {result: json} // Nothing to change here
|
||||
if (json.filter["sameAs"] !== undefined) {
|
||||
return { result: json } // Nothing to change here
|
||||
}
|
||||
|
||||
const newFilters : FilterConfigJson[] = []
|
||||
const errors :string[]= []
|
||||
for (const filter of (<(FilterConfigJson|string)[]> json.filter)) {
|
||||
const newFilters: FilterConfigJson[] = []
|
||||
const errors: string[] = []
|
||||
for (const filter of <(FilterConfigJson | string)[]>json.filter) {
|
||||
if (typeof filter !== "string") {
|
||||
newFilters.push(filter)
|
||||
continue
|
||||
}
|
||||
// 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
|
||||
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
|
||||
errors.push(err)
|
||||
}
|
||||
newFilters.push(found)
|
||||
}
|
||||
return {result: {
|
||||
...json, filter: newFilters
|
||||
}, errors};
|
||||
return {
|
||||
result: {
|
||||
...json,
|
||||
filter: newFilters,
|
||||
},
|
||||
errors,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
class ExpandTagRendering extends Conversion<
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
import {DesugaringStep, Each, Fuse, On} from "./Conversion"
|
||||
import {LayerConfigJson} from "../Json/LayerConfigJson"
|
||||
import { DesugaringStep, Each, Fuse, On } from "./Conversion"
|
||||
import { LayerConfigJson } from "../Json/LayerConfigJson"
|
||||
import LayerConfig from "../LayerConfig"
|
||||
import {Utils} from "../../../Utils"
|
||||
import { Utils } from "../../../Utils"
|
||||
import Constants from "../../Constants"
|
||||
import {Translation} from "../../../UI/i18n/Translation"
|
||||
import {LayoutConfigJson} from "../Json/LayoutConfigJson"
|
||||
import { Translation } from "../../../UI/i18n/Translation"
|
||||
import { LayoutConfigJson } from "../Json/LayoutConfigJson"
|
||||
import LayoutConfig from "../LayoutConfig"
|
||||
import {TagRenderingConfigJson} from "../Json/TagRenderingConfigJson"
|
||||
import {TagUtils} from "../../../Logic/Tags/TagUtils"
|
||||
import {ExtractImages} from "./FixImages"
|
||||
import { TagRenderingConfigJson } from "../Json/TagRenderingConfigJson"
|
||||
import { TagUtils } from "../../../Logic/Tags/TagUtils"
|
||||
import { ExtractImages } from "./FixImages"
|
||||
import ScriptUtils from "../../../scripts/ScriptUtils"
|
||||
import {And} from "../../../Logic/Tags/And"
|
||||
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 { QuestionableTagRenderingConfigJson } from "../Json/QuestionableTagRenderingConfigJson"
|
||||
import FilterConfigJson from "../Json/FilterConfigJson"
|
||||
import DeleteConfig from "../DeleteConfig"
|
||||
|
||||
class ValidateLanguageCompleteness extends DesugaringStep<any> {
|
||||
private readonly _languages: string[]
|
||||
|
@ -42,12 +42,12 @@ class ValidateLanguageCompleteness extends DesugaringStep<any> {
|
|||
.forEach((missing) => {
|
||||
errors.push(
|
||||
context +
|
||||
"A theme should be translation-complete for " +
|
||||
neededLanguage +
|
||||
", but it lacks a translation for " +
|
||||
missing.context +
|
||||
".\n\tThe known translation is " +
|
||||
missing.tr.textFor("en")
|
||||
"A theme should be translation-complete for " +
|
||||
neededLanguage +
|
||||
", but it lacks a translation for " +
|
||||
missing.context +
|
||||
".\n\tThe known translation is " +
|
||||
missing.tr.textFor("en")
|
||||
)
|
||||
})
|
||||
}
|
||||
|
@ -81,16 +81,16 @@ export class DoesImageExist extends DesugaringStep<string> {
|
|||
const information = []
|
||||
if (image.indexOf("{") >= 0) {
|
||||
information.push("Ignoring image with { in the path: " + image)
|
||||
return {result: image}
|
||||
return { result: image }
|
||||
}
|
||||
|
||||
if (image === "assets/SocialImage.png") {
|
||||
return {result: image}
|
||||
return { result: image }
|
||||
}
|
||||
if (image.match(/[a-z]*/)) {
|
||||
if (Svg.All[image + ".svg"] !== undefined) {
|
||||
// This is a builtin img, e.g. 'checkmark' or 'crosshair'
|
||||
return {result: image}
|
||||
return { result: image }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -157,15 +157,15 @@ class ValidateTheme extends DesugaringStep<LayoutConfigJson> {
|
|||
if (json["units"] !== undefined) {
|
||||
errors.push(
|
||||
"The theme " +
|
||||
json.id +
|
||||
" has units defined - these should be defined on the layer instead. (Hint: use overrideAll: { '+units': ... }) "
|
||||
json.id +
|
||||
" has units defined - these should be defined on the layer instead. (Hint: use overrideAll: { '+units': ... }) "
|
||||
)
|
||||
}
|
||||
if (json["roamingRenderings"] !== undefined) {
|
||||
errors.push(
|
||||
"Theme " +
|
||||
json.id +
|
||||
" contains an old 'roamingRenderings'. Use an 'overrideAll' instead"
|
||||
json.id +
|
||||
" contains an old 'roamingRenderings'. Use an 'overrideAll' instead"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -180,10 +180,10 @@ class ValidateTheme extends DesugaringStep<LayoutConfigJson> {
|
|||
for (const remoteImage of remoteImages) {
|
||||
errors.push(
|
||||
"Found a remote image: " +
|
||||
remoteImage +
|
||||
" in theme " +
|
||||
json.id +
|
||||
", please download it."
|
||||
remoteImage +
|
||||
" in theme " +
|
||||
json.id +
|
||||
", please download it."
|
||||
)
|
||||
}
|
||||
for (const image of images) {
|
||||
|
@ -212,10 +212,10 @@ class ValidateTheme extends DesugaringStep<LayoutConfigJson> {
|
|||
const h = parseInt(height)
|
||||
if (w < 370 || h < 370) {
|
||||
const e: string = [
|
||||
`the icon for theme ${json.id} is too small. Please rescale the icon at ${json.icon}`,
|
||||
`Even though an SVG is 'infinitely scaleable', the icon should be dimensioned bigger. One of the build steps of the theme does convert the image to a PNG (to serve as PWA-icon) and having a small dimension will cause blurry images.`,
|
||||
` Width = ${width} height = ${height}; we recommend a size of at least 500px * 500px and to use a square aspect ratio.`,
|
||||
].join("\n")
|
||||
`the icon for theme ${json.id} is too small. Please rescale the icon at ${json.icon}`,
|
||||
`Even though an SVG is 'infinitely scaleable', the icon should be dimensioned bigger. One of the build steps of the theme does convert the image to a PNG (to serve as PWA-icon) and having a small dimension will cause blurry images.`,
|
||||
` Width = ${width} height = ${height}; we recommend a size of at least 500px * 500px and to use a square aspect ratio.`,
|
||||
].join("\n")
|
||||
;(json.hideFromOverview ? warnings : errors).push(e)
|
||||
}
|
||||
})
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -239,12 +238,12 @@ class ValidateTheme extends DesugaringStep<LayoutConfigJson> {
|
|||
if (theme.id !== filename) {
|
||||
errors.push(
|
||||
"Theme ids should be the same as the name.json, but we got id: " +
|
||||
theme.id +
|
||||
" and filename " +
|
||||
filename +
|
||||
" (" +
|
||||
this._path +
|
||||
")"
|
||||
theme.id +
|
||||
" and filename " +
|
||||
filename +
|
||||
" (" +
|
||||
this._path +
|
||||
")"
|
||||
)
|
||||
}
|
||||
this._validateImage.convertJoin(
|
||||
|
@ -323,7 +322,7 @@ class OverrideShadowingCheck extends DesugaringStep<LayoutConfigJson> {
|
|||
): { result: LayoutConfigJson; errors?: string[]; warnings?: string[] } {
|
||||
const overrideAll = json.overrideAll
|
||||
if (overrideAll === undefined) {
|
||||
return {result: json}
|
||||
return { result: json }
|
||||
}
|
||||
|
||||
const errors = []
|
||||
|
@ -350,7 +349,7 @@ class OverrideShadowingCheck extends DesugaringStep<LayoutConfigJson> {
|
|||
}
|
||||
}
|
||||
|
||||
return {result: json, errors}
|
||||
return { result: json, errors }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -460,7 +459,7 @@ export class DetectShadowedMappings extends DesugaringStep<QuestionableTagRender
|
|||
const errors = []
|
||||
const warnings = []
|
||||
if (json.mappings === undefined || json.mappings.length === 0) {
|
||||
return {result: json}
|
||||
return { result: json }
|
||||
}
|
||||
const defaultProperties = {}
|
||||
for (const calculatedTagName of this._calculatedTagNames) {
|
||||
|
@ -489,7 +488,7 @@ export class DetectShadowedMappings extends DesugaringStep<QuestionableTagRender
|
|||
}
|
||||
const keyValues = parsedConditions[i].asChange(defaultProperties)
|
||||
const properties = {}
|
||||
keyValues.forEach(({k, v}) => {
|
||||
keyValues.forEach(({ k, v }) => {
|
||||
properties[k] = v
|
||||
})
|
||||
for (let j = 0; j < i; j++) {
|
||||
|
@ -506,10 +505,10 @@ export class DetectShadowedMappings extends DesugaringStep<QuestionableTagRender
|
|||
// The current mapping is shadowed!
|
||||
errors.push(`At ${context}: Mapping ${i} is shadowed by mapping ${j} and will thus never be shown:
|
||||
The mapping ${parsedConditions[i].asHumanString(
|
||||
false,
|
||||
false,
|
||||
{}
|
||||
)} is fully matched by a previous mapping (namely ${j}), which matches:
|
||||
false,
|
||||
false,
|
||||
{}
|
||||
)} is fully matched by a previous mapping (namely ${j}), which matches:
|
||||
${parsedConditions[j].asHumanString(false, false, {})}.
|
||||
|
||||
To fix this problem, you can try to:
|
||||
|
@ -578,7 +577,7 @@ export class DetectMappingsWithImages extends DesugaringStep<TagRenderingConfigJ
|
|||
const warnings: string[] = []
|
||||
const information: string[] = []
|
||||
if (json.mappings === undefined || json.mappings.length === 0) {
|
||||
return {result: json}
|
||||
return { result: json }
|
||||
}
|
||||
const ignoreToken = "ignore-image-in-then"
|
||||
for (let i = 0; i < json.mappings.length; i++) {
|
||||
|
@ -664,13 +663,13 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
|
|||
if (json.title === undefined) {
|
||||
errors.push(
|
||||
context +
|
||||
": this layer does not have a title defined but it does have tagRenderings. Not having a title will disable the popups, resulting in an unclickable element. Please add a title. If not having a popup is intended and the tagrenderings need to be kept (e.g. in a library layer), set `title: null` to disable this error."
|
||||
": this layer does not have a title defined but it does have tagRenderings. Not having a title will disable the popups, resulting in an unclickable element. Please add a title. If not having a popup is intended and the tagrenderings need to be kept (e.g. in a library layer), set `title: null` to disable this error."
|
||||
)
|
||||
}
|
||||
if (json.title === null) {
|
||||
information.push(
|
||||
context +
|
||||
": title is `null`. This results in an element that cannot be clicked - even though tagRenderings is set."
|
||||
": title is `null`. This results in an element that cannot be clicked - even though tagRenderings is set."
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -697,16 +696,16 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
|
|||
if (duplicates.length > 0) {
|
||||
errors.push(
|
||||
"At " +
|
||||
context +
|
||||
": some tagrenderings have a duplicate id: " +
|
||||
duplicates.join(", ")
|
||||
context +
|
||||
": some tagrenderings have a duplicate id: " +
|
||||
duplicates.join(", ")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if(json.deletion !== undefined && json.deletion instanceof DeleteConfig){
|
||||
if(json.deletion.softDeletionTags === undefined){
|
||||
warnings.push("No soft-deletion tags in deletion block for layer "+json.id)
|
||||
if (json.deletion !== undefined && json.deletion instanceof DeleteConfig) {
|
||||
if (json.deletion.softDeletionTags === undefined) {
|
||||
warnings.push("No soft-deletion tags in deletion block for layer " + json.id)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -717,8 +716,8 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
|
|||
if (json["overpassTags"] !== undefined) {
|
||||
errors.push(
|
||||
"Layer " +
|
||||
json.id +
|
||||
'still uses the old \'overpassTags\'-format. Please use "source": {"osmTags": <tags>}\' instead of "overpassTags": <tags> (note: this isn\'t your fault, the custom theme generator still spits out the old format)'
|
||||
json.id +
|
||||
'still uses the old \'overpassTags\'-format. Please use "source": {"osmTags": <tags>}\' instead of "overpassTags": <tags> (note: this isn\'t your fault, the custom theme generator still spits out the old format)'
|
||||
)
|
||||
}
|
||||
const forbiddenTopLevel = [
|
||||
|
@ -736,18 +735,18 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
|
|||
if (json[forbiddenKey] !== undefined)
|
||||
errors.push(
|
||||
context +
|
||||
": layer " +
|
||||
json.id +
|
||||
" still has a forbidden key " +
|
||||
forbiddenKey
|
||||
": layer " +
|
||||
json.id +
|
||||
" still has a forbidden key " +
|
||||
forbiddenKey
|
||||
)
|
||||
}
|
||||
if (json["hideUnderlayingFeaturesMinPercentage"] !== undefined) {
|
||||
errors.push(
|
||||
context +
|
||||
": layer " +
|
||||
json.id +
|
||||
" contains an old 'hideUnderlayingFeaturesMinPercentage'"
|
||||
": layer " +
|
||||
json.id +
|
||||
" contains an old 'hideUnderlayingFeaturesMinPercentage'"
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -764,9 +763,9 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
|
|||
if (this._path != undefined && this._path.indexOf(expected) < 0) {
|
||||
errors.push(
|
||||
"Layer is in an incorrect place. The path is " +
|
||||
this._path +
|
||||
", but expected " +
|
||||
expected
|
||||
this._path +
|
||||
", but expected " +
|
||||
expected
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -824,9 +823,9 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
|
|||
if (hasCondition?.length > 0) {
|
||||
errors.push(
|
||||
"At " +
|
||||
context +
|
||||
":\n One or more icons in the mapRenderings have a condition set. Don't do this, as this will result in an invisible but clickable element. Use extra filters in the source instead. The offending mapRenderings are:\n" +
|
||||
JSON.stringify(hasCondition, null, " ")
|
||||
context +
|
||||
":\n One or more icons in the mapRenderings have a condition set. Don't do this, as this will result in an invisible but clickable element. Use extra filters in the source instead. The offending mapRenderings are:\n" +
|
||||
JSON.stringify(hasCondition, null, " ")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -838,7 +837,7 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
|
|||
const preset = json.presets[i]
|
||||
const tags: { k: string; v: string }[] = new And(
|
||||
preset.tags.map((t) => TagUtils.Tag(t))
|
||||
).asChange({id: "node/-1"})
|
||||
).asChange({ id: "node/-1" })
|
||||
const properties = {}
|
||||
for (const tag of tags) {
|
||||
properties[tag.k] = tag.v
|
||||
|
@ -847,12 +846,12 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
|
|||
if (!doMatch) {
|
||||
errors.push(
|
||||
context +
|
||||
".presets[" +
|
||||
i +
|
||||
"]: This preset does not match the required tags of this layer. This implies that a newly added point will not show up.\n A newly created point will have properties: " +
|
||||
JSON.stringify(properties) +
|
||||
"\n The required tags are: " +
|
||||
baseTags.asHumanString(false, false, {})
|
||||
".presets[" +
|
||||
i +
|
||||
"]: This preset does not match the required tags of this layer. This implies that a newly added point will not show up.\n A newly created point will have properties: " +
|
||||
JSON.stringify(properties) +
|
||||
"\n The required tags are: " +
|
||||
baseTags.asHumanString(false, false, {})
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -870,32 +869,45 @@ 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,
|
||||
filter: FilterConfigJson
|
||||
}[]>, layout?: LayoutConfigJson | undefined): void {
|
||||
perOsmTag: Map<
|
||||
string,
|
||||
{
|
||||
layer: LayerConfigJson
|
||||
layout: LayoutConfigJson | undefined
|
||||
filter: FilterConfigJson
|
||||
}[]
|
||||
>,
|
||||
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
|
||||
}
|
||||
|
||||
if(filter["#"]?.indexOf("ignore-possible-duplicate")>=0){
|
||||
if (filter["#"]?.indexOf("ignore-possible-duplicate") >= 0) {
|
||||
continue
|
||||
}
|
||||
|
||||
|
@ -908,57 +920,66 @@ 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,
|
||||
filter: FilterConfigJson
|
||||
}[]>()
|
||||
const { layers, themes } = json
|
||||
const perOsmTag = new Map<
|
||||
string,
|
||||
{
|
||||
layer: LayerConfigJson
|
||||
layout: LayoutConfigJson | undefined
|
||||
filter: FilterConfigJson
|
||||
}[]
|
||||
>()
|
||||
|
||||
for (const layer of layers) {
|
||||
this.addLayerFilters(layer, perOsmTag)
|
||||
}
|
||||
|
||||
for (const theme of themes) {
|
||||
if(theme.id === "personal"){
|
||||
if (theme.id === "personal") {
|
||||
continue
|
||||
}
|
||||
for (const layer of theme.layers) {
|
||||
if(typeof layer === "string"){
|
||||
if (typeof layer === "string") {
|
||||
continue
|
||||
}
|
||||
if(layer["builtin"] !== undefined){
|
||||
if (layer["builtin"] !== undefined) {
|
||||
continue
|
||||
}
|
||||
this.addLayerFilters(<LayerConfigJson> layer, perOsmTag, theme)
|
||||
this.addLayerFilters(<LayerConfigJson>layer, perOsmTag, theme)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// At this point, we have gathered all filters per tag - time to find duplicates
|
||||
perOsmTag.forEach((value, key) => {
|
||||
if(value.length <= 1){
|
||||
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) {
|
||||
let msg = "Possible duplicate filter: " + key
|
||||
for (const { filter, layer, layout } of value) {
|
||||
let id = ""
|
||||
if(layout !== undefined){
|
||||
if (layout !== undefined) {
|
||||
id = layout.id + ":"
|
||||
}
|
||||
msg += `\n - ${id}${layer.id}.${filter.id}`
|
||||
|
@ -970,8 +991,7 @@ export class DetectDuplicateFilters extends DesugaringStep<{ layers: LayerConfig
|
|||
result: json,
|
||||
errors,
|
||||
warnings,
|
||||
information
|
||||
};
|
||||
information,
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import {Translation} from "../../UI/i18n/Translation"
|
||||
import {TagsFilter} from "../../Logic/Tags/TagsFilter"
|
||||
import { Translation } from "../../UI/i18n/Translation"
|
||||
import { TagsFilter } from "../../Logic/Tags/TagsFilter"
|
||||
import FilterConfigJson from "./Json/FilterConfigJson"
|
||||
import Translations from "../../UI/i18n/Translations"
|
||||
import {TagUtils} from "../../Logic/Tags/TagUtils"
|
||||
import { TagUtils } from "../../Logic/Tags/TagUtils"
|
||||
import ValidatedTextField from "../../UI/Input/ValidatedTextField"
|
||||
import {TagConfigJson} from "./Json/TagConfigJson"
|
||||
import {UIEventSource} from "../../Logic/UIEventSource"
|
||||
import {FilterState} from "../FilteredLayer"
|
||||
import {QueryParameters} from "../../Logic/Web/QueryParameters"
|
||||
import {Utils} from "../../Utils"
|
||||
import {RegexTag} from "../../Logic/Tags/RegexTag"
|
||||
import { TagConfigJson } from "./Json/TagConfigJson"
|
||||
import { UIEventSource } from "../../Logic/UIEventSource"
|
||||
import { FilterState } from "../FilteredLayer"
|
||||
import { QueryParameters } from "../../Logic/Web/QueryParameters"
|
||||
import { Utils } from "../../Utils"
|
||||
import { RegexTag } from "../../Logic/Tags/RegexTag"
|
||||
|
||||
export default class FilterConfig {
|
||||
public readonly id: string
|
||||
|
|
|
@ -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} `
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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>
|
||||
|
@ -27,7 +27,7 @@ export interface MinimapObj {
|
|||
|
||||
TakeScreenshot(format): Promise<string>
|
||||
TakeScreenshot(format: "image"): Promise<string>
|
||||
TakeScreenshot(format:"blob"): Promise<Blob>
|
||||
TakeScreenshot(format: "blob"): Promise<Blob>
|
||||
TakeScreenshot(format?: "image" | "blob"): Promise<string | Blob>
|
||||
}
|
||||
|
||||
|
|
|
@ -114,22 +114,22 @@ 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")
|
||||
if(format === "image" && typeof result === "string"){
|
||||
const result = <any>await screenshotter.takeScreen(<any>format ?? "image")
|
||||
if (format === "image" && typeof result === "string") {
|
||||
return result
|
||||
}
|
||||
if(format === "blob" && result instanceof Blob){
|
||||
if (format === "blob" && result instanceof Blob) {
|
||||
return result
|
||||
}
|
||||
throw "Something went wrong while creating the screenshot: "+result
|
||||
throw "Something went wrong while creating the screenshot: " + result
|
||||
}
|
||||
|
||||
protected InnerConstructElement(): HTMLElement {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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"), {
|
||||
acceptType: "image/svg+xml",
|
||||
allowMultiple: true
|
||||
})
|
||||
const fileMapped = new InputElementMap<FileList, { templateName: string, pages: string[], fromFile: true }>(file, (x0, x1) => x0 === x1,
|
||||
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,
|
||||
(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 radio = new RadioButton(elements, { selectFirstAsDefault: true })
|
||||
|
||||
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 => ({
|
||||
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) => ({
|
||||
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,
|
||||
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
|
||||
}))
|
||||
}))
|
||||
|
||||
return UIEventSource.FromPromiseWithErr(dloadAll)
|
||||
})
|
||||
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) => {
|
||||
return {
|
||||
pages,
|
||||
title,
|
||||
options: <SvgToPdfOptions>{
|
||||
disableMaps,
|
||||
getFreeDiv,
|
||||
overrideLocation: overrideMapLocation.GetValue().data ? locationInput.location.data : undefined
|
||||
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) => {
|
||||
return {
|
||||
pages,
|
||||
title,
|
||||
options: <SvgToPdfOptions>{
|
||||
disableMaps,
|
||||
getFreeDiv,
|
||||
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,45 +228,54 @@ 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 => {
|
||||
if (isPrepped === undefined) {
|
||||
return undefined
|
||||
}
|
||||
if (isPrepped["success"] !== undefined) {
|
||||
const svgToPdf = isPrepped["success"]
|
||||
const langs = languageSelector.GetValue().data
|
||||
console.log("Languages are", langs)
|
||||
if (langs.length === 0) {
|
||||
isPrepared.map((p) => p === undefined)
|
||||
),
|
||||
])
|
||||
this.Value = isPrepared.map(
|
||||
(isPrepped) => {
|
||||
if (isPrepped === undefined) {
|
||||
return undefined
|
||||
}
|
||||
return {svgToPdf, languages: langs}
|
||||
}
|
||||
return undefined;
|
||||
}, [languageSelector.GetValue()])
|
||||
this.IsValid = this.Value.map(v => v !== undefined)
|
||||
if (isPrepped["success"] !== undefined) {
|
||||
const svgToPdf = isPrepped["success"]
|
||||
const langs = languageSelector.GetValue().data
|
||||
console.log("Languages are", langs)
|
||||
if (langs.length === 0) {
|
||||
return undefined
|
||||
}
|
||||
return { svgToPdf, languages: langs }
|
||||
}
|
||||
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.Value = new ImmutableStore({ svgToPdf, languages })
|
||||
this.IsValid = didLoadLanguages
|
||||
}
|
||||
|
||||
|
@ -259,64 +294,82 @@ 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([
|
||||
linkToWeblate,
|
||||
" ",
|
||||
translated ?? new FixedUiElement("No translation found!").SetClass("alert")
|
||||
|
||||
]))
|
||||
const linkToWeblate = new Link(
|
||||
spec,
|
||||
LinkToWeblate.hrefToWeblate(language, spec),
|
||||
true
|
||||
).SetClass("font-bold link-underline")
|
||||
elements.push(
|
||||
new Combine([
|
||||
linkToWeblate,
|
||||
" ",
|
||||
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(
|
||||
lng + " is done!",
|
||||
new Loading("Creating pdf for " + lng),
|
||||
UIEventSource.FromPromiseWithErr(svgToPdf.ConvertSvg(lng).then(() => true))
|
||||
.map(x => x !== undefined && x["success"] === true)
|
||||
)))
|
||||
]);
|
||||
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)
|
||||
)
|
||||
)
|
||||
),
|
||||
])
|
||||
}
|
||||
}
|
||||
|
||||
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)))
|
||||
.finish("Generating...", ({svgToPdf, languages}) => new SavePdf(svgToPdf, languages))
|
||||
|
||||
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)
|
||||
)
|
||||
.finish("Generating...", ({ svgToPdf, languages }) => new SavePdf(svgToPdf, languages))
|
||||
|
||||
const toc = new List(
|
||||
titles.map(
|
||||
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -70,7 +70,7 @@ export default class ExportPDF {
|
|||
console.error(e)
|
||||
self.cleanup()
|
||||
}
|
||||
}, 500)
|
||||
}, 500),
|
||||
})
|
||||
|
||||
minimap.SetStyle(
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -1,38 +1,40 @@
|
|||
import {ReadonlyInputElement} from "./InputElement"
|
||||
import { ReadonlyInputElement } from "./InputElement"
|
||||
import Loc from "../../Models/Loc"
|
||||
import {Store, UIEventSource} from "../../Logic/UIEventSource"
|
||||
import Minimap, {MinimapObj} from "../Base/Minimap"
|
||||
import { Store, UIEventSource } from "../../Logic/UIEventSource"
|
||||
import Minimap, { MinimapObj } from "../Base/Minimap"
|
||||
import BaseLayer from "../../Models/BaseLayer"
|
||||
import Combine from "../Base/Combine"
|
||||
import Svg from "../../Svg"
|
||||
import {GeoOperations} from "../../Logic/GeoOperations"
|
||||
import { GeoOperations } from "../../Logic/GeoOperations"
|
||||
import ShowDataMultiLayer from "../ShowDataLayer/ShowDataMultiLayer"
|
||||
import StaticFeatureSource from "../../Logic/FeatureSource/Sources/StaticFeatureSource"
|
||||
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
|
||||
import {BBox} from "../../Logic/BBox"
|
||||
import {FixedUiElement} from "../Base/FixedUiElement"
|
||||
import { BBox } from "../../Logic/BBox"
|
||||
import { FixedUiElement } from "../Base/FixedUiElement"
|
||||
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,13 +45,15 @@ 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
|
||||
* @private
|
||||
*/
|
||||
private readonly _snapToRaw: Store< {feature: Feature}[]>
|
||||
private readonly _snapToRaw: Store<{ feature: Feature }[]>
|
||||
private readonly _value: Store<Loc>
|
||||
private readonly _snappedPoint: Store<any>
|
||||
private readonly _maxSnapDistance: number
|
||||
|
@ -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,27 +78,35 @@ 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}})[] = []
|
||||
const linestrings: (Feature<LineString | Polygon> & { properties: { id: WayId } })[] = []
|
||||
for (const feature of linesAndPolygon) {
|
||||
if(feature.properties.id.startsWith("way")){
|
||||
if (feature.properties.id.startsWith("way")) {
|
||||
// A normal way - we continue
|
||||
linestrings.push(<any> feature)
|
||||
linestrings.push(<any>feature)
|
||||
continue
|
||||
}
|
||||
|
||||
// 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,20 +119,32 @@ 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
|
||||
this._minZoom = options?.minZoom
|
||||
|
@ -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, [
|
||||
|
@ -191,18 +215,16 @@ export default class LocationInput
|
|||
return {
|
||||
type: "Feature",
|
||||
properties: options?.snappedPointTags ?? min.properties,
|
||||
geometry: {type: "Point", coordinates: [loc.lon, loc.lat]},
|
||||
geometry: { type: "Point", coordinates: [loc.lon, loc.lat] },
|
||||
}
|
||||
}
|
||||
}
|
||||
min.properties = options?.snappedPointTags ?? min.properties
|
||||
if(matchedWay.properties.id.startsWith("relation/")){
|
||||
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)
|
||||
self.snappedOnto.setData(<any>matchedWay)
|
||||
return min
|
||||
},
|
||||
[this._snapTo]
|
||||
|
@ -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)
|
||||
|
@ -249,7 +274,7 @@ export default class LocationInput
|
|||
try {
|
||||
const self = this
|
||||
const hasMoved = new UIEventSource(false)
|
||||
const startLocation = {...this._centerLocation.data}
|
||||
const startLocation = { ...this._centerLocation.data }
|
||||
this._centerLocation.addCallbackD((newLocation) => {
|
||||
const f = 100000
|
||||
console.log(newLocation.lon, startLocation.lon)
|
||||
|
@ -279,7 +304,7 @@ export default class LocationInput
|
|||
if (loc === undefined) {
|
||||
return []
|
||||
}
|
||||
return [{feature: loc}]
|
||||
return [{ feature: loc }]
|
||||
})
|
||||
console.log("Constructing the match layer", matchPoint)
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ export default class LanguagePicker extends Toggle {
|
|||
console.log("Constructing a language pîcker for languages", languages)
|
||||
if (languages === undefined || languages.length <= 1) {
|
||||
super(undefined, undefined, undefined)
|
||||
}else {
|
||||
} else {
|
||||
const normalPicker = LanguagePicker.dropdownFor(languages, label)
|
||||
const fullPicker = new Lazy(() => LanguagePicker.dropdownFor(allLanguages, label))
|
||||
super(fullPicker, normalPicker, Locale.showLinkToWeblate)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
/**
|
||||
|
|
|
@ -248,29 +248,27 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
|
|||
)
|
||||
|
||||
editElements.push(
|
||||
Toggle.If(state.featureSwitchIsDebugging,
|
||||
() => {
|
||||
const config_all_tags: TagRenderingConfig = new TagRenderingConfig(
|
||||
{ render: "{all_tags()}" },
|
||||
""
|
||||
)
|
||||
const config_download: TagRenderingConfig = new TagRenderingConfig(
|
||||
{ render: "{export_as_geojson()}" },
|
||||
""
|
||||
)
|
||||
const config_id: TagRenderingConfig = new TagRenderingConfig(
|
||||
{ render: "{open_in_iD()}" },
|
||||
""
|
||||
)
|
||||
|
||||
return new Combine([
|
||||
new TagRenderingAnswer(tags, config_all_tags, state),
|
||||
new TagRenderingAnswer(tags, config_download, state),
|
||||
new TagRenderingAnswer(tags, config_id, state),
|
||||
"This is layer " + layerConfig.id,
|
||||
])
|
||||
}
|
||||
Toggle.If(state.featureSwitchIsDebugging, () => {
|
||||
const config_all_tags: TagRenderingConfig = new TagRenderingConfig(
|
||||
{ render: "{all_tags()}" },
|
||||
""
|
||||
)
|
||||
const config_download: TagRenderingConfig = new TagRenderingConfig(
|
||||
{ render: "{export_as_geojson()}" },
|
||||
""
|
||||
)
|
||||
const config_id: TagRenderingConfig = new TagRenderingConfig(
|
||||
{ render: "{open_in_iD()}" },
|
||||
""
|
||||
)
|
||||
|
||||
return new Combine([
|
||||
new TagRenderingAnswer(tags, config_all_tags, state),
|
||||
new TagRenderingAnswer(tags, config_download, state),
|
||||
new TagRenderingAnswer(tags, config_id, state),
|
||||
"This is layer " + layerConfig.id,
|
||||
])
|
||||
})
|
||||
)
|
||||
|
||||
return new Combine(editElements).SetClass("flex flex-col")
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -51,18 +51,18 @@ export default class TagApplyButton implements AutoAction {
|
|||
* // Should handle escaped ";"
|
||||
* TagApplyButton.parseTagSpec("key=value;key0=value0\\;value1") // => [["key","value"],["key0","value0;value1"]]
|
||||
*/
|
||||
private static parseTagSpec(spec: string): [string, string][]{
|
||||
const tgsSpec : [string, string][] = []
|
||||
private static parseTagSpec(spec: string): [string, string][] {
|
||||
const tgsSpec: [string, string][] = []
|
||||
|
||||
while(spec.length > 0){
|
||||
while (spec.length > 0) {
|
||||
const [part] = spec.match(/((\\;)|[^;])*/)
|
||||
spec = spec.substring(part.length + 1) // +1 to remove the pending ';' as well
|
||||
const kv = part.split("=").map((s) => s.trim().replace("\\;",";"))
|
||||
const kv = part.split("=").map((s) => s.trim().replace("\\;", ";"))
|
||||
if (kv.length == 2) {
|
||||
tgsSpec.push(<[string, string]> kv)
|
||||
}else if (kv.length < 2) {
|
||||
tgsSpec.push(<[string, string]>kv)
|
||||
} else if (kv.length < 2) {
|
||||
throw "Invalid key spec: no '=' found in " + spec
|
||||
}else{
|
||||
} else {
|
||||
throw "Invalid key spec: multiple '=' found in " + spec
|
||||
}
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ export default class TagApplyButton implements AutoAction {
|
|||
spec = tagSource.data[spec.replace("$", "")]
|
||||
}
|
||||
|
||||
const tgsSpec = TagApplyButton.parseTagSpec(spec)
|
||||
const tgsSpec = TagApplyButton.parseTagSpec(spec)
|
||||
|
||||
return tagSource.map((tags) => {
|
||||
const newTags: Tag[] = []
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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: {
|
||||
source: FeatureSource & Tiled
|
||||
leafletMap: UIEventSource<any>
|
||||
layer?: LayerConfig
|
||||
doShowLayer?: UIEventSource<boolean>
|
||||
}, state) {
|
||||
constructor(
|
||||
options: {
|
||||
source: FeatureSource & Tiled
|
||||
leafletMap: UIEventSource<any>
|
||||
layer?: LayerConfig
|
||||
doShowLayer?: UIEventSource<boolean>
|
||||
},
|
||||
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,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -544,7 +544,7 @@ export default class SpecialVisualizations {
|
|||
const features: { freshness: Date; feature: any }[] = []
|
||||
for (const key of keys) {
|
||||
const value = properties[key]
|
||||
if(value === undefined || value === null){
|
||||
if (value === undefined || value === null) {
|
||||
continue
|
||||
}
|
||||
|
||||
|
@ -556,7 +556,7 @@ export default class SpecialVisualizations {
|
|||
|
||||
for (const id of idList) {
|
||||
const feature = featureStore.get(id)
|
||||
if(feature === undefined){
|
||||
if (feature === undefined) {
|
||||
console.warn("No feature found for id ", id)
|
||||
continue
|
||||
}
|
||||
|
|
|
@ -1,27 +1,26 @@
|
|||
/**
|
||||
* The statistics-gui shows statistics from previous MapComplete-edits
|
||||
*/
|
||||
import {UIEventSource} from "../Logic/UIEventSource"
|
||||
import {VariableUiElement} from "./Base/VariableUIElement"
|
||||
import { UIEventSource } from "../Logic/UIEventSource"
|
||||
import { VariableUiElement } from "./Base/VariableUIElement"
|
||||
import Loading from "./Base/Loading"
|
||||
import {Utils} from "../Utils"
|
||||
import { Utils } from "../Utils"
|
||||
import Combine from "./Base/Combine"
|
||||
import {StackedRenderingChart} from "./BigComponents/TagRenderingChart"
|
||||
import {LayerFilterPanel} from "./BigComponents/FilterView"
|
||||
import {AllKnownLayouts} from "../Customizations/AllKnownLayouts"
|
||||
import { StackedRenderingChart } from "./BigComponents/TagRenderingChart"
|
||||
import { LayerFilterPanel } from "./BigComponents/FilterView"
|
||||
import { AllKnownLayouts } from "../Customizations/AllKnownLayouts"
|
||||
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]},
|
||||
{ id: "statistics-view", layers: [layer] },
|
||||
undefined
|
||||
)[0]
|
||||
const filterPanel = new LayerFilterPanel(undefined, filteredLayer)
|
||||
|
@ -30,7 +29,7 @@ class StatisticsForOverviewFile extends Combine {
|
|||
const downloaded = new UIEventSource<{ features: ChangeSetData[] }[]>([])
|
||||
|
||||
for (const filepath of paths) {
|
||||
if(filepath.endsWith("file-overview.json")){
|
||||
if (filepath.endsWith("file-overview.json")) {
|
||||
continue
|
||||
}
|
||||
Utils.downloadJson(homeUrl + filepath).then((data) => {
|
||||
|
@ -41,7 +40,7 @@ class StatisticsForOverviewFile extends Combine {
|
|||
data.features = data
|
||||
}
|
||||
data?.features?.forEach((item) => {
|
||||
item.properties = {...item.properties, ...item.properties.metadata}
|
||||
item.properties = { ...item.properties, ...item.properties.metadata }
|
||||
delete item.properties.metadata
|
||||
})
|
||||
downloaded.data.push(data)
|
||||
|
@ -55,7 +54,6 @@ class StatisticsForOverviewFile extends Combine {
|
|||
)
|
||||
)
|
||||
|
||||
|
||||
super([
|
||||
filterPanel,
|
||||
new VariableUiElement(
|
||||
|
@ -117,27 +115,32 @@ 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){
|
||||
excludedThemes.add("grb")
|
||||
excludedThemes.add("etymology")
|
||||
if (allThemes.length > 1) {
|
||||
excludedThemes.add("grb")
|
||||
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
|
||||
|
@ -244,7 +247,7 @@ class ChangesetsOverview {
|
|||
public sum(key: string, excludeThemes: Set<string>): number {
|
||||
let s = 0
|
||||
for (const feature of this._meta) {
|
||||
if(excludeThemes.has(feature.properties.theme)){
|
||||
if (excludeThemes.has(feature.properties.theme)) {
|
||||
continue
|
||||
}
|
||||
const parsed = Number(feature.properties[key])
|
||||
|
@ -280,8 +283,7 @@ class ChangesetsOverview {
|
|||
}
|
||||
try {
|
||||
cs.properties.host = new URL(cs.properties.host).host
|
||||
} catch (e) {
|
||||
}
|
||||
} catch (e) {}
|
||||
return cs
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
2
Utils.ts
2
Utils.ts
|
@ -823,7 +823,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
|||
} else if (xhr.status === 509 || xhr.status === 429) {
|
||||
reject("rate limited")
|
||||
} else {
|
||||
reject("Could not download "+url+" due to "+xhr.statusText)
|
||||
reject("Could not download " + url + " due to " + xhr.statusText)
|
||||
}
|
||||
}
|
||||
xhr.open("GET", url)
|
||||
|
|
|
@ -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,
|
||||
export interface PngMapCreatorOptions {
|
||||
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,9 +73,11 @@ 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){
|
||||
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,15 +106,22 @@ export class PngMapCreator {
|
|||
})
|
||||
await Utils.waitFor(2000)
|
||||
}
|
||||
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 => {
|
||||
console.error("Could no make a screenshot due to ",failreason)
|
||||
reject(failreason)
|
||||
})
|
||||
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) => {
|
||||
console.error("Could no make a screenshot due to ", failreason)
|
||||
reject(failreason)
|
||||
})
|
||||
})
|
||||
|
||||
state.AddAllOverlaysToMap(minimap.leafletMap)
|
||||
|
|
|
@ -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(/ /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(/ /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, {
|
||||
maxWidth,
|
||||
}, this.currentMatrix)
|
||||
|
||||
this.doc.text(
|
||||
result,
|
||||
x,
|
||||
y,
|
||||
{
|
||||
maxWidth,
|
||||
},
|
||||
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)
|
||||
const p = this.currentMatrixInverted.applyToPoint({ x, y })
|
||||
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,31 +372,31 @@ 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) {
|
||||
if (c.code === "C" || c.code === "c") {
|
||||
const command = {op: "c", c: [c.x1, c.y1, c.x2, c.y2, c.x, c.y]}
|
||||
const command = { op: "c", c: [c.x1, c.y1, c.x2, c.y2, c.x, c.y] }
|
||||
this.doc.path([command])
|
||||
continue
|
||||
}
|
||||
|
||||
if (c.code === "H") {
|
||||
const command = {op: "l", c: [c.x, c.y]}
|
||||
const command = { op: "l", c: [c.x, c.y] }
|
||||
this.doc.path([command])
|
||||
continue
|
||||
}
|
||||
|
||||
if (c.code === "V") {
|
||||
const command = {op: "l", c: [c.x, c.y]}
|
||||
const command = { op: "l", c: [c.x, c.y] }
|
||||
this.doc.path([command])
|
||||
continue
|
||||
}
|
||||
|
||||
this.doc.path([{op: c.code.toLowerCase(), c: [c.x, c.y]}])
|
||||
this.doc.path([{ op: c.code.toLowerCase(), c: [c.x, c.y] }])
|
||||
}
|
||||
//"fill:#ffffff;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:20"
|
||||
//"fill:#ffffff;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:20"
|
||||
|
||||
const css = SvgToPdfInternals.css(element)
|
||||
if (css["color"] && css["color"].toLowerCase() !== "none") {
|
||||
|
@ -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
|
||||
|
@ -475,35 +490,32 @@ class SvgToPdfInternals {
|
|||
|
||||
const x = SvgToPdfInternals.attrNumber(mapSpec, "x")
|
||||
const y = SvgToPdfInternals.attrNumber(mapSpec, "y")
|
||||
return runningM.applyToPoint({x, y})
|
||||
return runningM.applyToPoint({ x, y })
|
||||
}
|
||||
}
|
||||
|
||||
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,20 +616,23 @@ 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)
|
||||
const { x, y } = SvgToPdfInternals.GetActualXY(mapSpec)
|
||||
|
||||
let textElement: Element = mapSpec
|
||||
// We recurse up to get the actual, full specification
|
||||
|
@ -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,
|
||||
{
|
||||
width,
|
||||
height,
|
||||
scaling: Number(params["scaling"] ?? 1.5),
|
||||
divId: this.options.getFreeDiv(),
|
||||
dummyMode: this.options.disableMaps
|
||||
}
|
||||
)
|
||||
const pngCreator = new PngMapCreator(state, {
|
||||
width,
|
||||
height,
|
||||
scaling: Number(params["scaling"] ?? 1.5),
|
||||
divId: this.options.getFreeDiv(),
|
||||
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) {
|
||||
|
@ -817,7 +872,7 @@ export class SvgToPdfPage {
|
|||
}
|
||||
|
||||
if (typeof t === "string") {
|
||||
t = new TypedTranslation({"*": t})
|
||||
t = new TypedTranslation({ "*": t })
|
||||
}
|
||||
if (t instanceof TypedTranslation) {
|
||||
if (strict && (t.translations[language] ?? t.translations["*"]) === undefined) {
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -935,10 +1006,10 @@ export class SvgToPdf {
|
|||
getTranslation(translationKey: string, language: string, strict: boolean = false) {
|
||||
for (const page of this._pages) {
|
||||
const tr = page.extractTranslation(translationKey, language, strict)
|
||||
if(tr === undefined){
|
||||
if (tr === undefined) {
|
||||
continue
|
||||
}
|
||||
if(tr === translationKey){
|
||||
if (tr === translationKey) {
|
||||
continue
|
||||
}
|
||||
return tr
|
||||
|
|
|
@ -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 ?? ""
|
||||
|
@ -45,7 +45,7 @@ if (mode.data === "statistics") {
|
|||
console.log("Statistics mode!")
|
||||
new FixedUiElement("").AttachTo("centermessage")
|
||||
new StatisticsGUI().SetClass("w-full h-full pointer-events-auto").AttachTo("topleft-tools")
|
||||
} else if(mode.data === "pdf"){
|
||||
} else if (mode.data === "pdf") {
|
||||
MinimapImplementation.initialize()
|
||||
new FixedUiElement("").AttachTo("centermessage")
|
||||
const div = document.createElement("div")
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 1,004 KiB After Width: | Height: | Size: 1,003 KiB |
|
@ -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"
|
||||
|
@ -2521,417 +2525,421 @@
|
|||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g839"
|
||||
transform="matrix(1.4782289,0,0,1.4782289,713.41215,399.14907)">
|
||||
id="g1512"
|
||||
transform="translate(0,-6.0271117)">
|
||||
<g
|
||||
transform="translate(0,-64)"
|
||||
id="layer2">
|
||||
<ellipse
|
||||
ry="31.513508"
|
||||
rx="31.580557"
|
||||
cy="96.215309"
|
||||
cx="31.580557"
|
||||
id="path847"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.239335;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
id="g839"
|
||||
transform="matrix(1.4782289,0,0,1.4782289,713.41215,399.14907)">
|
||||
<g
|
||||
transform="translate(0,-64)"
|
||||
id="layer2">
|
||||
<ellipse
|
||||
ry="31.513508"
|
||||
rx="31.580557"
|
||||
cy="96.215309"
|
||||
cx="31.580557"
|
||||
id="path847"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.239335;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(0,-64)"
|
||||
id="layer3">
|
||||
<rect
|
||||
style="visibility:hidden;fill:none;stroke:none;stroke-width:2.75743"
|
||||
id="canvas"
|
||||
y="74.2229"
|
||||
x="9.5211029"
|
||||
height="44.118912"
|
||||
width="44.118912" />
|
||||
<path
|
||||
style="fill:#734a08;fill-opacity:1;stroke:none;stroke-width:2.75743"
|
||||
id="toilets"
|
||||
d="m 29.512484,76.980332 v 38.604048 h 4.136148 V 76.980332 Z m -10.34037,2.757432 c -2.284331,0 -4.136148,1.851809 -4.136148,4.136148 0,2.284339 1.851817,4.136148 4.136148,4.136148 2.284331,0 4.136148,-1.851809 4.136148,-4.136148 0,-2.284339 -1.851817,-4.136148 -4.136148,-4.136148 z m 24.816887,0 c -2.28433,0 -4.136148,1.851809 -4.136148,4.136148 0,2.284339 1.851818,4.136148 4.136148,4.136148 2.284331,0 4.136147,-1.851809 4.136147,-4.136148 0,-2.284339 -1.851816,-4.136148 -4.136147,-4.136148 z M 16.414682,90.767492 c -1.653692,0 -2.757432,1.567738 -2.757432,2.757432 0,1.454076 3.44679,4.126883 3.44679,5.514863 0,1.533053 -4.825506,2.757433 -4.825506,8.272293 h 4.825506 v 8.2723 h 4.136148 v -8.2723 h 4.825506 c 0,-5.51486 -4.825506,-6.8122 -4.825506,-8.272293 0,-1.460087 3.44679,-3.994691 3.44679,-5.514863 0,-1.123626 -1.171156,-2.757432 -2.757432,-2.757432 z m 23.438171,0 c -1.454087,0 -2.757431,1.324863 -2.757431,2.757432 0,2.757431 4.825505,11.074036 4.825505,13.787156 v 8.2723 h 4.136147 v -8.2723 c 0,-2.65943 4.825505,-11.029725 4.825505,-13.787156 0,-1.525908 -1.237249,-2.757432 -2.757431,-2.757432 z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(0,-64)"
|
||||
id="layer3">
|
||||
<rect
|
||||
style="visibility:hidden;fill:none;stroke:none;stroke-width:2.75743"
|
||||
id="canvas"
|
||||
y="74.2229"
|
||||
x="9.5211029"
|
||||
height="44.118912"
|
||||
width="44.118912" />
|
||||
id="g862"
|
||||
transform="matrix(0.18713765,0,0,0.18713765,852.71383,399.85818)">
|
||||
<circle
|
||||
r="248.93001"
|
||||
cy="250.6844"
|
||||
cx="249.3156"
|
||||
id="path7"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke-width:37.4665" />
|
||||
<path
|
||||
style="fill:#734a08;fill-opacity:1;stroke:none;stroke-width:2.75743"
|
||||
id="toilets"
|
||||
d="m 29.512484,76.980332 v 38.604048 h 4.136148 V 76.980332 Z m -10.34037,2.757432 c -2.284331,0 -4.136148,1.851809 -4.136148,4.136148 0,2.284339 1.851817,4.136148 4.136148,4.136148 2.284331,0 4.136148,-1.851809 4.136148,-4.136148 0,-2.284339 -1.851817,-4.136148 -4.136148,-4.136148 z m 24.816887,0 c -2.28433,0 -4.136148,1.851809 -4.136148,4.136148 0,2.284339 1.851818,4.136148 4.136148,4.136148 2.284331,0 4.136147,-1.851809 4.136147,-4.136148 0,-2.284339 -1.851816,-4.136148 -4.136147,-4.136148 z M 16.414682,90.767492 c -1.653692,0 -2.757432,1.567738 -2.757432,2.757432 0,1.454076 3.44679,4.126883 3.44679,5.514863 0,1.533053 -4.825506,2.757433 -4.825506,8.272293 h 4.825506 v 8.2723 h 4.136148 v -8.2723 h 4.825506 c 0,-5.51486 -4.825506,-6.8122 -4.825506,-8.272293 0,-1.460087 3.44679,-3.994691 3.44679,-5.514863 0,-1.123626 -1.171156,-2.757432 -2.757432,-2.757432 z m 23.438171,0 c -1.454087,0 -2.757431,1.324863 -2.757431,2.757432 0,2.757431 4.825505,11.074036 4.825505,13.787156 v 8.2723 h 4.136147 v -8.2723 c 0,-2.65943 4.825505,-11.029725 4.825505,-13.787156 0,-1.525908 -1.237249,-2.757432 -2.757431,-2.757432 z" />
|
||||
style="fill:#94bb28;fill-opacity:1;stroke-width:51.7926"
|
||||
d="M 152.31834,83.603749 V 130.1409 h 64.93624 V 83.603749 Z m 127.14153,0 V 130.1409 h 65.03734 V 83.603749 Z m 0,61.105621 v 128.48315 c 0,6.16398 4.96328,11.1283 11.12606,11.1283 h 0.80901 10.31698 v 124.53792 c 0,5.95642 4.86707,10.82482 10.82274,10.82482 h 95.48254 c 5.95552,0 10.82276,-4.86802 10.82276,-10.82482 v -77.4946 l 0.19857,-11.331 -41.36909,-175.32377 z m -160.62113,0.18734 -41.470173,175.32376 0.202694,11.43216 v 77.49422 c 1.84e-4,5.95718 4.867375,10.8252 10.822897,10.8252 h 95.482582 c 6.0591,0 10.92385,-4.86802 10.92385,-10.82482 V 284.71047 h 10.21563 0.80916 c 6.16265,0 11.12614,-5.06585 11.12614,-11.22946 V 144.89633 Z m 112.47524,0 v 119.47881 h 33.68184 V 144.89633 Z"
|
||||
id="rect239-1" />
|
||||
</g>
|
||||
<g
|
||||
id="g896"
|
||||
transform="matrix(0.23584708,0,0,0.23584708,709.50946,446.69298)">
|
||||
<g
|
||||
id="g40912"
|
||||
transform="matrix(0.76992625,0,0,0.76992625,-151.38128,92.316147)">
|
||||
<circle
|
||||
r="256.54221"
|
||||
cy="255.45746"
|
||||
cx="98.542206"
|
||||
id="path841-3"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.377953;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#ffbd48;stroke-width:0.762712"
|
||||
id="path2"
|
||||
d="M 123.94216,68.265603 V 227.00511 H 90.171281 V 80.51667 c 0,-2.532444 1.281118,-4.895064 3.402412,-6.280459 L 112.32867,61.979186 c 4.99636,-3.259404 11.61349,0.321768 11.61349,6.286417 z m 0,0" />
|
||||
<path
|
||||
style="fill:#ff9c26;stroke-width:0.762712"
|
||||
id="path4-6"
|
||||
d="m 122.57464,96.48 c -8.58052,0 -15.8233,6.42049 -16.83926,14.92354 l -2.99126,24.96691 v -11.98888 c 0,-5.73524 -2.869112,-11.03848 -7.677774,-14.17275 l -4.895065,-3.19684 v 119.9961 H 123.94216 V 96.536608 C 123.48632,96.497877 123.03048,96.48 122.57464,96.48 Z m 0,0" />
|
||||
<path
|
||||
style="fill:#ffdf4a;stroke-width:0.762712"
|
||||
id="path6"
|
||||
d="M 71.297131,80.51667 V 189.48025 H 37.526255 V 68.265603 c 0,-5.964649 6.617125,-9.545821 11.613487,-6.286417 l 18.754977,12.257025 c 2.121294,1.385395 3.402412,3.748015 3.402412,6.280459 z m 0,0" />
|
||||
<path
|
||||
style="fill:#ffbd48;stroke-width:0.762712"
|
||||
id="path8"
|
||||
d="m 67.063482,95.183986 c 1.436043,0 2.860171,0.187699 4.233649,0.551178 V 189.48025 H 50.113988 v -77.34677 c 0,-9.34323 7.606268,-16.949494 16.949494,-16.949494 z m 0,0" />
|
||||
<path
|
||||
style="fill:#ffdf4a;stroke-width:0.762712"
|
||||
id="path10"
|
||||
d="m 147.16019,128.71055 -0.67631,5.66672 -12.28682,102.53118 -30.57404,-3.67055 -2.96146,-0.35455 14.43492,-120.3566 c 0.70611,-5.91698 7.69863,-8.68479 12.27192,-4.85633 l 17.16699,14.40215 c 1.94253,1.62673 2.93167,4.12342 2.6248,6.63798 z m 0,0" />
|
||||
<path
|
||||
style="fill:#ffbd48;stroke-width:0.762712"
|
||||
id="path12"
|
||||
d="m 146.48388,134.37727 -12.28682,102.53118 -30.57404,-3.67055 23.75134,-84.79514 c 1.54926,-5.52371 5.74418,-9.8527 11.21426,-11.57476 z m 0,0" />
|
||||
<path
|
||||
style="fill:#ffdf4a;stroke-width:0.762712"
|
||||
id="path14"
|
||||
d="M 93.311511,233.35111 H 59.540635 V 112.13348 c 0,-5.96167 6.617126,-9.54284 11.610508,-6.28344 l 18.760935,12.25405 c 2.121294,1.38539 3.399433,3.74801 3.399433,6.28344 z m 0,0" />
|
||||
<path
|
||||
style="fill:#ffdf4a;stroke-width:0.762712"
|
||||
id="path16"
|
||||
d="m 107.05523,255.91369 32.51955,9.11084 32.70427,-116.7218 c 1.60885,-5.7412 -3.79569,-10.97591 -9.48325,-9.18234 l -21.37085,6.7363 c -2.41625,0.76271 -4.28727,2.69332 -4.96954,5.13043 z m 0,0" />
|
||||
<path
|
||||
style="fill:#ff5656;stroke-width:0.762712"
|
||||
id="path18"
|
||||
d="m 171.84109,219.45545 -24.80603,52.40071 -45.0477,95.15135 -37.846616,79.94178 c -3.426247,7.23683 -14.285959,4.79973 -14.285959,-3.20577 L 41.345775,349.63495 31.320279,238.70499 23.699115,154.4372 c -0.685249,-7.56754 8.970808,-11.17552 13.50537,-5.08574 35.767038,48.02406 102.161745,57.53115 128.397855,59.40218 5.2645,0.37837 8.49411,5.93187 6.23875,10.70181 z m 0,0" />
|
||||
<path
|
||||
style="fill:#f72d2d;stroke-width:0.762712"
|
||||
id="path20"
|
||||
d="m 171.84109,219.45545 -24.80603,52.40071 -45.04472,95.15135 -37.849596,79.94178 c -3.426247,7.23683 -14.28298,4.79973 -14.28298,-3.20577 L 49.619416,441.15745 160.96648,208.37824 c 1.65949,0.14897 3.20577,0.2741 4.63586,0.3754 5.2645,0.37837 8.49411,5.93187 6.23875,10.70181 z m 0,0" />
|
||||
<path
|
||||
style="fill:#fe9e80;stroke-width:0.762712"
|
||||
id="path22"
|
||||
d="m 147.07379,271.85616 -45.04472,95.15135 -14.857989,-4.25749 -45.783595,-13.11507 -1.376457,-15.22744 -6.262584,-69.29956 -2.386455,-26.39998 101.27092,29.00691 z m 0,0" />
|
||||
<path
|
||||
style="fill:#fe835f;stroke-width:0.762712"
|
||||
id="path24"
|
||||
d="m 147.07379,271.85616 -45.04472,95.15135 -14.857989,-4.25749 45.461829,-95.03514 z m 0,0" />
|
||||
<path
|
||||
style="fill:#ffdf4a;stroke-width:0.762712"
|
||||
id="path26"
|
||||
d="m 66.545075,300.2523 c 0,16.46982 -11.300655,30.29994 -26.572778,34.15521 l -6.262583,-69.29956 c 18.337869,1.22451 32.835361,16.49067 32.835361,35.14435 z m 0,0" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g1987"
|
||||
transform="matrix(2.8106546,0,0,2.8106546,-169.07891,220.26224)">
|
||||
<circle
|
||||
r="16.630953"
|
||||
cy="80.532394"
|
||||
cx="282.5199"
|
||||
id="path1964"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
transform="matrix(0.54395857,0,0,0.54395857,269.48791,66.555529)"
|
||||
id="g852"
|
||||
style="overflow:inherit">
|
||||
<path
|
||||
d="m 7.206,31.141 c 2.885,0 5.219,-2.399 5.219,-5.368 0,-2.953 -2.334,-5.353 -5.219,-5.353 -2.873,0 -5.206,2.4 -5.206,5.353 0,2.968 2.333,5.368 5.206,5.368 z m 29.23,9.216 c 0.243,-0.172 0.564,-0.12 0.741,0.117 l 0.965,1.372 c 0.164,0.238 0.114,0.58 -0.116,0.766 l -7.08,5.287 c -0.229,0.172 -0.562,0.118 -0.743,-0.118 l -0.962,-1.372 c -0.165,-0.238 -0.113,-0.579 0.116,-0.764 z m -8.003,-6.817 -2.808,-5.063 -1.474,1.107 2.808,5.09 z M 21.882,21.713 10.962,2 8.873,2.014 20.395,22.834 Z m 10.281,10.43 C 32.78,31.682 34.192,31 35,31 h 10 c 1.974,0 3,1.986 3,4.004 C 48,37.034 46.974,38 45,38 h -9 l -10.836,8.502 c -3.808,2.819 -6.116,-0.278 -6.116,-0.278 L 10.565,37.495 C 9.142,35.742 9.45,32.406 11.156,30.929 l 11.739,-8.597 c 1.166,-1 2.897,-0.843 3.885,0.343 0.976,1.2 0.822,2.994 -0.346,3.996 l -7.515,5.657 5.399,5.484 z"
|
||||
id="path841" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g958"
|
||||
transform="matrix(1.4657321,0,0,1.4657321,783.20327,468.03016)">
|
||||
<g
|
||||
id="layer1-56">
|
||||
<ellipse
|
||||
ry="31.946436"
|
||||
rx="32.00938"
|
||||
cy="32.109043"
|
||||
cx="31.967007"
|
||||
id="path819"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.497387;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="layer2-2">
|
||||
<path
|
||||
style="fill:#734a08;fill-opacity:1;stroke:none;stroke-width:3.34941"
|
||||
d="M 32.123859,10.440678 8.6779661,17.139504 v 3.349413 L 32.123859,13.79009 55.569753,20.488917 v -3.349413 z m -11.59865,11.964995 c -0.522431,0.02077 -1.041409,0.124297 -1.556954,0.320538 v 20.835706 c 0,0 8.38755,-0.322013 10.525792,7.817477 V 29.497007 c -1.631616,-3.400613 -5.311804,-7.237191 -8.968838,-7.091334 z m 8.968838,28.973731 C 24.066203,47.228261 16.331902,46.172115 16.331902,46.172115 V 26.376556 l -2.629816,-1.046692 v 23.445893 l 15.791961,5.207293 h 5.259628 L 50.545632,48.775757 V 25.329864 l -2.629812,1.046692 v 20.835709 l -13.162145,4.167139 c -1.754454,-0.663351 -3.795938,-0.545319 -5.259628,0 z M 45.279464,22.726221 C 40.03579,22.448689 33.986193,25.566152 30.808953,28.247518 v 22.045945 c 2.933724,-2.408355 8.190227,-5.573982 14.470511,-6.208191 z"
|
||||
id="path4176" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g2125"
|
||||
transform="matrix(3.8574971,0,0,3.8574971,510.77103,468.2685)"
|
||||
inkscape:export-filename="/home/pietervdvn/git/MapComplete/assets/g2125.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<g
|
||||
transform="translate(0.12711811)"
|
||||
style="display:inline"
|
||||
id="layer1-37">
|
||||
<circle
|
||||
r="12.076271"
|
||||
cy="12.076271"
|
||||
cx="11.949153"
|
||||
id="path814"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(0.12711811)"
|
||||
id="layer2-5">
|
||||
<path
|
||||
id="path2-9"
|
||||
d="m 16.739623,11.453018 2.12132,-2.1213204 c 0.424264,-0.4242641 0.424264,-0.9899495 0,-1.4142136 -0.424264,-0.424264 -0.98995,-0.424264 -1.414214,0 l -2.12132,2.121321 -1.414213,-1.4142142 2.12132,-2.1213203 c 0.424264,-0.4242641 0.424264,-0.9899495 0,-1.4142136 -0.424264,-0.4242638 -1.06066,-0.3535532 -1.414214,2e-7 L 12.496982,7.2103775 11.082769,5.7961639 8.4664736,8.4124588 C 6.769417,10.109515 6.557285,12.72581 7.830077,14.705709 l -5.1618795,5.16188 1.4142136,1.414213 5.1618795,-5.161879 c 1.9798994,1.272792 4.5961944,1.06066 6.2932504,-0.636396 l 2.616295,-2.616295 z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g2175"
|
||||
transform="matrix(6.6832014,0,0,6.6832014,442.74768,399.98826)">
|
||||
<g
|
||||
id="layer2-6">
|
||||
<circle
|
||||
r="6.9703388"
|
||||
cy="7"
|
||||
cx="7"
|
||||
id="path846"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
style="display:inline"
|
||||
id="layer1-12">
|
||||
<g
|
||||
transform="matrix(0.86185687,0,0,0.86185687,1.4318286,1.4602523)"
|
||||
id="hbars">
|
||||
<rect
|
||||
id="rect2"
|
||||
style="fill:#ac39ac"
|
||||
height="0.5"
|
||||
width="11"
|
||||
y="6"
|
||||
x="1" />
|
||||
<rect
|
||||
id="rect4"
|
||||
style="fill:#ac39ac"
|
||||
height="0.5"
|
||||
width="9.5"
|
||||
y="8"
|
||||
x="2" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.86185687,0,0,0.86185687,1.4318286,1.4602523)"
|
||||
id="vbars">
|
||||
<rect
|
||||
id="rect7"
|
||||
style="fill:#ac39ac"
|
||||
height="5.5"
|
||||
width="0.5"
|
||||
y="4.5"
|
||||
x="3" />
|
||||
<rect
|
||||
id="rect9"
|
||||
style="fill:#ac39ac"
|
||||
height="5.5"
|
||||
width="0.5"
|
||||
y="4.5"
|
||||
x="5" />
|
||||
<rect
|
||||
id="rect11"
|
||||
style="fill:#ac39ac"
|
||||
height="5.5"
|
||||
width="0.5"
|
||||
y="4.5"
|
||||
x="7.5" />
|
||||
<rect
|
||||
id="rect13"
|
||||
style="fill:#ac39ac"
|
||||
height="5.5"
|
||||
width="0.5"
|
||||
y="4.5"
|
||||
x="9.5" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:#ac39ac;stroke:none;stroke-width:0.861857"
|
||||
d="M 6.5167842,4.9076797 8.2404979,2.3221091 A 0.43626052,0.43626052 0 0 1 9.0420248,2.6668519 L 7.5510124,4.9076797 Z"
|
||||
id="handle" />
|
||||
<path
|
||||
style="fill:#ac39ac;fill-rule:evenodd;stroke:none;stroke-width:0.861857"
|
||||
d="M 1.4318286,4.9076797 H 12.635968 L 10.912254,10.940678 H 3.1555423 Z M 2.5091497,5.7695366 H 11.558647 L 10.265861,10.078821 H 3.801935 Z"
|
||||
id="body" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g1904"
|
||||
transform="matrix(0.25051572,0,0,0.25051572,872.66935,392.83279)">
|
||||
<g
|
||||
id="surface1">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.125;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
|
||||
d="m 467.96462,215.30738 c 0,102.69922 83.2539,185.95313 185.95311,185.95313 102.69923,0 185.95313,-83.25391 185.95313,-185.95313 0,-102.69921 -83.2539,-185.953119 -185.95313,-185.953119 -102.69921,0 -185.95311,83.253909 -185.95311,185.953119 z m 0,0"
|
||||
id="path1889" />
|
||||
<path
|
||||
style="fill:#aaaaaa;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:18.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
|
||||
d="m 791.23805,231.5105 -26.97657,-8.12108 -39.53906,55.36718 46.71485,15.87109 z m -8.73438,-37.32421 -234.7578,-66.28515 c -6.14063,-1.55079 -14.71485,-0.60157 -17.66016,10.52734 0,0 -13.85156,61.74219 -20.94141,90.72265 -2.49609,10.21094 0.23047,14.57422 7.30078,16.45704 l 187,53.62109 z m 0,0"
|
||||
id="path1891" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g2050"
|
||||
transform="matrix(0.18534995,0,0,0.18534995,767.095,542.7144)">
|
||||
<path
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.34549"
|
||||
d="m 2078.7593,-149.40763 c 0,138.806368 -112.5272,251.33359 -251.3336,251.33359 -138.8063,0 -251.3336,-112.527222 -251.3336,-251.33359 0,-138.80635 112.5273,-251.32831 251.3336,-251.32831 138.8064,0 251.3336,112.52196 251.3336,251.32831 z m 0,0"
|
||||
id="path1904" />
|
||||
<g
|
||||
id="g1926"
|
||||
transform="translate(1250.0673,-234.86328)">
|
||||
<g
|
||||
id="surface1-8"
|
||||
transform="translate(387.14053,-111)">
|
||||
<path
|
||||
style="fill:#7ab82e;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
d="m 101.84766,144.1875 c 22.72656,8.01562 71.23437,71.23828 90.67187,90.67187 10.15625,10.15625 26.54688,19.41407 31.73438,34 h -24.9336 c -2.67578,-1.8164 -3.8125,-1.7539 -9.07031,-2.26562 -5.23047,-14.41016 -56.83203,-63.60547 -70.26953,-77.07031 l -15.86719,-13.60157 c -4.01562,-7.38281 -2.25,-21.1914 -2.26562,-31.73437 z m 0,0"
|
||||
id="path1908" />
|
||||
<path
|
||||
style="fill:#7ab82e;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
d="m 322.42578,285.50781 c 15.82031,-0.29297 22.46484,3.25781 33.30078,6.24219 3.79297,6.08203 9.4375,15.53906 14.56641,20.8125 0.79687,17.37109 -2.23047,26.80078 -6.24219,41.625 -19.32422,11.75391 -30.96484,15.49219 -58.27344,8.32422 -8.11718,-12.36719 -15.78906,-20.89844 -16.65234,-41.625 4.00391,-5.20313 4.43359,-13.27735 8.32812,-18.73047 5.98047,-8.39063 16.89844,-10.24609 24.97266,-16.64844 z m 2.08203,20.8086 c -6.99219,7.25 -12.68359,9.91015 -14.5664,22.89843 9.07812,12.61719 5.43359,17.49219 29.13281,16.64453 3.95703,-4.22265 5.97656,-3.88281 8.32812,-10.40234 6.08594,-7.61719 2.34766,-13.77734 0,-22.89453 -3.05078,-1.6875 -5.85547,-3.78906 -8.32812,-6.24609 z m 0,0"
|
||||
id="path1910" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
d="m 218.36328,0.367188 c 21.31641,-0.2773442 44.07031,-1.761719 60.35938,4.164062 63.92578,23.28125 127.39453,115.67188 74.92187,199.80078 -22.63281,36.29297 -64.625,70.07813 -112.39062,81.17578 -36.03907,8.36719 -75.17188,-15.78515 -101.98047,2.07813 C 112.11719,305.68359 80.964844,373.78906 43.535156,375 30.347656,355.57031 2.351562,348.11328 1.910156,316.72656 26.886719,300.14453 45.382812,271.17187 66.429688,250.125 75.359375,241.19531 89.71875,232.47656 93.488281,218.90625 96.878906,206.68359 89.324219,193.59766 87.242188,185.60156 81.503906,163.5625 83.9375,127.91797 91.402344,110.67578 108.14063,72.035156 143.75,33.496094 178.81641,12.855469 Z m 0,20.816406 -33.30469,12.488281 c -33.39843,20.421875 -68.5664,59.28125 -79.08593,101.980465 -9.429691,38.29688 20.64453,71.62891 2.08203,101.98438 l -35.382815,35.38281 -24.976563,29.13672 c -7.785156,7.81641 -18.785156,13.58984 -22.890624,24.97266 10.320312,7.00781 15.042968,20.02734 29.136718,22.89453 12.667969,-18.98438 68.867184,-79.77735 89.496094,-87.41016 29.78516,-11.03125 62.99219,9.625 95.73828,2.07813 36.97266,-8.51954 77.51563,-41.5 95.73828,-68.67969 49.29297,-73.52344 -11.875,-159.328126 -74.92578,-174.828126 z m 0,0"
|
||||
id="path1912" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="surface1-1"
|
||||
transform="translate(1309.4348,89.334266)">
|
||||
<g
|
||||
id="g2054"
|
||||
transform="matrix(0.24938676,0,0,0.24938676,-390.20618,378.58256)">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="M 375.55859,188.20312 C 375.55859,291.36719 291.92578,375 188.76172,375 85.597656,375 1.964844,291.36719 1.964844,188.20312 1.964844,85.039062 85.597656,1.410156 188.76172,1.410156 c 103.16406,0 186.79687,83.628906 186.79687,186.792964 z m 0,0"
|
||||
id="path2023" />
|
||||
<path
|
||||
style="fill:#734a07;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.785601"
|
||||
d="m 185.04339,58.004287 c -11.27768,0 -20.43178,9.1541 -20.43178,20.431779 0,11.27768 9.1541,20.394955 20.43178,20.394955 11.27768,0 20.43485,-9.117275 20.43485,-20.394955 0,-11.277679 -9.15717,-20.431779 -20.43485,-20.431779 z M 164.61161,112.4655 c -7.17782,0 -13.59459,6.52418 -13.59459,13.59459 0,13.61301 23.81048,54.70059 23.81048,68.09571 v 40.82366 h 20.43177 V 194.1558 c 0,-13.13121 23.81355,-54.4827 23.81355,-68.09571 0,-7.53379 -6.09148,-13.59459 -13.59458,-13.59459 z m -38.55892,142.17855 v 19.66459 h 117.98447 v -19.66459 z m 19.66458,39.32918 v 39.32611 h 78.6553 v -39.32611 z m 0,0"
|
||||
id="path2025" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g862"
|
||||
transform="matrix(0.18713765,0,0,0.18713765,852.71383,399.85818)">
|
||||
<circle
|
||||
r="248.93001"
|
||||
cy="250.6844"
|
||||
cx="249.3156"
|
||||
id="path7"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke-width:37.4665" />
|
||||
<path
|
||||
style="fill:#94bb28;fill-opacity:1;stroke-width:51.7926"
|
||||
d="M 152.31834,83.603749 V 130.1409 h 64.93624 V 83.603749 Z m 127.14153,0 V 130.1409 h 65.03734 V 83.603749 Z m 0,61.105621 v 128.48315 c 0,6.16398 4.96328,11.1283 11.12606,11.1283 h 0.80901 10.31698 v 124.53792 c 0,5.95642 4.86707,10.82482 10.82274,10.82482 h 95.48254 c 5.95552,0 10.82276,-4.86802 10.82276,-10.82482 v -77.4946 l 0.19857,-11.331 -41.36909,-175.32377 z m -160.62113,0.18734 -41.470173,175.32376 0.202694,11.43216 v 77.49422 c 1.84e-4,5.95718 4.867375,10.8252 10.822897,10.8252 h 95.482582 c 6.0591,0 10.92385,-4.86802 10.92385,-10.82482 V 284.71047 h 10.21563 0.80916 c 6.16265,0 11.12614,-5.06585 11.12614,-11.22946 V 144.89633 Z m 112.47524,0 v 119.47881 h 33.68184 V 144.89633 Z"
|
||||
id="rect239-1" />
|
||||
</g>
|
||||
<g
|
||||
id="g896"
|
||||
transform="matrix(0.23584708,0,0,0.23584708,709.50946,446.69298)">
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.249387"
|
||||
d="m 1220.341,446.77018 c 0,25.72776 -20.8569,46.58467 -46.5847,46.58467 -25.7277,0 -46.5846,-20.85691 -46.5846,-46.58467 0,-25.72775 20.8569,-46.58369 46.5846,-46.58369 25.7278,0 46.5847,20.85594 46.5847,46.58369 z m 0,0"
|
||||
id="path2295" />
|
||||
<g
|
||||
id="g40912"
|
||||
transform="matrix(0.76992625,0,0,0.76992625,-151.38128,92.316147)">
|
||||
<circle
|
||||
r="256.54221"
|
||||
cy="255.45746"
|
||||
cx="98.542206"
|
||||
id="path841-3"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.377953;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
id="surface1-0"
|
||||
transform="matrix(0.21701693,0,0,0.21701693,1134.9237,410.79292)">
|
||||
<path
|
||||
style="fill:#ffbd48;stroke-width:0.762712"
|
||||
id="path2"
|
||||
d="M 123.94216,68.265603 V 227.00511 H 90.171281 V 80.51667 c 0,-2.532444 1.281118,-4.895064 3.402412,-6.280459 L 112.32867,61.979186 c 4.99636,-3.259404 11.61349,0.321768 11.61349,6.286417 z m 0,0" />
|
||||
style="fill:#ff613f;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 265.625,264.84375 h -156.25 c -14.0625,0 -25,-10.9375 -25,-25 V 47.65625 c 0,-14.0625 10.9375,-25 25,-25 h 156.25 c 14.0625,0 25,10.9375 25,25 v 192.1875 c 0,14.0625 -10.9375,25 -25,25 z m 0,0"
|
||||
id="path1948" />
|
||||
<path
|
||||
style="fill:#ff9c26;stroke-width:0.762712"
|
||||
id="path4-6"
|
||||
d="m 122.57464,96.48 c -8.58052,0 -15.8233,6.42049 -16.83926,14.92354 l -2.99126,24.96691 v -11.98888 c 0,-5.73524 -2.869112,-11.03848 -7.677774,-14.17275 l -4.895065,-3.19684 v 119.9961 H 123.94216 V 96.536608 C 123.48632,96.497877 123.03048,96.48 122.57464,96.48 Z m 0,0" />
|
||||
style="fill:#ff856e;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 265.625,22.65625 h -156.25 c -14.0625,0 -25,10.9375 -25,25 V 67.1875 c 0,-14.0625 10.9375,-25 25,-25 h 156.25 c 14.0625,0 25,10.9375 25,25 V 47.65625 c 0,-14.0625 -10.9375,-25 -25,-25 z m 0,0"
|
||||
id="path1950" />
|
||||
<path
|
||||
style="fill:#ffdf4a;stroke-width:0.762712"
|
||||
id="path6"
|
||||
d="M 71.297131,80.51667 V 189.48025 H 37.526255 V 68.265603 c 0,-5.964649 6.617125,-9.545821 11.613487,-6.286417 l 18.754977,12.257025 c 2.121294,1.385395 3.402412,3.748015 3.402412,6.280459 z m 0,0" />
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="M 34,33.9 H 14 c -1.8,0 -3.2,-1.4 -3.2,-3.2 V 6.1 c 0,-1.8 1.4,-3.2 3.2,-3.2 h 20 c 1.8,0 3.2,1.4 3.2,3.2 v 24.6 c 0,1.8 -1.4,3.2 -3.2,3.2 z m 0,0"
|
||||
transform="scale(7.8125)"
|
||||
id="path1952" />
|
||||
<path
|
||||
style="fill:#ffbd48;stroke-width:0.762712"
|
||||
id="path8"
|
||||
d="m 67.063482,95.183986 c 1.436043,0 2.860171,0.187699 4.233649,0.551178 V 189.48025 H 50.113988 v -77.34677 c 0,-9.34323 7.606268,-16.949494 16.949494,-16.949494 z m 0,0" />
|
||||
style="fill:#deba7d;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 204.6875,264.84375 h -35.15625 v 74.21875 c 0,4.6875 3.90625,8.59375 8.59375,8.59375 h 17.96875 c 4.6875,0 8.59375,-3.90625 8.59375,-8.59375 z m 0,0"
|
||||
id="path1954" />
|
||||
<path
|
||||
style="fill:#ffdf4a;stroke-width:0.762712"
|
||||
id="path10"
|
||||
d="m 147.16019,128.71055 -0.67631,5.66672 -12.28682,102.53118 -30.57404,-3.67055 -2.96146,-0.35455 14.43492,-120.3566 c 0.70611,-5.91698 7.69863,-8.68479 12.27192,-4.85633 l 17.16699,14.40215 c 1.94253,1.62673 2.93167,4.12342 2.6248,6.63798 z m 0,0" />
|
||||
style="fill:#b89457;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 170.3125,264.84375 h 35.15625 V 285.9375 H 170.3125 Z m 0,0"
|
||||
id="path1956" />
|
||||
<path
|
||||
style="fill:#ffbd48;stroke-width:0.762712"
|
||||
id="path12"
|
||||
d="m 146.48388,134.37727 -12.28682,102.53118 -30.57404,-3.67055 23.75134,-84.79514 c 1.54926,-5.52371 5.74418,-9.8527 11.21426,-11.57476 z m 0,0" />
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="m 26.2,33.9 h -4.5 v 9.5 c 0,0.6 0.5,1.1 1.1,1.1 h 2.3 c 0.6,0 1.1,-0.5 1.1,-1.1 z m 0,0"
|
||||
transform="scale(7.8125)"
|
||||
id="path1958" />
|
||||
<path
|
||||
style="fill:#ffdf4a;stroke-width:0.762712"
|
||||
id="path14"
|
||||
d="M 93.311511,233.35111 H 59.540635 V 112.13348 c 0,-5.96167 6.617126,-9.54284 11.610508,-6.28344 l 18.760935,12.25405 c 2.121294,1.38539 3.399433,3.74801 3.399433,6.28344 z m 0,0" />
|
||||
style="fill:#636668;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 253.90625,113.28125 h -132.8125 c -4.6875,0 -8.59375,-3.90625 -8.59375,-8.59375 V 94.53125 c 0,-4.6875 3.90625,-8.59375 8.59375,-8.59375 h 132.8125 c 4.6875,0 8.59375,3.90625 8.59375,8.59375 v 10.15625 c 0,5.46875 -3.90625,8.59375 -8.59375,8.59375 z m 0,0"
|
||||
id="path1960" />
|
||||
<path
|
||||
style="fill:#ffdf4a;stroke-width:0.762712"
|
||||
id="path16"
|
||||
d="m 107.05523,255.91369 32.51955,9.11084 32.70427,-116.7218 c 1.60885,-5.7412 -3.79569,-10.97591 -9.48325,-9.18234 l -21.37085,6.7363 c -2.41625,0.76271 -4.28727,2.69332 -4.96954,5.13043 z m 0,0" />
|
||||
style="fill:#515151;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 253.90625,86.71875 h -132.8125 c -4.6875,0 -8.59375,3.90625 -8.59375,8.59375 v 10.15625 c 0,-4.6875 3.90625,-8.59375 8.59375,-8.59375 h 132.8125 c 4.6875,0 8.59375,3.90625 8.59375,8.59375 V 95.3125 c 0,-5.46875 -3.90625,-8.59375 -8.59375,-8.59375 z m 0,0"
|
||||
id="path1962" />
|
||||
<path
|
||||
style="fill:#ff5656;stroke-width:0.762712"
|
||||
id="path18"
|
||||
d="m 171.84109,219.45545 -24.80603,52.40071 -45.0477,95.15135 -37.846616,79.94178 c -3.426247,7.23683 -14.285959,4.79973 -14.285959,-3.20577 L 41.345775,349.63495 31.320279,238.70499 23.699115,154.4372 c -0.685249,-7.56754 8.970808,-11.17552 13.50537,-5.08574 35.767038,48.02406 102.161745,57.53115 128.397855,59.40218 5.2645,0.37837 8.49411,5.93187 6.23875,10.70181 z m 0,0" />
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="m 32.5,14.5 h -17 c -0.6,0 -1.1,-0.5 -1.1,-1.1 v -1.3 c 0,-0.6 0.5,-1.1 1.1,-1.1 h 17 c 0.6,0 1.1,0.5 1.1,1.1 v 1.3 c 0,0.7 -0.5,1.1 -1.1,1.1 z m 0,0"
|
||||
transform="scale(7.8125)"
|
||||
id="path1964-2" />
|
||||
<path
|
||||
style="fill:#f72d2d;stroke-width:0.762712"
|
||||
id="path20"
|
||||
d="m 171.84109,219.45545 -24.80603,52.40071 -45.04472,95.15135 -37.849596,79.94178 c -3.426247,7.23683 -14.28298,4.79973 -14.28298,-3.20577 L 49.619416,441.15745 160.96648,208.37824 c 1.65949,0.14897 3.20577,0.2741 4.63586,0.3754 5.2645,0.37837 8.49411,5.93187 6.23875,10.70181 z m 0,0" />
|
||||
style="fill:#de3f21;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 264.84375,51.5625 h -154.6875 c -4.6875,0 -8.59375,3.90625 -8.59375,8.59375 0,4.6875 3.90625,8.59375 8.59375,8.59375 h 154.6875 c 4.6875,0 8.59375,-3.90625 8.59375,-8.59375 0,-4.6875 -3.90625,-8.59375 -8.59375,-8.59375 z m 0,0"
|
||||
id="path1966" />
|
||||
<path
|
||||
style="fill:#fe9e80;stroke-width:0.762712"
|
||||
id="path22"
|
||||
d="m 147.07379,271.85616 -45.04472,95.15135 -14.857989,-4.25749 -45.783595,-13.11507 -1.376457,-15.22744 -6.262584,-69.29956 -2.386455,-26.39998 101.27092,29.00691 z m 0,0" />
|
||||
style="fill:#ff613f;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 110.15625,60.15625 h 154.6875 c 3.125,0 6.25,1.5625 7.8125,4.6875 0.78125,-1.5625 0.78125,-3.125 0.78125,-4.6875 0,-4.6875 -3.90625,-8.59375 -8.59375,-8.59375 h -154.6875 c -4.6875,0 -8.59375,3.90625 -8.59375,8.59375 0,1.5625 0.78125,3.125 0.78125,4.6875 1.5625,-3.125 4.6875,-4.6875 7.8125,-4.6875 z m 0,0"
|
||||
id="path1968" />
|
||||
<path
|
||||
style="fill:#fe835f;stroke-width:0.762712"
|
||||
id="path24"
|
||||
d="m 147.07379,271.85616 -45.04472,95.15135 -14.857989,-4.25749 45.461829,-95.03514 z m 0,0" />
|
||||
<path
|
||||
style="fill:#ffdf4a;stroke-width:0.762712"
|
||||
id="path26"
|
||||
d="m 66.545075,300.2523 c 0,16.46982 -11.300655,30.29994 -26.572778,34.15521 l -6.262583,-69.29956 c 18.337869,1.22451 32.835361,16.49067 32.835361,35.14435 z m 0,0" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g1987"
|
||||
transform="matrix(2.8106546,0,0,2.8106546,-169.07891,220.26224)">
|
||||
<circle
|
||||
r="16.630953"
|
||||
cy="80.532394"
|
||||
cx="282.5199"
|
||||
id="path1964"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
transform="matrix(0.54395857,0,0,0.54395857,269.48791,66.555529)"
|
||||
id="g852"
|
||||
style="overflow:inherit">
|
||||
<path
|
||||
d="m 7.206,31.141 c 2.885,0 5.219,-2.399 5.219,-5.368 0,-2.953 -2.334,-5.353 -5.219,-5.353 -2.873,0 -5.206,2.4 -5.206,5.353 0,2.968 2.333,5.368 5.206,5.368 z m 29.23,9.216 c 0.243,-0.172 0.564,-0.12 0.741,0.117 l 0.965,1.372 c 0.164,0.238 0.114,0.58 -0.116,0.766 l -7.08,5.287 c -0.229,0.172 -0.562,0.118 -0.743,-0.118 l -0.962,-1.372 c -0.165,-0.238 -0.113,-0.579 0.116,-0.764 z m -8.003,-6.817 -2.808,-5.063 -1.474,1.107 2.808,5.09 z M 21.882,21.713 10.962,2 8.873,2.014 20.395,22.834 Z m 10.281,10.43 C 32.78,31.682 34.192,31 35,31 h 10 c 1.974,0 3,1.986 3,4.004 C 48,37.034 46.974,38 45,38 h -9 l -10.836,8.502 c -3.808,2.819 -6.116,-0.278 -6.116,-0.278 L 10.565,37.495 C 9.142,35.742 9.45,32.406 11.156,30.929 l 11.739,-8.597 c 1.166,-1 2.897,-0.843 3.885,0.343 0.976,1.2 0.822,2.994 -0.346,3.996 l -7.515,5.657 5.399,5.484 z"
|
||||
id="path841" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g958"
|
||||
transform="matrix(1.4657321,0,0,1.4657321,783.20327,468.03016)">
|
||||
<g
|
||||
id="layer1-56">
|
||||
<ellipse
|
||||
ry="31.946436"
|
||||
rx="32.00938"
|
||||
cy="32.109043"
|
||||
cx="31.967007"
|
||||
id="path819"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.497387;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="layer2-2">
|
||||
<path
|
||||
style="fill:#734a08;fill-opacity:1;stroke:none;stroke-width:3.34941"
|
||||
d="M 32.123859,10.440678 8.6779661,17.139504 v 3.349413 L 32.123859,13.79009 55.569753,20.488917 v -3.349413 z m -11.59865,11.964995 c -0.522431,0.02077 -1.041409,0.124297 -1.556954,0.320538 v 20.835706 c 0,0 8.38755,-0.322013 10.525792,7.817477 V 29.497007 c -1.631616,-3.400613 -5.311804,-7.237191 -8.968838,-7.091334 z m 8.968838,28.973731 C 24.066203,47.228261 16.331902,46.172115 16.331902,46.172115 V 26.376556 l -2.629816,-1.046692 v 23.445893 l 15.791961,5.207293 h 5.259628 L 50.545632,48.775757 V 25.329864 l -2.629812,1.046692 v 20.835709 l -13.162145,4.167139 c -1.754454,-0.663351 -3.795938,-0.545319 -5.259628,0 z M 45.279464,22.726221 C 40.03579,22.448689 33.986193,25.566152 30.808953,28.247518 v 22.045945 c 2.933724,-2.408355 8.190227,-5.573982 14.470511,-6.208191 z"
|
||||
id="path4176" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g2125"
|
||||
transform="matrix(3.8574971,0,0,3.8574971,510.77103,468.2685)"
|
||||
inkscape:export-filename="/home/pietervdvn/git/MapComplete/assets/g2125.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<g
|
||||
transform="translate(0.12711811)"
|
||||
style="display:inline"
|
||||
id="layer1-37">
|
||||
<circle
|
||||
r="12.076271"
|
||||
cy="12.076271"
|
||||
cx="11.949153"
|
||||
id="path814"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(0.12711811)"
|
||||
id="layer2-5">
|
||||
<path
|
||||
id="path2-9"
|
||||
d="m 16.739623,11.453018 2.12132,-2.1213204 c 0.424264,-0.4242641 0.424264,-0.9899495 0,-1.4142136 -0.424264,-0.424264 -0.98995,-0.424264 -1.414214,0 l -2.12132,2.121321 -1.414213,-1.4142142 2.12132,-2.1213203 c 0.424264,-0.4242641 0.424264,-0.9899495 0,-1.4142136 -0.424264,-0.4242638 -1.06066,-0.3535532 -1.414214,2e-7 L 12.496982,7.2103775 11.082769,5.7961639 8.4664736,8.4124588 C 6.769417,10.109515 6.557285,12.72581 7.830077,14.705709 l -5.1618795,5.16188 1.4142136,1.414213 5.1618795,-5.161879 c 1.9798994,1.272792 4.5961944,1.06066 6.2932504,-0.636396 l 2.616295,-2.616295 z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g2175"
|
||||
transform="matrix(6.6832014,0,0,6.6832014,442.74768,399.98826)">
|
||||
<g
|
||||
id="layer2-6">
|
||||
<circle
|
||||
r="6.9703388"
|
||||
cy="7"
|
||||
cx="7"
|
||||
id="path846"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
style="display:inline"
|
||||
id="layer1-12">
|
||||
<g
|
||||
transform="matrix(0.86185687,0,0,0.86185687,1.4318286,1.4602523)"
|
||||
id="hbars">
|
||||
<rect
|
||||
id="rect2"
|
||||
style="fill:#ac39ac"
|
||||
height="0.5"
|
||||
width="11"
|
||||
y="6"
|
||||
x="1" />
|
||||
<rect
|
||||
id="rect4"
|
||||
style="fill:#ac39ac"
|
||||
height="0.5"
|
||||
width="9.5"
|
||||
y="8"
|
||||
x="2" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.86185687,0,0,0.86185687,1.4318286,1.4602523)"
|
||||
id="vbars">
|
||||
<rect
|
||||
id="rect7"
|
||||
style="fill:#ac39ac"
|
||||
height="5.5"
|
||||
width="0.5"
|
||||
y="4.5"
|
||||
x="3" />
|
||||
<rect
|
||||
id="rect9"
|
||||
style="fill:#ac39ac"
|
||||
height="5.5"
|
||||
width="0.5"
|
||||
y="4.5"
|
||||
x="5" />
|
||||
<rect
|
||||
id="rect11"
|
||||
style="fill:#ac39ac"
|
||||
height="5.5"
|
||||
width="0.5"
|
||||
y="4.5"
|
||||
x="7.5" />
|
||||
<rect
|
||||
id="rect13"
|
||||
style="fill:#ac39ac"
|
||||
height="5.5"
|
||||
width="0.5"
|
||||
y="4.5"
|
||||
x="9.5" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:#ac39ac;stroke:none;stroke-width:0.861857"
|
||||
d="M 6.5167842,4.9076797 8.2404979,2.3221091 A 0.43626052,0.43626052 0 0 1 9.0420248,2.6668519 L 7.5510124,4.9076797 Z"
|
||||
id="handle" />
|
||||
<path
|
||||
style="fill:#ac39ac;fill-rule:evenodd;stroke:none;stroke-width:0.861857"
|
||||
d="M 1.4318286,4.9076797 H 12.635968 L 10.912254,10.940678 H 3.1555423 Z M 2.5091497,5.7695366 H 11.558647 L 10.265861,10.078821 H 3.801935 Z"
|
||||
id="body" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g1904"
|
||||
transform="matrix(0.25051572,0,0,0.25051572,872.66935,392.83279)">
|
||||
<g
|
||||
id="surface1">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.125;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
|
||||
d="m 467.96462,215.30738 c 0,102.69922 83.2539,185.95313 185.95311,185.95313 102.69923,0 185.95313,-83.25391 185.95313,-185.95313 0,-102.69921 -83.2539,-185.953119 -185.95313,-185.953119 -102.69921,0 -185.95311,83.253909 -185.95311,185.953119 z m 0,0"
|
||||
id="path1889" />
|
||||
<path
|
||||
style="fill:#aaaaaa;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:18.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
|
||||
d="m 791.23805,231.5105 -26.97657,-8.12108 -39.53906,55.36718 46.71485,15.87109 z m -8.73438,-37.32421 -234.7578,-66.28515 c -6.14063,-1.55079 -14.71485,-0.60157 -17.66016,10.52734 0,0 -13.85156,61.74219 -20.94141,90.72265 -2.49609,10.21094 0.23047,14.57422 7.30078,16.45704 l 187,53.62109 z m 0,0"
|
||||
id="path1891" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g2050"
|
||||
transform="matrix(0.18534995,0,0,0.18534995,767.095,542.7144)">
|
||||
<path
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.34549"
|
||||
d="m 2078.7593,-149.40763 c 0,138.806368 -112.5272,251.33359 -251.3336,251.33359 -138.8063,0 -251.3336,-112.527222 -251.3336,-251.33359 0,-138.80635 112.5273,-251.32831 251.3336,-251.32831 138.8064,0 251.3336,112.52196 251.3336,251.32831 z m 0,0"
|
||||
id="path1904" />
|
||||
<g
|
||||
id="g1926"
|
||||
transform="translate(1250.0673,-234.86328)">
|
||||
<g
|
||||
id="surface1-8"
|
||||
transform="translate(387.14053,-111)">
|
||||
<path
|
||||
style="fill:#7ab82e;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
d="m 101.84766,144.1875 c 22.72656,8.01562 71.23437,71.23828 90.67187,90.67187 10.15625,10.15625 26.54688,19.41407 31.73438,34 h -24.9336 c -2.67578,-1.8164 -3.8125,-1.7539 -9.07031,-2.26562 -5.23047,-14.41016 -56.83203,-63.60547 -70.26953,-77.07031 l -15.86719,-13.60157 c -4.01562,-7.38281 -2.25,-21.1914 -2.26562,-31.73437 z m 0,0"
|
||||
id="path1908" />
|
||||
<path
|
||||
style="fill:#7ab82e;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
d="m 322.42578,285.50781 c 15.82031,-0.29297 22.46484,3.25781 33.30078,6.24219 3.79297,6.08203 9.4375,15.53906 14.56641,20.8125 0.79687,17.37109 -2.23047,26.80078 -6.24219,41.625 -19.32422,11.75391 -30.96484,15.49219 -58.27344,8.32422 -8.11718,-12.36719 -15.78906,-20.89844 -16.65234,-41.625 4.00391,-5.20313 4.43359,-13.27735 8.32812,-18.73047 5.98047,-8.39063 16.89844,-10.24609 24.97266,-16.64844 z m 2.08203,20.8086 c -6.99219,7.25 -12.68359,9.91015 -14.5664,22.89843 9.07812,12.61719 5.43359,17.49219 29.13281,16.64453 3.95703,-4.22265 5.97656,-3.88281 8.32812,-10.40234 6.08594,-7.61719 2.34766,-13.77734 0,-22.89453 -3.05078,-1.6875 -5.85547,-3.78906 -8.32812,-6.24609 z m 0,0"
|
||||
id="path1910" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
d="m 218.36328,0.367188 c 21.31641,-0.2773442 44.07031,-1.761719 60.35938,4.164062 63.92578,23.28125 127.39453,115.67188 74.92187,199.80078 -22.63281,36.29297 -64.625,70.07813 -112.39062,81.17578 -36.03907,8.36719 -75.17188,-15.78515 -101.98047,2.07813 C 112.11719,305.68359 80.964844,373.78906 43.535156,375 30.347656,355.57031 2.351562,348.11328 1.910156,316.72656 26.886719,300.14453 45.382812,271.17187 66.429688,250.125 75.359375,241.19531 89.71875,232.47656 93.488281,218.90625 96.878906,206.68359 89.324219,193.59766 87.242188,185.60156 81.503906,163.5625 83.9375,127.91797 91.402344,110.67578 108.14063,72.035156 143.75,33.496094 178.81641,12.855469 Z m 0,20.816406 -33.30469,12.488281 c -33.39843,20.421875 -68.5664,59.28125 -79.08593,101.980465 -9.429691,38.29688 20.64453,71.62891 2.08203,101.98438 l -35.382815,35.38281 -24.976563,29.13672 c -7.785156,7.81641 -18.785156,13.58984 -22.890624,24.97266 10.320312,7.00781 15.042968,20.02734 29.136718,22.89453 12.667969,-18.98438 68.867184,-79.77735 89.496094,-87.41016 29.78516,-11.03125 62.99219,9.625 95.73828,2.07813 36.97266,-8.51954 77.51563,-41.5 95.73828,-68.67969 49.29297,-73.52344 -11.875,-159.328126 -74.92578,-174.828126 z m 0,0"
|
||||
id="path1912" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="surface1-1"
|
||||
transform="translate(1309.4348,89.334266)">
|
||||
<g
|
||||
id="g2054"
|
||||
transform="matrix(0.24938676,0,0,0.24938676,-390.20618,378.58256)">
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="M 33.9,6.6 H 14.1 c -0.6,0 -1.1,0.5 -1.1,1.1 0,0.6 0.5,1.1 1.1,1.1 H 33.9 C 34.5,8.8 35,8.3 35,7.7 35,7.1 34.5,6.6 33.9,6.6 Z m 0,0"
|
||||
transform="scale(7.8125)"
|
||||
id="path1970" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="M 375.55859,188.20312 C 375.55859,291.36719 291.92578,375 188.76172,375 85.597656,375 1.964844,291.36719 1.964844,188.20312 1.964844,85.039062 85.597656,1.410156 188.76172,1.410156 c 103.16406,0 186.79687,83.628906 186.79687,186.792964 z m 0,0"
|
||||
id="path2023" />
|
||||
d="m 262.5,165.625 h -76.5625 c -3.125,0 -6.25,-1.5625 -7.8125,-4.6875 L 144.53125,86.71875 H 232.8125 L 265.625,159.375 c 1.5625,3.125 -0.78125,6.25 -3.125,6.25 z m 0,0"
|
||||
id="path1972" />
|
||||
<path
|
||||
style="fill:#734a07;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.785601"
|
||||
d="m 185.04339,58.004287 c -11.27768,0 -20.43178,9.1541 -20.43178,20.431779 0,11.27768 9.1541,20.394955 20.43178,20.394955 11.27768,0 20.43485,-9.117275 20.43485,-20.394955 0,-11.277679 -9.15717,-20.431779 -20.43485,-20.431779 z M 164.61161,112.4655 c -7.17782,0 -13.59459,6.52418 -13.59459,13.59459 0,13.61301 23.81048,54.70059 23.81048,68.09571 v 40.82366 h 20.43177 V 194.1558 c 0,-13.13121 23.81355,-54.4827 23.81355,-68.09571 0,-7.53379 -6.09148,-13.59459 -13.59458,-13.59459 z m -38.55892,142.17855 v 19.66459 h 117.98447 v -19.66459 z m 19.66458,39.32918 v 39.32611 h 78.6553 v -39.32611 z m 0,0"
|
||||
id="path2025" />
|
||||
style="fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 241.40625,103.90625 -8.59375,-17.1875 h -88.28125 l 8.59375,17.1875 z m 0,0"
|
||||
id="path1974" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="m 33.6,21.2 h -9.8 c -0.4,0 -0.8,-0.2 -1,-0.6 l -4.3,-9.5 h 11.3 l 4.2,9.3 c 0.2,0.4 -0.1,0.8 -0.4,0.8 z m 0,0"
|
||||
transform="scale(7.8125)"
|
||||
id="path1976" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="m 34,20.9 -7.5,-6.2 0.8,-3.6"
|
||||
transform="scale(7.8125)"
|
||||
id="path1978" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="M 27.6,15.7 23.2,21"
|
||||
transform="scale(7.8125)"
|
||||
id="path1980" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="M 26.7,13.7 21.5,11.1"
|
||||
transform="scale(7.8125)"
|
||||
id="path1982" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.249387"
|
||||
d="m 1220.341,446.77018 c 0,25.72776 -20.8569,46.58467 -46.5847,46.58467 -25.7277,0 -46.5846,-20.85691 -46.5846,-46.58467 0,-25.72775 20.8569,-46.58369 46.5846,-46.58369 25.7278,0 46.5847,20.85594 46.5847,46.58369 z m 0,0"
|
||||
id="path2295" />
|
||||
<g
|
||||
id="surface1-0"
|
||||
transform="matrix(0.21701693,0,0,0.21701693,1134.9237,410.79292)">
|
||||
<path
|
||||
style="fill:#ff613f;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 265.625,264.84375 h -156.25 c -14.0625,0 -25,-10.9375 -25,-25 V 47.65625 c 0,-14.0625 10.9375,-25 25,-25 h 156.25 c 14.0625,0 25,10.9375 25,25 v 192.1875 c 0,14.0625 -10.9375,25 -25,25 z m 0,0"
|
||||
id="path1948" />
|
||||
<path
|
||||
style="fill:#ff856e;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 265.625,22.65625 h -156.25 c -14.0625,0 -25,10.9375 -25,25 V 67.1875 c 0,-14.0625 10.9375,-25 25,-25 h 156.25 c 14.0625,0 25,10.9375 25,25 V 47.65625 c 0,-14.0625 -10.9375,-25 -25,-25 z m 0,0"
|
||||
id="path1950" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="M 34,33.9 H 14 c -1.8,0 -3.2,-1.4 -3.2,-3.2 V 6.1 c 0,-1.8 1.4,-3.2 3.2,-3.2 h 20 c 1.8,0 3.2,1.4 3.2,3.2 v 24.6 c 0,1.8 -1.4,3.2 -3.2,3.2 z m 0,0"
|
||||
transform="scale(7.8125)"
|
||||
id="path1952" />
|
||||
<path
|
||||
style="fill:#deba7d;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 204.6875,264.84375 h -35.15625 v 74.21875 c 0,4.6875 3.90625,8.59375 8.59375,8.59375 h 17.96875 c 4.6875,0 8.59375,-3.90625 8.59375,-8.59375 z m 0,0"
|
||||
id="path1954" />
|
||||
<path
|
||||
style="fill:#b89457;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 170.3125,264.84375 h 35.15625 V 285.9375 H 170.3125 Z m 0,0"
|
||||
id="path1956" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="m 26.2,33.9 h -4.5 v 9.5 c 0,0.6 0.5,1.1 1.1,1.1 h 2.3 c 0.6,0 1.1,-0.5 1.1,-1.1 z m 0,0"
|
||||
transform="scale(7.8125)"
|
||||
id="path1958" />
|
||||
<path
|
||||
style="fill:#636668;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 253.90625,113.28125 h -132.8125 c -4.6875,0 -8.59375,-3.90625 -8.59375,-8.59375 V 94.53125 c 0,-4.6875 3.90625,-8.59375 8.59375,-8.59375 h 132.8125 c 4.6875,0 8.59375,3.90625 8.59375,8.59375 v 10.15625 c 0,5.46875 -3.90625,8.59375 -8.59375,8.59375 z m 0,0"
|
||||
id="path1960" />
|
||||
<path
|
||||
style="fill:#515151;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 253.90625,86.71875 h -132.8125 c -4.6875,0 -8.59375,3.90625 -8.59375,8.59375 v 10.15625 c 0,-4.6875 3.90625,-8.59375 8.59375,-8.59375 h 132.8125 c 4.6875,0 8.59375,3.90625 8.59375,8.59375 V 95.3125 c 0,-5.46875 -3.90625,-8.59375 -8.59375,-8.59375 z m 0,0"
|
||||
id="path1962" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="m 32.5,14.5 h -17 c -0.6,0 -1.1,-0.5 -1.1,-1.1 v -1.3 c 0,-0.6 0.5,-1.1 1.1,-1.1 h 17 c 0.6,0 1.1,0.5 1.1,1.1 v 1.3 c 0,0.7 -0.5,1.1 -1.1,1.1 z m 0,0"
|
||||
transform="scale(7.8125)"
|
||||
id="path1964-2" />
|
||||
<path
|
||||
style="fill:#de3f21;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 264.84375,51.5625 h -154.6875 c -4.6875,0 -8.59375,3.90625 -8.59375,8.59375 0,4.6875 3.90625,8.59375 8.59375,8.59375 h 154.6875 c 4.6875,0 8.59375,-3.90625 8.59375,-8.59375 0,-4.6875 -3.90625,-8.59375 -8.59375,-8.59375 z m 0,0"
|
||||
id="path1966" />
|
||||
<path
|
||||
style="fill:#ff613f;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 110.15625,60.15625 h 154.6875 c 3.125,0 6.25,1.5625 7.8125,4.6875 0.78125,-1.5625 0.78125,-3.125 0.78125,-4.6875 0,-4.6875 -3.90625,-8.59375 -8.59375,-8.59375 h -154.6875 c -4.6875,0 -8.59375,3.90625 -8.59375,8.59375 0,1.5625 0.78125,3.125 0.78125,4.6875 1.5625,-3.125 4.6875,-4.6875 7.8125,-4.6875 z m 0,0"
|
||||
id="path1968" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="M 33.9,6.6 H 14.1 c -0.6,0 -1.1,0.5 -1.1,1.1 0,0.6 0.5,1.1 1.1,1.1 H 33.9 C 34.5,8.8 35,8.3 35,7.7 35,7.1 34.5,6.6 33.9,6.6 Z m 0,0"
|
||||
transform="scale(7.8125)"
|
||||
id="path1970" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 262.5,165.625 h -76.5625 c -3.125,0 -6.25,-1.5625 -7.8125,-4.6875 L 144.53125,86.71875 H 232.8125 L 265.625,159.375 c 1.5625,3.125 -0.78125,6.25 -3.125,6.25 z m 0,0"
|
||||
id="path1972" />
|
||||
<path
|
||||
style="fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="m 241.40625,103.90625 -8.59375,-17.1875 h -88.28125 l 8.59375,17.1875 z m 0,0"
|
||||
id="path1974" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="m 33.6,21.2 h -9.8 c -0.4,0 -0.8,-0.2 -1,-0.6 l -4.3,-9.5 h 11.3 l 4.2,9.3 c 0.2,0.4 -0.1,0.8 -0.4,0.8 z m 0,0"
|
||||
transform="scale(7.8125)"
|
||||
id="path1976" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="m 34,20.9 -7.5,-6.2 0.8,-3.6"
|
||||
transform="scale(7.8125)"
|
||||
id="path1978" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="M 27.6,15.7 23.2,21"
|
||||
transform="scale(7.8125)"
|
||||
id="path1980" />
|
||||
<path
|
||||
style="fill:none;stroke:#453f3a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
|
||||
d="M 26.7,13.7 21.5,11.1"
|
||||
transform="scale(7.8125)"
|
||||
id="path1982" />
|
||||
</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 |
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -142,7 +142,7 @@
|
|||
"if": "bicycle_rental=dropoff_point",
|
||||
"then": {
|
||||
"en": "This is a dropoff point, e.g. a reserved parking to place the bicycles which clearly marked as being for the rental service only",
|
||||
"nl": "Dit is een dropzone, bv. een fietsparkeerplaats die is voorbehouden voor fietsverhuur ",
|
||||
"nl": "Dit is een dropzone, bv. een fietsparkeerplaats die is voorbehouden voor fietsverhuur",
|
||||
"de": "Dies ist ein Rückgabepunkt, z. B. ein reservierter Fahrradstellplatz, der deutlich als solcher gekennzeichnet ist",
|
||||
"es": "Este es un punto de entrega, ej. un aparcamiento reservado para colocar las bicicletas, claramente marcado como solo para el servicio de alquiler",
|
||||
"fr": "Ceci est un point de dépôt, p.ex. un emplacement de parking réservé aux vélos de location",
|
||||
|
|
|
@ -591,13 +591,13 @@
|
|||
{
|
||||
"if": "service:bicycle:pump=separate",
|
||||
"then": {
|
||||
"en": "There is bicycle pump, it is shown as a separate point ",
|
||||
"en": "There is bicycle pump, it is shown as a separate point",
|
||||
"nl": "Er is een fietspomp, deze is apart aangeduid",
|
||||
"fr": "Il y a une pompe à vélo, c'est indiqué comme un point séparé ",
|
||||
"it": "C’è una pompa per bici, è mostrata come punto separato ",
|
||||
"de": "Es gibt eine Luftpumpe, sie ist als separater Punkt eingetragen ",
|
||||
"es": "Hay una bomba para bicicletas, se muestra como un punto separado ",
|
||||
"da": "Der er cykelpumpe, den er vist som et separat punkt "
|
||||
"fr": "Il y a une pompe à vélo, c'est indiqué comme un point séparé",
|
||||
"it": "C’è una pompa per bici, è mostrata come punto separato",
|
||||
"de": "Es gibt eine Luftpumpe, sie ist als separater Punkt eingetragen",
|
||||
"es": "Hay una bomba para bicicletas, se muestra como un punto separado",
|
||||
"da": "Der er cykelpumpe, den er vist som et separat punkt"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -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",
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue