Merge branch 'develop' into feature/maproulette

This commit is contained in:
Robin van der Linde 2022-07-10 19:43:48 +00:00 committed by GitHub
commit 764f9956a9
113 changed files with 8008 additions and 1160 deletions

View file

@ -16,5 +16,6 @@
}
],
"editor.tabSize": 2,
"files.autoSave": "onFocusChange"
}
"files.autoSave": "onFocusChange",
"search.useIgnoreFiles": true
}

View file

@ -136,6 +136,7 @@
- playground
- recycling
- school
- shops
- tertiary_education
- veterinary
@ -159,6 +160,7 @@
- kindergarten_childcare
- recycling
- school
- shops
- tertiary_education
- veterinary
@ -182,6 +184,7 @@
- kindergarten_childcare
- recycling
- school
- shops
- tertiary_education
@ -202,6 +205,7 @@
- climbing_gym
- food
- kindergarten_childcare
- shops
- veterinary

View file

@ -817,6 +817,7 @@ The following layers are included in MapComplete:
- [hydrant](./Layers/hydrant.md)
- [import_candidate](./Layers/import_candidate.md)
- [information_board](./Layers/information_board.md)
- [kerbs](./Layers/kerbs.md)
- [kindergarten_childcare](./Layers/kindergarten_childcare.md)
- [left_right_style](./Layers/left_right_style.md)
- [map](./Layers/map.md)

View file

@ -46,37 +46,31 @@ Development using Windows
For Windows you can use the devcontainer, or the WSL subsystem.
Raw installation
To use the devcontainer in Visual Studio Code:
0. Clone the repo
1. Install `npm` and install `ts-node` globally with `npm install -g ts-node`
2. Execute `npm run init`. It will install and build some assets
3. Run `npm run start` to start the dev server
To use the WSL in Visual Studio Code:
1. Install a WSL Distribution (e.g. Ubuntu)
2. Install basic dependencies `sudo apt install make g++`
3. Install NVM `wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash`
4. Use NVM to install node 16.x: `nvm install 16.9.1`
5. Activate the node version: `nvm use 16.9.1`
6. Install `npm` using `sudo apt install npm`.
7. Install the [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) extension and it's dependencies.
8. Open a remote WSL window using the button in the bottom left.
9. Make a fork and clone the repository.
10. Run `npm run init` and generate some additional dependencies and generated files. Note that it'll install the
dependencies too
11. Run `npm run start` to host a local testversion at http://localhost:1234/index.html
12. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename`
0. Make sure you have installed
the [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
extension and it's dependencies.
1. Make a fork and clone the repository.
2. After cloning, Visual Studio Code will ask you if you want to use the devcontainer.
3. Then you can either clone it again in a volume (for better performance), or open the current folder in a container.
4. By now, you should be able to run `npm run start` to host a local testversion at http://localhost:1234/index.html
5. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename`
or `userlayout=true#<layout configuration>` as [Query parameter](URL_Parameters.md). Note that the shorter URLs (
e.g. `bookcases.html`, `aed.html`, ...) _don't_ exist on the development version.
To use WSL without Visual Studio Code you can replace steps 7 and 8 by opening up a WSL terminal
To use the WSL in Visual Studio Code:
On mac
------
Install the `Command line tools for XCode which you can find [here](https://developer.apple.com/download/all/). You might need an apple dev account for this.
0. Make sure you have installed the [Remote - WSL]() extension and it's dependencies.
1. Open a remote WSL window using the button in the bottom left.
2. Make a fork and clone the repository.
3. Install `npm` using `sudo apt install npm`.
4. Run `npm run init` and generate some additional dependencies and generated files. Note that it'll install the
dependencies too
5. Run `npm run start` to host a local testversion at http://localhost:1234/index.html
6. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename`
or `userlayout=true#<layout configuration>` as [Query parameter](URL_Parameters.md). Note that the shorter URLs (
e.g. `bookcases.html`, `aed.html`, ...) _don't_ exist on the development version.
Automatic deployment
--------------------

View file

@ -28,6 +28,7 @@ Crossings for pedestrians and cyclists
- [cycle_infra](https://mapcomplete.osm.be/cycle_infra)
- [kerbs_and_crossings](https://mapcomplete.osm.be/kerbs_and_crossings)
- [personal](https://mapcomplete.osm.be/personal)

View file

@ -17,6 +17,7 @@ All infrastructure that someone can cycle over, accompanied with questions about
- This layer is shown at zoomlevel **16** and higher
- This layer is needed as dependency for layer [barrier](#barrier)
- This layer is needed as dependency for layer [crossings](#crossings)
- This layer is needed as dependency for layer [kerbs](#kerbs)
@ -28,6 +29,7 @@ All infrastructure that someone can cycle over, accompanied with questions about
- [cycle_infra](https://mapcomplete.osm.be/cycle_infra)
- [kerbs_and_crossings](https://mapcomplete.osm.be/kerbs_and_crossings)
- [personal](https://mapcomplete.osm.be/personal)
@ -42,10 +44,10 @@ 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%3Dcycleway' target='_blank'>cycleway</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:cycleway' target='_blank'>cycleway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dlane' target='_blank'>lane</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:cycleway' target='_blank'>cycleway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dshared_lane' target='_blank'>shared_lane</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:cycleway' target='_blank'>cycleway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dtrack' target='_blank'>track</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:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dresidential' target='_blank'>residential</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dtertiary' target='_blank'>tertiary</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dunclassified' target='_blank'>unclassified</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dprimary' target='_blank'>primary</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dsecondary' target='_blank'>secondary</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dpath' target='_blank'>path</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>
- <a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dcycleway' target='_blank'>cycleway</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:cycleway' target='_blank'>cycleway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dlane' target='_blank'>lane</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:cycleway' target='_blank'>cycleway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dshared_lane' target='_blank'>shared_lane</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:cycleway' target='_blank'>cycleway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dtrack' target='_blank'>track</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:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dresidential' target='_blank'>residential</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dtertiary' target='_blank'>tertiary</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dunclassified' target='_blank'>unclassified</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dprimary' target='_blank'>primary</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dsecondary' target='_blank'>secondary</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dtertiary_link' target='_blank'>tertiary_link</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dprimary_link' target='_blank'>primary_link</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dsecondary_link' target='_blank'>secondary_link</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dservice' target='_blank'>service</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dfootway' target='_blank'>footway</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dpedestrian' target='_blank'>pedestrian</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dliving_street' target='_blank'>living_street</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:highway' target='_blank'>highway</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:highway%3Dpath' target='_blank'>path</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>
[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%20%20%20%20nwr%5B%22cycleway%22%3D%22lane%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22cycleway%22%3D%22shared_lane%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22cycleway%22%3D%22track%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22cycleway%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22residential%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22tertiary%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22unclassified%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22primary%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22secondary%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22bicycle%22%3D%22designated%22%5D%5B%22highway%22%3D%22path%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%22cyclestreet%22%3D%22yes%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22cycleway%22%3D%22lane%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22cycleway%22%3D%22shared_lane%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22cycleway%22%3D%22track%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22cycleway%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22residential%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22tertiary%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22unclassified%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22primary%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22secondary%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22tertiary_link%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22primary_link%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22secondary_link%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22service%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22footway%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22pedestrian%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22highway%22%3D%22living_street%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22bicycle%22%3D%22designated%22%5D%5B%22highway%22%3D%22path%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)

176
Docs/Layers/doctors.md Normal file
View file

@ -0,0 +1,176 @@
doctors
=========
<img src='https://mapcomplete.osm.be/circle:white;./assets/layers/doctors/doctors.svg' height="100px">
- This layer is shown at zoomlevel **13** and higher
#### Themes using this layer
- [healthcare](https://mapcomplete.osm.be/healthcare)
- [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:amenity' target='_blank'>amenity</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:amenity%3Ddoctors' target='_blank'>doctors</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:amenity' target='_blank'>amenity</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:amenity%3Ddentist' target='_blank'>dentist</a>|<a href='https://wiki.openstreetmap.org/wiki/Key:healthcare' target='_blank'>healthcare</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:healthcare%3Dphysiotherapist' target='_blank'>physiotherapist</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22amenity%22%3D%22doctors%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22dentist%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22healthcare%22%3D%22physiotherapist%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/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/healthcare:speciality#values) [healthcare:speciality](https://wiki.openstreetmap.org/wiki/Key:healthcare:speciality) | [string](../SpecialInputElements.md#string) | [general](https://wiki.openstreetmap.org/wiki/Tag:healthcare:speciality%3Dgeneral) [gynaecology](https://wiki.openstreetmap.org/wiki/Tag:healthcare:speciality%3Dgynaecology) [psychiatry](https://wiki.openstreetmap.org/wiki/Tag:healthcare:speciality%3Dpsychiatry) [paediatrics](https://wiki.openstreetmap.org/wiki/Tag:healthcare:speciality%3Dpaediatrics)
### images
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
### 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
### specialty
The question is What is this doctor specialized in?
This rendering asks information about the property [healthcare:speciality](https://wiki.openstreetmap.org/wiki/Key:healthcare:speciality)
This is rendered with This doctor is specialized in {healthcare:speciality}
- This is a general practitioner corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:healthcare:speciality' target='_blank'>healthcare:speciality</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:healthcare:speciality%3Dgeneral' target='_blank'>general</a>
- This is a gynaecologist corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:healthcare:speciality' target='_blank'>healthcare:speciality</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:healthcare:speciality%3Dgynaecology' target='_blank'>gynaecology</a>
- This is a psychiatrist corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:healthcare:speciality' target='_blank'>healthcare:speciality</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:healthcare:speciality%3Dpsychiatry' target='_blank'>psychiatry</a>
- This is a paediatrician corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:healthcare:speciality' target='_blank'>healthcare:speciality</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:healthcare:speciality%3Dpaediatrics' target='_blank'>paediatrics</a>
Only visible if `amenity=doctors` is shown
This document is autogenerated from [assets/layers/doctors/doctors.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/doctors/doctors.json)

File diff suppressed because one or more lines are too long

141
Docs/Layers/hospital.md Normal file
View file

@ -0,0 +1,141 @@
hospital
==========
<img src='https://mapcomplete.osm.be/circle:white;./assets/layers/hospital/hospital.svg' height="100px">
- This layer is shown at zoomlevel **12** and higher
#### Themes using this layer
- [healthcare](https://mapcomplete.osm.be/healthcare)
- [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:amenity' target='_blank'>amenity</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dhospital' target='_blank'>hospital</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22amenity%22%3D%22hospital%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) |
### name
The question is What does the of the hospital ?
This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with Name of the hospital name is {name}
### 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
This document is autogenerated from [assets/layers/hospital/hospital.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/hospital/hospital.json)

398
Docs/Layers/id_presets.md Normal file

File diff suppressed because one or more lines are too long

128
Docs/Layers/kerbs.md Normal file
View file

@ -0,0 +1,128 @@
kerbs
=======
<img src='https://mapcomplete.osm.be/./assets/layers/kerbs/KerbIcon.svg' height="100px">
A layer showing kerbs.
- This layer is shown at zoomlevel **13** and higher
- This layer will automatically load [cycleways_and_roads](./cycleways_and_roads.md) into the layout as it depends on it: a preset snaps to this layer (presets[0])
- This layer will automatically load [kerbs](./kerbs.md) into the layout as it depends on it: a preset snaps to this layer (presets[0])
- This layer is needed as dependency for layer [kerbs](#kerbs)
#### Themes using this layer
- [kerbs_and_crossings](https://mapcomplete.osm.be/kerbs_and_crossings)
- [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:barrier' target='_blank'>barrier</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dkerb' target='_blank'>kerb</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22barrier%22%3D%22kerb%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/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) |
### kerb-type
The question is What is the height of this kerb?
- This kerb is raised (>3 cm) corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:kerb' target='_blank'>kerb</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:kerb%3Draised' target='_blank'>raised</a>
- This kerb is lowered (~3 cm) corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:kerb' target='_blank'>kerb</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:kerb%3Dlowered' target='_blank'>lowered</a>
- This kerb is flush (~0cm) corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:kerb' target='_blank'>kerb</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:kerb%3Dflush' target='_blank'>flush</a>
- There is no kerb here corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:kerb' target='_blank'>kerb</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:kerb%3Dno' target='_blank'>no</a>
- This option cannot be chosen as answer
- There is a kerb of unknown height corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:kerb' target='_blank'>kerb</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:kerb%3Dyes' target='_blank'>yes</a>
- This option cannot be chosen as answer
Only visible if `_geometry:type=Point` is shown
### tactile-paving
The question is Is there tactile paving at this kerb?
- This kerb has tactile paving. corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:tactile_paving' target='_blank'>tactile_paving</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:tactile_paving%3Dyes' target='_blank'>yes</a>
- This kerb does not have tactile paving. corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:tactile_paving' target='_blank'>tactile_paving</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:tactile_paving%3Dno' target='_blank'>no</a>
- This kerb has tactile paving, but it is incorrect corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:tactile_paving' target='_blank'>tactile_paving</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:tactile_paving%3Dincorrect' target='_blank'>incorrect</a>
- This option cannot be chosen as answer
Only visible if `_geometry:type=Point` is shown
### kerb-height
The question is What is the height of this kerb?
This rendering asks information about the property [kerb:height](https://wiki.openstreetmap.org/wiki/Key:kerb:height)
This is rendered with Kerb height: {{kerb:height}}
This document is autogenerated from [assets/layers/kerbs/kerbs.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/kerbs/kerbs.json)

170
Docs/Layers/pharmacy.md Normal file
View file

@ -0,0 +1,170 @@
pharmacy
==========
<img src='https://mapcomplete.osm.be/./assets/layers/pharmacy/pharmacy.svg' height="100px">
- This layer is shown at zoomlevel **13** and higher
#### Themes using this layer
- [healthcare](https://mapcomplete.osm.be/healthcare)
- [personal](https://mapcomplete.osm.be/personal)
- [shops](https://mapcomplete.osm.be/shops)
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:amenity' target='_blank'>amenity</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dpharmacy' target='_blank'>pharmacy</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22amenity%22%3D%22pharmacy%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/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/wheelchair#values) [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) [limited](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited)
### images
This 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
### 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
### wheelchair
The question is Is this pharmacy easy to access on a wheelchair?
- This pharmacy is easy to access on 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>
- This pharmacy is hard to access on 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 pharmacy has limited access 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%3Dlimited' target='_blank'>limited</a>
This document is autogenerated from [assets/layers/pharmacy/pharmacy.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/pharmacy/pharmacy.json)

91
Docs/Layers/shelter.md Normal file
View file

@ -0,0 +1,91 @@
shelter
=========
<img src='https://mapcomplete.osm.be/./assets/layers/shelter/shelter.svg' height="100px">
Layer showing shelter structures
- This layer is shown at zoomlevel **13** and higher
#### Themes using this layer
- [personal](https://mapcomplete.osm.be/personal)
- [transit](https://mapcomplete.osm.be/transit)
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:amenity' target='_blank'>amenity</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dshelter' target='_blank'>shelter</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22amenity%22%3D%22shelter%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/shelter_type#values) [shelter_type](https://wiki.openstreetmap.org/wiki/Key:shelter_type) | [string](../SpecialInputElements.md#string) | [public_transport](https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dpublic_transport) [picnic_shelter](https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dpicnic_shelter) [gazebo](https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dgazebo) [weather_shelter](https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dweather_shelter) [lean_to](https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dlean_to) [pavilion](https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dpavilion) [basic_hut](https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dbasic_hut)
### shelter-type
The question is What kind of shelter is this?
This rendering asks information about the property [shelter_type](https://wiki.openstreetmap.org/wiki/Key:shelter_type)
This is rendered with Shelter type: {shelter_type}
- This is a shelter at a public transport stop. corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:shelter_type' target='_blank'>shelter_type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dpublic_transport' target='_blank'>public_transport</a>
- This is a shelter protecting from rain at a picnic site. corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:shelter_type' target='_blank'>shelter_type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dpicnic_shelter' target='_blank'>picnic_shelter</a>
- This is a gazebo. corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:shelter_type' target='_blank'>shelter_type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dgazebo' target='_blank'>gazebo</a>
- This is a small shelter, primarily intended for short breaks. Usually found in the mountains or alongside roads. corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:shelter_type' target='_blank'>shelter_type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dweather_shelter' target='_blank'>weather_shelter</a>
- This is a shed with 3 walls, primarily intended for camping. corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:shelter_type' target='_blank'>shelter_type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dlean_to' target='_blank'>lean_to</a>
- This is a pavilion corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:shelter_type' target='_blank'>shelter_type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dpavilion' target='_blank'>pavilion</a>
- This is a basic hut, providing basic shelter and sleeping facilities. corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:shelter_type' target='_blank'>shelter_type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dbasic_hut' target='_blank'>basic_hut</a>
This document is autogenerated from [assets/layers/shelter/shelter.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/shelter/shelter.json)

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,172 @@
transit_routes
================
Layer showing bus lines
- This layer is shown at zoomlevel **15** and higher
- Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
#### Themes using this layer
- [personal](https://mapcomplete.osm.be/personal)
- [transit](https://mapcomplete.osm.be/transit)
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:type' target='_blank'>type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:type%3Droute' target='_blank'>route</a>
- <a href='https://wiki.openstreetmap.org/wiki/Key:route' target='_blank'>route</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:route%3Dbus' target='_blank'>bus</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22route%22%3D%22bus%22%5D%5B%22type%22%3D%22route%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/from#values) [from](https://wiki.openstreetmap.org/wiki/Key:from) | [string](../SpecialInputElements.md#string) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/via#values) [via](https://wiki.openstreetmap.org/wiki/Key:via) | [string](../SpecialInputElements.md#string) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/to#values) [to](https://wiki.openstreetmap.org/wiki/Key:to) | [string](../SpecialInputElements.md#string) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/colour#values) [colour](https://wiki.openstreetmap.org/wiki/Key:colour) | [color](../SpecialInputElements.md#color) |
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/network#values) [network](https://wiki.openstreetmap.org/wiki/Key:network) | [string](../SpecialInputElements.md#string) |
[<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) |
### name
The question is What is the name for this bus line? (i.e. Bus XX: From => Via => To)
This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with {name}
### from
The question is What is the starting point for this bus line?
This rendering asks information about the property [from](https://wiki.openstreetmap.org/wiki/Key:from)
This is rendered with This bus line begins at {from}
### via
The question is What is the via point for this bus line?
This rendering asks information about the property [via](https://wiki.openstreetmap.org/wiki/Key:via)
This is rendered with This bus line goes via {via}
### to
The question is What is the ending point for this bus line?
This rendering asks information about the property [to](https://wiki.openstreetmap.org/wiki/Key:to)
This is rendered with This bus line ends at {to}
### colour
The question is What is the colour for this bus line?
This rendering asks information about the property [colour](https://wiki.openstreetmap.org/wiki/Key:colour)
This is rendered with This bus line has the color {colour}
### network
The question is What network does this bus line belong to?
This rendering asks information about the property [network](https://wiki.openstreetmap.org/wiki/Key:network)
This is rendered with This bus line is part of the {network} network
### operator
The question is What company operates this bus line?
This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
This is rendered with This bus line is operated by {operator}
This document is autogenerated from [assets/layers/transit_routes/transit_routes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/transit_routes/transit_routes.json)

View file

@ -0,0 +1,240 @@
transit_stops
===============
<img src='https://mapcomplete.osm.be/./assets/layers/transit_stops/bus_stop.svg' height="100px">
Layer showing different types of transit stops.
- This layer is shown at zoomlevel **15** and higher
#### Themes using this layer
- [personal](https://mapcomplete.osm.be/personal)
- [transit](https://mapcomplete.osm.be/transit)
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%3Dbus_stop' target='_blank'>bus_stop</a>
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22highway%22%3D%22bus_stop%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) | [](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/shelter#values) [shelter](https://wiki.openstreetmap.org/wiki/Key:shelter) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:shelter%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:shelter%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/bench#values) [bench](https://wiki.openstreetmap.org/wiki/Key:bench) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:bench%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:bench%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/bin#values) [bin](https://wiki.openstreetmap.org/wiki/Key:bin) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:bin%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:bin%3Dno)
[<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/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/lit#values) [lit](https://wiki.openstreetmap.org/wiki/Key:lit) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:lit%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:lit%3Dno)
[<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/departures_board#values) [departures_board](https://wiki.openstreetmap.org/wiki/Key:departures_board) | Multiple choice | [realtime](https://wiki.openstreetmap.org/wiki/Tag:departures_board%3Drealtime) [timetable](https://wiki.openstreetmap.org/wiki/Tag:departures_board%3Dtimetable) [interval](https://wiki.openstreetmap.org/wiki/Tag:departures_board%3Dinterval) [no](https://wiki.openstreetmap.org/wiki/Tag:departures_board%3Dno)
### stop_name
The question is What is the name of this stop?
This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with This stop is called <b>{name}</b>
- This stop 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 tagrendering has no question and is thus read-only
### shelter
The question is Does this stop have a shelter?
- This stop has a shelter corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:shelter' target='_blank'>shelter</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shelter%3Dyes' target='_blank'>yes</a>
- This stop does not have a shelter corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:shelter' target='_blank'>shelter</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shelter%3Dno' target='_blank'>no</a>
- This stop has a shelter, that's separately mapped corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:shelter' target='_blank'>shelter</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shelter%3Dseparate' target='_blank'>separate</a>
- This option cannot be chosen as answer
### bench
The question is Does this stop have a bench?
- This stop has a bench corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:bench' target='_blank'>bench</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bench%3Dyes' target='_blank'>yes</a>
- This stop does not have a bench corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:bench' target='_blank'>bench</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bench%3Dno' target='_blank'>no</a>
- This stop has a bench, that's separately mapped corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:bench' target='_blank'>bench</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bench%3Dseparate' target='_blank'>separate</a>
- This option cannot be chosen as answer
### bin
The question is Does this stop have a bin?
- This stop has a bin corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:bin' target='_blank'>bin</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bin%3Dyes' target='_blank'>yes</a>
- This stop does not have a bin corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:bin' target='_blank'>bin</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bin%3Dno' target='_blank'>no</a>
- This stop has a bin, that's separately mapped corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:bin' target='_blank'>bin</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:bin%3Dseparate' target='_blank'>separate</a>
- 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>
### tactile_paving
The question is Does this stop have tactile paving?
- This stop has tactile paving corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:tactile_paving' target='_blank'>tactile_paving</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:tactile_paving%3Dyes' target='_blank'>yes</a>
- This stop does not have tactile paving corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:tactile_paving' target='_blank'>tactile_paving</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:tactile_paving%3Dno' target='_blank'>no</a>
### lit
The question is Is this stop lit?
- This stop is lit corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:lit' target='_blank'>lit</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:lit%3Dyes' target='_blank'>yes</a>
- This stop is not lit corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:lit' target='_blank'>lit</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:lit%3Dno' target='_blank'>no</a>
### departures_board
This tagrendering has no question and is thus read-only
- This stop has a departures board of unknown type corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:departures_board' target='_blank'>departures_board</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:departures_board%3Dyes' target='_blank'>yes</a>
- This option cannot be chosen as answer
- This stop has a board showing realtime departure information corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:departures_board' target='_blank'>departures_board</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:departures_board%3Drealtime' target='_blank'>realtime</a>
- This stop has a board showing realtime departure information corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:passenger_information_display' target='_blank'>passenger_information_display</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:passenger_information_display%3Dyes' target='_blank'>yes</a>
- This option cannot be chosen as answer
- This stop has a timetable showing regular departures corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:departures_board' target='_blank'>departures_board</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:departures_board%3Dtimetable' target='_blank'>timetable</a>
- This stop has a timetable containing just the interval between departures corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:departures_board' target='_blank'>departures_board</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:departures_board%3Dinterval' target='_blank'>interval</a>
- This stop does not have a departures board corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:departures_board' target='_blank'>departures_board</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:departures_board%3Dno' target='_blank'>no</a>
### contained_routes
This tagrendering has no question and is thus read-only
Only visible if `_contained_routes~^..*$` is shown
This document is autogenerated from [assets/layers/transit_stops/transit_stops.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/transit_stops/transit_stops.json)

View file

@ -322,7 +322,7 @@ Every field is documented in the source code itself - you can find them here:
- [The top level `LayoutConfig`](https://github.com/pietervdvn/MapComplete/blob/master/Models/ThemeConfig/Json/LayoutConfigJson.ts)
- [A layer object `LayerConfig`](https://github.com/pietervdvn/MapComplete/blob/master/Models/ThemeConfig/Json/LayerConfigJson.ts)
- [The `TagRendering`](https://github.com/pietervdvn/MapComplete/blob/master/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson.ts)
- [The `TagRendering`](https://github.com/pietervdvn/MapComplete/blob/master/Models/ThemeConfig/Json/TagRenderingConfigJson.ts)
- At last, the exact semantics of tags are documented [here](Tags_format.md)
A JSON schema file is available in `Docs/Schemas` - use `LayoutConfig.schema.json` to validate a theme file.

View file

@ -60,6 +60,41 @@
"description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways and roads showing features with this tag",
"value": "secondary"
},
{
"key": "highway",
"description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways and roads showing features with this tag",
"value": "tertiary_link"
},
{
"key": "highway",
"description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways and roads showing features with this tag",
"value": "primary_link"
},
{
"key": "highway",
"description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways and roads showing features with this tag",
"value": "secondary_link"
},
{
"key": "highway",
"description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways and roads showing features with this tag",
"value": "service"
},
{
"key": "highway",
"description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways and roads showing features with this tag",
"value": "footway"
},
{
"key": "highway",
"description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways and roads showing features with this tag",
"value": "pedestrian"
},
{
"key": "highway",
"description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways and roads showing features with this tag",
"value": "living_street"
},
{
"key": "highway",
"description": "The MapComplete theme Bicycle infrastructure has a layer Cycleways and roads showing features with this tag",

View file

@ -0,0 +1,194 @@
{
"data_format": 1,
"project": {
"name": "MapComplete Healthcare",
"description": "On this map, various healthcare related items are shown",
"project_url": "https://mapcomplete.osm.be/healthcare",
"doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
"icon_url": "https://mapcomplete.osm.be/assets/layers/doctors/doctors.svg",
"contact_name": "Pieter Vander Vennet, MapComplete",
"contact_email": "pietervdvn@posteo.net"
},
"tags": [
{
"key": "amenity",
"description": "The MapComplete theme Healthcare has a layer doctors showing features with this tag",
"value": "doctors"
},
{
"key": "amenity",
"description": "The MapComplete theme Healthcare has a layer doctors showing features with this tag",
"value": "dentist"
},
{
"key": "healthcare",
"description": "The MapComplete theme Healthcare has a layer doctors showing features with this tag",
"value": "physiotherapist"
},
{
"key": "image",
"description": "The layer 'doctors 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 'doctors 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 'doctors 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 'doctors 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 'doctors' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "phone",
"description": "Layer 'doctors' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "contact:phone",
"description": "Layer 'doctors' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "email",
"description": "Layer 'doctors' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "contact:email",
"description": "Layer 'doctors' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "website",
"description": "Layer 'doctors' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "contact:website",
"description": "Layer 'doctors' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "healthcare:speciality",
"description": "Layer 'doctors' shows and asks freeform values for key 'healthcare:speciality' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "healthcare:speciality",
"description": "Layer 'doctors' shows healthcare:speciality=general with a fixed text, namely 'This is a general practitioner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')",
"value": "general"
},
{
"key": "healthcare:speciality",
"description": "Layer 'doctors' shows healthcare:speciality=gynaecology with a fixed text, namely 'This is a gynaecologist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')",
"value": "gynaecology"
},
{
"key": "healthcare:speciality",
"description": "Layer 'doctors' shows healthcare:speciality=psychiatry with a fixed text, namely 'This is a psychiatrist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')",
"value": "psychiatry"
},
{
"key": "healthcare:speciality",
"description": "Layer 'doctors' shows healthcare:speciality=paediatrics with a fixed text, namely 'This is a paediatrician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')",
"value": "paediatrics"
},
{
"key": "amenity",
"description": "The MapComplete theme Healthcare has a layer Hospital showing features with this tag",
"value": "hospital"
},
{
"key": "name",
"description": "Layer 'Hospital' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "phone",
"description": "Layer 'Hospital' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "contact:phone",
"description": "Layer 'Hospital' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "email",
"description": "Layer 'Hospital' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "contact:email",
"description": "Layer 'Hospital' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "website",
"description": "Layer 'Hospital' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "contact:website",
"description": "Layer 'Hospital' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "amenity",
"description": "The MapComplete theme Healthcare has a layer pharmacy showing features with this tag",
"value": "pharmacy"
},
{
"key": "image",
"description": "The layer 'pharmacy 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 'pharmacy 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 'pharmacy 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 'pharmacy 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 'pharmacy' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "phone",
"description": "Layer 'pharmacy' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "contact:phone",
"description": "Layer 'pharmacy' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "email",
"description": "Layer 'pharmacy' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "contact:email",
"description": "Layer 'pharmacy' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "website",
"description": "Layer 'pharmacy' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "contact:website",
"description": "Layer 'pharmacy' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Healthcare')"
},
{
"key": "wheelchair",
"description": "Layer 'pharmacy' shows wheelchair=yes with a fixed text, namely 'This pharmacy is easy to access on a wheelchair' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'pharmacy' shows wheelchair=no with a fixed text, namely 'This pharmacy is hard to access on a wheelchair' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')",
"value": "no"
},
{
"key": "wheelchair",
"description": "Layer 'pharmacy' shows wheelchair=limited with a fixed text, namely 'This pharmacy has limited access for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')",
"value": "limited"
}
]
}

View file

@ -0,0 +1,726 @@
{
"data_format": 1,
"project": {
"name": "MapComplete Kerbs and crossings",
"description": "A map showing kerbs and crossings",
"project_url": "https://mapcomplete.osm.be/kerbs_and_crossings",
"doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
"icon_url": "https://mapcomplete.osm.be/assets/layers/kerbs/KerbIcon.svg",
"contact_name": "Pieter Vander Vennet, Robin van der Linde",
"contact_email": "pietervdvn@posteo.net"
},
"tags": [
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "cycleway"
},
{
"key": "cycleway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "lane"
},
{
"key": "cycleway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "shared_lane"
},
{
"key": "cycleway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "track"
},
{
"key": "cyclestreet",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "yes"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "residential"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "tertiary"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "unclassified"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "primary"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "secondary"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "tertiary_link"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "primary_link"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "secondary_link"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "service"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "footway"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "pedestrian"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "living_street"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "path"
},
{
"key": "bicycle",
"description": "The MapComplete theme Kerbs and crossings has a layer Cycleways and roads showing features with this tag",
"value": "designated"
},
{
"key": "cycleway",
"description": "Layer 'Cycleways and roads' shows cycleway=shared_lane with a fixed text, namely 'There is a shared lane' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "shared_lane"
},
{
"key": "cycleway",
"description": "Layer 'Cycleways and roads' shows cycleway=lane with a fixed text, namely 'There is a lane next to the road (separated with paint)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "lane"
},
{
"key": "cycleway",
"description": "Layer 'Cycleways and roads' shows cycleway=track with a fixed text, namely 'There is a track, but no cycleway drawn separately from this road on the map.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "track"
},
{
"key": "cycleway",
"description": "Layer 'Cycleways and roads' shows cycleway=separate with a fixed text, namely 'There is a separately drawn cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "separate"
},
{
"key": "cycleway",
"description": "Layer 'Cycleways and roads' shows cycleway=no with a fixed text, namely 'There is no cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "cycleway",
"description": "Layer 'Cycleways and roads' shows cycleway=no with a fixed text, namely 'There is no cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "lit",
"description": "Layer 'Cycleways and roads' shows lit=yes with a fixed text, namely 'This street is lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "lit",
"description": "Layer 'Cycleways and roads' shows lit=no with a fixed text, namely 'This road is not lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "lit",
"description": "Layer 'Cycleways and roads' shows lit=sunset-sunrise with a fixed text, namely 'This road is lit at night' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "sunset-sunrise"
},
{
"key": "lit",
"description": "Layer 'Cycleways and roads' shows lit=24/7 with a fixed text, namely 'This road is lit 24/7' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "24/7"
},
{
"key": "cyclestreet",
"description": "Layer 'Cycleways and roads' shows cyclestreet=yes with a fixed text, namely 'This is a cyclestreet, and a 30km/h zone.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "cyclestreet",
"description": "Layer 'Cycleways and roads' shows cyclestreet=yes with a fixed text, namely 'This is a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "cyclestreet",
"description": "Layer 'Cycleways and roads' shows with a fixed text, namely 'This is not a cyclestreet.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings') Picking this answer will delete the key cyclestreet.",
"value": ""
},
{
"key": "maxspeed",
"description": "Layer 'Cycleways and roads' shows and asks freeform values for key 'maxspeed' (in the MapComplete.osm.be theme 'Kerbs and crossings')"
},
{
"key": "maxspeed",
"description": "Layer 'Cycleways and roads' shows maxspeed=20 with a fixed text, namely 'The maximum speed is 20 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "20"
},
{
"key": "maxspeed",
"description": "Layer 'Cycleways and roads' shows maxspeed=30 with a fixed text, namely 'The maximum speed is 30 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "30"
},
{
"key": "maxspeed",
"description": "Layer 'Cycleways and roads' shows maxspeed=50 with a fixed text, namely 'The maximum speed is 50 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "50"
},
{
"key": "maxspeed",
"description": "Layer 'Cycleways and roads' shows maxspeed=70 with a fixed text, namely 'The maximum speed is 70 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "70"
},
{
"key": "maxspeed",
"description": "Layer 'Cycleways and roads' shows maxspeed=90 with a fixed text, namely 'The maximum speed is 90 km/h' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "90"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows and asks freeform values for key 'cycleway:surface' (in the MapComplete.osm.be theme 'Kerbs and crossings')"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=unpaved with a fixed text, namely 'This cycleway is unpaved' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "unpaved"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=paved with a fixed text, namely 'This cycleway is paved' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "paved"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=asphalt with a fixed text, namely 'This cycleway is made of asphalt' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "asphalt"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=paving_stones with a fixed text, namely 'This cycleway is made of smooth paving stones' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "paving_stones"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=concrete with a fixed text, namely 'This cycleway is made of concrete' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "concrete"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=cobblestone with a fixed text, namely 'This cycleway is made of cobblestone (unhewn or sett)' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "cobblestone"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=unhewn_cobblestone with a fixed text, namely 'This cycleway is made of raw, natural cobblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "unhewn_cobblestone"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=sett with a fixed text, namely 'This cycleway is made of flat, square cobblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "sett"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=wood with a fixed text, namely 'This cycleway is made of wood' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "wood"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=gravel with a fixed text, namely 'This cycleway is made of gravel' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "gravel"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=fine_gravel with a fixed text, namely 'This cycleway is made of fine gravel' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "fine_gravel"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=pebblestone with a fixed text, namely 'This cycleway is made of pebblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "pebblestone"
},
{
"key": "cycleway:surface",
"description": "Layer 'Cycleways and roads' shows cycleway:surface=ground with a fixed text, namely 'This cycleway is made from raw ground' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "ground"
},
{
"key": "cycleway:smoothness",
"description": "Layer 'Cycleways and roads' shows cycleway:smoothness=excellent with a fixed text, namely 'Usable for thin rollers: rollerblade, skateboard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "excellent"
},
{
"key": "cycleway:smoothness",
"description": "Layer 'Cycleways and roads' shows cycleway:smoothness=good with a fixed text, namely 'Usable for thin wheels: racing bike' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "good"
},
{
"key": "cycleway:smoothness",
"description": "Layer 'Cycleways and roads' shows cycleway:smoothness=intermediate with a fixed text, namely 'Usable for normal wheels: city bike, wheelchair, scooter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "intermediate"
},
{
"key": "cycleway:smoothness",
"description": "Layer 'Cycleways and roads' shows cycleway:smoothness=bad with a fixed text, namely 'Usable for robust wheels: trekking bike, car, rickshaw' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "bad"
},
{
"key": "cycleway:smoothness",
"description": "Layer 'Cycleways and roads' shows cycleway:smoothness=very_bad with a fixed text, namely 'Usable for vehicles with high clearance: light duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "very_bad"
},
{
"key": "cycleway:smoothness",
"description": "Layer 'Cycleways and roads' shows cycleway:smoothness=horrible with a fixed text, namely 'Usable for off-road vehicles: heavy duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "horrible"
},
{
"key": "cycleway:smoothness",
"description": "Layer 'Cycleways and roads' shows cycleway:smoothness=very_horrible with a fixed text, namely 'Usable for specialized off-road vehicles: tractor, ATV' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "very_horrible"
},
{
"key": "cycleway:smoothness",
"description": "Layer 'Cycleways and roads' shows cycleway:smoothness=impassable with a fixed text, namely 'Impassable / No wheeled vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "impassable"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows and asks freeform values for key 'surface' (in the MapComplete.osm.be theme 'Kerbs and crossings')"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=unpaved with a fixed text, namely 'This cycleway is unhardened' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "unpaved"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=paved with a fixed text, namely 'This cycleway is paved' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "paved"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=asphalt with a fixed text, namely 'This cycleway is made of asphalt' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "asphalt"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=paving_stones with a fixed text, namely 'This cycleway is made of smooth paving stones' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "paving_stones"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=concrete with a fixed text, namely 'This cycleway is made of concrete' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "concrete"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=cobblestone with a fixed text, namely 'This cycleway is made of cobblestone (unhewn or sett)' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "cobblestone"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=unhewn_cobblestone with a fixed text, namely 'This cycleway is made of raw, natural cobblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "unhewn_cobblestone"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=sett with a fixed text, namely 'This cycleway is made of flat, square cobblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "sett"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=wood with a fixed text, namely 'This cycleway is made of wood' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "wood"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=gravel with a fixed text, namely 'This cycleway is made of gravel' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "gravel"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=fine_gravel with a fixed text, namely 'This cycleway is made of fine gravel' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "fine_gravel"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=pebblestone with a fixed text, namely 'This cycleway is made of pebblestone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "pebblestone"
},
{
"key": "surface",
"description": "Layer 'Cycleways and roads' shows surface=ground with a fixed text, namely 'This cycleway is made from raw ground' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "ground"
},
{
"key": "smoothness",
"description": "Layer 'Cycleways and roads' shows smoothness=excellent with a fixed text, namely 'Usable for thin rollers: rollerblade, skateboard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "excellent"
},
{
"key": "smoothness",
"description": "Layer 'Cycleways and roads' shows smoothness=good with a fixed text, namely 'Usable for thin wheels: racing bike' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "good"
},
{
"key": "smoothness",
"description": "Layer 'Cycleways and roads' shows smoothness=intermediate with a fixed text, namely 'Usable for normal wheels: city bike, wheelchair, scooter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "intermediate"
},
{
"key": "smoothness",
"description": "Layer 'Cycleways and roads' shows smoothness=bad with a fixed text, namely 'Usable for robust wheels: trekking bike, car, rickshaw' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "bad"
},
{
"key": "smoothness",
"description": "Layer 'Cycleways and roads' shows smoothness=very_bad with a fixed text, namely 'Usable for vehicles with high clearance: light duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "very_bad"
},
{
"key": "smoothness",
"description": "Layer 'Cycleways and roads' shows smoothness=horrible with a fixed text, namely 'Usable for off-road vehicles: heavy duty off-road vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "horrible"
},
{
"key": "smoothness",
"description": "Layer 'Cycleways and roads' shows smoothness=very_horrible with a fixed text, namely 'Usable for specialized off-road vehicles: tractor, ATV' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "very_horrible"
},
{
"key": "smoothness",
"description": "Layer 'Cycleways and roads' shows smoothness=impassable with a fixed text, namely 'Impassable / No wheeled vehicle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "impassable"
},
{
"key": "width:carriageway",
"description": "Layer 'Cycleways and roads' shows and asks freeform values for key 'width:carriageway' (in the MapComplete.osm.be theme 'Kerbs and crossings')"
},
{
"key": "cycleway:traffic_sign",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7 with a fixed text, namely 'Compulsory cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D7"
},
{
"key": "cycleway:traffic_sign",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign~^BE:D7;.*$ with a fixed text, namely 'Compulsory cycleway (with supplementary sign)<br>' (in the MapComplete.osm.be theme 'Kerbs and crossings')"
},
{
"key": "cycleway:traffic_sign",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D9 with a fixed text, namely 'Segregated foot/cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D9"
},
{
"key": "cycleway:traffic_sign",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D10 with a fixed text, namely 'Unsegregated foot/cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D10"
},
{
"key": "cycleway:traffic_sign",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=none with a fixed text, namely 'No traffic sign present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "none"
},
{
"key": "traffic_sign",
"description": "Layer 'Cycleways and roads' shows traffic_sign=BE:D7 with a fixed text, namely 'Compulsory cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D7"
},
{
"key": "traffic_sign",
"description": "Layer 'Cycleways and roads' shows traffic_sign~^BE:D7;.*$ with a fixed text, namely 'Compulsory cycleway (with supplementary sign)<br>' (in the MapComplete.osm.be theme 'Kerbs and crossings')"
},
{
"key": "traffic_sign",
"description": "Layer 'Cycleways and roads' shows traffic_sign=BE:D9 with a fixed text, namely 'Segregated foot/cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D9"
},
{
"key": "traffic_sign",
"description": "Layer 'Cycleways and roads' shows traffic_sign=BE:D10 with a fixed text, namely 'Unsegregated foot/cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D10"
},
{
"key": "traffic_sign",
"description": "Layer 'Cycleways and roads' shows traffic_sign=NL:G11 with a fixed text, namely 'Compulsory cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "NL:G11"
},
{
"key": "traffic_sign",
"description": "Layer 'Cycleways and roads' shows traffic_sign=NL:G12a with a fixed text, namely 'Compulsory (moped)cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "NL:G12a"
},
{
"key": "traffic_sign",
"description": "Layer 'Cycleways and roads' shows traffic_sign=NL:G13 with a fixed text, namely 'Non-compulsory cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "NL:G13"
},
{
"key": "traffic_sign",
"description": "Layer 'Cycleways and roads' shows traffic_sign=none with a fixed text, namely 'No traffic sign present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "none"
},
{
"key": "cycleway:traffic_sign",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M6 with a fixed text, namely 'Mopeds must use the cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D7;BE:M6"
},
{
"key": "cycleway:traffic_sign",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M13 with a fixed text, namely 'Speedpedelecs must use the cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D7;BE:M13"
},
{
"key": "cycleway:traffic_sign",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M14 with a fixed text, namely 'Mopeds and speedpedelecs must use the cycleway' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D7;BE:M14"
},
{
"key": "cycleway:traffic_sign",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M7 with a fixed text, namely 'Mopeds are not allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D7;BE:M7"
},
{
"key": "cycleway:traffic_sign",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M15 with a fixed text, namely 'Speedpedelecs are not allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D7;BE:M15"
},
{
"key": "cycleway:traffic_sign",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign=BE:D7;BE:M16 with a fixed text, namely 'Mopeds and speedpedelecs are not allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "BE:D7;BE:M16"
},
{
"key": "cycleway:traffic_sign:supplementary",
"description": "Layer 'Cycleways and roads' shows cycleway:traffic_sign:supplementary=none with a fixed text, namely 'No supplementary traffic sign present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "none"
},
{
"key": "cycleway:buffer",
"description": "Layer 'Cycleways and roads' shows and asks freeform values for key 'cycleway:buffer' (in the MapComplete.osm.be theme 'Kerbs and crossings')"
},
{
"key": "cycleway:separation",
"description": "Layer 'Cycleways and roads' shows cycleway:separation=dashed_line with a fixed text, namely 'This cycleway is separated by a dashed line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "dashed_line"
},
{
"key": "cycleway:separation",
"description": "Layer 'Cycleways and roads' shows cycleway:separation=solid_line with a fixed text, namely 'This cycleway is separated by a solid line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "solid_line"
},
{
"key": "cycleway:separation",
"description": "Layer 'Cycleways and roads' shows cycleway:separation=parking_lane with a fixed text, namely 'This cycleway is separated by a parking lane' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "parking_lane"
},
{
"key": "cycleway:separation",
"description": "Layer 'Cycleways and roads' shows cycleway:separation=kerb with a fixed text, namely 'This cycleway is separated by a kerb' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "kerb"
},
{
"key": "separation",
"description": "Layer 'Cycleways and roads' shows separation=dashed_line with a fixed text, namely 'This cycleway is separated by a dashed line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "dashed_line"
},
{
"key": "separation",
"description": "Layer 'Cycleways and roads' shows separation=solid_line with a fixed text, namely 'This cycleway is separated by a solid line' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "solid_line"
},
{
"key": "separation",
"description": "Layer 'Cycleways and roads' shows separation=parking_lane with a fixed text, namely 'This cycleway is separated by a parking lane' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "parking_lane"
},
{
"key": "separation",
"description": "Layer 'Cycleways and roads' shows separation=kerb with a fixed text, namely 'This cycleway is separated by a kerb' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "kerb"
},
{
"key": "highway",
"description": "The MapComplete theme Kerbs and crossings has a layer Crossings showing features with this tag",
"value": "crossing"
},
{
"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')",
"value": "uncontrolled"
},
{
"key": "crossing",
"description": "Layer 'Crossings' shows crossing=traffic_signals with a fixed text, namely 'Crossing with traffic signals' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "traffic_signals"
},
{
"key": "crossing",
"description": "Layer 'Crossings' shows crossing=zebra with a fixed text, namely 'Zebra crossing' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "zebra"
},
{
"key": "crossing",
"description": "Layer 'Crossings' shows crossing=unmarked with a fixed text, namely 'Crossing without crossing markings' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "unmarked"
},
{
"key": "crossing_ref",
"description": "Layer 'Crossings' shows crossing_ref=zebra with a fixed text, namely 'This is a zebra crossing' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "zebra"
},
{
"key": "crossing_ref",
"description": "Layer 'Crossings' shows with a fixed text, namely 'This is not a zebra crossing' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings') Picking this answer will delete the key crossing_ref.",
"value": ""
},
{
"key": "bicycle",
"description": "Layer 'Crossings' shows bicycle=yes with a fixed text, namely 'A cyclist can use this crossing' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "bicycle",
"description": "Layer 'Crossings' shows bicycle=no with a fixed text, namely 'A cyclist can not use this crossing' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "crossing:island",
"description": "Layer 'Crossings' shows crossing:island=yes with a fixed text, namely 'This crossing has an island in the middle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "crossing:island",
"description": "Layer 'Crossings' shows crossing:island=no with a fixed text, namely 'This crossing does not have an island in the middle' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "tactile_paving",
"description": "Layer 'Crossings' shows tactile_paving=yes with a fixed text, namely 'This crossing has tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "tactile_paving",
"description": "Layer 'Crossings' shows tactile_paving=no with a fixed text, namely 'This crossing does not have tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "tactile_paving",
"description": "Layer 'Crossings' shows tactile_paving=incorrect with a fixed text, namely 'This crossing has tactile paving, but is not correct' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "incorrect"
},
{
"key": "button_operated",
"description": "Layer 'Crossings' shows button_operated=yes with a fixed text, namely 'This traffic light has 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": "yes"
},
{
"key": "button_operated",
"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": "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')",
"value": "yes"
},
{
"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')",
"value": "yes"
},
{
"key": "red_turn:right:bicycle",
"description": "Layer 'Crossings' shows red_turn:right:bicycle=no with a fixed text, namely 'A cyclist can not 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')",
"value": "no"
},
{
"key": "red_turn:straight:bicycle",
"description": "Layer 'Crossings' shows red_turn:straight:bicycle=yes with a fixed text, namely 'A cyclist can go straight on if the light is red' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "red_turn:straight:bicycle",
"description": "Layer 'Crossings' shows red_turn:straight:bicycle=yes with a fixed text, namely 'A cyclist can go straight on if the light is red' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "red_turn:straight:bicycle",
"description": "Layer 'Crossings' shows red_turn:straight:bicycle=no with a fixed text, namely 'A cyclist can not go straight on if the light is red' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "barrier",
"description": "The MapComplete theme Kerbs and crossings has a layer Kerbs showing features with this tag",
"value": "kerb"
},
{
"key": "kerb",
"description": "Layer 'Kerbs' shows kerb=raised with a fixed text, namely 'This kerb is raised (>3 cm)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "raised"
},
{
"key": "kerb",
"description": "Layer 'Kerbs' shows kerb=lowered with a fixed text, namely 'This kerb is lowered (~3 cm)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "lowered"
},
{
"key": "kerb",
"description": "Layer 'Kerbs' shows kerb=flush with a fixed text, namely 'This kerb is flush (~0cm)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "flush"
},
{
"key": "kerb",
"description": "Layer 'Kerbs' shows kerb=no with a fixed text, namely 'There is no kerb here' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "kerb",
"description": "Layer 'Kerbs' shows kerb=yes with a fixed text, namely 'There is a kerb of unknown height' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "tactile_paving",
"description": "Layer 'Kerbs' shows tactile_paving=yes with a fixed text, namely 'This kerb has tactile paving.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "yes"
},
{
"key": "tactile_paving",
"description": "Layer 'Kerbs' shows tactile_paving=no with a fixed text, namely 'This kerb does not have tactile paving.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "no"
},
{
"key": "tactile_paving",
"description": "Layer 'Kerbs' shows tactile_paving=incorrect with a fixed text, namely 'This kerb has tactile paving, but it is incorrect' (in the MapComplete.osm.be theme 'Kerbs and crossings')",
"value": "incorrect"
},
{
"key": "kerb:height",
"description": "Layer 'Kerbs' shows and asks freeform values for key 'kerb:height' (in the MapComplete.osm.be theme 'Kerbs and crossings')"
}
]
}

View file

@ -3903,6 +3903,41 @@
"description": "The MapComplete theme Personal theme has a layer Cycleways and roads showing features with this tag",
"value": "secondary"
},
{
"key": "highway",
"description": "The MapComplete theme Personal theme has a layer Cycleways and roads showing features with this tag",
"value": "tertiary_link"
},
{
"key": "highway",
"description": "The MapComplete theme Personal theme has a layer Cycleways and roads showing features with this tag",
"value": "primary_link"
},
{
"key": "highway",
"description": "The MapComplete theme Personal theme has a layer Cycleways and roads showing features with this tag",
"value": "secondary_link"
},
{
"key": "highway",
"description": "The MapComplete theme Personal theme has a layer Cycleways and roads showing features with this tag",
"value": "service"
},
{
"key": "highway",
"description": "The MapComplete theme Personal theme has a layer Cycleways and roads showing features with this tag",
"value": "footway"
},
{
"key": "highway",
"description": "The MapComplete theme Personal theme has a layer Cycleways and roads showing features with this tag",
"value": "pedestrian"
},
{
"key": "highway",
"description": "The MapComplete theme Personal theme has a layer Cycleways and roads showing features with this tag",
"value": "living_street"
},
{
"key": "highway",
"description": "The MapComplete theme Personal theme has a layer Cycleways and roads showing features with this tag",
@ -5617,6 +5652,55 @@
"key": "wikipedia",
"description": "The layer 'Information boards 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": "barrier",
"description": "The MapComplete theme Personal theme has a layer Kerbs showing features with this tag",
"value": "kerb"
},
{
"key": "kerb",
"description": "Layer 'Kerbs' shows kerb=raised with a fixed text, namely 'This kerb is raised (>3 cm)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "raised"
},
{
"key": "kerb",
"description": "Layer 'Kerbs' shows kerb=lowered with a fixed text, namely 'This kerb is lowered (~3 cm)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "lowered"
},
{
"key": "kerb",
"description": "Layer 'Kerbs' shows kerb=flush with a fixed text, namely 'This kerb is flush (~0cm)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "flush"
},
{
"key": "kerb",
"description": "Layer 'Kerbs' shows kerb=no with a fixed text, namely 'There is no kerb here' (in the MapComplete.osm.be theme 'Personal theme')",
"value": "no"
},
{
"key": "kerb",
"description": "Layer 'Kerbs' shows kerb=yes with a fixed text, namely 'There is a kerb of unknown height' (in the MapComplete.osm.be theme 'Personal theme')",
"value": "yes"
},
{
"key": "tactile_paving",
"description": "Layer 'Kerbs' shows tactile_paving=yes with a fixed text, namely 'This kerb has tactile paving.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "yes"
},
{
"key": "tactile_paving",
"description": "Layer 'Kerbs' shows tactile_paving=no with a fixed text, namely 'This kerb does not have tactile paving.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "no"
},
{
"key": "tactile_paving",
"description": "Layer 'Kerbs' shows tactile_paving=incorrect with a fixed text, namely 'This kerb has tactile paving, but it is incorrect' (in the MapComplete.osm.be theme 'Personal theme')",
"value": "incorrect"
},
{
"key": "kerb:height",
"description": "Layer 'Kerbs' shows and asks freeform values for key 'kerb:height' (in the MapComplete.osm.be theme 'Personal theme')"
},
{
"key": "tourism",
"description": "The MapComplete theme Personal theme has a layer Maps showing features with this tag",
@ -6650,27 +6734,43 @@
},
{
"key": "shop",
"description": "Layer 'Shop' shows and asks freeform values for key 'shop' (in the MapComplete.osm.be theme 'Personal theme')"
"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 'Personal theme')",
"value": "agrarian"
},
{
"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 'Personal theme')",
"value": "convenience"
"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 'Personal theme')",
"value": "alcohol"
},
{
"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 'Personal theme')",
"value": "supermarket"
"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 'Personal theme')",
"value": "anime"
},
{
"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 'Personal theme')",
"value": "clothes"
"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 'Personal theme')",
"value": "antiques"
},
{
"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 'Personal theme')",
"value": "hairdresser"
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"value": "bag"
},
{
"key": "shop",
@ -6679,29 +6779,786 @@
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=car_repair with a fixed text, namely 'Car repair (garage)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"value": "car_repair"
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=car with a fixed text, namely 'Car dealer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "car"
"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 'Personal theme')",
"value": "caravan"
},
{
"key": "phone",
"description": "Layer 'Shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')"
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"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 'Personal theme')",
"value": "wine"
},
{
"key": "opening_hours",
"description": "Layer 'Shop' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Personal theme')"
},
{
"key": "website",
"description": "Layer 'Shop' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Personal theme')"
},
{
"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 'Personal theme')"
},
{
"key": "email",
"description": "Layer 'Shop' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Personal theme')"
},
{
"key": "opening_hours",
"description": "Layer 'Shop' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Personal theme')"
"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 'Personal theme')"
},
{
"key": "phone",
"description": "Layer 'Shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')"
},
{
"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 'Personal theme')"
},
{
"key": "payment:cash",

View file

@ -478,27 +478,43 @@
},
{
"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')"
"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=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"
"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=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"
"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=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"
"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=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"
"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",
@ -507,29 +523,786 @@
},
{
"key": "shop",
"description": "Layer 'Dog-friendly shops' shows shop=car_repair with a fixed text, namely 'Car repair (garage)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"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=car with a fixed text, namely 'Car dealer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')",
"value": "car"
"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": "phone",
"description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')"
"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')"
},
{
"key": "website",
"description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')"
},
{
"key": "contact:website",
"description": "Layer 'Dog-friendly shops' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')"
},
{
"key": "email",
"description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')"
},
{
"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')"
"key": "contact:email",
"description": "Layer 'Dog-friendly shops' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')"
},
{
"key": "phone",
"description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')"
},
{
"key": "contact:phone",
"description": "Layer 'Dog-friendly shops' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities')"
},
{
"key": "payment:cash",

View file

@ -36,27 +36,43 @@
},
{
"key": "shop",
"description": "Layer 'Shop' shows and asks freeform values for key 'shop' (in the MapComplete.osm.be theme 'Open Shop Map')"
"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=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"
"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=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"
"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=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"
"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=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"
"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",
@ -65,29 +81,786 @@
},
{
"key": "shop",
"description": "Layer 'Shop' shows shop=car_repair with a fixed text, namely 'Car repair (garage)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"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=car with a fixed text, namely 'Car dealer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map')",
"value": "car"
"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": "phone",
"description": "Layer 'Shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Open Shop Map')"
"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')"
},
{
"key": "website",
"description": "Layer 'Shop' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Open Shop Map')"
},
{
"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 'Open Shop Map')"
},
{
"key": "email",
"description": "Layer 'Shop' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Open Shop Map')"
},
{
"key": "opening_hours",
"description": "Layer 'Shop' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Open Shop Map')"
"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 'Open Shop Map')"
},
{
"key": "phone",
"description": "Layer 'Shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Open Shop Map')"
},
{
"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 'Open Shop Map')"
},
{
"key": "payment:cash",

View file

@ -0,0 +1,370 @@
{
"data_format": 1,
"project": {
"name": "MapComplete Bus routes",
"description": "Plan your trip with the help of the public transport system",
"project_url": "https://mapcomplete.osm.be/transit",
"doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
"icon_url": "https://mapcomplete.osm.be/assets/layers/transit_stops/bus_stop.svg",
"contact_name": "Pieter Vander Vennet, Robin van der Linde",
"contact_email": "pietervdvn@posteo.net"
},
"tags": [
{
"key": "highway",
"description": "The MapComplete theme Bus routes has a layer Transit Stops showing features with this tag",
"value": "bus_stop"
},
{
"key": "name",
"description": "Layer 'Transit Stops' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "noname",
"description": "Layer 'Transit Stops' shows noname=yes with a fixed text, namely 'This stop has no name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "yes"
},
{
"key": "name",
"description": "Layer 'Transit Stops' shows noname=yes with a fixed text, namely 'This stop has no name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes') Picking this answer will delete the key name.",
"value": ""
},
{
"key": "image",
"description": "The layer 'Transit Stops 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 'Transit Stops 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 'Transit Stops 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 'Transit Stops 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": "shelter",
"description": "Layer 'Transit Stops' shows shelter=yes with a fixed text, namely 'This stop has a shelter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "yes"
},
{
"key": "shelter",
"description": "Layer 'Transit Stops' shows shelter=no with a fixed text, namely 'This stop does not have a shelter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "no"
},
{
"key": "shelter",
"description": "Layer 'Transit Stops' shows shelter=separate with a fixed text, namely 'This stop has a shelter, that's separately mapped' (in the MapComplete.osm.be theme 'Bus routes')",
"value": "separate"
},
{
"key": "bench",
"description": "Layer 'Transit Stops' shows bench=yes with a fixed text, namely 'This stop has a bench' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "yes"
},
{
"key": "bench",
"description": "Layer 'Transit Stops' shows bench=no with a fixed text, namely 'This stop does not have a bench' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "no"
},
{
"key": "bench",
"description": "Layer 'Transit Stops' shows bench=separate with a fixed text, namely 'This stop has a bench, that's separately mapped' (in the MapComplete.osm.be theme 'Bus routes')",
"value": "separate"
},
{
"key": "bin",
"description": "Layer 'Transit Stops' shows bin=yes with a fixed text, namely 'This stop has a bin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "yes"
},
{
"key": "bin",
"description": "Layer 'Transit Stops' shows bin=no with a fixed text, namely 'This stop does not have a bin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "no"
},
{
"key": "bin",
"description": "Layer 'Transit Stops' shows bin=separate with a fixed text, namely 'This stop has a bin, that's separately mapped' (in the MapComplete.osm.be theme 'Bus routes')",
"value": "separate"
},
{
"key": "wheelchair",
"description": "Layer 'Transit Stops' 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 'Bus routes')",
"value": "designated"
},
{
"key": "wheelchair",
"description": "Layer 'Transit Stops' 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 'Bus routes')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Transit Stops' 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 'Bus routes')",
"value": "limited"
},
{
"key": "wheelchair",
"description": "Layer 'Transit Stops' 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 'Bus routes')",
"value": "no"
},
{
"key": "tactile_paving",
"description": "Layer 'Transit Stops' shows tactile_paving=yes with a fixed text, namely 'This stop has tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "yes"
},
{
"key": "tactile_paving",
"description": "Layer 'Transit Stops' shows tactile_paving=no with a fixed text, namely 'This stop does not have tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "no"
},
{
"key": "lit",
"description": "Layer 'Transit Stops' shows lit=yes with a fixed text, namely 'This stop is lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "yes"
},
{
"key": "lit",
"description": "Layer 'Transit Stops' shows lit=no with a fixed text, namely 'This stop is not lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "no"
},
{
"key": "departures_board",
"description": "Layer 'Transit Stops' shows departures_board=yes with a fixed text, namely 'This stop has a departures board of unknown type' (in the MapComplete.osm.be theme 'Bus routes')",
"value": "yes"
},
{
"key": "departures_board",
"description": "Layer 'Transit Stops' shows departures_board=realtime with a fixed text, namely 'This stop has a board showing realtime departure information' (in the MapComplete.osm.be theme 'Bus routes')",
"value": "realtime"
},
{
"key": "passenger_information_display",
"description": "Layer 'Transit Stops' shows passenger_information_display=yes with a fixed text, namely 'This stop has a board showing realtime departure information' (in the MapComplete.osm.be theme 'Bus routes')",
"value": "yes"
},
{
"key": "departures_board",
"description": "Layer 'Transit Stops' shows departures_board=timetable with a fixed text, namely 'This stop has a timetable showing regular departures' (in the MapComplete.osm.be theme 'Bus routes')",
"value": "timetable"
},
{
"key": "departures_board",
"description": "Layer 'Transit Stops' shows departures_board=interval with a fixed text, namely 'This stop has a timetable containing just the interval between departures' (in the MapComplete.osm.be theme 'Bus routes')",
"value": "interval"
},
{
"key": "departures_board",
"description": "Layer 'Transit Stops' shows departures_board=no with a fixed text, namely 'This stop does not have a departures board' (in the MapComplete.osm.be theme 'Bus routes')",
"value": "no"
},
{
"key": "type",
"description": "The MapComplete theme Bus routes has a layer Bus lines showing features with this tag",
"value": "route"
},
{
"key": "route",
"description": "The MapComplete theme Bus routes has a layer Bus lines showing features with this tag",
"value": "bus"
},
{
"key": "name",
"description": "Layer 'Bus lines' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "from",
"description": "Layer 'Bus lines' shows and asks freeform values for key 'from' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "via",
"description": "Layer 'Bus lines' shows and asks freeform values for key 'via' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "to",
"description": "Layer 'Bus lines' shows and asks freeform values for key 'to' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "colour",
"description": "Layer 'Bus lines' shows and asks freeform values for key 'colour' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "network",
"description": "Layer 'Bus lines' shows and asks freeform values for key 'network' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "operator",
"description": "Layer 'Bus lines' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "amenity",
"description": "The MapComplete theme Bus routes has a layer Bike parking showing features with this tag",
"value": "bicycle_parking"
},
{
"key": "image",
"description": "The layer 'Bike parking 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 'Bike parking 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 'Bike parking 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 'Bike parking 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": "bicycle_parking",
"description": "Layer 'Bike parking' shows and asks freeform values for key 'bicycle_parking' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "bicycle_parking",
"description": "Layer 'Bike parking' shows bicycle_parking=stands with a fixed text, namely 'Staple racks' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "stands"
},
{
"key": "bicycle_parking",
"description": "Layer 'Bike parking' shows bicycle_parking=wall_loops with a fixed text, namely 'Wheel rack/loops' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "wall_loops"
},
{
"key": "bicycle_parking",
"description": "Layer 'Bike parking' shows bicycle_parking=handlebar_holder with a fixed text, namely 'Handlebar holder' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "handlebar_holder"
},
{
"key": "bicycle_parking",
"description": "Layer 'Bike parking' shows bicycle_parking=rack with a fixed text, namely 'Rack' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "rack"
},
{
"key": "bicycle_parking",
"description": "Layer 'Bike parking' shows bicycle_parking=two_tier with a fixed text, namely 'Two-tiered' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "two_tier"
},
{
"key": "bicycle_parking",
"description": "Layer 'Bike parking' shows bicycle_parking=shed with a fixed text, namely 'Shed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "shed"
},
{
"key": "bicycle_parking",
"description": "Layer 'Bike parking' shows bicycle_parking=bollard with a fixed text, namely 'Bollard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "bollard"
},
{
"key": "bicycle_parking",
"description": "Layer 'Bike parking' shows bicycle_parking=floor with a fixed text, namely 'An area on the floor which is marked for bicycle parking' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "floor"
},
{
"key": "location",
"description": "Layer 'Bike parking' shows location=underground with a fixed text, namely 'Underground parking' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "underground"
},
{
"key": "location",
"description": "Layer 'Bike parking' shows location=surface with a fixed text, namely 'Surface level parking' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "surface"
},
{
"key": "location",
"description": "Layer 'Bike parking' shows location=rooftop with a fixed text, namely 'Rooftop parking' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "rooftop"
},
{
"key": "location",
"description": "Layer 'Bike parking' shows with a fixed text, namely 'Surface level parking' (in the MapComplete.osm.be theme 'Bus routes') Picking this answer will delete the key location.",
"value": ""
},
{
"key": "covered",
"description": "Layer 'Bike parking' shows covered=yes with a fixed text, namely 'This parking is covered (it has a roof)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "yes"
},
{
"key": "covered",
"description": "Layer 'Bike parking' shows covered=no with a fixed text, namely 'This parking is not covered' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "no"
},
{
"key": "capacity",
"description": "Layer 'Bike parking' shows and asks freeform values for key 'capacity' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "access",
"description": "Layer 'Bike parking' shows and asks freeform values for key 'access' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "access",
"description": "Layer 'Bike parking' shows access=yes with a fixed text, namely 'Publicly accessible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "yes"
},
{
"key": "access",
"description": "Layer 'Bike parking' shows access=customers with a fixed text, namely 'Access is primarily for visitors to a business' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "customers"
},
{
"key": "access",
"description": "Layer 'Bike parking' shows access=private with a fixed text, namely 'Access is limited to members of a school, company or organisation' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "private"
},
{
"key": "cargo_bike",
"description": "Layer 'Bike parking' shows cargo_bike=yes with a fixed text, namely 'This parking has room for cargo bikes' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "yes"
},
{
"key": "cargo_bike",
"description": "Layer 'Bike parking' shows cargo_bike=designated with a fixed text, namely 'This parking has designated (official) spots for cargo bikes.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "designated"
},
{
"key": "cargo_bike",
"description": "Layer 'Bike parking' shows cargo_bike=no with a fixed text, namely 'You're not allowed to park cargo bikes' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')",
"value": "no"
},
{
"key": "capacity:cargo_bike",
"description": "Layer 'Bike parking' shows and asks freeform values for key 'capacity:cargo_bike' (in the MapComplete.osm.be theme 'Bus routes')"
},
{
"key": "amenity",
"description": "The MapComplete theme Bus routes has a layer Parking showing features with this tag",
"value": "parking"
},
{
"key": "image",
"description": "The layer 'Parking 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 'Parking 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 'Parking 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 'Parking 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": "amenity",
"description": "The MapComplete theme Bus routes has a layer Shelter showing features with this tag",
"value": "shelter"
},
{
"key": "shelter_type",
"description": "The MapComplete theme Bus routes has a layer Shelter showing features with this tag",
"value": "public_transport"
}
]
}

View file

@ -3,6 +3,7 @@ import {ImmutableStore, Store, UIEventSource} from "../../UIEventSource";
import {stat} from "fs";
import FilteredLayer from "../../../Models/FilteredLayer";
import {BBox} from "../../BBox";
import {Feature} from "@turf/turf";
/**
* A simple, read only feature store.
@ -11,7 +12,7 @@ export default class StaticFeatureSource implements FeatureSource {
public readonly features: Store<{ feature: any; freshness: Date }[]>;
public readonly name: string
constructor(features: Store<{ feature: any, freshness: Date }[]>, name = "StaticFeatureSource") {
constructor(features: Store<{ feature: Feature, freshness: Date }[]>, name = "StaticFeatureSource") {
if (features === undefined) {
throw "Static feature source received undefined as source"
}
@ -19,17 +20,23 @@ export default class StaticFeatureSource implements FeatureSource {
this.features = features;
}
public static fromGeojsonAndDate(features: { feature: any, freshness: Date }[], name = "StaticFeatureSourceFromGeojsonAndDate"): StaticFeatureSource {
public static fromGeojsonAndDate(features: { feature: Feature, freshness: Date }[], name = "StaticFeatureSourceFromGeojsonAndDate"): StaticFeatureSource {
return new StaticFeatureSource(new ImmutableStore(features), name);
}
public static fromGeojson(geojson: any[], name = "StaticFeatureSourceFromGeojson"): StaticFeatureSource {
public static fromGeojson(geojson: Feature[], name = "StaticFeatureSourceFromGeojson"): StaticFeatureSource {
const now = new Date();
return StaticFeatureSource.fromGeojsonAndDate(geojson.map(feature => ({feature, freshness: now})), name);
}
static fromDateless(featureSource: Store<{ feature: any }[]>, name = "StaticFeatureSourceFromDateless") {
public static fromGeojsonStore(geojson: Store<Feature[]>, name = "StaticFeatureSourceFromGeojson"): StaticFeatureSource {
const now = new Date();
const mapped : Store<{feature: Feature, freshness: Date}[]> = geojson.map(features => features.map(feature => ({feature, freshness: now})))
return new StaticFeatureSource(mapped, name);
}
static fromDateless(featureSource: Store<{ feature: Feature }[]>, name = "StaticFeatureSourceFromDateless") {
const now = new Date();
return new StaticFeatureSource(featureSource.map(features => features.map(feature => ({
feature: feature.feature,

View file

@ -11,6 +11,7 @@ import LayoutConfig from "../../../Models/ThemeConfig/LayoutConfig";
import {Or} from "../../Tags/Or";
import {TagsFilter} from "../../Tags/TagsFilter";
import {OsmObject} from "../../Osm/OsmObject";
import {FeatureCollection} from "@turf/turf";
/**
* If a tile is needed (requested via the UIEventSource in the constructor), will download the appropriate tile and pass it via 'handleTile'
@ -136,7 +137,7 @@ export default class OsmFeatureSource {
console.log("Got tile", z, x, y, "from the osm api")
this.rawDataHandlers.forEach(handler => handler(osmJson, Tiles.tile_index(z, x, y)))
const geojson = OsmToGeoJson.default(osmJson,
const geojson = <FeatureCollection<any , {id: string}>> OsmToGeoJson.default(osmJson,
// @ts-ignore
{
flatProperties: true

View file

@ -11,7 +11,7 @@ import ChangeTagAction from "./ChangeTagAction";
import {And} from "../../Tags/And";
import {Utils} from "../../../Utils";
import {OsmConnection} from "../OsmConnection";
import {GeoJSONObject} from "@turf/turf";
import {Feature} from "@turf/turf";
import FeaturePipeline from "../../FeatureSource/FeaturePipeline";
export default class ReplaceGeometryAction extends OsmChangeAction {
@ -83,7 +83,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction {
// noinspection JSUnusedGlobalSymbols
public async getPreview(): Promise<FeatureSource> {
const {closestIds, allNodesById, detachedNodes, reprojectedNodes} = await this.GetClosestIds();
const preview: GeoJSONObject[] = closestIds.map((newId, i) => {
const preview: Feature[] = closestIds.map((newId, i) => {
if (this.identicalTo[i] !== undefined) {
return undefined
}
@ -122,7 +122,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction {
reprojectedNodes.forEach(({newLat, newLon, nodeId}) => {
const origNode = allNodesById.get(nodeId);
const feature = {
const feature : Feature = {
type: "Feature",
properties: {
"move": "yes",
@ -142,7 +142,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction {
detachedNodes.forEach(({reason}, id) => {
const origNode = allNodesById.get(id);
const feature = {
const feature : Feature = {
type: "Feature",
properties: {
"detach": "yes",

View file

@ -35,7 +35,7 @@ export class Overpass {
this._relationTracker = relationTracker
}
public async queryGeoJson(bounds: BBox, ): Promise<[FeatureCollection, Date]> {
public async queryGeoJson(bounds: BBox): Promise<[FeatureCollection, Date]> {
const bbox = "[bbox:" + bounds.getSouth() + "," + bounds.getWest() + "," + bounds.getNorth() + "," + bounds.getEast() + "]";
const query = this.buildScript(bbox)
return this.ExecuteQuery(query);

View file

@ -314,9 +314,10 @@ export default class SimpleMetaTaggers {
lat: lat,
lon: lon,
address: {
country_code: tags._country.toLowerCase()
country_code: tags._country.toLowerCase(),
state: undefined
}
}, {tag_key: "opening_hours"});
}, <any> {tag_key: "opening_hours"});
// Recalculate!
return oh.getState() ? "yes" : "no";

View file

@ -116,12 +116,21 @@ export class TagUtils {
* Given multiple tagsfilters which can be used as answer, will take the tags with the same keys together as set.
* E.g:
*
* FlattenMultiAnswer([and: [ "x=a", "y=0;1"], and: ["x=b", "y=2"], and: ["x=", "y=3"]])
* will result in
* ["x=a;b", "y=0;1;2;3"]
*
* @param tagsFilters
* @constructor
* const tag = TagUtils.Tag({"and": [
* {
* and: [ "x=a", "y=0;1"],
* },
* {
* and: ["x=", "y=3"]
* },
* {
* and: ["x=b", "y=2"]
* }
* ]})
* TagUtils.FlattenMultiAnswer([tag]) // => TagUtils.Tag({and:["x=a;b", "y=0;1;2;3"] })
*
* TagUtils.FlattenMultiAnswer(([new Tag("x","y"), new Tag("a","b")])) // => new And([new Tag("x","y"), new Tag("a","b")])
* TagUtils.FlattenMultiAnswer(([new Tag("x","")])) // => new And([new Tag("x","")])
*/
static FlattenMultiAnswer(tagsFilters: TagsFilter[]): And {
if (tagsFilters === undefined) {
@ -131,7 +140,9 @@ export class TagUtils {
let keyValues = TagUtils.SplitKeys(tagsFilters);
const and: TagsFilter[] = []
for (const key in keyValues) {
and.push(new Tag(key, Utils.Dedup(keyValues[key]).join(";")));
const values = Utils.Dedup(keyValues[key]).filter(v => v !== "")
values.sort()
and.push(new Tag(key, values.join(";")));
}
return new And(and);
}

View file

@ -7,8 +7,12 @@ import {Utils} from "../../Utils";
*/
export class IdbLocalStorage {
private static readonly _sourceCache: Record<string, UIEventSource<any>> = {}
public static Get<T>(key: string, options?: { defaultValue?: T, whenLoaded?: (t: T | null) => void }): UIEventSource<T> {
if(IdbLocalStorage._sourceCache[key] !== undefined){
return IdbLocalStorage._sourceCache[key]
}
const src = new UIEventSource<T>(options?.defaultValue, "idb-local-storage:" + key)
if (Utils.runningFromConsole) {
return src;
@ -26,6 +30,7 @@ export class IdbLocalStorage {
options?.whenLoaded(null)
}
})
IdbLocalStorage._sourceCache[key] = src;
return src;
}

View file

@ -75,8 +75,8 @@ export class DoesImageExist extends DesugaringStep<string> {
return {result: image};
}
}
if (this._knownImagePaths !== undefined && !this._knownImagePaths.has(image)) {
if (!this._knownImagePaths.has(image)) {
if (this.doesPathExist === undefined) {
errors.push(`Image with path ${image} not found or not attributed; it is used in ${context}`)
} else if (!this.doesPathExist(image)) {

View file

@ -31,6 +31,7 @@ import {FixedUiElement} from "../../UI/Base/FixedUiElement";
export default class LayerConfig extends WithContextLoader {
public static readonly syncSelectionAllowed = ["no", "local", "theme-only", "global"] as const;
public readonly id: string;
public readonly name: Translation;
public readonly description: Translation;
@ -44,10 +45,8 @@ export default class LayerConfig extends WithContextLoader {
public readonly maxzoom: number;
public readonly title?: TagRenderingConfig;
public readonly titleIcons: TagRenderingConfig[];
public readonly mapRendering: PointRenderingConfig[]
public readonly lineRendering: LineRenderingConfig[]
public readonly units: Unit[];
public readonly deletion: DeleteConfig | null;
public readonly allowMove: MoveConfig | null
@ -57,15 +56,11 @@ export default class LayerConfig extends WithContextLoader {
* In seconds
*/
public readonly maxAgeOfCache: number
public readonly presets: PresetConfig[];
public readonly tagRenderings: TagRenderingConfig[];
public readonly filters: FilterConfig[];
public readonly filterIsSameAs: string;
public readonly forceLoad: boolean;
public static readonly syncSelectionAllowed = ["no" , "local" , "theme-only" , "global"] as const;
public readonly syncSelection: (typeof LayerConfig.syncSelectionAllowed)[number] // this is a trick to conver a constant array of strings into a type union of these values
constructor(
@ -74,18 +69,24 @@ export default class LayerConfig extends WithContextLoader {
official: boolean = true
) {
context = context + "." + json.id;
const translationContext = "layers:"+json.id
const translationContext = "layers:" + json.id
super(json, context)
this.id = json.id;
if (typeof json === "string") {
throw `Not a valid layer: the layerConfig is a string. 'npm run generate:layeroverview' might be needed (at ${context})`
}
if (json.id === undefined) {
throw "Not a valid layer: id is undefined: " + JSON.stringify(json)
throw `Not a valid layer: id is undefined: ${JSON.stringify(json)} (At ${context})`
}
if (json.source === undefined) {
throw "Layer " + this.id + " does not define a source section (" + context + ")"
}
if (json.source.osmTags === undefined) {
throw "Layer " + this.id + " does not define a osmTags in the source section - these should always be present, even for geojson layers (" + context + ")"
}
@ -98,8 +99,8 @@ export default class LayerConfig extends WithContextLoader {
}
this.maxAgeOfCache = json.source.maxCacheAge ?? 24 * 60 * 60 * 30
if(json.syncSelection !== undefined && LayerConfig.syncSelectionAllowed.indexOf(json.syncSelection) < 0){
throw context+ " Invalid sync-selection: must be one of "+LayerConfig.syncSelectionAllowed.map(v => `'${v}'`).join(", ")+" but got '"+json.syncSelection+"'"
if (json.syncSelection !== undefined && LayerConfig.syncSelectionAllowed.indexOf(json.syncSelection) < 0) {
throw context + " Invalid sync-selection: must be one of " + LayerConfig.syncSelectionAllowed.map(v => `'${v}'`).join(", ") + " but got '" + json.syncSelection + "'"
}
this.syncSelection = json.syncSelection ?? "no";
const osmTags = TagUtils.Tag(
@ -107,10 +108,10 @@ export default class LayerConfig extends WithContextLoader {
context + "source.osmTags"
);
if(Constants.priviliged_layers.indexOf(this.id) < 0 && osmTags.isNegative()){
throw context + "The source states tags which give a very wide selection: it only uses negative expressions, which will result in too much and unexpected data. Add at least one required tag. The tags are:\n\t"+osmTags.asHumanString(false, false, {});
if (Constants.priviliged_layers.indexOf(this.id) < 0 && osmTags.isNegative()) {
throw context + "The source states tags which give a very wide selection: it only uses negative expressions, which will result in too much and unexpected data. Add at least one required tag. The tags are:\n\t" + osmTags.asHumanString(false, false, {});
}
if (json.source["geoJsonSource"] !== undefined) {
throw context + "Use 'geoJson' instead of 'geoJsonSource'";
}
@ -118,7 +119,7 @@ export default class LayerConfig extends WithContextLoader {
if (json.source["geojson"] !== undefined) {
throw context + "Use 'geoJson' instead of 'geojson' (the J is a capital letter)";
}
this.source = new SourceConfig(
{
@ -138,8 +139,8 @@ export default class LayerConfig extends WithContextLoader {
this.allowSplit = json.allowSplit ?? false;
this.name = Translations.T(json.name, translationContext + ".name");
if(json.units!==undefined && !Array.isArray(json.units)){
throw "At "+context+".units: the 'units'-section should be a list; you probably have an object there"
if (json.units !== undefined && !Array.isArray(json.units)) {
throw "At " + context + ".units: the 'units'-section should be a list; you probably have an object there"
}
this.units = (json.units ?? []).map(((unitJson, i) => Unit.fromJson(unitJson, `${context}.unit[${i}]`)))
@ -167,8 +168,8 @@ export default class LayerConfig extends WithContextLoader {
const index = kv.indexOf("=");
let key = kv.substring(0, index).trim();
const r = "[a-z_][a-z0-9:]*"
if(key.match(r) === null){
throw "At "+context+" invalid key for calculated tag: "+key+"; it should match "+r
if (key.match(r) === null) {
throw "At " + context + " invalid key for calculated tag: " + key + "; it should match " + r
}
const isStrict = key.endsWith(':')
if (isStrict) {
@ -343,14 +344,14 @@ export default class LayerConfig extends WithContextLoader {
}
public GenerateDocumentation(usedInThemes: string[], layerIsNeededBy?: Map<string, string[]>, dependencies: {
context?: string;
reason: string;
neededLayer: string;
}[] = []
, addedByDefault = false, canBeIncluded = true): BaseUIElement {
context?: string;
reason: string;
neededLayer: string;
}[] = []
, addedByDefault = false, canBeIncluded = true): BaseUIElement {
const extraProps = []
extraProps.push("This layer is shown at zoomlevel **"+this.minzoom+"** and higher")
extraProps.push("This layer is shown at zoomlevel **" + this.minzoom + "** and higher")
if (canBeIncluded) {
if (addedByDefault) {
@ -440,7 +441,7 @@ export default class LayerConfig extends WithContextLoader {
let overpassLink: BaseUIElement = undefined;
if (Constants.priviliged_layers.indexOf(this.id) < 0) {
try {
overpassLink = new Link("Execute on overpass", Overpass.AsOverpassTurboLink(<TagsFilter> new And(neededTags).optimize()))
overpassLink = new Link("Execute on overpass", Overpass.AsOverpassTurboLink(<TagsFilter>new And(neededTags).optimize()))
} catch (e) {
console.error("Could not generate overpasslink for " + this.id)
}

View file

@ -177,7 +177,8 @@ export default class TagRenderingConfig {
throw "Tagrendering has a 'mappings'-object, but expected a list (" + context + ")"
}
this.mappings = json.mappings.map((m, i) => TagRenderingConfig.ExtractMapping(m, i, translationKey, context, this.multiAnswer, this.question !== undefined));
const commonIconSize = Utils.NoNull(json.mappings.map(m => m.icon !== undefined ? m.icon["class"] : undefined))[0] ?? "small"
this.mappings = json.mappings.map((m, i) => TagRenderingConfig.ExtractMapping(m, i, translationKey, context, this.multiAnswer, this.question !== undefined, commonIconSize));
}
if (this.question && this.freeform?.key === undefined && this.mappings === undefined) {
@ -288,7 +289,7 @@ export default class TagRenderingConfig {
public static ExtractMapping(mapping: MappingConfigJson, i: number, translationKey: string,
context: string,
multiAnswer?: boolean, isQuestionable?: boolean) {
multiAnswer?: boolean, isQuestionable?: boolean, commonSize: string = "small") {
const ctx = `${translationKey}.mappings.${i}`
if (mapping.if === undefined) {
@ -327,7 +328,7 @@ export default class TagRenderingConfig {
}
let icon = undefined;
let iconClass = "small"
let iconClass = commonSize
if (mapping.icon !== undefined) {
if (typeof mapping.icon === "string" && mapping.icon !== "") {
icon = mapping.icon

View file

@ -28,7 +28,10 @@ export default class ScrollableFullScreen extends UIElement {
constructor(title: ((options: { mode: string }) => BaseUIElement),
content: ((options: { mode: string, resetScrollSignal: UIEventSource<void> }) => BaseUIElement),
hashToShow: string,
isShown: UIEventSource<boolean> = new UIEventSource<boolean>(false)
isShown: UIEventSource<boolean> = new UIEventSource<boolean>(false),
options?: {
setHash?: true | boolean
}
) {
super();
this.hashToShow = hashToShow;
@ -53,16 +56,21 @@ export default class ScrollableFullScreen extends UIElement {
const self = this;
Hash.hash.addCallback(h => {
if (h === undefined) {
isShown.setData(false)
}
})
const setHash = options?.setHash ?? true;
if(setHash){
Hash.hash.addCallback(h => {
if (h === undefined) {
isShown.setData(false)
}
})
}
isShown.addCallback(isShown => {
if (isShown) {
// We first must set the hash, then activate the panel
// If the order is wrong, this will cause the panel to disactivate again
Hash.hash.setData(hashToShow)
if(setHash){
Hash.hash.setData(hashToShow)
}
self.Activate();
} else {
// Some cleanup...

View file

@ -159,6 +159,12 @@ class SingleLayerSelectionButton extends Toggle {
export default class BackgroundMapSwitch extends Combine {
/**
* Three buttons to easily switch map layers between OSM, aerial and some map.
* @param state
* @param currentBackground
* @param options
*/
constructor(
state: {
locationControl: UIEventSource<Loc>,

View file

@ -48,7 +48,10 @@ export default class LeftControls extends Combine {
}
return new Lazy(() => {
const tagsSource = state.allElements.getEventSourceById(feature.properties.id)
return new FeatureInfoBox(tagsSource, currentViewFL.layerDef, state, "currentview", guiState.currentViewControlIsOpened)
return new FeatureInfoBox(tagsSource, currentViewFL.layerDef, state, {
hashToShow: "currentview",
isShown: guiState.currentViewControlIsOpened
})
.SetClass("md:floating-element-width")
})
})).SetStyle("width: 40rem").SetClass("block")

View file

@ -22,12 +22,17 @@ import ShowDataLayer from "../ShowDataLayer/ShowDataLayer";
import StaticFeatureSource from "../../Logic/FeatureSource/Sources/StaticFeatureSource";
import ValidatedTextField from "../Input/ValidatedTextField";
import {LocalStorageSource} from "../../Logic/Web/LocalStorageSource";
import * as currentview from "../../assets/layers/current_view/current_view.json"
import * as import_candidate from "../../assets/layers/import_candidate/import_candidate.json"
import {GeoOperations} from "../../Logic/GeoOperations";
import FeatureInfoBox from "../Popup/FeatureInfoBox";
import {ImportUtils} from "./ImportUtils";
import Translations from "../i18n/Translations";
import ShowDataMultiLayer from "../ShowDataLayer/ShowDataMultiLayer";
import FilteredLayer, {FilterState} from "../../Models/FilteredLayer";
import {Feature, FeatureCollection} from "@turf/turf";
import * as currentview from "../../assets/layers/current_view/current_view.json"
import {CheckBox} from "../Input/Checkboxes";
import BackgroundMapSwitch from "../BigComponents/BackgroundMapSwitch";
/**
* Given the data to import, the bbox and the layer, will query overpass for similar items
@ -36,20 +41,21 @@ export default class ConflationChecker extends Combine implements FlowStep<{ fea
public readonly IsValid
public readonly Value: Store<{ features: any[], theme: string }>
constructor(
state,
params: { bbox: BBox, layer: LayerConfig, theme: string, features: any[] }) {
const t = Translations.t.importHelper.conflationChecker
const bbox = params.bbox.padAbsolute(0.0001)
const layer = params.layer;
const toImport: {features: any[]} = params;
const toImport: { features: any[] } = params;
let overpassStatus = new UIEventSource<{ error: string } | "running" | "success" | "idle" | "cached">("idle")
const cacheAge = new UIEventSource<number>(undefined);
function loadDataFromOverpass(){
function loadDataFromOverpass() {
// Load the data!
const url = Constants.defaultOverpassUrls[1]
const relationTracker = new RelationsTracker()
@ -66,42 +72,49 @@ export default class ConflationChecker extends Combine implements FlowStep<{ fea
overpassStatus.setData({error})
})
}
const fromLocalStorage = IdbLocalStorage.Get<[any, Date]>("importer-overpass-cache-" + layer.id, {
whenLoaded: (v) => {
if (v !== undefined && v !== null) {
console.log("Loaded from local storage:", v)
const [geojson, date] = v;
const timeDiff = (new Date().getTime() - date.getTime()) / 1000;
console.log("Loaded ", geojson.features.length, " features; cache is ", timeDiff, "seconds old")
cacheAge.setData(timeDiff)
if (timeDiff < 24 * 60 * 60) {
// Recently cached!
overpassStatus.setData("cached")
return;
}
cacheAge.setData(-1)
overpassStatus.setData("cached")
}
loadDataFromOverpass()
}
});
const cacheAge = fromLocalStorage.map(d => {
if(d === undefined || d[1] === undefined){
return undefined
}
const [_, loadedDate] = d
return (new Date().getTime() - loadedDate.getTime()) / 1000;
})
cacheAge.addCallbackD(timeDiff => {
if (timeDiff < 24 * 60 * 60) {
// Recently cached!
overpassStatus.setData("cached")
return;
} else {
loadDataFromOverpass()
}
})
const geojson: Store<any> = fromLocalStorage.map(d => {
const geojson: Store<FeatureCollection> = fromLocalStorage.map(d => {
if (d === undefined) {
return undefined
}
return d[0]
})
const background = new UIEventSource<BaseLayer>(AvailableBaseLayers.osmCarto)
const location = new UIEventSource<Loc>({lat: 0, lon: 0, zoom: 1})
const currentBounds = new UIEventSource<BBox>(undefined)
const zoomLevel = ValidatedTextField.ForType("pnat").ConstructInputElement()
const zoomLevel = ValidatedTextField.ForType("pnat").ConstructInputElement({
value: LocalStorageSource.GetParsed<string>("importer-zoom-level", "0")
})
zoomLevel.SetClass("ml-1 border border-black")
zoomLevel.GetValue().syncWith(LocalStorageSource.Get("importer-zoom-level", "14"), true)
const osmLiveData = Minimap.createMiniMap({
allowMoving: true,
location,
@ -110,18 +123,24 @@ export default class ConflationChecker extends Combine implements FlowStep<{ fea
attribution: new Attribution(location, state.osmConnection.userDetails, undefined, currentBounds)
})
osmLiveData.SetClass("w-full").SetStyle("height: 500px")
const preview = new StaticFeatureSource(geojson.map(geojson => {
const geojsonFeatures : Store<Feature[]> = geojson.map(geojson => {
if (geojson?.features === undefined) {
return []
}
const zoomedEnough: boolean = osmLiveData.location.data.zoom >= Number(zoomLevel.GetValue().data)
if (!zoomedEnough) {
const currentZoom = zoomLevel.GetValue().data
const zoomedEnough: boolean = osmLiveData.location.data.zoom >= Number(currentZoom)
if (currentZoom !== undefined && !zoomedEnough) {
return []
}
const bounds = osmLiveData.bounds.data
if(bounds === undefined){
return geojson.features;
}
return geojson.features.filter(f => BBox.get(f).overlapsWith(bounds))
}, [osmLiveData.bounds, zoomLevel.GetValue()]));
}, [osmLiveData.bounds, zoomLevel.GetValue()])
const preview = StaticFeatureSource.fromGeojsonStore(geojsonFeatures)
new ShowDataLayer({
layerToShow: new LayerConfig(currentview),
@ -134,12 +153,16 @@ export default class ConflationChecker extends Combine implements FlowStep<{ fea
])
})
new ShowDataLayer({
layerToShow: layer,
new ShowDataMultiLayer({
//layerToShow: layer,
layers: new UIEventSource<FilteredLayer[]>([{
layerDef: layer,
isDisplayed: new UIEventSource<boolean>(true),
appliedFilters: new UIEventSource<Map<string, FilterState>>(undefined)
}]),
state,
leafletMap: osmLiveData.leafletMap,
popup: (tags, layer) => new FeatureInfoBox(tags, layer, state),
popup: (tags, layer) => new FeatureInfoBox(tags, layer, state, {setHash: false}),
zoomToFeatures: false,
features: preview
})
@ -148,7 +171,7 @@ export default class ConflationChecker extends Combine implements FlowStep<{ fea
layerToShow: new LayerConfig(import_candidate),
state,
leafletMap: osmLiveData.leafletMap,
popup: (tags, layer) => new FeatureInfoBox(tags, layer, state),
popup: (tags, layer) => new FeatureInfoBox(tags, layer, state, {setHash: false}),
zoomToFeatures: false,
features: StaticFeatureSource.fromGeojson(toImport.features)
})
@ -164,7 +187,7 @@ export default class ConflationChecker extends Combine implements FlowStep<{ fea
matchedFeaturesMap.SetClass("w-full").SetStyle("height: 500px")
// Featuresource showing OSM-features which are nearby a toImport-feature
const nearbyFeatures = new StaticFeatureSource(geojson.map(osmData => {
const geojsonMapped: Store<Feature[]> = geojson.map(osmData => {
if (osmData?.features === undefined) {
return []
}
@ -172,32 +195,37 @@ export default class ConflationChecker extends Combine implements FlowStep<{ fea
return osmData.features.filter(f =>
toImport.features.some(imp =>
maxDist >= GeoOperations.distanceBetween(imp.geometry.coordinates, GeoOperations.centerpointCoordinates(f))))
}, [nearbyCutoff.GetValue().stabilized(500)]));
}, [nearbyCutoff.GetValue().stabilized(500)])
const nearbyFeatures = StaticFeatureSource.fromGeojsonStore(geojsonMapped);
const paritionedImport = ImportUtils.partitionFeaturesIfNearby(toImport, geojson, nearbyCutoff.GetValue().map(Number));
// Featuresource showing OSM-features which are nearby a toImport-feature
const toImportWithNearby = new StaticFeatureSource(paritionedImport.map(els => els?.hasNearby ?? []));
new ShowDataLayer({
layerToShow: layer,
state,
leafletMap: matchedFeaturesMap.leafletMap,
popup: (tags, layer) => new FeatureInfoBox(tags, layer, state),
zoomToFeatures: true,
features: nearbyFeatures
})
const toImportWithNearby = StaticFeatureSource.fromGeojsonStore(paritionedImport.map(els => els?.hasNearby ?? []));
toImportWithNearby.features.addCallback(nearby => console.log("The following features are near an already existing object:", nearby))
new ShowDataLayer({
layerToShow: new LayerConfig(import_candidate),
state,
leafletMap: matchedFeaturesMap.leafletMap,
popup: (tags, layer) => new FeatureInfoBox(tags, layer, state),
popup: (tags, layer) => new FeatureInfoBox(tags, layer, state, {setHash: false}),
zoomToFeatures: false,
features: toImportWithNearby
})
const showOsmLayer = new CheckBox(t.showOsmLayerInConflationMap, true)
new ShowDataLayer({
layerToShow: layer,
state,
leafletMap: matchedFeaturesMap.leafletMap,
popup: (tags, layer) => new FeatureInfoBox(tags, layer, state, {setHash: false}),
zoomToFeatures: true,
features: nearbyFeatures,
doShowLayer: showOsmLayer.GetValue()
})
const t = Translations.t.importHelper.conflationChecker
const conflationMaps = new Combine([
new VariableUiElement(
geojson.map(geojson => {
@ -218,34 +246,44 @@ export default class ConflationChecker extends Combine implements FlowStep<{ fea
return t.cacheExpired
}
return new Combine([t.loadedDataAge.Subs({age: Utils.toHumanTime(age)}),
new SubtleButton(Svg.reload_svg().SetClass("h-8"), t.reloadTheCache)
.onClick(loadDataFromOverpass)
.SetClass("h-12")
new SubtleButton(Svg.reload_svg().SetClass("h-8"), t.reloadTheCache)
.onClick(loadDataFromOverpass)
.SetClass("h-12")
])
})),
new Title(t.titleLive),
t.importCandidatesCount.Subs({count:toImport.features.length }),
new VariableUiElement(geojson.map(geojson => {
if(geojson?.features?.length === undefined || geojson?.features?.length === 0){
t.importCandidatesCount.Subs({count: toImport.features.length}),
new VariableUiElement(geojson.map(geojson => {
if (geojson?.features?.length === undefined || geojson?.features?.length === 0) {
return t.nothingLoaded.Subs(layer).SetClass("alert")
}
return new Combine([
}
return new Combine([
t.osmLoaded.Subs({count: geojson.features.length, name: layer.name}),
])
})),
])
})),
osmLiveData,
new VariableUiElement(osmLiveData.location.map(location => {
return t.zoomIn.Subs({needed:zoomLevel, current: location.zoom })
} )),
new Combine([
t.zoomLevelSelection,
zoomLevel,
new VariableUiElement(osmLiveData.location.map(location => {
return t.zoomIn.Subs(<any>{current: location.zoom})
})),
]).SetClass("flex"),
new Title(t.titleNearby),
new Combine([t.mapShowingNearbyIntro, nearbyCutoff]).SetClass("flex"),
new VariableUiElement(toImportWithNearby.features.map(feats =>
new VariableUiElement(toImportWithNearby.features.map(feats =>
t.nearbyWarn.Subs({count: feats.length}).SetClass("alert"))),
t.setRangeToZero,
matchedFeaturesMap]).SetClass("flex flex-col")
matchedFeaturesMap,
new Combine([
new BackgroundMapSwitch({backgroundLayer: background, locationControl: matchedFeaturesMap.location}, background),
showOsmLayer,
]).SetClass("flex")
]).SetClass("flex flex-col")
super([
new Title(t.title),
new VariableUiElement(overpassStatus.map(d => {
@ -270,7 +308,11 @@ export default class ConflationChecker extends Combine implements FlowStep<{ fea
])
this.Value = paritionedImport.map(feats => ({theme: params.theme, features: feats?.noNearby, layer: params.layer}))
this.Value = paritionedImport.map(feats => ({
theme: params.theme,
features: feats?.noNearby,
layer: params.layer
}))
this.IsValid = this.Value.map(v => v?.features !== undefined && v.features.length > 0)
}

View file

@ -1,8 +1,13 @@
import {Store} from "../../Logic/UIEventSource";
import {GeoOperations} from "../../Logic/GeoOperations";
import {Feature, Geometry} from "@turf/turf";
export class ImportUtils {
public static partitionFeaturesIfNearby(toPartitionFeatureCollection: ({ features: any[] }), compareWith: Store<{ features: any[] }>, cutoffDistanceInMeters: Store<number>): Store<{ hasNearby: any[], noNearby: any[] }> {
public static partitionFeaturesIfNearby(
toPartitionFeatureCollection: ({ features: Feature<Geometry>[] }),
compareWith: Store<{ features: Feature[] }>,
cutoffDistanceInMeters: Store<number>)
: Store<{ hasNearby: Feature[], noNearby: Feature[] }> {
return compareWith.map(osmData => {
if (osmData?.features === undefined) {
return undefined
@ -16,7 +21,7 @@ export class ImportUtils {
const noNearby = []
for (const toImportElement of toPartitionFeatureCollection.features) {
const hasNearbyFeature = osmData.features.some(f =>
maxDist >= GeoOperations.distanceBetween(toImportElement.geometry.coordinates, GeoOperations.centerpointCoordinates(f)))
maxDist >= GeoOperations.distanceBetween(<any> toImportElement.geometry.coordinates, GeoOperations.centerpointCoordinates(f)))
if (hasNearbyFeature) {
hasNearby.push(toImportElement)
} else {

View file

@ -24,6 +24,7 @@ import ScrollableFullScreen from "../Base/ScrollableFullScreen";
import Title from "../Base/Title";
import CheckBoxes from "../Input/Checkboxes";
import {AllTagsPanel} from "../AllTagsPanel";
import BackgroundMapSwitch from "../BigComponents/BackgroundMapSwitch";
class PreviewPanel extends ScrollableFullScreen {
@ -109,6 +110,10 @@ export class MapPreview extends Combine implements FlowStep<{ bbox: BBox, layer:
bounds: currentBounds,
attribution: new Attribution(location, state.osmConnection.userDetails, undefined, currentBounds)
})
const layerControl = new BackgroundMapSwitch( {
backgroundLayer: background,
locationControl: location
},background)
map.SetClass("w-full").SetStyle("height: 500px")
new ShowDataMultiLayer({
@ -147,6 +152,7 @@ export class MapPreview extends Combine implements FlowStep<{ bbox: BBox, layer:
mismatchIndicator,
map,
layerControl,
confirm
]);

View file

@ -4,13 +4,13 @@ import {Utils} from "../../Utils";
import BaseUIElement from "../BaseUIElement";
import InputElementMap from "./InputElementMap";
export class CheckBox extends InputElementMap<number[], boolean> {
export class CheckBox extends InputElementMap<number[], boolean> {
constructor(el: BaseUIElement , defaultValue?: boolean) {
super(
new CheckBoxes([el]),
(x0, x1) => x0 === x1,
t => t.length > 0,
x => x ? [0] : []
x => x ? [0] : [],
);
if(defaultValue !== undefined){
this.GetValue().setData(defaultValue)

View file

@ -1,5 +1,5 @@
import {InputElement} from "./InputElement";
import {UIEventSource} from "../../Logic/UIEventSource";
import {Store, UIEventSource} from "../../Logic/UIEventSource";
export default class InputElementMap<T, X> extends InputElement<X> {
@ -13,7 +13,7 @@ export default class InputElementMap<T, X> extends InputElement<X> {
isSame: (x0: X, x1: X) => boolean,
toX: (t: T) => X,
fromX: (x: X) => T,
extraSources: UIEventSource<any>[] = []
extraSources: Store<any>[] = []
) {
super();
this.isSame = isSame;

View file

@ -0,0 +1,255 @@
import {UIElement} from "../UIElement";
import {InputElement} from "./InputElement";
import BaseUIElement from "../BaseUIElement";
import {Store, UIEventSource} from "../../Logic/UIEventSource";
import Translations from "../i18n/Translations";
import Locale from "../i18n/Locale";
import Combine from "../Base/Combine";
import {TextField} from "./TextField";
import Svg from "../../Svg";
import {VariableUiElement} from "../Base/VariableUIElement";
/**
* A single 'pill' which can hide itself if the search criteria is not met
*/
class SelfHidingToggle extends UIElement implements InputElement<boolean> {
private readonly _shown: BaseUIElement;
public readonly _selected: UIEventSource<boolean>
public readonly isShown: Store<boolean> = new UIEventSource<boolean>(true);
public readonly forceSelected: UIEventSource<boolean>
private readonly _squared: boolean;
public constructor(
shown: string | BaseUIElement,
mainTerm: Record<string, string>,
search: Store<string>,
options?: {
searchTerms?: Record<string, string[]>,
selected?: UIEventSource<boolean>,
forceSelected?: UIEventSource<boolean>,
squared?: boolean
}
) {
super();
this._shown = Translations.W(shown);
this._squared = options?.squared ?? false;
const searchTerms: Record<string, string[]> = {};
for (const lng in options?.searchTerms ?? []) {
if (lng === "_context") {
continue
}
searchTerms[lng] = options?.searchTerms[lng]?.map(SelfHidingToggle.clean)
}
for (const lng in mainTerm) {
if (lng === "_context") {
continue
}
const main = SelfHidingToggle.clean( mainTerm[lng])
searchTerms[lng] = [main].concat(searchTerms[lng] ?? [])
}
const selected = this._selected = options?.selected ?? new UIEventSource<boolean>(false);
const forceSelected = this.forceSelected = options?.forceSelected ?? new UIEventSource<boolean>(false)
this.isShown = search.map(s => {
if (s === undefined || s.length === 0) {
return true;
}
if (selected.data && !forceSelected.data) {
return true
}
s = s?.trim()?.toLowerCase()
return searchTerms[Locale.language.data].some(t => t.indexOf(s) >= 0);
}, [selected, Locale.language])
const self = this;
this.isShown.addCallbackAndRun(shown => {
if (shown) {
self.RemoveClass("hidden")
} else {
self.SetClass("hidden")
}
})
}
private static clean(s: string) : string{
return s?.trim()?.toLowerCase()?.replace(/[-]/, "")
}
GetValue(): UIEventSource<boolean> {
return this._selected
}
IsValid(t: boolean): boolean {
return true;
}
protected InnerRender(): string | BaseUIElement {
let el: BaseUIElement = this._shown;
const selected = this._selected;
selected.addCallbackAndRun(selected => {
if (selected) {
el.SetClass("border-4")
el.RemoveClass("border")
el.SetStyle("margin: 0")
} else {
el.SetStyle("margin: 3px")
el.SetClass("border")
el.RemoveClass("border-4")
}
})
const forcedSelection = this.forceSelected
el.onClick(() => {
if(forcedSelection.data){
selected.setData(true)
}else{
selected.setData(!selected.data);
}
})
if(!this._squared){
el.SetClass("rounded-full")
}
return el.SetClass("border border-black p-1 px-4")
}
}
/**
* The searchable mappings selector is a selector which shows various pills from which one (or more) options can be chosen.
* A searchfield can be used to filter the values
*/
export class SearchablePillsSelector<T> extends Combine implements InputElement<T[]> {
private selectedElements: UIEventSource<T[]>;
public readonly someMatchFound: Store<boolean>;
constructor(
values: { show: BaseUIElement, value: T, mainTerm: Record<string, string>, searchTerms?: Record<string, string[]> }[],
options?: {
mode?: "select-one" | "select-many",
selectedElements?: UIEventSource<T[]>,
searchValue?: UIEventSource<string>,
onNoMatches?: BaseUIElement,
onNoSearchMade?: BaseUIElement,
selectIfSingle?: false | boolean,
searchAreaClass?: string
}) {
const search = new TextField({value: options?.searchValue})
const searchBar = new Combine([Svg.search_svg().SetClass("w-8 normal-background"), search.SetClass("w-full")])
.SetClass("flex items-center border-2 border-black m-2")
const searchValue = search.GetValue().map(s => s?.trim()?.toLowerCase())
const selectedElements = options?.selectedElements ?? new UIEventSource<T[]>([]);
const mode = options?.mode ?? "select-one";
const onEmpty = options?.onNoMatches ?? Translations.t.general.noMatchingMapping
const mappedValues: { show: SelfHidingToggle, mainTerm: Record<string, string>, value: T }[] = values.map(v => {
const vIsSelected = new UIEventSource(false);
selectedElements.addCallbackAndRunD(selectedElements => {
vIsSelected.setData(selectedElements.some(t => t === v.value))
})
vIsSelected.addCallback(selected => {
if (selected) {
if (mode === "select-one") {
selectedElements.setData([v.value])
} else if (!selectedElements.data.some(t => t === v.value)) {
selectedElements.data.push(v.value);
selectedElements.ping()
}
} else {
for (let i = 0; i < selectedElements.data.length; i++) {
const t = selectedElements.data[i]
if (t == v.value) {
selectedElements.data.splice(i, 1)
selectedElements.ping()
break;
}
}
}
})
const toggle = new SelfHidingToggle(v.show, v.mainTerm, searchValue, {
searchTerms: v.searchTerms,
selected: vIsSelected,
squared: mode === "select-many"
})
return {
...v,
show: toggle
};
})
let somethingShown: Store<boolean>
if (options.selectIfSingle) {
let forcedSelection : { value: T, show: SelfHidingToggle } = undefined
somethingShown = searchValue.map(_ => {
let totalShown = 0;
let lastShownValue: { value: T, show: SelfHidingToggle }
for (const mv of mappedValues) {
const valueIsShown = mv.show.isShown.data
if (valueIsShown) {
totalShown++;
lastShownValue = mv
}
}
if (totalShown == 1) {
if (this.selectedElements.data.indexOf(lastShownValue.value) < 0) {
this.selectedElements.setData([lastShownValue.value])
lastShownValue.show.forceSelected.setData(true)
forcedSelection = lastShownValue
}
} else if (forcedSelection != undefined) {
forcedSelection?.show?.forceSelected?.setData(false)
forcedSelection = undefined;
this.selectedElements.setData([])
}
return totalShown > 0
}, mappedValues.map(mv => mv.show.GetValue()))
} else {
somethingShown = searchValue.map(_ => mappedValues.some(mv => mv.show.isShown.data), mappedValues.map(mv => mv.show.GetValue()))
}
super([
searchBar,
new VariableUiElement(Locale.language.map(lng => {
if (options?.onNoSearchMade !== undefined && (searchValue.data === undefined || searchValue.data.length === 0)) {
return options?.onNoSearchMade
}
if (!somethingShown.data) {
return onEmpty
}
mappedValues.sort((a, b) => a.mainTerm[lng] < b.mainTerm[lng] ? -1 : 1)
return new Combine(mappedValues.map(e => e.show))
.SetClass("flex flex-wrap w-full content-start")
.SetClass(options?.searchAreaClass ?? "")
}, [somethingShown, searchValue]))
])
this.selectedElements = selectedElements;
this.someMatchFound = somethingShown;
}
public GetValue(): UIEventSource<T[]> {
return this.selectedElements;
}
IsValid(t: T[]): boolean {
return true;
}
}

View file

@ -477,9 +477,10 @@ export class OH {
lat: tags._lat,
lon: tags._lon,
address: {
country_code: tags._country.toLowerCase()
country_code: tags._country.toLowerCase(),
state: undefined
},
}, {tag_key: "opening_hours"});
}, <any> {tag_key: "opening_hours"});
}
/*

View file

@ -25,16 +25,20 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
tags: UIEventSource<any>,
layerConfig: LayerConfig,
state: FeaturePipelineState,
hashToShow?: string,
isShown?: UIEventSource<boolean>,
options?: {
hashToShow?: string,
isShown?: UIEventSource<boolean>,
setHash?: true | boolean
}
) {
if (state === undefined) {
throw "State is undefined!"
}
super(() => FeatureInfoBox.GenerateTitleBar(tags, layerConfig, state),
() => FeatureInfoBox.GenerateContent(tags, layerConfig, state),
hashToShow ?? tags.data.id ?? "item",
isShown);
options?.hashToShow ?? tags.data.id ?? "item",
options?.isShown,
options);
if (layerConfig === undefined) {
throw "Undefined layerconfig";
@ -50,7 +54,7 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
const titleIcons = new Combine(
layerConfig.titleIcons.map(icon => {
return new TagRenderingAnswer(tags, icon, state,
"block h-8 max-h-8 align-baseline box-content sm:p-0.5").SetClass("flex");
"block h-8 max-h-8 align-baseline box-content sm:p-0.5 titleicon");
}
))
.SetClass("flex flex-row flex-wrap pt-0.5 sm:pt-1 items-center mr-2")

View file

@ -31,6 +31,7 @@ import FeaturePipelineState from "../../Logic/State/FeaturePipelineState";
import Title from "../Base/Title";
import {OsmConnection} from "../../Logic/Osm/OsmConnection";
import {GeoOperations} from "../../Logic/GeoOperations";
import {SearchablePillsSelector} from "../Input/SearchableMappingsSelector";
/**
* Shows the question element.
@ -38,7 +39,7 @@ import {GeoOperations} from "../../Logic/GeoOperations";
*/
export default class TagRenderingQuestion extends Combine {
constructor(tags: UIEventSource<any>,
constructor(tags: UIEventSource<Record<string, string> & {id: string}>,
configuration: TagRenderingConfig,
state?: FeaturePipelineState,
options?: {
@ -81,13 +82,13 @@ export default class TagRenderingQuestion extends Combine {
const feedback = new UIEventSource<Translation>(undefined)
const inputElement: ReadonlyInputElement<TagsFilter> =
new VariableInputElement(applicableMappingsSrc.map(applicableMappings => {
return TagRenderingQuestion.GenerateInputElement(state, configuration, applicableMappings, applicableUnit, tags, feedback)
new VariableInputElement(applicableMappingsSrc.map(applicableMappings => {
return TagRenderingQuestion.GenerateInputElement(state, configuration, applicableMappings, applicableUnit, tags, feedback)
}
))
const save = () => {
const selection = inputElement.GetValue().data;
const selection = TagUtils.FlattenMultiAnswer([inputElement.GetValue().data]);
if (selection) {
(state?.changes)
.applyAction(new ChangeTagAction(
@ -141,20 +142,29 @@ export default class TagRenderingQuestion extends Combine {
private static GenerateInputElement(
state: FeaturePipelineState,
configuration: TagRenderingConfig,
applicableMappings: { if: TagsFilter, then: TypedTranslation<object>, icon?: string, ifnot?: TagsFilter, addExtraTags: Tag[] }[],
applicableMappings: { if: TagsFilter, then: TypedTranslation<object>, icon?: string, ifnot?: TagsFilter, addExtraTags: Tag[], searchTerms?: Record<string, string[]> }[],
applicableUnit: Unit,
tagsSource: UIEventSource<any>,
feedback: UIEventSource<Translation>
): ReadonlyInputElement<TagsFilter> {
// FreeForm input will be undefined if not present; will already contain a special input element if applicable
const ff = TagRenderingQuestion.GenerateFreeform(state, configuration, applicableUnit, tagsSource, feedback);
const hasImages = applicableMappings.findIndex(mapping => mapping.icon !== undefined) >= 0
let inputEls: InputElement<TagsFilter>[];
const ifNotsPresent = applicableMappings.some(mapping => mapping.ifnot !== undefined)
if (applicableMappings.length > 8 &&
(configuration.freeform?.type === undefined || configuration.freeform?.type === "string") &&
(!configuration.multiAnswer || configuration.freeform === undefined)) {
return TagRenderingQuestion.GenerateSearchableSelector(state, configuration, applicableMappings, tagsSource)
}
// FreeForm input will be undefined if not present; will already contain a special input element if applicable
const ff = TagRenderingQuestion.GenerateFreeform(state, configuration, applicableUnit, tagsSource, feedback);
function allIfNotsExcept(excludeIndex: number): TagsFilter[] {
if (configuration.mappings === undefined || configuration.mappings.length === 0) {
return undefined
@ -221,6 +231,100 @@ export default class TagRenderingQuestion extends Combine {
}
private static GenerateSearchableSelector(
state: FeaturePipelineState,
configuration: TagRenderingConfig,
applicableMappings: { if: TagsFilter; ifnot?: TagsFilter, then: TypedTranslation<object>; icon?: string; iconClass?: string, addExtraTags: Tag[], searchTerms?: Record<string, string[]> }[], tagsSource: UIEventSource<any>): InputElement<TagsFilter> {
const values: { show: BaseUIElement, value: number, mainTerm: Record<string, string>, searchTerms?: Record<string, string[]> }[] = []
for (let i = 0; i < applicableMappings.length; i++) {
const mapping = applicableMappings[i];
const tr = mapping.then.Subs(tagsSource.data)
const patchedMapping = <{ iconClass: "small-height", then: TypedTranslation<object> }>{
...mapping,
iconClass: `small-height`,
icon: mapping.icon ?? "./assets/svg/none.svg"
}
const fancy = TagRenderingQuestion.GenerateMappingContent(patchedMapping, tagsSource, state).SetClass("normal-background")
values.push({
show: fancy,
value: i,
mainTerm: tr.translations,
searchTerms: mapping.searchTerms
})
}
const searchValue: UIEventSource<string> = new UIEventSource<string>(undefined)
const ff = configuration.freeform
let onEmpty: BaseUIElement = undefined
if (ff !== undefined) {
onEmpty = new VariableUiElement(searchValue.map(search => configuration.render.Subs({[ff.key]: search})))
}
const classes = "h-64 overflow-scroll"
const presetSearch = new SearchablePillsSelector<number>(values, {
selectIfSingle: true,
mode: configuration.multiAnswer ? "select-many" : "select-one",
searchValue,
onNoMatches: onEmpty?.SetClass(classes).SetClass("flex justify-center items-center"),
searchAreaClass: classes
})
return new InputElementMap<number[], And>(presetSearch,
(x0, x1) => {
if (x0 == x1) {
return true;
}
if (x0 === undefined || x1 === undefined) {
return false;
}
if (x0.and.length !== x1.and.length) {
return false;
}
for (let i = 0; i < x0.and.length; i++) {
if (x1.and[i] != x0.and[i]) {
return false
}
}
return true;
},
(selected) => {
if (ff !== undefined && searchValue.data?.length > 0 && !presetSearch.someMatchFound.data) {
const t = new Tag(ff.key, searchValue.data)
if (ff.addExtraTags) {
return new And([t, ...ff.addExtraTags])
}
return new And([t]);
}
if (selected === undefined || selected.length == 0) {
return undefined;
}
const tfs = Utils.NoNull(applicableMappings.map((mapping, i) => {
if (selected.indexOf(i) >= 0) {
return mapping.if
} else {
return mapping.ifnot
}
}))
console.log("Got tags", tfs)
return new And(tfs);
},
(tf) => {
if (tf === undefined) {
return []
}
const selected: number[] = []
for (let i = 0; i < applicableMappings.length; i++) {
const mapping = applicableMappings[i]
if (tf.and.some(t => mapping.if == t)) {
selected.push(i)
}
}
return selected;
},
[searchValue, presetSearch.someMatchFound]
);
}
private static GenerateMultiAnswer(
configuration: TagRenderingConfig,
@ -337,7 +441,7 @@ export default class TagRenderingQuestion extends Combine {
then: Translation,
addExtraTags: Tag[],
icon?: string,
iconClass?: string
iconClass?: "small" | "medium" | "large" | "small-height"
}, ifNot?: TagsFilter[]): InputElement<TagsFilter> {
let tagging: TagsFilter = mapping.if;
@ -358,13 +462,13 @@ export default class TagRenderingQuestion extends Combine {
private static GenerateMappingContent(mapping: {
then: Translation,
icon?: string,
iconClass?: string
iconClass?: "small" | "medium" | "large" | "small-height" | "medium-height" | "large-height"
}, tagsSource: UIEventSource<any>, state: FeaturePipelineState): BaseUIElement {
const text = new SubstitutedTranslation(mapping.then, tagsSource, state)
if (mapping.icon === undefined) {
return text;
}
return new Combine([new Img(mapping.icon).SetClass("mapping-icon-"+(mapping.iconClass ?? "small")), text]).SetClass("flex")
return new Combine([new Img(mapping.icon).SetClass("mr-1 mapping-icon-" + (mapping.iconClass ?? "small")), text]).SetClass("flex items-center")
}
private static GenerateFreeform(state: FeaturePipelineState, configuration: TagRenderingConfig, applicableUnit: Unit, tags: UIEventSource<any>, feedback: UIEventSource<Translation>)
@ -412,7 +516,7 @@ export default class TagRenderingQuestion extends Combine {
const tagsData = tags.data;
const feature = state?.allElements?.ContainingFeatures?.get(tagsData.id)
const center = feature != undefined ? GeoOperations.centerpointCoordinates(feature) : [0,0]
const center = feature != undefined ? GeoOperations.centerpointCoordinates(feature) : [0, 0]
const input: InputElement<string> = ValidatedTextField.ForType(configuration.freeform.type)?.ConstructInputElement({
country: () => tagsData._country,
location: [center[1], center[0]],
@ -423,13 +527,13 @@ export default class TagRenderingQuestion extends Combine {
placeholder: configuration.freeform.placeholder,
feedback
});
// Init with correct value
input?.GetValue().setData(tagsData[freeform.key] ?? freeform.default);
// Add a length check
input?.GetValue().addCallbackD((v : string | undefined) => {
if(v?.length >= 255){
input?.GetValue().addCallbackD((v: string | undefined) => {
if (v?.length >= 255) {
feedback.setData(Translations.t.validation.tooLong.Subs({count: v.length}))
}
})
@ -448,10 +552,10 @@ export default class TagRenderingQuestion extends Combine {
return inputTagsFilter;
}
public static CreateTagExplanation(selectedValue: Store<TagsFilter>,
tags: Store<object>,
state?: {osmConnection?: OsmConnection}){
state?: { osmConnection?: OsmConnection }) {
return new VariableUiElement(
selectedValue.map(
(tagsFilter: TagsFilter) => {

View file

@ -1,4 +1,4 @@
import {UIEventSource} from "../../Logic/UIEventSource";
import {Store, UIEventSource} from "../../Logic/UIEventSource";
import LayerConfig from "../../Models/ThemeConfig/LayerConfig";
import {ShowDataLayerOptions} from "./ShowDataLayerOptions";
import {ElementStorage} from "../../Logic/ElementStorage";
@ -20,7 +20,7 @@ We don't actually import it here. It is imported in the 'MinimapImplementation'-
export default class ShowDataLayerImplementation {
private static dataLayerIds = 0
private readonly _leafletMap: UIEventSource<L.Map>;
private readonly _leafletMap: Store<L.Map>;
private readonly _enablePopups: boolean;
private readonly _features: RenderingMultiPlexerFeatureSource
private readonly _layerToShow: LayerConfig;

View file

@ -7,7 +7,7 @@ import ScrollableFullScreen from "../Base/ScrollableFullScreen";
export interface ShowDataLayerOptions {
features: FeatureSource,
selectedElement?: UIEventSource<any>,
leafletMap: UIEventSource<L.Map>,
leafletMap: Store<L.Map>,
popup?: undefined | ((tags: UIEventSource<any>, layer: LayerConfig) => ScrollableFullScreen),
zoomToFeatures?: false | boolean,
doShowLayer?: Store<boolean>,

View file

@ -1,14 +1,14 @@
/**
* SHows geojson on the given leaflet map, but attempts to figure out the correct layer first
*/
import {UIEventSource} from "../../Logic/UIEventSource";
import {Store} from "../../Logic/UIEventSource";
import ShowDataLayer from "./ShowDataLayer";
import PerLayerFeatureSourceSplitter from "../../Logic/FeatureSource/PerLayerFeatureSourceSplitter";
import FilteredLayer from "../../Models/FilteredLayer";
import {ShowDataLayerOptions} from "./ShowDataLayerOptions";
export default class ShowDataMultiLayer {
constructor(options: ShowDataLayerOptions & { layers: UIEventSource<FilteredLayer[]> }) {
constructor(options: ShowDataLayerOptions & { layers: Store<FilteredLayer[]> }) {
new PerLayerFeatureSourceSplitter(options.layers, (perLayer => {
const newOptions = {

View file

@ -49,6 +49,9 @@ export class SubstitutedTranslation extends VariableUiElement {
const allElements = SubstitutedTranslation.ExtractSpecialComponents(txt, extraMappings).map(
proto => {
if (proto.fixed !== undefined) {
if(tagsSource === undefined){
return Utils.SubstituteKeys(proto.fixed, undefined)
}
return new VariableUiElement(tagsSource.map(tags => Utils.SubstituteKeys(proto.fixed, tags)));
}
const viz = proto.special;

View file

@ -284,7 +284,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
* @param useLang
* @constructor
*/
public static SubstituteKeys(txt: string | undefined, tags: any, useLang?: string): string | undefined {
public static SubstituteKeys(txt: string | undefined, tags?: any, useLang?: string): string | undefined {
if (txt === undefined) {
return undefined
}
@ -294,7 +294,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
while (match) {
const key = match[1]
let v = tags[key]
let v = tags === undefined ? undefined : tags[key]
if (v !== undefined) {
if (v["toISOString"] != undefined) {

View file

@ -1,11 +1,11 @@
{
"contributors": [
{
"commits": 4040,
"commits": 4054,
"contributor": "Pieter Vander Vennet"
},
{
"commits": 86,
"commits": 103,
"contributor": "Robin van der Linde"
},
{
@ -188,6 +188,10 @@
"commits": 2,
"contributor": "Stanislas Gueniffey"
},
{
"commits": 1,
"contributor": "loviuz"
},
{
"commits": 1,
"contributor": "kjonosm"

View file

@ -84,7 +84,8 @@
"id": "Beragam karya seni",
"pt": "Diversas obras de arte",
"hu": "Szobrok, mellszobrok, graffitik és egyéb műalkotások nyílt világtérképe",
"da": "Forskellige kunstværker"
"da": "Forskellige kunstværker",
"ca": "Un mapa obert d'estàtues, busts, grafitis i altres obres d'art del tot el món"
},
"minzoom": 12,
"presets": [

View file

@ -40,7 +40,8 @@
"title": {
"render": {
"en": "Way",
"nl": "Weg"
"nl": "Weg",
"de": "Weg"
},
"mappings": [
{
@ -83,7 +84,8 @@
},
"then": {
"nl": "Weg met fietssugestiestrook {name}",
"en": "Road with shared lane {name}"
"en": "Road with shared lane {name}",
"de": "Straße mit gemeinsam genutzter Fahrspur {name}"
}
},
{
@ -106,7 +108,8 @@
},
"then": {
"nl": "Weg met fietsstrook {name}",
"en": "Road with bike lane {name}"
"en": "Road with bike lane {name}",
"de": "Straße mit Fahrradstreifen {name}"
}
},
{
@ -129,7 +132,8 @@
},
"then": {
"nl": "Weg met fietspad naast de weg {name}",
"en": "Road with cycleway next to the road {name}"
"en": "Road with cycleway next to the road {name}",
"de": "Straße mit Radweg neben der Straße {name}"
}
},
{

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="14"
height="14"
viewBox="0 0 14 14">
<rect
width="14"
height="14"
x="0"
y="0"
id="canvas"
style="fill:none;stroke:none;visibility:hidden" />
<path
d="m 7,8 c 2,0 2,1 2,3 0,1 -1.009121,3 0,3 1,0 1.751359,-1.142963 2,-3 C 11.248641,9.142963 11,8 11,7 11,5 12,3 12,2 12,1 11.599761,0.21742 11,0 9,0 9,1 7,1 5,1 5,0 3,0 2.400799,0.21742 2,1 2,2 2,3 3,5 3,7 3,8 2.87761,9.57334 3,11 3.12239,12.42666 4,14 5,14 6.008702,14 5,12 5,11 5,9 5,8 7,8 z"
id="dentist" style="fill:#BF0000"/>
</svg>

After

Width:  |  Height:  |  Size: 739 B

View file

@ -1,76 +1,138 @@
{
"id": "doctors",
"name": {
"en": "doctors"
"id": "doctors",
"name": {
"en": "doctors"
},
"source": {
"osmTags": {
"or": [
"amenity=doctors",
"amenity=dentist",
"healthcare=physiotherapist"
]
}
},
"title": {
"render": {
"en": "Doctors Office {name}"
},
"title": {
"render": {
"en": "Doctors Office {name}"
}
},
"source": {
"osmTags": {
"and": [
"amenity=doctors"
]
}
},
"minzoom": 13,
"tagRenderings": [
"images",
"opening_hours",
"phone",
"email",
"website",
{
"id": "specialty",
"render": {
"en": "This doctor is specialized in {healthcare:speciality}"
},
"question": {
"en": "What is this doctor specialized in?"
},
"freeform": {
"key": "healthcare:speciality"
},
"mappings": [
{
"if": "healthcare:speciality=general",
"then": {
"en": "This is a general practitioner"
}
},
{
"if": "healthcare:speciality=gynaecology",
"then": {
"en": "This is a gynaecologist"
}
},
{
"if": "healthcare:speciality=psychiatry",
"then": {
"en": "This is a psychiatrist"
}
},
{
"if": "healthcare:speciality=paediatrics",
"then": {
"en": "This is a paediatrician"
}
}
]
}
],
"mapRendering": [
{
"icon": {
"render": "pin:#6BC4F7;./assets/layers/doctors/doctors.svg"
},
"iconSize": "40,40,bottom",
"location": [
"point",
"centroid"
]
}
"mappings": [
{
"if": "amenity=doctors",
"then": "Doctors Office {name}"
},
{
"if": "amenity=dentist",
"then": "Dentists office {name}"
},
{
"if": "healthcare=physiotherapist",
"then": "Physiotherapists office {name}"
}
]
},
"minzoom": 13,
"tagRenderings": [
"images",
"opening_hours",
"phone",
"email",
"website",
{
"condition": "amenity=doctors",
"id": "specialty",
"render": {
"en": "This doctor is specialized in {healthcare:speciality}"
},
"question": {
"en": "What is this doctor specialized in?"
},
"freeform": {
"key": "healthcare:speciality"
},
"mappings": [
{
"if": "healthcare:speciality=general",
"then": {
"en": "This is a general practitioner"
}
},
{
"if": "healthcare:speciality=gynaecology",
"then": {
"en": "This is a gynaecologist"
}
},
{
"if": "healthcare:speciality=psychiatry",
"then": {
"en": "This is a psychiatrist"
}
},
{
"if": "healthcare:speciality=paediatrics",
"then": {
"en": "This is a paediatrician"
}
}
]
}
],
"presets": [
{
"title": {
"en": "a doctors office"
},
"tags": [
"amenity=doctors"
]
},
{
"title": {
"en": "a dentists office"
},
"tags": [
"amenity=dentist"
]
},
{
"title": {
"en": "a physiotherapists office"
},
"tags": [
"healthcare=physiotherapist"
]
}
],
"filter": [
{
"id": "opened-now",
"options": [
{
"question": {
"en": "Opened now"
},
"osmTags": "_isOpen=yes"
}
]
}
],
"mapRendering": [
{
"icon": {
"render": "circle:white;./assets/layers/doctors/doctors.svg",
"mappings": [
{
"if": "amenity=dentist",
"then": "circle:white;./assets/layers/doctors/dentist.svg"
}
]
},
"iconSize": "40,40,center",
"location": [
"point",
"centroid"
]
}
]
}

View file

@ -1,4 +1,14 @@
[
{
"path": "dentist.svg",
"license": "cc0",
"authors": [
"osmcarto"
],
"sources": [
"https://wiki.openstreetmap.org/wiki/File:Dentist-14.svg"
]
},
{
"path": "doctors.svg",
"license": "cc0",

View file

@ -814,10 +814,16 @@
"deletion": {
"nonDeleteMappings": [
{
"if": "amenity=cafe",
"if": "amenity=pub",
"then": {
"en": "This is actually a pub"
}
},
{
"if": "amenity=cafe",
"then": {
"en": "This is actually a cafe"
}
}
],
"softDeletionTags": {

View file

@ -0,0 +1,44 @@
{
"id": "hospital",
"name": {
"en": "Hospital"
},
"title": {
"render": {
"en": "Hospital"
}
},
"minzoom": 12,
"source": {
"osmTags": "amenity=hospital"
},
"tagRenderings": [
{
"id": "name",
"render": {
"en": "Name of the hospital name is {name}"
},
"question": {
"en": "What does the of the hospital ?"
},
"freeform": {
"key": "name"
}
},
"phone",
"email",
"website"
],
"mapRendering": [
{
"icon": {
"render": "circle:white;./assets/layers/hospital/hospital.svg"
},
"iconSize": "40,40,center",
"location": [
"point",
"centroid"
]
}
]
}

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg
width="14"
height="14"
version="1.1"
viewBox="0 0 3.7042 3.7042"
xmlns="http://www.w3.org/2000/svg">
<g transform="translate(0 -293.3)">
<path transform="matrix(.26458 0 0 .26458 0 293.3)"
d="m7 0a7 7 0 0 0-7 7 7 7 0 0 0 7 7 7 7 0 0 0 7-7 7 7 0 0 0-7-7zm-1 3h2v3h3v2h-3v3h-2v-3h-3v-2h3v-3z"
fill="#BF0000"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 397 B

View file

@ -0,0 +1,12 @@
[
{
"path": "hospital.svg",
"license": "CC-0",
"authors": [
"osmcarto"
],
"sources": [
"https://wiki.openstreetmap.org/wiki/File:Hospital-14.svg"
]
}
]

View file

@ -3,9 +3,7 @@
"description": "Layer containing various presets and questions generated by ID. These are meant to be reused in other layers by importing the tagRenderings with `id_preset.<tagrendering>",
"#dont-translate": "*",
"source": {
"osmTags": {
"and": []
}
"osmTags": "id~*"
},
"mapRendering": null,
"tagRenderings": [

View file

@ -2,11 +2,13 @@
"id": "kerbs",
"name": {
"en": "Kerbs",
"nl": "Stoepranden"
"nl": "Stoepranden",
"de": "Bordsteine"
},
"description": {
"en": "A layer showing kerbs.",
"nl": "Een laag met stoepranden."
"nl": "Een laag met stoepranden.",
"de": "Eine Ebene, die Bordsteine zeigt."
},
"source": {
"osmTags": "barrier=kerb"
@ -15,7 +17,8 @@
"title": {
"render": {
"en": "Kerb",
"nl": "Stoeprand"
"nl": "Stoeprand",
"de": "Bordstein"
}
},
"mapRendering": [
@ -56,14 +59,16 @@
"id": "kerb-type",
"question": {
"en": "What is the height of this kerb?",
"nl": "Hoe hoog is deze stoeprand?"
"nl": "Hoe hoog is deze stoeprand?",
"de": "Wie hoch ist der Bordstein?"
},
"mappings": [
{
"if": "kerb=raised",
"then": {
"en": "This kerb is raised (>3 cm)",
"nl": "Deze stoeprand is hoog (>3 cm)"
"nl": "Deze stoeprand is hoog (>3 cm)",
"de": "Der Bordstein ist erhöht (>3 cm)"
},
"icon": {
"path": "./assets/layers/kerbs/raised.svg",
@ -74,7 +79,8 @@
"if": "kerb=lowered",
"then": {
"en": "This kerb is lowered (~3 cm)",
"nl": "Deze stoeprand is verlaagd (~3 cm)"
"nl": "Deze stoeprand is verlaagd (~3 cm)",
"de": "Der Bordstein ist abgesenkt (~3 cm)"
},
"icon": {
"path": "./assets/layers/kerbs/lowered.svg",
@ -85,7 +91,8 @@
"if": "kerb=flush",
"then": {
"en": "This kerb is flush (~0cm)",
"nl": "Deze stoeprand is vlak (~0cm)"
"nl": "Deze stoeprand is vlak (~0cm)",
"de": "Der Bordstein ist bündig (~0cm)"
},
"icon": {
"path": "./assets/layers/kerbs/flush.svg",
@ -96,7 +103,8 @@
"if": "kerb=no",
"then": {
"en": "There is no kerb here",
"nl": "Er is hier geen stoeprand"
"nl": "Er is hier geen stoeprand",
"de": "Hier gibt es keinen Bordstein"
},
"hideInAnswer": true,
"icon": {
@ -108,7 +116,8 @@
"if": "kerb=yes",
"then": {
"en": "There is a kerb of unknown height",
"nl": "Er is een stoeprand met onbekende hoogte"
"nl": "Er is een stoeprand met onbekende hoogte",
"de": "Es gibt einen Bordstein mit unbekannter Höhe"
},
"hideInAnswer": true
}
@ -118,25 +127,29 @@
{
"id": "tactile-paving",
"question": {
"en": "Is there tactile paving at this kerb?"
"en": "Is there tactile paving at this kerb?",
"de": "Gibt es am Bordstein ein taktiles Pflaster?"
},
"mappings": [
{
"if": "tactile_paving=yes",
"then": {
"en": "This kerb has tactile paving."
"en": "This kerb has tactile paving.",
"de": "Der Bordstein hat ein taktiles Pflaster."
}
},
{
"if": "tactile_paving=no",
"then": {
"en": "This kerb does not have tactile paving."
"en": "This kerb does not have tactile paving.",
"de": "Der Bordstein hat kein taktiles Pflaster."
}
},
{
"if": "tactile_paving=incorrect",
"then": {
"en": "This kerb has tactile paving, but it is incorrect"
"en": "This kerb has tactile paving, but it is incorrect",
"de": "Der Bordstein hat ein taktiles Pflaster, das aber falsch ist"
},
"hideInAnswer": true
}
@ -147,17 +160,20 @@
"id": "kerb-height",
"question": {
"en": "What is the height of this kerb?",
"nl": "Hoe hoog is deze stoeprand?"
"nl": "Hoe hoog is deze stoeprand?",
"de": "Wie hoch ist der Bordstein?"
},
"render": {
"en": "Kerb height: {{kerb:height}}",
"nl": "Stoeprandhoogte: {{kerb:height}}"
"nl": "Stoeprandhoogte: {{kerb:height}}",
"de": "Bordsteinhöhe: {{kerb:height}}"
},
"freeform": {
"key": "kerb:height",
"placeholder": {
"en": "Height of the kerb",
"nl": "Hoogte van de stoeprand"
"nl": "Hoogte van de stoeprand",
"de": "Höhe des Bordsteins"
},
"type": "pnat"
}
@ -167,14 +183,16 @@
{
"title": {
"en": "a kerb",
"nl": "een stoeprand"
"nl": "een stoeprand",
"de": "einen Bordstein"
},
"tags": [
"barrier=kerb"
],
"description": {
"en": "Kerb in a footway",
"nl": "Stoeprand in een voetpad"
"nl": "Stoeprand in een voetpad",
"de": "Bordstein in einem Fußweg"
},
"preciseInput": {
"maxSnapDistance": 10,
@ -193,42 +211,48 @@
{
"question": {
"en": "All types of kerbs",
"nl": "Alle typen stoepranden"
"nl": "Alle typen stoepranden",
"de": "Alle Arten von Bordsteinen"
}
},
{
"osmTags": "kerb=raised",
"question": {
"en": "Raised kerb (>3 cm)",
"nl": "Hoge stoeprand (>3 cm)"
"nl": "Hoge stoeprand (>3 cm)",
"de": "Erhöhter Bordstein (>3 cm)"
}
},
{
"osmTags": "kerb=lowered",
"question": {
"en": "Lowered kerb (~3 cm)",
"nl": "Verlaagde stoeprand (~3 cm)"
"nl": "Verlaagde stoeprand (~3 cm)",
"de": "Abgesenkter Bordstein (~3 cm)"
}
},
{
"osmTags": "kerb=flush",
"question": {
"en": "Flush kerb (~0cm)",
"nl": "Vlakke stoeprand (~0cm)"
"nl": "Vlakke stoeprand (~0cm)",
"de": "Bündiger Bordstein (~0cm)"
}
},
{
"osmTags": "kerb=no",
"question": {
"en": "No kerb",
"nl": "Geen stoeprand"
"nl": "Geen stoeprand",
"de": "Kein Bordstein"
}
},
{
"osmTags": "kerb=",
"question": {
"en": "Kerb with unknown height",
"nl": "Stoeprand met onbekende hoogte"
"nl": "Stoeprand met onbekende hoogte",
"de": "Bordstein mit unbekannter Höhe"
}
}
]
@ -238,25 +262,29 @@
"options": [
{
"question": {
"en": "Kerbs with or without tactile paving"
"en": "Kerbs with or without tactile paving",
"de": "Bordsteine mit oder ohne taktilem Pflaster"
}
},
{
"osmTags": "tactile_paving=yes",
"question": {
"en": "Kerb with tactile paving"
"en": "Kerb with tactile paving",
"de": "Bordstein mit taktilem Pflaster"
}
},
{
"osmTags": "tactile_paving=no",
"question": {
"en": "Kerb without tactile paving"
"en": "Kerb without tactile paving",
"de": "Bordstein ohne taktilem Pflaster"
}
},
{
"osmTags": "tactile_paving=",
"question": {
"en": "Kerb wihout information about tactile paving"
"en": "Kerb wihout information about tactile paving",
"de": "Bordstein ohne Informationen über taktiles Pflaster"
}
}
]
@ -273,11 +301,13 @@
],
"human": {
"en": "centimeters",
"nl": "centimeter"
"nl": "centimeter",
"de": "Zentimeter"
},
"humanSingular": {
"en": "centimeter",
"nl": "centimeter"
"nl": "centimeter",
"de": "Zentimeter"
},
"default": true
},
@ -289,11 +319,13 @@
],
"human": {
"en": "meters",
"nl": "meter"
"nl": "meter",
"de": "Meter"
},
"humanSingular": {
"en": "meter",
"nl": "meter"
"nl": "meter",
"de": "Meter"
}
}
],

View file

@ -68,6 +68,19 @@
"type": "pnat"
},
"mappings": [
{
"if": {
"and":["highway=living_street","_country!=be"]
},
"then": {
"en": "This is a living street"
},
"icon": {
"path": "./assets/layers/maxspeed/living_street_be.svg",
"class": "large"
},
"hideInAnswer": true
},
{
"if": "highway=living_street",
"then": {

View file

@ -0,0 +1,12 @@
[
{
"path": "pharmacy.svg",
"license": "CC0",
"authors": [
"OSM-carto"
],
"sources": [
"https://wiki.openstreetmap.org/wiki/File:Pharmacy-14.svg"
]
}
]

View file

@ -0,0 +1,64 @@
{
"id": "pharmacy",
"name": {
"en": "pharmacy"
},
"title": {
"render": {
"en": "{name}"
}
},
"source": {
"osmTags": {
"and": [
"amenity=pharmacy"
]
}
},
"minzoom": 13,
"tagRenderings": [
"images",
"opening_hours",
"phone",
"email",
"website",
{
"id": "wheelchair",
"question": {
"en": "Is this pharmacy easy to access on a wheelchair?"
},
"mappings": [
{
"if": "wheelchair=yes",
"then": {
"en": "This pharmacy is easy to access on a wheelchair"
}
},
{
"if": "wheelchair=no",
"then": {
"en": "This pharmacy is hard to access on a wheelchair"
}
},
{
"if": "wheelchair=limited",
"then": {
"en": "This pharmacy has limited access for wheelchair users"
}
}
]
}
],
"mapRendering": [
{
"icon": {
"render": "./assets/layers/pharmacy/pharmacy.svg"
},
"iconSize": "40,40,bottom",
"location": [
"point",
"centroid"
]
}
]
}

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="500" height="500" viewBox="0 0 14 14">
<rect width="14" height="14" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/>
<path d="m 4,4 -2,2 0,8 10,0 0,-8 -2,-2.0000003 z m 2,2 2,0 0,2 2,0 0,2 -2,0 0,2 -2,0 0,-2 -2,0 0,-2 2,0 z M 4,0 4,3 10,3 10,0 z" id="pharmacy" style="fill:#BF0000"/>
</svg>

After

Width:  |  Height:  |  Size: 493 B

View file

@ -469,7 +469,8 @@
"nl": "Dit is een recyclingcontainer",
"de": "Dies ist ein Recycling-Container",
"es": "Esto es un contenedor de reciclaje",
"it": "Questo è un contenitore per il riciclo di rifiuti"
"it": "Questo è un contenitore per il riciclo di rifiuti",
"ca": "Açò és un contenidor de reciclatge"
}
},
{
@ -479,7 +480,8 @@
"nl": "Dit is een recyclingcentrum",
"de": "Dies ist ein Wertstoffhof",
"es": "Esto es un centro de reciclaje",
"it": "Questo è un centro per la raccola e riciclo di rifiuti"
"it": "Questo è un centro per la raccola e riciclo di rifiuti",
"ca": "Açò és un centre de reciclatge"
}
},
{
@ -529,7 +531,8 @@
"nl": "Dit recyclagecentrum heet <b>{name}</b>",
"de": "Dieser Wertstoffhof heißt <b>{name}</b>",
"es": "Este centro de reciclaje se llama <b>{name}</b>",
"it": "Questo centro raccolta e riciclo rifiuti si chiama <b>{name}</b>"
"it": "Questo centro raccolta e riciclo rifiuti si chiama <b>{name}</b>",
"ca": "Aquest centre de reciclatge s'anomena <b>{name}</b>"
},
"freeform": {
"key": "name"
@ -586,7 +589,8 @@
"nl": "Deze container is buiten",
"de": "Der Container befindet sich im Freien",
"es": "Este contenedor se sitúa en el exterior",
"it": "Questo contenitore è all'aperto"
"it": "Questo contenitore è all'aperto",
"ca": "Aquest contenidor està situat a l'aire lliure"
}
}
]
@ -624,7 +628,8 @@
"en": "Beverage cartons can be recycled here",
"nl": "Drankpakken kunnen hier gerecycled worden",
"de": "Getränkekartons können hier recycelt werden",
"it": "Cartoni per bevande"
"it": "Cartoni per bevande",
"ca": "Ací es poden reciclar els cartons de begudes"
},
"icon": {
"path": "./assets/layers/recycling/beverage_cartons.svg",
@ -639,7 +644,8 @@
"nl": "Blikken kunnen hier gerecycled worden",
"de": "Dosen können hier recycelt werden",
"es": "Aquí se pueden reciclar latas",
"it": "Lattine"
"it": "Lattine",
"ca": "Ací es poden reciclar llaunes"
},
"icon": {
"path": "./assets/layers/recycling/cans.svg",
@ -713,7 +719,8 @@
"nl": "Organisch afval kan hier gerecycled worden",
"de": "Bio-Abfall kann hier recycelt werden",
"es": "Aquí se pueden reciclar residuos orgánicos",
"it": "Umido"
"it": "Umido",
"ca": "Ací es poden reciclar residus orgànics"
},
"hideInAnswer": true,
"icon": {
@ -729,7 +736,8 @@
"nl": "Glazen flessen kunnen hier gerecycled worden",
"de": "Glasflaschen können hier recycelt werden",
"es": "Aquí se pueden reciclar botellas de cristal",
"it": "Bottiglie di vetro"
"it": "Bottiglie di vetro",
"ca": "Ací es poden reciclar ampolles de vidre"
},
"icon": {
"path": "./assets/layers/recycling/glass_bottles.svg",
@ -744,7 +752,8 @@
"nl": "Glas kan hier gerecycled worden",
"de": "Glas kann hier recycelt werden",
"es": "Aquí se puede reciclar cristal",
"it": "Vetro"
"it": "Vetro",
"ca": "Ací es pot reciclar vidre"
},
"icon": {
"path": "./assets/layers/recycling/glass.svg",
@ -759,7 +768,8 @@
"nl": "Kranten kunnen hier gerecycled worden",
"de": "Zeitungen können hier recycelt werden",
"es": "Aquí se pueden reciclar periódicos",
"it": "Giornali"
"it": "Giornali",
"ca": "Ací es poden reciclar diaris"
},
"icon": {
"path": "./assets/layers/recycling/newspaper.svg",
@ -774,7 +784,8 @@
"nl": "Papier kan hier gerecycled worden",
"de": "Papier kann hier recycelt werden",
"es": "Aquí se puede reciclar papel",
"it": "Carta"
"it": "Carta",
"ca": "Ací es pot reciclar paper"
},
"icon": {
"path": "./assets/layers/recycling/paper.svg",
@ -789,7 +800,8 @@
"nl": "Plastic flessen kunnen hier gerecycled worden",
"de": "Plastikflaschen können hier recycelt werden",
"es": "Aquí se pueden reciclar botellas de plástico",
"it": "Bottiglie di platica"
"it": "Bottiglie di platica",
"ca": "Ací es poden reciclar ampolles de plàstic"
},
"icon": {
"path": "./assets/layers/recycling/plastic_bottles.svg",
@ -804,7 +816,8 @@
"nl": "Plastic verpakking kan hier gerecycled worden",
"de": "Kunststoffverpackungen können hier recycelt werden",
"es": "Aquí se pueden reciclar embalajes plásticos",
"it": "Confezioni di plastica"
"it": "Confezioni di plastica",
"ca": "Ací es poden reciclar envasos de plàstic"
},
"icon": {
"path": "./assets/layers/recycling/plastic_packaging.svg",
@ -819,7 +832,8 @@
"nl": "Plastic kan hier gerecycled worden",
"de": "Kunststoff kann hier recycelt werden",
"es": "Aquí se puede reciclar plástico",
"it": "Plastica"
"it": "Plastica",
"ca": "Ací es pot reciclar plàstic"
},
"icon": {
"path": "./assets/layers/recycling/plastic.svg",
@ -902,7 +916,8 @@
"en": "Residual waste can be recycled here",
"nl": "Restafval kan hier gerecycled worden",
"de": "Restmüll kann hier recycelt werden",
"it": "Secco"
"it": "Secco",
"ca": "Ací es pot reciclar el rebuig"
},
"icon": {
"path": "./assets/layers/waste_disposal/waste_disposal.svg",
@ -918,8 +933,9 @@
"en": "This recycling facility is operated by {operator}",
"nl": "Deze recyclingfaciliteit wordt beheerd door {operator}",
"de": "Diese Recyclinganlage wird betrieben von {operator}",
"es": "Esta facilidad de reciclado la opera {operator}",
"it": "Questa struttura di raccola e riciclo è gestita da {operator}"
"es": "Esta infraestructura de reciclado la opera {operator}",
"it": "Questa struttura di raccola e riciclo è gestita da {operator}",
"ca": "Aquesta infraestuctura de reciclatge està operada per {operator}"
},
"question": {
"en": "What company operates this recycling facility?",

View file

@ -322,7 +322,8 @@
"inline": true,
"placeholder": {
"en": "Language in lowercase English",
"nl": "Taal in lowercase Engel"
"nl": "Taal in lowercase Engel",
"de": "Sprache in Englisch in Kleinbuchstaben"
},
"addExtraTags": [
"fixme=Freeform tag `school:language` used, to be doublechecked"
@ -342,21 +343,24 @@
"if": "school:language=french",
"then": {
"en": "French is the main language of {name}",
"nl": "Frans is de voertaal van {name}"
"nl": "Frans is de voertaal van {name}",
"de": "Französisch ist die Hauptsprache von {name}"
}
},
{
"if": "school:language=dutch",
"then": {
"en": "Dutch is the main language of {name}",
"nl": "Nederlands is de voertaal van {name}"
"nl": "Nederlands is de voertaal van {name}",
"de": "Niederländisch ist die Hauptsprache von {name}"
}
},
{
"if": "school:language=german",
"then": {
"en": "German is the main language of {name}",
"nl": "Duits is de voertaal van {name}"
"nl": "Duits is de voertaal van {name}",
"de": "Deutsch ist die Hauptsprache von {name}"
}
},
{

View file

@ -105,6 +105,13 @@
"question": {
"en": "What kind of shop is this?",
"nl": "Wat voor soort winkel is dit?"
},
"render": {
"en":"This is a {shop}"
},
"freeform": {
"key": "shop",
"addExtraTags": ["fixme=freeform shop key used, to be reviewed"]
}
}
},
@ -113,6 +120,57 @@
"email",
"phone",
"payment-options",
{
"id": "copyshop-print-sizes",
"condition": {
"or": [
"shop~.*copyshop.*",
"shop~.*stationary.*",
"service:print=yes"
]
},
"question": {
"en": "What paper formats does this shop offer?"
},
"multiAnswer": true,
"mappings": [
{
"if": "service:print:A4=yes",
"then": {
"en": "This shop can print on papers of size A4"
},
"ifnot": "service:print:A4=no"
},
{
"if": "service:print:A3=yes",
"then": {
"en": "This shop can print on papers of size A3"
},
"ifnot": "service:print:A3=no"
},
{
"if": "service:print:A2=yes",
"then": {
"en": "This shop can print on papers of size A2"
},
"ifnot": "service:print:A2=no"
},
{
"if": "service:print:A1=yes",
"then": {
"en": "This shop can print on papers of size A1"
},
"ifnot": "service:print:A1=no"
},
{
"if": "service:print:A0=yes",
"then": {
"en": "This shop can print on papers of size A0"
},
"ifnot": "service:print:A0=no"
}
]
},
"questions",
"reviews"
],

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg xmlns="http://www.w3.org/2000/svg" width="375px" height="375px" viewBox="0 0 375 375" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(48.627451%,72.156864%,18.431373%);fill-opacity:1;" d="m 240,270 c -10.51214,0 -17.06362,5.31218 -21.09208,8.22243 L 200,295 l -13.40899,9.13092 4.81906,-4.41221 c -2.45204,1.98626 -8.43462,9.4328 -9.5545,12.00606 -0.80851,1.8688 -2.80916,16.5391 -2.8094,18.50388 L 180,345 h 100.00002 v -28.12499 l 0.95383,-24.02418 C 279.36417,275.26526 275,275 260,275 Z"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 224.78416,27.867714 C 207.83633,20.892181 205,30 201.4908,33.483328 c -3.13355,3.110444 -4.18514,6.793339 -4.92975,13.162944 C 195,60 200,60 212.17552,64.021358 c 8.42757,2.783478 13.09879,0.933943 17.36376,-3.873285 3.30497,-3.725168 5.40227,-4.73171 6.11084,-11.873509 0.8525,-8.592508 0.044,-15.916436 -10.86596,-20.40685 z M 190,65 c -9.52441,-0.917061 -12.07747,2.762778 -15,5 l -5,10 -10,20 c -5,5 -7.02649,20.45319 0,25 l 11.46579,6.14143 c -13.95723,6.14722 -25.90358,8.69174 -40.41254,12.50155 -8.92858,2.34449 -19.88001,3.37632 -28.56099,7.76485 -9.014982,4.55739 -14.786174,10.31022 -19.927371,17.45223 -9.072982,1.05932 -32.906871,14.0154 -42.052984,31.2902 -3.839032,7.65623 -19.072351,74.0743 -3.955093,80.72348 5.708983,1.27809 15.640201,-0.70601 15.599701,-13.86338 -0.108001,-35.02595 0.339952,-65.14068 25.79507,-79.45023 C 78.825248,201.92336 80.834978,208.68765 90,225 l -20,40 -16.32953,39.88548 c -2.522365,5.62883 -3.243613,13.4183 5.077871,19.11488 C 64.372524,326.54946 73.614821,320.68296 75,315 L 98.669339,262.36113 117.54355,243.09234 141.10638,216.635 c 28.64298,4.09511 70.89542,-1.80723 100.97701,-26.39969 h 28.16814 l -11.82569,23.9346 C 250,220 255.27742,230.99587 260.8042,233.88839 270,240 277.18878,230.56171 280,225 l 18.46458,-40.05047 c 0.90355,-11.60271 -2.04845,-13.5154 -9.80084,-17.04381 -11.12002,-1.78157 1.65674,0.0402 0,0 v -0.1326 c -13.56808,-2.82951 -25.38466,-1.28029 -37.30881,0 7.75126,-22.2122 23.68226,-38.18561 43.3733,-36.63364 13.04658,10.51921 29.18544,30.02218 28.45642,28.99055 -1.37763,-1.9495 0.55254,2.10376 2.17266,3.91304 2.13859,2.37925 5.19256,3.73586 8.39458,3.73005 6.21306,0 11.24811,-5.02833 11.24811,-11.23109 -0.002,-1.19274 -1.78451,-15.41319 -2.16003,-16.5454 l -8.47284,-29.82576 -0.30859,0.0877 c -1.75045,-4.985 -5.20489,-9.19557 -9.75592,-11.890135 L 332,85 c 1.14686,-1.622582 2,-3 1,-5 -2,-2 -6,-1 -9,1 l -14,9 c -12.49469,-3.56121 -33.58022,-3.171563 -55.22958,6.252257 -3.15809,1.41264 -18.18315,7.408833 -28.06798,12.733063 -0.14174,-0.36321 -0.13182,-0.62598 -0.30664,-1.00807 L 216.9494,91.939125 210,75 c -1.75586,-3.835199 -2.84028,-5.186845 -7.17863,-6.731979 -0.50012,-0.05264 -5.7694,-2.017607 -6.27893,-2.020137 z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -43,6 +43,17 @@
"https://www.provincieantwerpen.be/"
]
},
{
"path": "equestrian.svg",
"license": "CC0",
"authors": [
"Hufkratzer"
],
"sources": [
"https://github.com/pietervdvn/MapComplete/issues/920",
" https://gist.githubusercontent.com/Hufkratzer/81abcfe749ce8f99257e38f58633dd72/raw/8fa614a983807724f7110793b57344cc70dc34bc/equestrian.svg"
]
},
{
"path": "lock.svg",
"license": "CC-BY-SA 4.0",

View file

@ -506,7 +506,8 @@
"sport=soccer",
"sport=table_tennis",
"sport=tennis",
"sport=volleyball"
"sport=volleyball",
"sport=equestrian"
]
},
"then": "circle:white;./assets/layers/sport_pitch/{sport}.svg"

View file

@ -33,7 +33,7 @@
"nb_NO": "Velkommen til det åpne kunstverkskartet, et kart over statuer, byster, grafitti, og andre kunstverk i verden",
"hu": "Szobrok, mellszobrok, graffitik és egyéb műalkotások nyílt világtérképe",
"pl": "Witaj w Open Artwork Map, mapie pomników, popierś, graffitti i innych dzieł sztuki z całego świata",
"ca": "Benvingut a Open Artwork Map, un mapa d'estàtues, busts, grafitis i altres obres d'art del tot el món",
"ca": "Un mapa obert d'estàtues, busts, grafitis i altres obres d'art del tot el món",
"zh_Hans": "欢迎使用Open Artwork Map一个雕塑、半身像、涂鸦和其他全球艺术品的地图",
"fil": "Malugod na pag-dating sa Open Artwork Map, ang mapa ng mga bantayog, graffiti, at iba pang likhang sining sa buong mundo"
},

View file

@ -18,7 +18,8 @@
"id": "Peta dengan stasiun persewaan sepeda dan toko penyewaan sepeda",
"fr": "Une carte avec des stations et magasins de location de vélos",
"es": "Un mapa con estaciones de alquiler de bicicletas y tiendas de alquiler de bicicletas",
"nb_NO": "Sykkelutleiestasjoner og sykkelutleiebutikker"
"nb_NO": "Sykkelutleiestasjoner og sykkelutleiebutikker",
"ca": "Un mapa amb estacions de lloguer de bicicletes i botigues de lloguer de bicicletes"
},
"description": {
"en": "On this map, you'll find the many bicycle rental stations as they are known by OpenStreetMap",
@ -27,7 +28,8 @@
"fr": "Vous trouverez sur cette carte toutes les stations de location de vélo telles qu'elles sont référencées dans OpenStreetMap",
"es": "En este mapa, encontrarás numerosas estaciones de alquiler de bicicletas que son conocidas por OpenStreetMap",
"da": "På dette kort finder du de mange cykeludlejningsstationer, som OpenStreetMap kender dem",
"nb_NO": "Her finner du mange sykkelutleiestasjoner slik de er kjent for OpenStreetMap"
"nb_NO": "Her finner du mange sykkelutleiestasjoner slik de er kjent for OpenStreetMap",
"ca": "En aquest mapa, trobaràs nombroses estacions de lloguer de bicicletes que són conegudes per OpenStreetMap"
},
"maintainer": "",
"icon": "./assets/themes/bicycle_rental/logo.svg",

View file

@ -10,7 +10,8 @@
"hu": "Távcsövek",
"fr": "Jumelles",
"es": "Binoculares",
"da": "Kikkerter"
"da": "Kikkerter",
"ca": "Binoculars"
},
"shortDescription": {
"en": "A map with fixed binoculars",
@ -21,7 +22,8 @@
"zh_Hant": "固定望遠鏡的地圖",
"hu": "Rögzített távcsövek (binokulárok) térképe",
"fr": "Une carte de jumelles panoramiques",
"es": "Un mapa con prismáticos fijos"
"es": "Un mapa con prismáticos fijos",
"ca": "Un mapa amb prismàtics fixos"
},
"description": {
"en": "A map with binoculars fixed in place with a pole. It can typically be found on touristic locations, viewpoints, on top of panoramic towers or occasionally on a nature reserve.",
@ -32,7 +34,8 @@
"hu": "Rúdra rögzített távcsövek térképe. Jellemzően turisztikailag érdekes, panorámás helyeken, kilátótornyok tetején vagy természetvédelmi területen találhatók.",
"fr": "Une carte des longue-vues fixes. Se trouve typiquement sur les sites touristiques, les points de vue, les tours panoramiques ou dans les réserves naturelles.",
"es": "Un mapa con prismáticos fijos en un poste. Suele encontrarse en lugares turísticos, miradores, en lo alto de torres panorámicas u ocasionalmente en una reserva natural.",
"nb_NO": "Stedsbundne kikkerter på påle. Vanligvis på turiststeder, utkikkspunkter, på toppen av utsiktstårn, og noen ganger i naturreservat."
"nb_NO": "Stedsbundne kikkerter på påle. Vanligvis på turiststeder, utkikkspunkter, på toppen av utsiktstårn, og noen ganger i naturreservat.",
"ca": "Un mapa amb prismàtics fixos en un pal. Sol trobar-se en llocs turístics, miradors, a la part alta de torres panoràmiques o ocasionalment en una reserva natural."
},
"maintainer": "",
"icon": "./assets/layers/binocular/telescope.svg",

View file

@ -28,7 +28,8 @@
"it": "Una libreria pubblica è una piccola cabina a lato della strada, un locale, una vecchia cabina telefonica o qualche altro luogo in cui sono tenuti libri. Chiunque può lasciare o prendere libri. Scopo della mappa è individuarle. Se scopri nuove librerie nelle vicinanze, puoi facilmente aggiungerle con un account OpenStreetMap.",
"hu": "A nyilvános könyvespolc egy kis utcai szekrény, doboz, régi telefonfülke vagy más tárgy, ahol könyveket tárolnak. Bárki tehet rá vagy vihet el róla könyvet. Ez a térkép ezeket a könyvespolcokat kívánja összegyűjteni. Ha felfedezett egy új könyvespolcot a közelben, akkor egy ingyenes OpenStreetMap-fiókkal gyorsan fel is rajzolhatja a térképre.",
"es": "Una librería pública es un pequeño armario en la calle, una caja, una vieja cabina telefónica o algún otro objeto donde se guardan libros. Todo el mundo puede colocar o coger un libro. Este mapa pretende recoger todas estas librerías. Puedes descubrir nuevas librerías cercanas y, con una cuenta gratuita de OpenStreetMap, añadir rápidamente tus librerías favoritas.",
"da": "Et offentligt bogskab er et lille skab, en kasse, en gammel telefonboks eller andre steder, hvor bøger opbevares. Alle kan lægge eller tage en bog. Dette kort har til formål at samle alle disse bogskabe. Du kan opdage nye bogkasser i nærheden og med en gratis OpenStreetMap-konto hurtigt tilføje dine yndlingsbogkasser."
"da": "Et offentligt bogskab er et lille skab, en kasse, en gammel telefonboks eller andre steder, hvor bøger opbevares. Alle kan lægge eller tage en bog. Dette kort har til formål at samle alle disse bogskabe. Du kan opdage nye bogkasser i nærheden og med en gratis OpenStreetMap-konto hurtigt tilføje dine yndlingsbogkasser.",
"ca": "Una llibreria pública és un xicotet armari al carrer, una caixa, una vella cabina telefònica o algun altre objecte on es guarden llibres. Tothom pot col·locar o agafar un llibre. Aquest mapa pretén recollir totes aquestes llibreries. Pots descobrir noves llibreries pròximes i, amb un compte gratuït de OpenStreetMap, afegir ràpidament les teues llibreries favorites."
},
"icon": "./assets/themes/bookcases/bookcase.svg",
"startLat": 0,

View file

@ -37,7 +37,8 @@
"fr": "Ce site collecte les zones de camping officielles ainsi que les aires de vidange. Il est possible dajouter des détails à propos des services proposés ainsi que leurs coûts. Ajoutez vos images et avis. Cest un site et une application. Les données sont stockées sur OpenStreetMap, elles seront toujours gratuites et peuvent être réutilisées par nimporte quelle application.",
"de": "Eine Karte für offizielle Wohnmobilstellplätze und Orte zur Entsorgung von Schmutzwasser. Sie können Details über die angebotenen Dienstleistungen und die Kosten hinzufügen, oder Bilder und Bewertungen ergänzen. Dies ist eine Webseite und eine Webapp. Die Daten werden in OpenStreetMap gespeichert, so dass sie für immer kostenlos sind und von jeder App weiterverwendet werden können.",
"hu": "Ez az oldal az összes olyan hivatalos lakóautós megállóhelyet és helyet gyűjti össze, ahol szürke és fekete szennyvizet lehet üríteni. Hozzáadhat részleteket a nyújtott szolgáltatásokról és a költségekről, valamint képeket és értékeléseket. Ez egyszerre egy weboldal és egy webes alkalmazás. Az adatokat az OpenStreetMapen tároljuk, így mindig ingyenesek lesznek, és bármelyik alkalmazás újra felhasználhatja őket.",
"es": "Este sitio recoge todos los lugares oficiales de parada de caravanas y los lugares donde se pueden verter las aguas grises y negras. Puedes añadir detalles sobre los servicios prestados y el coste. Añade fotos y reseñas. Este es un sitio web y una aplicación web. Los datos se almacenan en OpenStreetMap, por lo que serán gratuitos para siempre y podrán ser reutilizados por cualquier aplicación."
"es": "Este sitio recoge todos los lugares oficiales de parada de caravanas y los lugares donde se pueden verter las aguas grises y negras. Puedes añadir detalles sobre los servicios prestados y el coste. Añade fotos y reseñas. Este es un sitio web y una aplicación web. Los datos se almacenan en OpenStreetMap, por lo que serán gratuitos para siempre y podrán ser reutilizados por cualquier aplicación.",
"ca": "Aquest lloc recull tots els llocs oficials de parada de caravanes i els llocs on es poden abocar les aigües grises i negres. Pots afegir detalls sobre els serveis prestats i el cost. Afig fotos i ressenyes. Aquest és un lloc web i una aplicació web. Les dades s'emmagatzemen en OpenStreetMap, per la qual cosa seran gratuïts per sempre i podran ser reutilitzats per qualsevol aplicació."
},
"maintainer": "joost schouppe",
"icon": "./assets/themes/campersite/caravan.svg",
@ -175,7 +176,8 @@
"pt_BR": "Este lugar cobra alguma taxa?",
"de": "Wird hier eine Gebühr erhoben?",
"es": "¿Este lugar cobra una tarifa?",
"nb_NO": "Tar dette stedet en avgift?"
"nb_NO": "Tar dette stedet en avgift?",
"ca": "Aquest lloc cobra una taxa?"
},
"mappings": [
{
@ -197,7 +199,8 @@
"id": "Anda perlu membayar untuk menggunakannya",
"es": "Necesitas pagar por su uso",
"da": "Du skal betale for brug",
"nb_NO": "Man må betale for bruk"
"nb_NO": "Man må betale for bruk",
"ca": "Heu de pagar per l'ús"
}
},
{
@ -220,7 +223,8 @@
"pt_BR": "Pode ser usado de graça",
"de": "Nutzung kostenlos",
"es": "Se puede usar de manera gratuita",
"da": "Kan bruges gratis"
"da": "Kan bruges gratis",
"ca": "Es pot utilitzar gratuïtament"
},
"addExtraTags": [
"charge="
@ -241,7 +245,8 @@
"pt_BR": "Este lugar cobra {charge}",
"de": "Die Gebühr beträgt {charge}",
"es": "Este lugar cobra {charge}",
"da": "Dette sted koster {charge}"
"da": "Dette sted koster {charge}",
"ca": "Aquest lloc cobra {charge}"
},
"question": {
"en": "How much does this place charge?",
@ -255,7 +260,8 @@
"pt_BR": "Quanto este lugar cobra?",
"de": "Wie hoch sind die Gebühren hier?",
"es": "¿Cuánto cobra este lugar?",
"da": "Hvor meget koster dette sted?"
"da": "Hvor meget koster dette sted?",
"ca": "Quant cobra aquest lloc?"
},
"freeform": {
"key": "charge"
@ -337,7 +343,8 @@
"de": "{capacity} Wohnmobile können diesen Platz gleichzeitig nutzen",
"nl": "{capacity} campers kunnen deze plaats tegelijk gebruiken",
"es": "{capacity} los campistas pueden utilizar este lugar al mismo tiempo",
"da": "{capacity} campister kan bruge dette sted på samme tid"
"da": "{capacity} campister kan bruge dette sted på samme tid",
"ca": "{capacity} els acampadors poden utilitzar aquest lloc al mateix temps"
},
"question": {
"en": "How many campers can stay here? (skip if there is no obvious number of spaces or allowed vehicles)",
@ -350,7 +357,8 @@
"de": "Wie viele Wohnmobile können hier parken? (Überspringen, wenn es keine offensichtliche Anzahl von Stellplätzen oder erlaubten Fahrzeugen gibt)",
"nl": "Hoeveel campers kunnen hier overnachten? (sla dit over als er geen duidelijk aantal plaatsen of aangeduid maximum is)",
"es": "¿Cuántos campistas pueden alojarse aquí? (omitir si no hay un número evidente de plazas o vehículos permitidos)",
"da": "Hvor mange campister kan bo her? (spring over, hvis der ikke er noget åbenlyst antal pladser eller tilladte køretøjer)"
"da": "Hvor mange campister kan bo her? (spring over, hvis der ikke er noget åbenlyst antal pladser eller tilladte køretøjer)",
"ca": "Quants acampadors poden allotjar-se ací? (ometre si no hi ha un nombre evident de places o vehicles permesos)"
},
"freeform": {
"key": "capacity",
@ -373,7 +381,8 @@
"nl": "Biedt deze plaats internettoegang?",
"es": "¿Este lugar tiene acceso a internet?",
"da": "Er der internetadgang på dette sted?",
"nb_NO": "Tilbyr stedet tilgang til Internett?"
"nb_NO": "Tilbyr stedet tilgang til Internett?",
"ca": "Aquest lloc proporciona accés a Internet?"
},
"mappings": [
{
@ -419,7 +428,8 @@
"nl": "Er is internettoegang",
"es": "Hay acceso a internet",
"da": "Der er internetadgang",
"nb_NO": "Det finnes tilgang til Internett"
"nb_NO": "Det finnes tilgang til Internett",
"ca": "Hi ha accés a Internet"
},
"hideInAnswer": true
},
@ -442,7 +452,8 @@
"nl": "Er is geen internettoegang",
"es": "No hay acceso a internet",
"da": "Der er ingen internetadgang",
"nb_NO": "Det finnes ingen tilgang til Internett"
"nb_NO": "Det finnes ingen tilgang til Internett",
"ca": "No hi ha accés a Internet"
}
}
]
@ -461,7 +472,8 @@
"nl": "Moet je betalen voor internettoegang?",
"es": "¿Tienes que pagar por el acceso a internet?",
"da": "Skal man betale for internetadgang?",
"nb_NO": "Må man betale for tilgang til Internett?"
"nb_NO": "Må man betale for tilgang til Internett?",
"ca": "Has de pagar per l'accés a Internet?"
},
"mappings": [
{
@ -482,7 +494,8 @@
"nl": "Je moet extra betalen voor internettoegang",
"es": "Tienes que pagar a mayores por el acceso a internet",
"da": "Man skal betale ekstra for internetadgang",
"nb_NO": "Tilgang til Internett koster ekstra"
"nb_NO": "Tilgang til Internett koster ekstra",
"ca": "Heu de pagar un extra per accedir a Internet"
}
},
{
@ -503,7 +516,8 @@
"nl": "Je hoeft niet extra te betalen voor internettoegang",
"es": "No tienes que pagar a mayores por el acceso a internet",
"da": "Man behøver ikke at betale ekstra for internetadgang",
"nb_NO": "Man må ikke betale ekstra for tilgang til Internett"
"nb_NO": "Man må ikke betale ekstra for tilgang til Internett",
"ca": "No cal pagar extra per l'accés a Internet"
}
}
],
@ -648,7 +662,8 @@
"de": "Es gibt einige Plätze für Langzeitmieten, aber auch eine tageweise Anmietung ist möglich",
"es": "Sí, hay algunas plazas de alquiler a largo plazo, pero también puedes alojarte por días",
"nl": "Er zijn enkele plaatsen om op lange termijn te huren, maar je kan ook enkele dagen blijven",
"nb_NO": "Det finnes noen plasser for langtidsleie, men man kan også bruke dem på dagsbasis"
"nb_NO": "Det finnes noen plasser for langtidsleie, men man kan også bruke dem på dagsbasis",
"ca": "Hi ha alguns punts per al lloguer a llarg termini, però també es pot romandre diàriament"
}
},
{
@ -669,7 +684,8 @@
"es": "No, no hay huéspedes permanentes aquí",
"da": "Nej, der er ingen faste gæster her",
"nl": "Hier wonen geen permanente gasten",
"nb_NO": "Det er ingen permanente gjester her"
"nb_NO": "Det er ingen permanente gjester her",
"ca": "No hi han hostes permanents aquí"
}
},
{
@ -706,7 +722,8 @@
"de": "Mehr Details über diesen Ort: {description}",
"nl": "Meer details over deze plaats: {description}",
"es": "Más detalles sobre este lugar:{description}",
"da": "Flere oplysninger om dette sted: {description}"
"da": "Flere oplysninger om dette sted: {description}",
"ca": "Més detalls sobre aquest lloc: {description}"
},
"question": {
"en": "Would you like to add a general description of this place? (Do not repeat information previously asked or shown above. Please keep it objective - opinions go into the reviews)",
@ -717,7 +734,8 @@
"fr": "Souhaitez-vous ajouter une description générale du lieu ? (Ne pas répéter les informations précédentes et rester neutre, les opinions vont dans les avis)",
"de": "Möchten Sie eine allgemeine Beschreibung für diesen Ort hinzufügen? (Bitte wiederholen Sie keine Informationen, die Sie bereits zuvor angegeben haben. Bitte bleiben Sie objektiv - Meinungen gehen in die Bewertungen ein)",
"nl": "Wil je graag een algemene beschrijving toevoegen van deze plaats? (Herhaal hier niet de antwoorden op de vragen die reeds gesteld zijn. Hou het objectief - je kan je mening geven via een review)",
"es": "¿Te gustaría añadir una descripción general de este lugar? (No repitas información previamente preguntada o mostrada arriba. Por favor mantenla objetiva - las opiniones van en la de opiniones)"
"es": "¿Te gustaría añadir una descripción general de este lugar? (No repitas información previamente preguntada o mostrada arriba. Por favor mantenla objetiva - las opiniones van en la de opiniones)",
"ca": "T'agradaria afegir una descripció general d'aquest lloc? (No repeteixis informació prèviament preguntada o mostrada a dalt. Si us plau mantín-la objectiva - les opinions van en les «reviews»)"
},
"freeform": {
"key": "description",
@ -758,7 +776,8 @@
"nl": "Voeg een nieuwe officiële camperplaats toe. Dit zijn speciaal aangeduide plaatsen waar het toegestaan is om te overnachten met een camper. Ze kunnen er uitzien als een parking, of soms eerder als een camping. Soms staan ze niet ter plaatse aangeduid, maar heeft de gemeente wel degelijk beslist dat dit een camperplaats is. Een parking voor campers waar je niet mag overnachten is géén camperplaats. ",
"zh_Hant": "新增正式露營地點,通常是設計給過夜的露營者的地點。看起來像是真的露營地或是一般的停車場,而且也許沒有任何指標,但在城鎮被定議地點。如果一般給露營者的停車場並不是用來過夜,則不是露營地點 ",
"hu": "Új hivatalos lakóautóhely hozzáadása. Ez arra vannak kijelölve, hogy lakóautóval ott éjszakázzunk. Lehet, hogy úgy néz ki, mint egy igazi kemping, de az is lehet, hogy csak olyan, mint egy parkoló. Előfordulhat, hogy egyáltalán nem jelzik őket, hanem csak egy önkormányzati határozatban vannak kijelölve. A lakóautósoknak szánt olyan hagyományos parkolók, ahol nem várhatóan nem fognak éjszakázni, -nem minősül- lakóautóhelynek. ",
"es": "Añade un nuevo sitio de acampada oficial. Son lugares designados para pasar la noche con tu caravana. Pueden parecerse a un camping real o simplemente a un aparcamiento. Puede que no estén señalizados en absoluto, sino que simplemente estén definidos en una decisión municipal. Un aparcamiento normal destinado a los campistas en el que no se espera que se pase la noche, no es un camping. "
"es": "Añade un nuevo sitio de acampada oficial. Son lugares designados para pasar la noche con tu caravana. Pueden parecerse a un camping real o simplemente a un aparcamiento. Puede que no estén señalizados en absoluto, sino que simplemente estén definidos en una decisión municipal. Un aparcamiento normal destinado a los campistas en el que no se espera que se pase la noche, no es un camping. ",
"ca": "Afig un nou lloc d'acampada oficial. Són llocs designats per a passar la nit amb la teua caravana. Poden semblar-se a un càmping real o simplement a un aparcament. Pot ser que no estiguen senyalitzats en absolut, sinó que simplement estiguen definits per una decisió municipal. Un aparcament normal destinat als acampadors en el qual no s'espera que es passe la nit, no és un càmping. "
}
}
],

View file

@ -1,376 +1,123 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg xmlns="http://www.w3.org/2000/svg" width="375px" height="375px" viewBox="0 0 375 375" version="1.1">
<defs>
<clipPath id="clip1">
<path d="M 92 173 L 256 173 L 256 345 L 92 345 Z M 92 173 "/>
</clipPath>
<clipPath id="clip2">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip3">
<path d="M 59 197 L 203 197 L 203 366 L 59 366 Z M 59 197 "/>
</clipPath>
<clipPath id="clip4">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip5">
<path d="M 131 140 L 317 140 L 317 344 L 131 344 Z M 131 140 "/>
</clipPath>
<clipPath id="clip6">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip7">
<path d="M 290 186 L 369 186 L 369 352 L 290 352 Z M 290 186 "/>
</clipPath>
<clipPath id="clip8">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip9">
<path d="M 242 185 L 319 185 L 319 346 L 242 346 Z M 242 185 "/>
</clipPath>
<clipPath id="clip10">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip11">
<path d="M 205 151 L 356 151 L 356 299 L 205 299 Z M 205 151 "/>
</clipPath>
<clipPath id="clip12">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip13">
<path d="M 128 253 L 243 253 L 243 366 L 128 366 Z M 128 253 "/>
</clipPath>
<clipPath id="clip14">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip15">
<path d="M 178 124 L 328 124 L 328 272 L 178 272 Z M 178 124 "/>
</clipPath>
<clipPath id="clip16">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip17">
<path d="M 251 124 L 370 124 L 370 267 L 251 267 Z M 251 124 "/>
</clipPath>
<clipPath id="clip18">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip19">
<path d="M 243 185 L 365 185 L 365 262 L 243 262 Z M 243 185 "/>
</clipPath>
<clipPath id="clip20">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip21">
<path d="M 15 269 L 357 269 L 357 375 L 15 375 Z M 15 269 "/>
</clipPath>
<clipPath id="clip22">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip23">
<path d="M 174 279 L 329 279 L 329 375 L 174 375 Z M 174 279 "/>
</clipPath>
<clipPath id="clip24">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip25">
<path d="M 132 296 L 234 296 L 234 375 L 132 375 Z M 132 296 "/>
</clipPath>
<clipPath id="clip26">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip27">
<path d="M 155 328 L 328 328 L 328 375 L 155 375 Z M 155 328 "/>
</clipPath>
<clipPath id="clip28">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip29">
<path d="M 105 332 L 234 332 L 234 375 L 105 375 Z M 105 332 "/>
</clipPath>
<clipPath id="clip30">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip31">
<path d="M 191 240 L 291 240 L 291 349 L 191 349 Z M 191 240 "/>
</clipPath>
<clipPath id="clip32">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip33">
<path d="M 280 279 L 375 279 L 375 375 L 280 375 Z M 280 279 "/>
</clipPath>
<clipPath id="clip34">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip35">
<path d="M 301 316 L 375 316 L 375 375 L 301 375 Z M 301 316 "/>
</clipPath>
<clipPath id="clip36">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip37">
<path d="M 0 173 L 49 173 L 49 345 L 0 345 Z M 0 173 "/>
</clipPath>
<clipPath id="clip38">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip39">
<path d="M 0 140 L 111 140 L 111 344 L 0 344 Z M 0 140 "/>
</clipPath>
<clipPath id="clip40">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip41">
<path d="M 83 186 L 162 186 L 162 352 L 83 352 Z M 83 186 "/>
</clipPath>
<clipPath id="clip42">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip43">
<path d="M 35 185 L 112 185 L 112 346 L 35 346 Z M 35 185 "/>
</clipPath>
<clipPath id="clip44">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip45">
<path d="M 0 151 L 149 151 L 149 299 L 0 299 Z M 0 151 "/>
</clipPath>
<clipPath id="clip46">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip47">
<path d="M 0 253 L 36 253 L 36 366 L 0 366 Z M 0 253 "/>
</clipPath>
<clipPath id="clip48">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip49">
<path d="M 0 124 L 122 124 L 122 272 L 0 272 Z M 0 124 "/>
</clipPath>
<clipPath id="clip50">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip51">
<path d="M 44 124 L 163 124 L 163 267 L 44 267 Z M 44 124 "/>
</clipPath>
<clipPath id="clip52">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip53">
<path d="M 37 185 L 158 185 L 158 262 L 37 262 Z M 37 185 "/>
</clipPath>
<clipPath id="clip54">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip55">
<path d="M 0 269 L 151 269 L 151 375 L 0 375 Z M 0 269 "/>
</clipPath>
<clipPath id="clip56">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip57">
<path d="M 0 279 L 122 279 L 122 375 L 0 375 Z M 0 279 "/>
</clipPath>
<clipPath id="clip58">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip59">
<path d="M 0 328 L 121 328 L 121 375 L 0 375 Z M 0 328 "/>
</clipPath>
<clipPath id="clip60">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip61">
<path d="M 0 240 L 84 240 L 84 349 L 0 349 Z M 0 240 "/>
</clipPath>
<clipPath id="clip62">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip63">
<path d="M 73 279 L 183 279 L 183 375 L 73 375 Z M 73 279 "/>
</clipPath>
<clipPath id="clip64">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
</clipPath>
<clipPath id="clip65">
<path d="M 94 316 L 187 316 L 187 375 L 94 375 Z M 94 316 "/>
</clipPath>
<clipPath id="clip66">
<path d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
id="Layer_1"
data-name="Layer 1"
viewBox="0 0 400 400"
version="1.1"
sodipodi:docname="cycle-infra.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview64"
pagecolor="#005a51"
bordercolor="#111111"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
showgrid="false"
inkscape:zoom="1.599704"
inkscape:cx="164.09285"
inkscape:cy="312.55782"
inkscape:window-width="1920"
inkscape:window-height="1007"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer2" />
<defs
id="defs7">
<style
id="style2">.cls-1,.cls-4{fill:none;}.cls-2,.cls-6,.cls-7{fill:#f7d728;}.cls-3{clip-path:url(#clip-path);}.cls-4,.cls-6,.cls-7{stroke:#fff;}.cls-4{stroke-width:7px;}.cls-5{fill:#fff;}.cls-6{stroke-width:6px;stroke-dasharray:13 3;}.cls-7{stroke-width:7px;}</style>
<clipPath
id="clip-path">
<circle
class="cls-1"
cx="200.39"
cy="200"
r="200"
id="circle4" />
</clipPath>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.862745%,84.313726%,15.686275%);fill-opacity:1;" d="M 375.367188 187.5 C 375.367188 291.054688 291.417969 375 187.867188 375 C 84.3125 375 0.367188 291.054688 0.367188 187.5 C 0.367188 83.945312 84.3125 0 187.867188 0 C 291.417969 0 375.367188 83.945312 375.367188 187.5 Z M 375.367188 187.5 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(96.862745%,84.313726%,15.686275%);fill-opacity:1;" d="M 364.6875 248.886719 L 10.3125 248.886719 C -23.539062 151.011719 28.398438 44.25 126.273438 10.433594 C 224.148438 -23.382812 330.9375 28.546875 364.6875 126.421875 C 378.394531 166.09375 378.394531 209.214844 364.6875 248.886719 Z M 364.6875 248.886719 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 247.847656 134.671875 C 244.558594 134.71875 241.292969 135.183594 238.125 136.058594 L 222.054688 97.386719 L 240.300781 97.386719 C 242.699219 97.414062 244.640625 99.355469 244.660156 101.757812 C 244.648438 103.871094 243.160156 105.691406 241.085938 106.117188 L 237.910156 104.523438 C 236.757812 103.996094 235.421875 104.074219 234.335938 104.726562 C 233.285156 105.359375 232.617188 106.472656 232.554688 107.699219 L 232.554688 109.6875 C 232.554688 111.652344 234.144531 113.25 236.109375 113.257812 L 240.300781 113.257812 C 246.773438 113.152344 251.929688 107.816406 251.820312 101.34375 C 251.714844 94.871094 246.378906 89.714844 239.90625 89.820312 L 216.46875 89.820312 C 215.273438 89.804688 214.148438 90.402344 213.496094 91.40625 C 212.871094 92.414062 212.726562 93.648438 213.101562 94.773438 L 219.84375 111.039062 L 168.75 111.039062 L 165.179688 103.539062 L 172.5 103.539062 C 174.40625 103.457031 175.902344 101.875 175.875 99.964844 C 176.101562 98 174.691406 96.226562 172.726562 96 L 151.117188 93.421875 C 149.5 93.1875 147.890625 93.875 146.945312 95.203125 C 145.828125 96.921875 145.679688 99.09375 146.550781 100.949219 C 147.332031 102.539062 148.953125 103.539062 150.722656 103.527344 L 157.058594 103.527344 L 161.820312 113.839844 L 144.769531 139.039062 C 139.691406 136.167969 133.953125 134.660156 128.117188 134.671875 C 109.65625 134.773438 94.585938 149.460938 94.007812 167.914062 C 93.433594 186.367188 107.5625 201.96875 125.984375 203.21875 C 144.402344 204.46875 160.507812 190.917969 162.429688 172.554688 L 181.660156 172.554688 C 183.402344 177.125 188.152344 179.804688 192.964844 178.929688 C 197.773438 178.054688 201.277344 173.875 201.300781 168.984375 C 201.3125 166.929688 200.691406 164.925781 199.519531 163.238281 L 224.304688 121.59375 L 231.449219 138.65625 C 216.054688 146.765625 209.117188 165.074219 215.261719 181.351562 C 221.40625 197.628906 238.714844 206.78125 255.628906 202.695312 C 272.542969 198.609375 283.761719 182.566406 281.800781 165.277344 C 279.835938 147.988281 265.300781 134.871094 247.902344 134.679688 Z M 165.542969 121.789062 L 184.179688 161.652344 C 182.925781 162.667969 182.019531 164.058594 181.601562 165.617188 L 162.367188 165.617188 C 161.398438 156.949219 157.230469 148.957031 150.675781 143.203125 Z M 155.035156 165.609375 L 135 165.609375 L 146.503906 149.148438 C 151.21875 153.441406 154.238281 159.28125 155.023438 165.609375 Z M 128.070312 196.351562 C 113.054688 196.351562 100.882812 184.179688 100.882812 169.164062 C 100.882812 154.148438 113.054688 141.976562 128.070312 141.976562 C 132.40625 142.027344 136.675781 143.042969 140.570312 144.945312 L 128.269531 162.601562 L 128.070312 162.601562 C 124.449219 162.601562 121.507812 165.539062 121.507812 169.164062 C 121.507812 172.785156 124.449219 175.726562 128.070312 175.726562 C 130.195312 175.664062 132.171875 174.625 133.425781 172.914062 L 155.035156 172.914062 C 153.140625 186.347656 141.628906 196.328125 128.0625 196.304688 Z M 193.507812 159.261719 C 192.667969 159.027344 191.804688 158.898438 190.929688 158.867188 L 190.726562 158.867188 L 172.085938 118.808594 L 217.707031 118.808594 Z M 247.882812 196.351562 C 235.617188 196.371094 224.859375 188.152344 221.65625 176.308594 C 218.453125 164.464844 223.601562 151.949219 234.207031 145.78125 L 242.539062 165.609375 C 241.882812 166.679688 241.539062 167.914062 241.546875 169.171875 C 241.546875 172.796875 244.484375 175.734375 248.109375 175.734375 C 251.734375 175.734375 254.671875 172.796875 254.671875 169.171875 C 254.707031 166.09375 252.539062 163.425781 249.515625 162.835938 L 241.191406 143.007812 C 243.449219 142.371094 245.78125 142.039062 248.128906 142.011719 C 263.144531 142.011719 275.316406 154.183594 275.316406 169.199219 C 275.316406 184.070312 262.820312 196.386719 247.949219 196.386719 Z M 247.882812 196.351562 "/>
<path style="fill:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-dasharray:13,3;stroke-miterlimit:4;" d="M 0 241 L 395.820833 241 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 0 216.85 L 407.45 216.85 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 0 265.05 L 407.45 265.05 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
<g clip-path="url(#clip1)" clip-rule="nonzero">
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 137.920833 224.95 L 233.041667 327.829167 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="bg"
style="display:inline">
<circle
id="Ellipse_182"
data-name="Ellipse 182"
class="cls-2"
cx="200.39"
cy="200"
r="200" />
</g>
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="all"
style="display:inline" />
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="map"
style="display:inline">
<path
id="path4786"
style="color:#000000;fill:#ffffff;-inkscape-stroke:none"
d="m 20.136719,265.48047 25.804687,29.83398 -11.533203,15.84571 a 200,200 0 0 0 4.388672,5.86328 L 50.642578,300.75 71.507812,324.87305 c -5.02078,-0.78411 -10.079484,-1.26963 -15.177734,-1.35743 -3.324746,-0.0572 -6.663601,0.0271 -10.011719,0.24415 -0.77054,0.05 -1.54472,0.14969 -2.316406,0.21484 a 200,200 0 0 0 5.035156,6.72656 c 13.014846,-0.59124 25.667231,0.941 37.908203,5.19531 l -10.521484,20.49805 a 200,200 0 0 0 5.683594,4.25391 L 93.5,338.45312 c 7.41303,3.22321 14.68279,7.41251 21.76758,12.91993 -0.38047,1.62284 -0.58789,3.31152 -0.58789,5.04687 0,11.61864 9.02625,21.20601 20.41797,22.1211 -3.29719,2.1621 -6.4107,4.30372 -9.56836,6.45117 a 200,200 0 0 0 8.08008,3.01562 c 1.62773,-1.0888 3.1736,-2.17079 4.83398,-3.25976 l 0.82031,5.36718 a 200,200 0 0 0 7.44336,2.36329 l -1.83398,-11.9961 c 11.14913,-7.11005 22.93543,-14.07551 35.03515,-20.51367 l 23.7168,32.34766 -0.20898,0.2832 0.90039,0.66211 0.67773,0.92383 -3.30469,5.7207 a 200,200 0 0 0 8.43164,-0.60156 l 0.71875,-1.2461 1.48047,1.08789 a 200,200 0 0 0 10.76953,-0.76953 L 209.33008,388.25977 186.1875,356.69336 c 0.818,-0.41794 1.62304,-0.86325 2.44336,-1.27539 15.95499,-8.00864 31.90255,-14.62914 47.57422,-19.04688 l 0.0566,0.0488 0.0762,-0.0879 c 3.5625,-1.00146 7.11266,-1.9025 10.64258,-2.66015 l 0.14844,0.10742 0.12695,-0.17383 c 6.75445,-1.43754 13.44574,-2.4315 20.04492,-2.85938 3.16813,-0.20541 6.3143,-0.28795 9.43945,-0.24023 10.76369,0.16437 21.25118,2.0026 31.4668,5.64258 l -23.01562,44.83789 a 200,200 0 0 0 10.92968,-5.9668 l 18.63282,-36.30078 c 6.22412,2.76458 12.32681,6.35342 18.32031,10.71875 a 200,200 0 0 0 5.0625,-5.0625 c -11.63362,-8.63269 -23.8331,-14.30234 -36.38281,-17.51562 l 0.98828,-61.37891 h -7 l -0.83594,52.00781 -32.25195,-37.28906 15.25781,-14.71875 h -10.08203 l -9.76172,9.41797 -8.14648,-9.41797 h -9.25586 l 25.80468,29.83398 -23.3457,32.07422 c -1.7272,0.39568 -3.45362,0.78561 -5.18359,1.23633 l -73.24414,-63.14453 h -10.72071 l 56.02539,48.29883 -32.375,30.875 -43.79883,-62.34375 -0.6621,-16.83008 h -7.00586 l 2.76562,70.22656 c -4.51367,1.74462 -8.32248,4.92353 -10.86328,8.97461 -11.76825,-8.82204 -24.127066,-14.56759 -36.837891,-17.82226 l 0.988282,-61.37891 h -7.001953 l -0.833985,52.00781 -32.4375,-37.5 13.951172,-14.50781 h -9.072266 l -9.173828,9.54101 -8.251953,-9.54101 z m 326.552731,0 2.66407,67.67773 a 200,200 0 0 0 6.68359,-8.19336 l -2.3418,-59.48437 z m -212.35351,29.72851 38.16797,54.33008 -0.2461,0.23633 1.56446,1.64063 1.98437,2.82421 c -6.17866,3.30993 -12.27956,6.75173 -18.28125,10.31055 0.99944,-2.52113 1.55469,-5.26294 1.55469,-8.13086 0,-12.21926 -9.97996,-22.19922 -22.19922,-22.19922 -0.33796,0 -0.67344,0.0103 -1.00781,0.0254 z m 136.83594,5.54102 20.82031,24.07227 c -5.00465,-0.77912 -10.0514,-1.21922 -15.13281,-1.30665 -3.32475,-0.0572 -6.66361,0.0271 -10.01172,0.24415 -4.50724,0.29224 -9.03421,0.83771 -13.57422,1.57812 z m -55.84376,17.62305 14.57032,12.56054 c -14.79277,4.53241 -29.64688,10.81904 -44.40821,18.22852 h -0.002 c -1.15005,0.57781 -2.28292,1.2088 -3.42969,1.79883 l -0.36132,-0.51367 z m -78.44726,22.84765 c 8.43618,0 15.19922,6.76304 15.19922,15.19922 0,8.43618 -4.58921,15.19922 -13.02539,15.19922 -8.43618,0 -17.375,-6.76304 -17.375,-15.19922 0,-8.43617 6.76499,-15.19922 15.20117,-15.19922 z" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="fg"
style="display:inline">
<path
id="Path_943"
data-name="Path 943"
class="cls-5"
d="M 264.37,143.65 A 41.14,41.14 0 0 0 254,145.13 l -17.14,-41.25 h 19.46 a 4.7,4.7 0 0 1 4.65,4.66 4.77,4.77 0 0 1 -3.81,4.65 l -3.39,-1.7 a 4.09,4.09 0 0 0 -3.81,0.22 3.93,3.93 0 0 0 -1.9,3.17 V 117 a 3.81,3.81 0 0 0 3.79,3.81 h 4.47 a 12.501764,12.501764 0 0 0 -0.42,-25 h -25 a 3.72,3.72 0 0 0 -3.17,1.69 4.25,4.25 0 0 0 -0.42,3.59 l 7.19,17.35 H 180 l -3.81,-8 H 184 a 3.76,3.76 0 0 0 3.6,-3.81 3.82,3.82 0 0 0 -3.36,-4.23 v 0 l -23.05,-2.75 a 4.64,4.64 0 0 0 -4.45,1.9 6.32,6.32 0 0 0 -0.42,6.13 4.93,4.93 0 0 0 4.45,2.75 h 6.76 l 5.08,11 -18.19,26.88 a 35.91,35.91 0 0 0 -17.76,-4.66 36.6,36.6 0 1 0 36.6,40.41 h 20.51 a 10.83,10.83 0 0 0 20.95,-3.81 10.63,10.63 0 0 0 -1.9,-6.13 l 26.44,-44.42 7.62,18.2 a 36.79,36.79 0 1 0 17.55,-4.24 v 0 z m -87.79,-13.74 19.88,42.52 a 8.15,8.15 0 0 0 -2.75,4.23 h -20.52 a 37.32,37.32 0 0 0 -12.47,-23.91 z m -11.21,46.74 H 144 l 12.27,-17.56 a 28.5,28.5 0 0 1 9.09,17.56 z m -28.76,32.79 a 29,29 0 0 1 0,-58 31.17,31.17 0 0 1 13.33,3.17 l -13.12,18.83 h -0.21 a 7,7 0 0 0 0,14 7.33,7.33 0 0 0 5.71,-3 h 23.05 a 29,29 0 0 1 -28.77,24.95 z m 69.8,-39.56 a 11.66,11.66 0 0 0 -2.75,-0.42 h -0.22 l -19.88,-42.73 h 48.66 z m 58,39.56 A 28.93,28.93 0 0 1 249.82,155.5 l 8.89,21.15 a 7.17,7.17 0 0 0 -1.06,3.8 7,7 0 1 0 14,0 6.81,6.81 0 0 0 -5.5,-6.76 l -8.88,-21.15 a 28.45,28.45 0 0 1 7.4,-1.06 29,29 0 0 1 29,29 c 0,15.86 -13.33,29 -29.19,29 z" />
<g
id="Path_807"
class="cls-6"
style="stroke:none">
<path
style="color:#000000;fill:#f7d728;stroke-width:6px;stroke-dasharray:13, 3;-inkscape-stroke:none;stroke:none"
d="M 0,241 H 395.82"
id="path7057" />
<path
id="path7059"
style="color:#000000;fill:#ffffff;stroke-dasharray:13, 3;-inkscape-stroke:none;stroke:none"
d="M 4.5 238 A 200 200 0 0 0 5.8066406 244 L 13 244 L 13 238 L 4.5 238 z M 16 238 L 16 244 L 29 244 L 29 238 L 16 238 z M 32 238 L 32 244 L 45 244 L 45 238 L 32 238 z M 48 238 L 48 244 L 61 244 L 61 238 L 48 238 z M 64 238 L 64 244 L 77 244 L 77 238 L 64 238 z M 80 238 L 80 244 L 93 244 L 93 238 L 80 238 z M 96 238 L 96 244 L 109 244 L 109 238 L 96 238 z M 112 238 L 112 244 L 125 244 L 125 238 L 112 238 z M 128 238 L 128 244 L 141 244 L 141 238 L 128 238 z M 144 238 L 144 244 L 157 244 L 157 238 L 144 238 z M 160 238 L 160 244 L 173 244 L 173 238 L 160 238 z M 176 238 L 176 244 L 189 244 L 189 238 L 176 238 z M 192 238 L 192 244 L 205 244 L 205 238 L 192 238 z M 208 238 L 208 244 L 221 244 L 221 238 L 208 238 z M 224 238 L 224 244 L 237 244 L 237 238 L 224 238 z M 240 238 L 240 244 L 253 244 L 253 238 L 240 238 z M 256 238 L 256 244 L 269 244 L 269 238 L 256 238 z M 272 238 L 272 244 L 285 244 L 285 238 L 272 238 z M 288 238 L 288 244 L 301 244 L 301 238 L 288 238 z M 304 238 L 304 244 L 317 244 L 317 238 L 304 238 z M 320 238 L 320 244 L 333 244 L 333 238 L 320 238 z M 336 238 L 336 244 L 349 244 L 349 238 L 336 238 z M 352 238 L 352 244 L 365 244 L 365 238 L 352 238 z M 368 238 L 368 244 L 381 244 L 381 238 L 368 238 z M 384 238 L 384 244 L 394.97461 244 A 200 200 0 0 0 395.82031 240.10938 L 395.82031 238 L 384 238 z " />
</g>
<g clip-path="url(#clip3)" clip-rule="nonzero">
<g clip-path="url(#clip4)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 103.4 250.4 L 176.35 350.758333 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
<g
id="Path_808"
class="cls-7"
style="stroke:none">
<path
style="color:#000000;fill:#f7d728;stroke-width:7px;-inkscape-stroke:none;stroke:none"
d="M 0,216.85 H 407.45"
id="path7691" />
<path
id="path7693"
style="color:#000000;fill:#ffffff;-inkscape-stroke:none;stroke:none"
d="M 1.3457031 213.34961 A 200 200 0 0 0 1.8457031 220.34961 L 398.93359 220.34961 A 200 200 0 0 0 399.43555 213.34961 L 1.3457031 213.34961 z " />
</g>
<g clip-path="url(#clip5)" clip-rule="nonzero">
<g clip-path="url(#clip6)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 179.408333 189.308333 L 298.470833 326.958333 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip7)" clip-rule="nonzero">
<g clip-path="url(#clip8)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 349.15 239 L 352.958333 335.770833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip9)" clip-rule="nonzero">
<g clip-path="url(#clip10)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 299.691667 237.6 L 298.220833 329.05 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip11)" clip-rule="nonzero">
<g clip-path="url(#clip12)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 339.591667 201.120833 L 259.229167 278.641667 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip13)" clip-rule="nonzero">
<g clip-path="url(#clip14)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 219.129167 309.791667 L 176.370833 350.570833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip15)" clip-rule="nonzero">
<g clip-path="url(#clip16)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 310.229167 172.491667 L 229.870833 250.008333 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip17)" clip-rule="nonzero">
<g clip-path="url(#clip18)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 307.75 171.979167 L 354.441667 244.320833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip19)" clip-rule="nonzero">
<g clip-path="url(#clip20)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 299.691667 237.6 L 349.15 239 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip21)" clip-rule="nonzero">
<g clip-path="url(#clip22)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 55.758333 443.291667 C 55.758333 443.291667 118.95 386.508333 187.058333 352.291667 C 240.85 325.291667 295.279167 312.9 341.15 351.158333 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip23)" clip-rule="nonzero">
<g clip-path="url(#clip24)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 226.158333 501.341667 L 310.35 337.320833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip25)" clip-rule="nonzero">
<g clip-path="url(#clip26)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 180.870833 355.358333 L 209.579167 394.520833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip27)" clip-rule="nonzero">
<g clip-path="url(#clip28)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 205.491667 389.779167 L 309.379167 466.170833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip29)" clip-rule="nonzero">
<g clip-path="url(#clip30)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 209.270833 393.779167 L 152.458333 492.129167 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip31)" clip-rule="nonzero">
<g clip-path="url(#clip32)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 270.329167 295.958333 L 244.3 331.720833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip33)" clip-rule="nonzero">
<g clip-path="url(#clip34)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 376.108333 356.420833 C 376.108333 366.745833 367.7375 375.120833 357.408333 375.120833 C 347.083333 375.120833 338.708333 366.745833 338.708333 356.420833 C 338.708333 346.091667 347.083333 337.720833 357.408333 337.720833 C 367.7375 337.720833 376.108333 346.091667 376.108333 356.420833 Z M 376.108333 356.420833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip35)" clip-rule="nonzero">
<g clip-path="url(#clip36)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 361.408333 377.529167 L 379.529167 495.991667 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip37)" clip-rule="nonzero">
<g clip-path="url(#clip38)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M -82.608333 224.95 L 12.508333 327.829167 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip39)" clip-rule="nonzero">
<g clip-path="url(#clip40)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M -41.120833 189.308333 L 77.941667 326.958333 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip41)" clip-rule="nonzero">
<g clip-path="url(#clip42)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 128.620833 239 L 132.429167 335.770833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip43)" clip-rule="nonzero">
<g clip-path="url(#clip44)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 79.158333 237.6 L 77.691667 329.05 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip45)" clip-rule="nonzero">
<g clip-path="url(#clip46)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 119.058333 201.120833 L 38.7 278.641667 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip47)" clip-rule="nonzero">
<g clip-path="url(#clip48)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M -1.4 309.791667 L -44.158333 350.570833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip49)" clip-rule="nonzero">
<g clip-path="url(#clip50)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 89.7 172.491667 L 9.341667 250.008333 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip51)" clip-rule="nonzero">
<g clip-path="url(#clip52)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 87.220833 171.979167 L 133.908333 244.320833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip53)" clip-rule="nonzero">
<g clip-path="url(#clip54)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 79.158333 237.6 L 128.620833 239 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip55)" clip-rule="nonzero">
<g clip-path="url(#clip56)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M -164.770833 443.291667 C -164.770833 443.291667 -101.579167 386.508333 -33.470833 352.291667 C 20.320833 325.291667 74.75 312.9 120.620833 351.158333 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip57)" clip-rule="nonzero">
<g clip-path="url(#clip58)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 5.629167 501.341667 L 89.820833 337.320833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip59)" clip-rule="nonzero">
<g clip-path="url(#clip60)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M -15.041667 389.779167 L 88.85 466.170833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip61)" clip-rule="nonzero">
<g clip-path="url(#clip62)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 49.8 295.958333 L 23.770833 331.720833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip63)" clip-rule="nonzero">
<g clip-path="url(#clip64)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 155.579167 356.420833 C 155.579167 366.745833 147.208333 375.120833 136.879167 375.120833 C 126.554167 375.120833 118.179167 366.745833 118.179167 356.420833 C 118.179167 346.091667 126.554167 337.720833 136.879167 337.720833 C 147.208333 337.720833 155.579167 346.091667 155.579167 356.420833 Z M 155.579167 356.420833 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
</g>
<g clip-path="url(#clip65)" clip-rule="nonzero">
<g clip-path="url(#clip66)" clip-rule="nonzero">
<path style="fill:none;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 140.879167 377.529167 L 159 495.991667 " transform="matrix(0.9375,0,0,0.9375,0,0)"/>
</g>
<g
id="Path_809"
class="cls-7"
style="stroke:none">
<path
style="color:#000000;fill:#f7d728;stroke-width:7px;-inkscape-stroke:none;stroke:none"
d="M 0,265.05 H 407.45"
id="path6439" />
<path
id="path6441"
style="color:#000000;fill:#ffffff;-inkscape-stroke:none;stroke:none"
d="M 10.433594 261.55078 A 200 200 0 0 0 13.042969 268.55078 L 387.73633 268.55078 A 200 200 0 0 0 390.34766 261.55078 L 10.433594 261.55078 z " />
</g>
</g>
</svg>
</svg>

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

View file

@ -12,7 +12,8 @@
"it": "Cyclofix - una mappa libera per chi va in bici",
"nb_NO": "Cyclofix — et åpent kart for syklister",
"hu": "Cyclofix nyílt térkép kerékpárosoknak",
"es": "Cyclofix - un mapa abierto para ciclistas"
"es": "Cyclofix - un mapa abierto para ciclistas",
"ca": "Cyclofix - un mapa obert per a ciclistes"
},
"description": {
"en": "The goal of this map is to present cyclists with an easy-to-use solution to find the appropriate infrastructure for their needs.<br><br>You can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide more data by answering the questions.<br><br>All changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others.<br><br>For more information about the cyclofix project, go to <a href='https://cyclofix.osm.be/'>cyclofix.osm.be</a>.",

View file

@ -1,20 +0,0 @@
{
"id": "doctors",
"title": {
"en": "Doctors"
},
"description": {
"en": "On this map, publicly accessible doctors offices are shown and can be easily added"
},
"maintainer": "MapComplete",
"icon": "./assets/layers/doctors/doctors.svg",
"version": "0",
"startLat": 50.8465573,
"defaultBackgroundId": "CartoDB.Voyager",
"startLon": 4.351697,
"startZoom": 16,
"widenFactor": 2,
"layers": [
"doctors"
]
}

View file

@ -0,0 +1,22 @@
{
"id": "healthcare",
"title": {
"en": "Healthcare"
},
"description": {
"en": "On this map, various healthcare related items are shown"
},
"maintainer": "MapComplete",
"icon": "./assets/layers/doctors/doctors.svg",
"version": "0",
"startLat": 50.8465573,
"defaultBackgroundId": "CartoDB.Voyager",
"startLon": 4.351697,
"startZoom": 16,
"widenFactor": 2,
"layers": [
"doctors",
"hospital",
"pharmacy"
]
}

View file

@ -4,11 +4,13 @@
"version": "20211215",
"title": {
"en": "Kerbs and crossings",
"nl": "Stoepranden en oversteekplaatsen"
"nl": "Stoepranden en oversteekplaatsen",
"de": "Bordsteine und Überwege"
},
"description": {
"en": "A map showing kerbs and crossings.",
"nl": "Een kaart met stoepranden en oversteekplaatsen."
"nl": "Een kaart met stoepranden en oversteekplaatsen.",
"de": "Eine Karte mit Bordsteinen und Überwegen."
},
"icon": "./assets/layers/kerbs/KerbIcon.svg",
"startZoom": 19,

View file

@ -151,10 +151,6 @@
"if": "theme=cyclofix",
"then": "./assets/themes/cyclofix/logo.svg"
},
{
"if": "theme=doctors",
"then": "./assets/layers/doctors/doctors.svg"
},
{
"if": "theme=drinking_water",
"then": "./assets/themes/drinking_water/logo.svg"
@ -211,6 +207,10 @@
"if": "theme=hailhydrant",
"then": "./assets/themes/hailhydrant/logo.svg"
},
{
"if": "theme=healthcare",
"then": "./assets/layers/doctors/doctors.svg"
},
{
"if": "theme=kerbs_and_crossings",
"then": "./assets/layers/kerbs/KerbIcon.svg"

View file

@ -42,6 +42,7 @@
"startZoom": 1,
"widenFactor": 3,
"layers": [
"shops"
"shops",
"pharmacy"
]
}

View file

@ -16,7 +16,8 @@
"nl": "Kaart met afvalbakken en recyclingfaciliteiten.",
"de": "Eine Karte mit Abfalleimern und Recyclingeinrichtungen.",
"fr": "Carte des poubelles et infrastructures de recyclage.",
"it": "Mappa dei cestini per i rifiuti e i centri di raccolta e riciclo rifiuti."
"it": "Mappa dei cestini per i rifiuti e i centri di raccolta e riciclo rifiuti.",
"ca": "Mapa que mostra papereres i infraestructures de reciclatge."
},
"icon": "./assets/layers/recycling/recycling-14.svg",
"startZoom": 19,

View file

@ -5,7 +5,7 @@
"contributor": "Pieter Vander Vennet"
},
{
"commits": 135,
"commits": 138,
"contributor": "kjon"
},
{
@ -18,11 +18,11 @@
},
{
"commits": 30,
"contributor": "Iago"
"contributor": "Babos Gábor"
},
{
"commits": 29,
"contributor": "Babos Gábor"
"commits": 30,
"contributor": "Iago"
},
{
"commits": 29,
@ -92,6 +92,10 @@
"commits": 9,
"contributor": "Jacque Fresco"
},
{
"commits": 8,
"contributor": "paunofu"
},
{
"commits": 7,
"contributor": "Niels Elgaard Larsen"
@ -160,10 +164,6 @@
"commits": 4,
"contributor": "BMN"
},
{
"commits": 4,
"contributor": "paunofu"
},
{
"commits": 4,
"contributor": "Hiroshi Miura"

View file

@ -950,6 +950,10 @@ video {
margin-top: -3rem;
}
.mr-1 {
margin-right: 0.25rem;
}
.mb-0 {
margin-bottom: 0px;
}
@ -1038,6 +1042,10 @@ video {
height: 6rem;
}
.h-8 {
height: 2rem;
}
.h-full {
height: 100%;
}
@ -1050,10 +1058,6 @@ video {
height: 3rem;
}
.h-8 {
height: 2rem;
}
.h-1\/2 {
height: 50%;
}
@ -1122,6 +1126,14 @@ video {
width: 100%;
}
.w-8 {
width: 2rem;
}
.w-1 {
width: 0.25rem;
}
.w-24 {
width: 6rem;
}
@ -1138,10 +1150,6 @@ video {
width: 3rem;
}
.w-8 {
width: 2rem;
}
.w-0 {
width: 0px;
}
@ -1282,6 +1290,10 @@ video {
flex-wrap: wrap-reverse;
}
.content-start {
align-content: flex-start;
}
.items-end {
align-items: flex-end;
}
@ -1533,6 +1545,15 @@ video {
padding-right: 0px;
}
.px-4 {
padding-left: 1rem;
padding-right: 1rem;
}
.pr-2 {
padding-right: 0.5rem;
}
.pb-12 {
padding-bottom: 3rem;
}
@ -1601,10 +1622,6 @@ video {
padding-top: 0.125rem;
}
.pr-2 {
padding-right: 0.5rem;
}
.pl-6 {
padding-left: 1.5rem;
}
@ -1668,10 +1685,6 @@ video {
font-weight: 600;
}
.font-medium {
font-weight: 500;
}
.uppercase {
text-transform: uppercase;
}
@ -1701,10 +1714,6 @@ video {
--tw-ordinal: ordinal;
}
.leading-6 {
line-height: 1.5rem;
}
.tracking-tight {
letter-spacing: -0.025em;
}
@ -1912,6 +1921,14 @@ svg, img {
height: 100%;
}
.titleicon img {
width: unset;
}
.titleicon svg {
width: unset;
}
.svg-catch svg path {
fill: var(--catch-detail-color) !important;
stroke: var(--catch-detail-color) !important;
@ -2458,6 +2475,27 @@ input {
/* Additional class on the first layer filter */
}
.mapping-icon-small-height {
/* A mapping icon type */
height: 2rem;
margin-right: 0.5rem;
width: unset;
}
.mapping-icon-medium-height {
/* A mapping icon type */
height: 3rem;
margin-right: 0.5rem;
width: unset;
}
.mapping-icon-large-height {
/* A mapping icon type */
height: 5rem;
margin-right: 0.5rem;
width: unset;
}
.mapping-icon-small {
/* A mapping icon type */
width: 1.5rem;
@ -2507,16 +2545,6 @@ input {
color: var(--unsubtle-detail-color-contrast);
}
.group:hover .group-hover\:text-blue-800 {
--tw-text-opacity: 1;
color: rgba(30, 64, 175, var(--tw-text-opacity));
}
.group:hover .group-hover\:text-blue-900 {
--tw-text-opacity: 1;
color: rgba(30, 58, 138, var(--tw-text-opacity));
}
@media (min-width: 640px) {
.sm\:mx-auto {
margin-left: auto;

13
hospital.svg Normal file
View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg
width="14"
height="14"
version="1.1"
viewBox="0 0 3.7042 3.7042"
xmlns="http://www.w3.org/2000/svg">
<g transform="translate(0 -293.3)">
<path transform="matrix(.26458 0 0 .26458 0 293.3)"
d="m7 0a7 7 0 0 0-7 7 7 7 0 0 0 7 7 7 7 0 0 0 7-7 7 7 0 0 0-7-7zm-1 3h2v3h3v2h-3v3h-2v-3h-3v-2h3v-3z"
fill="#BF0000"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 397 B

View file

@ -137,6 +137,13 @@ svg, img {
height: 100%;
}
.titleicon img {
width: unset;
}
.titleicon svg {
width: unset;
}
.svg-catch svg path {
fill: var(--catch-detail-color) !important;
stroke: var(--catch-detail-color) !important;
@ -620,6 +627,27 @@ input {
/* Additional class on the first layer filter */
}
.mapping-icon-small-height {
/* A mapping icon type */
height: 1.5rem;
margin-right: 0.5rem;
width: unset;
}
.mapping-icon-medium-height {
/* A mapping icon type */
height: 3rem;
margin-right: 0.5rem;
width: unset;
}
.mapping-icon-large-height {
/* A mapping icon type */
height: 5rem;
margin-right: 0.5rem;
width: unset;
}
.mapping-icon-small {
/* A mapping icon type */

View file

@ -239,6 +239,9 @@
"wednesday": "Dimecres"
},
"welcomeBack": "Has entrat, benvingut/da.",
"welcomeExplanation": {
"addNew": "Toqueu el mapa per afegir un nou PDI."
},
"wikipedia": {
"createNewWikidata": "Crear un ítem de Wikidata",
"doSearch": "Cerca adalt per veure els resultats",
@ -265,6 +268,9 @@
"doDelete": "Esborrar imatge",
"dontDelete": "Cancel·lar",
"isDeleted": "Esborrada",
"nearbyPictures": {
"browseNearby": "Cerca imatges properes…"
},
"pleaseLogin": "Entrar per pujar una foto",
"respectPrivacy": "Respecta la privacitat. No fotografiïs gent o matrícules. No facis servir imatges de Google Maps, Google Streetview o altres fonts amb copyright.",
"toBig": "La teva imatge és massa gran ara que medeix {actual_size}. Usa imatges de com a molt {max_size}",

View file

@ -332,7 +332,7 @@
"title": "Sammenlign med eksisterende data",
"titleLive": "Live data på OSM",
"titleNearby": "Elementer i nærheden",
"zoomIn": "Live data bliver vist på zoomniveau mindst {needed}. Det aktuelle zoomniveau er {current}"
"zoomIn": "Det aktuelle zoomniveau er {current}"
},
"createNotes": {
"creating": "Oprettede <b>{count}</b> noter ud af {total}",

View file

@ -360,7 +360,7 @@
"title": "Mit vorhandenen Daten vergleichen",
"titleLive": "Live-Daten auf OSM",
"titleNearby": "Objekte in der Nähe",
"zoomIn": "Live-Daten werden ab Zoomstufe {needed} angezeigt. Die aktuelle Zoomstufe ist {current}"
"zoomIn": "Die aktuelle Zoomstufe ist {current}"
},
"createNotes": {
"creating": "<b>{count}</b> Notizen von {total} erstellt",

View file

@ -160,6 +160,7 @@
},
"nameInlineQuestion": "The name of this {category} is $$$",
"next": "Next",
"noMatchingMapping": "No entries mapped your search…",
"noNameCategory": "{category} without a name",
"noTagsSelected": "No tags selected",
"notValid": "Select a valid value to continue",
@ -355,6 +356,7 @@
"osmLoaded": "{count} elements are loaded from OpenStreetMap which match the layer <b>{name}</b>.",
"reloadTheCache": "Clear the cache and query overpass again",
"setRangeToZero": "Set the range to 0 or 1 if you want to import them all",
"showOsmLayerInConflationMap": "Show the OSM data",
"states": {
"error": "Could not load latest data from overpass due to {error}",
"idle": "Checking local storage…",
@ -364,7 +366,8 @@
"title": "Compare with existing data",
"titleLive": "Live data on OSM",
"titleNearby": "Nearby features",
"zoomIn": "The live data is shown if the zoomlevel is at least {needed}. The current zoom level is {current}"
"zoomIn": "The current zoom level is {current}",
"zoomLevelSelection": "The live data is shown if the zoomlevel is at least: "
},
"createNotes": {
"creating": "Created <b>{count}</b> notes out of {total}",

View file

@ -3,6 +3,7 @@
"description": "Adreces"
},
"artwork": {
"description": "Un mapa obert d'estàtues, busts, grafitis i altres obres d'art del tot el món",
"name": "Obres d'art",
"tagRenderings": {
"artwork-artwork_type": {
@ -824,12 +825,72 @@
"recycling": {
"name": "Residus",
"tagRenderings": {
"container-location": {
"mappings": {
"2": {
"then": "Aquest contenidor està situat a l'aire lliure"
}
}
},
"opening_hours": {
"mappings": {
"0": {
"then": "24/7"
}
}
},
"operator": {
"render": "Aquesta infraestuctura de reciclatge està operada per {operator}"
},
"recycling-accepts": {
"mappings": {
"1": {
"then": "Ací es poden reciclar els cartons de begudes"
},
"2": {
"then": "Ací es poden reciclar llaunes"
},
"7": {
"then": "Ací es poden reciclar residus orgànics"
},
"8": {
"then": "Ací es poden reciclar ampolles de vidre"
},
"9": {
"then": "Ací es pot reciclar vidre"
},
"10": {
"then": "Ací es poden reciclar diaris"
},
"11": {
"then": "Ací es pot reciclar paper"
},
"12": {
"then": "Ací es poden reciclar ampolles de plàstic"
},
"13": {
"then": "Ací es poden reciclar envasos de plàstic"
},
"14": {
"then": "Ací es pot reciclar plàstic"
},
"20": {
"then": "Ací es pot reciclar el rebuig"
}
}
},
"recycling-centre-name": {
"render": "Aquest centre de reciclatge s'anomena <b>{name}</b>"
},
"recycling-type": {
"mappings": {
"0": {
"then": "Açò és un contenidor de reciclatge"
},
"1": {
"then": "Açò és un centre de reciclatge"
}
}
}
}
},

View file

@ -3095,12 +3095,21 @@
"1": {
"then": "Radweg"
},
"2": {
"then": "Straße mit gemeinsam genutzter Fahrspur {name}"
},
"3": {
"then": "Gemeinsame Fahrspur"
},
"4": {
"then": "Straße mit Fahrradstreifen {name}"
},
"5": {
"then": "Fahrradspur"
},
"6": {
"then": "Straße mit Radweg neben der Straße {name}"
},
"7": {
"then": "Radweg neben der Straße"
},
@ -3110,7 +3119,8 @@
"9": {
"then": "Fahrradstraße"
}
}
},
"render": "Weg"
}
},
"defibrillator": {
@ -4057,6 +4067,116 @@
"render": "Informationstafel"
}
},
"kerbs": {
"description": "Eine Ebene, die Bordsteine zeigt.",
"filter": {
"0": {
"options": {
"0": {
"question": "Alle Arten von Bordsteinen"
},
"1": {
"question": "Erhöhter Bordstein (>3 cm)"
},
"2": {
"question": "Abgesenkter Bordstein (~3 cm)"
},
"3": {
"question": "Bündiger Bordstein (~0cm)"
},
"4": {
"question": "Kein Bordstein"
},
"5": {
"question": "Bordstein mit unbekannter Höhe"
}
}
},
"1": {
"options": {
"0": {
"question": "Bordsteine mit oder ohne taktilem Pflaster"
},
"1": {
"question": "Bordstein mit taktilem Pflaster"
},
"2": {
"question": "Bordstein ohne taktilem Pflaster"
},
"3": {
"question": "Bordstein ohne Informationen über taktiles Pflaster"
}
}
}
},
"name": "Bordsteine",
"presets": {
"0": {
"description": "Bordstein in einem Fußweg",
"title": "einen Bordstein"
}
},
"tagRenderings": {
"kerb-height": {
"freeform": {
"placeholder": "Höhe des Bordsteins"
},
"question": "Wie hoch ist der Bordstein?",
"render": "Bordsteinhöhe: {{kerb:height}}"
},
"kerb-type": {
"mappings": {
"0": {
"then": "Der Bordstein ist erhöht (>3 cm)"
},
"1": {
"then": "Der Bordstein ist abgesenkt (~3 cm)"
},
"2": {
"then": "Der Bordstein ist bündig (~0cm)"
},
"3": {
"then": "Hier gibt es keinen Bordstein"
},
"4": {
"then": "Es gibt einen Bordstein mit unbekannter Höhe"
}
},
"question": "Wie hoch ist der Bordstein?"
},
"tactile-paving": {
"mappings": {
"0": {
"then": "Der Bordstein hat ein taktiles Pflaster."
},
"1": {
"then": "Der Bordstein hat kein taktiles Pflaster."
},
"2": {
"then": "Der Bordstein hat ein taktiles Pflaster, das aber falsch ist"
}
},
"question": "Gibt es am Bordstein ein taktiles Pflaster?"
}
},
"title": {
"render": "Bordstein"
},
"units": {
"0": {
"applicableUnits": {
"0": {
"human": "Zentimeter",
"humanSingular": "Zentimeter"
},
"1": {
"human": "Meter",
"humanSingular": "Meter"
}
}
}
}
},
"kindergarten_childcare": {
"name": "Kindergärten und Kinderkrippen",
"presets": {
@ -5047,10 +5167,22 @@
"question": "Welche Geschlechter können sich an dieser Schule anmelden?"
},
"language": {
"freeform": {
"placeholder": "Sprache in Englisch in Kleinbuchstaben"
},
"mappings": {
"0": {
"then": "Die Hauptsprache dieser Schule ist unbekannt"
},
"1": {
"then": "Französisch ist die Hauptsprache von {name}"
},
"2": {
"then": "Niederländisch ist die Hauptsprache von {name}"
},
"3": {
"then": "Deutsch ist die Hauptsprache von {name}"
},
"4": {
"then": "Die Hauptsprache dieser Schule ist unbekannt"
}
@ -5149,6 +5281,9 @@
"tagRenderings": {
"shops-name": {
"question": "Wie ist der Name dieses Geschäfts?"
},
"shops-type-from-id": {
"question": "Was ist das für ein Geschäft?"
}
},
"title": {

View file

@ -3255,6 +3255,52 @@
"description": "This layer visualizes directions",
"name": "Direction visualization"
},
"doctors": {
"filter": {
"0": {
"options": {
"0": {
"question": "Opened now"
}
}
}
},
"name": "doctors",
"presets": {
"0": {
"title": "a doctors office"
},
"1": {
"title": "a dentists office"
},
"2": {
"title": "a physiotherapists office"
}
},
"tagRenderings": {
"specialty": {
"mappings": {
"0": {
"then": "This is a general practitioner"
},
"1": {
"then": "This is a gynaecologist"
},
"2": {
"then": "This is a psychiatrist"
},
"3": {
"then": "This is a paediatrician"
}
},
"question": "What is this doctor specialized in?",
"render": "This doctor is specialized in {healthcare:speciality}"
}
},
"title": {
"render": "Doctors Office {name}"
}
},
"dogpark": {
"name": "dog parks",
"presets": {
@ -3572,6 +3618,9 @@
"nonDeleteMappings": {
"0": {
"then": "This is actually a pub"
},
"1": {
"then": "This is actually a cafe"
}
}
},
@ -3995,6 +4044,18 @@
"render": "Hackerspace"
}
},
"hospital": {
"name": "Hospital",
"tagRenderings": {
"name": {
"question": "What does the of the hospital ?",
"render": "Name of the hospital name is {name}"
}
},
"title": {
"render": "Hospital"
}
},
"hydrant": {
"description": "Map layer to show fire hydrants.",
"name": "Map of hydrants",
@ -4629,6 +4690,28 @@
"description": "Pedestrian footpaths, especially used for indoor navigation and snapping entrances to this layer",
"name": "Pedestrian paths"
},
"pharmacy": {
"name": "pharmacy",
"tagRenderings": {
"wheelchair": {
"mappings": {
"0": {
"then": "This pharmacy is easy to access on a wheelchair"
},
"1": {
"then": "This pharmacy is hard to access on a wheelchair"
},
"2": {
"then": "This pharmacy has limited access for wheelchair users"
}
},
"question": "Is this pharmacy easy to access on a wheelchair?"
}
},
"title": {
"render": "{name}"
}
},
"picnic_table": {
"description": "The layer showing picnic tables",
"name": "Picnic tables",
@ -5322,6 +5405,26 @@
"question": "What kind of shop is this?"
}
},
"copyshop-print-sizes": {
"mappings": {
"0": {
"then": "This shop can print on papers of size A4"
},
"1": {
"then": "This shop can print on papers of size A3"
},
"2": {
"then": "This shop can print on papers of size A2"
},
"3": {
"then": "This shop can print on papers of size A1"
},
"4": {
"then": "This shop can print on papers of size A0"
}
},
"question": "What paper formats does this shop offer?"
},
"shops-name": {
"question": "What is the name of this shop?"
}

View file

@ -3259,7 +3259,7 @@
},
"operator": {
"question": "¿Que empresa opera esta facilidad de reciclado?",
"render": "Esta facilidad de reciclado la opera {operator}"
"render": "Esta infraestructura de reciclado la opera {operator}"
},
"recycling-accepts": {
"mappings": {

View file

@ -248,7 +248,7 @@
}
},
"bench": {
"description": "Deze laag toont zitbanken en enkele vragen over deze zitbanken",
"description": "Een zitbank is een houten, metalen, stenen, … oppervlak waar een mens kan zitten. Deze laag toont ze en stelt er enkele vragen over.",
"name": "Zitbanken",
"presets": {
"0": {
@ -2455,6 +2455,9 @@
},
"question": "Wat is de naam van dit Klimgelegenheid?",
"render": "<strong>{name}</strong>"
},
"Contained_climbing_routes": {
"render": "<h3>Bevat {_contained_climbing_routes_count} routes</h3> <ul>{_contained_climbing_routes}</ul>"
}
},
"title": {
@ -2548,7 +2551,8 @@
"2": {
"then": "Klimmen is hier niet mogelijk"
}
}
},
"question": "Is klimmen hier mogelijk?"
}
},
"title": {
@ -3541,6 +3545,20 @@
"question": "Heeft een halal menu"
}
}
},
"4": {
"options": {
"0": {
"question": "Accepteert cash"
}
}
},
"5": {
"options": {
"0": {
"question": "Accepteert betaalkaarten"
}
}
}
},
"name": "Eetgelegenheden",
@ -4170,7 +4188,8 @@
"0": {
"then": "Dit is een woonerf en heeft dus een maximale snelheid van 20km/h"
}
}
},
"render": "De maximum toegestane snelheid op deze weg is {maxspeed}"
}
},
"units": {
@ -4186,6 +4205,14 @@
}
}
}
},
"description": "Toont de toegestane snelheid voor elke weg",
"title": {
"mappings": {
"0": {
"then": "Weg zonder een naam"
}
}
}
},
"nature_reserve": {
@ -6404,4 +6431,4 @@
}
}
}
}
}

View file

@ -309,7 +309,7 @@
"title": "Sammenlign med eksisterende data",
"titleLive": "Sanntidsdata på OSM",
"titleNearby": "Funksjoner i nærheten",
"zoomIn": "Sanntidsdata vises hvis forstørrelsesnivået er minst {needed}. Nåværende forstørrelsesnivå er {current}."
"zoomIn": "Nåværende forstørrelsesnivå er {current}."
},
"createNotes": {
"creating": "Opprettet <b>{count}</b> notater av {total}",

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