diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
deleted file mode 100644
index fcc5f3644..000000000
--- a/.devcontainer/Dockerfile
+++ /dev/null
@@ -1,16 +0,0 @@
-# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.187.0/containers/typescript-node/.devcontainer/base.Dockerfile
-
-# [Choice] Node.js version: 16, 14, 12
-ARG VARIANT="16-buster"
-FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:0-${VARIANT}
-
-# [Optional] Uncomment this section to install additional OS packages.
-# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
-# && apt-get -y install --no-install-recommends
-
-# [Optional] Uncomment if you want to install an additional version of node using nvm
-# ARG EXTRA_NODE_VERSION=10
-# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}"
-
-# [Optional] Uncomment if you want to install more global node packages
-# RUN su node -c "npm install -g "
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
deleted file mode 100644
index 8347a4fae..000000000
--- a/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,25 +0,0 @@
-// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
-// https://github.com/microsoft/vscode-dev-containers/tree/v0.187.0/containers/typescript-node
-{
- "name": "MapComplete",
- "build": {
- "dockerfile": "Dockerfile",
- // Update 'VARIANT' to pick a Node version: 12, 14, 16
- "args": {
- "VARIANT": "14"
- }
- },
- // Set *default* container specific settings.json values on container create.
- "settings": {},
- // Add the IDs of extensions you want installed when the container is created.
- "extensions": [],
- // Use 'forwardPorts' to make a list of ports inside the container available locally.
- "forwardPorts": [
- 1234
- ],
- // Use 'postCreateCommand' to run commands after the container is created.
- //"postCreateCommand": "npm run init",
-
- // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
- "remoteUser": "node"
-}
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 8e0cc6929..000000000
--- a/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.json merge=json
diff --git a/.prettierrc b/.prettierrc
deleted file mode 100644
index 0b81e39b4..000000000
--- a/.prettierrc
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "trailingComma": "es5",
- "tabWidth": 4,
- "semi": true,
- "singleQuote": false
-}
diff --git a/Docs/Architecture.md b/Docs/Architecture.md
index 60cbec7f0..69a08018f 100644
--- a/Docs/Architecture.md
+++ b/Docs/Architecture.md
@@ -12,7 +12,7 @@ There are no servers for MapComplete, all services are configured by third parti
Minimal HTML - Minimal CSS
--------------------------
-There is quasi no HTML. Most of the components are generated by TypeScript and attached dynamically. The html is a
+There is quasi no HTML. Most of the components are generated by TypeScript and attached dynamically. The HTML is a
barebones skeleton which serves every theme.
@@ -23,19 +23,21 @@ Most (but not all) objects in MapComplete get all the state they need as a param
the case with most graphical applications, there are quite some dynamical values.
All values which change regularly are wrapped into
-a [UIEventSource](https://github.com/pietervdvn/MapComplete/blob/master/Logic/UIEventSource.ts). An UiEventSource is a
+a [`UIEventSource`](../Logic/UIEventSource.ts). A `UIEventSource` is a
wrapper containing a value and offers the possibility to add a callback function which is called every time the value is
-changed (with setData)
+changed (with `setData`)
Furthermore, there are various helper functions, the most widely used one being `map` - generating a new event source
-with the new value applied. Note that 'map' will also absorb some changes,
+with the new value applied. Note that `map` will also absorb some changes,
e.g. `const someEventSource : UIEventSource = ... ; someEventSource.map(list = list.length)` will only trigger
when the length of the list has changed.
-An object which receives an UIEventSource is responsible of responding onto changes of this object. This is especially
-true for UI-components
+An object which receives a `UIEventSource` is responsible of responding to changes of this object. This is especially
+true for UI-components.
-UI --```
+UI
+--
+```typescript
export default class MyComponent {
@@ -47,21 +49,21 @@ export default class MyComponent {
```
-The Graphical User Interface is composed of various UI-elements. For every UI-element, there is a BaseUIElement which creates the actual HTMLElement when needed.
+The Graphical User Interface is composed of various UI-elements. For every UI-element, there is a `BaseUIElement` which creates the actual `HTMLElement` when needed.
There are some basic elements, such as:
-- FixedUIElement which shows a fixed, unchangeble element
-- Img to show an image
-- Combine which wrap everything given (strings and other elements) in a div
-- List
+- `FixedUIElement` which shows a fixed, unchangeble element
+- `Img` to show an image
+- `Combine` which wraps everything given (strings and other elements) in a div
+- `List`
-There is one special component: the VariableUIElement
-The variableUIElement takes a `UIEventSource` and will dynamicaly show whatever the UIEventSource contains at the moment.
+There is one special component: the `VariableUIElement`
+The `VariableUIElement` takes a `UIEventSource` and will dynamicaly show whatever the `UIEventSource` contains at the moment.
For example:
-```
+```typescript
const src : UIEventSource = ... // E.g. user input, data that will be updated... new VariableUIElement(src)
.AttachTo('some-id') // attach it to the html
@@ -78,9 +80,9 @@ To add a translation:
2. Find a correct spot for your translation in the tree
3. run `npm run generate:translations`
4. `import Translations`
-5. Translations.t..Clone() is the UIElement offering your translation
+5. `Translations.t..Clone()` is the `UIElement` offering your translation
-### Input elements`
+### Input elements
Input elements are a special kind of BaseElement and which offer a piece of a form to the user, e.g. a TextField, a Radio button, a dropdown, ...
@@ -92,16 +94,16 @@ There are some components which offer useful functionality:
- The `subtleButton` which is a friendly, big button
-- The Toggle: `const t = new Toggle( componentA, componentB, source)` is a UIEventSource which shows `componentA` as long as `source` contains `true` and will show `componentB` otherwise.
+- The Toggle: `const t = new Toggle( componentA, componentB, source)` is a `UIEventSource` which shows `componentA` as long as `source` contains `true` and will show `componentB` otherwise.
### Styling
Styling is done as much as possible with [TailwindCSS](https://tailwindcss.com/). It contains a ton of utility classes, each of them containing a few rules.
-For exmaple: ` someBaseUIElement.SetClass("flex flex-col border border-black rounded-full")` will set the component to be a flex object, as column, with a black border and pill-shaped.
+For example: ` someBaseUIElement.SetClass("flex flex-col border border-black rounded-full")` will set the component to be a flex object, as column, with a black border and pill-shaped.
-If tailwind is not enough, `baseUiElement.SetStyle("background: red; someOtherCssRule: abc;")`
+If Tailwind is not enough, use `baseUiElement.SetStyle("background: red; someOtherCssRule: abc;")`.
### An example
@@ -116,7 +118,7 @@ In the case of different hours, input hours should be too.
This can be constructed as following:
-```
+```typescript
// We construct the dropdown element with values and labelshttps://tailwindcss.com/
const isOpened = new Dropdown(Translations.t.is_this_shop_opened_during_holidays,
@@ -145,7 +147,7 @@ If you make a specialized class to offer a certain functionality, you can organi
1. Create a new class:
-```
+```typescript
export default class MyComponent {
@@ -160,7 +162,7 @@ export default class MyComponent {
2. Construct the needed UI in the constructor
-```
+```typescript
export default class MyComponent {
@@ -180,10 +182,10 @@ export default class MyComponent {
```
-3. You'll notice that you'll end up with one certain component (in this example the combine) to wrap it all together. Change the class to extend this type of component and use super to wrap it all up:
+3. You'll notice that you'll end up with one certain component (in this example the combine) to wrap it all together. Change the class to extend this type of component and use `super()` to wrap it all up:
-```
+```typescript
export default class MyComponent extends Combine {
@@ -203,17 +205,17 @@ Assets
### Themes
-Theme and layer configuration files go into /assets/layers and assets/themes
+Theme and layer configuration files go into `assets/layers` and `assets/themes`.
### Images
-Other files (mostly images that are part of the core of mapcomplete) go into 'assets/svg' and are usable with `Svg.image_file_ui()`. Run `npm run generate:images` if you added a new image
+Other files (mostly images that are part of the core of MapComplete) go into `assets/svg` and are usable with `Svg.image_file_ui()`. Run `npm run generate:images` if you added a new image.
Logic
-----
-The last part is the business logic of the application, found in 'Logic'. Actors are small objects which react to UIEventSources to update other eventSources.
+The last part is the business logic of the application, found in 'Logic'. Actors are small objects which react to `UIEventSources` to update other eventSources.
-State.state is a big singleton object containing a lot of the state of the entire application. That one is a bit a mess
+`State.state` is a big singleton object containing a lot of the state of the entire application. That one is a bit of a mess.
diff --git a/Docs/BuiltinIndex.md b/Docs/BuiltinIndex.md
index 887e08e62..f2772697f 100644
--- a/Docs/BuiltinIndex.md
+++ b/Docs/BuiltinIndex.md
@@ -1,11 +1,14 @@
-Index of builtin TagRendering
+
+
+ Index of builtin TagRendering
===============================
+
+
## Table of contents
1. [Index of builtin TagRendering](#index-of-builtin-tagrendering)
-
-- [Existing builtin tagrenderings](#existing-builtin-tagrenderings)
+ - [Existing builtin tagrenderings](#existing-builtin-tagrenderings)
+ [images](#images)
+ [website](#website)
+ [phone](#phone)
@@ -26,165 +29,304 @@ Index of builtin TagRendering
+ [minimap](#minimap)
+ [wikipedia](#wikipedia)
-Existing builtin tagrenderings
+
+
+
+
+ Existing builtin tagrenderings
--------------------------------
-### images
-- ambulancestation
-- artwork
-- bench
-- bench_at_pt
-- bicycle_library
-- bicycle_tube_vending_machine
-- bike_cafe
-- bike_cleaning
-- bike_parking
-- bike_repair_station
-- bike_shop
-- bike_themed_object
-- binocular
-- birdhide
-- cafe_pub
-- charging_station
-- defibrillator
-- drinking_water
-- entrance
-- extinguisher
-- fire_station
-- food
-- ghost_bike
-- grass_in_parks
-- hydrant
-- information_board
-- map
-- nature_reserve
-- observation_tower
-- parking
-- picnic_table
-- play_forest
-- playground
-- public_bookcase
-- shops
-- slow_roads
-- sport_pitch
-- surveillance_camera
-- toilet
-- trail
-- tree_node
-- viewpoint
-- village_green
-- watermill
-### website
-- bicycle_library
-- bicycle_rental
-- bike_themed_object
-- cafe_pub
-- food
-- observation_tower
-### phone
+### images
-- bicycle_library
-- bicycle_rental
-- bike_themed_object
-- cafe_pub
-- food
-### email
-- bicycle_library
-- bicycle_rental
-- bike_themed_object
-- cafe_pub
-- food
-### opening_hours
-- bicycle_library
-- bicycle_rental
-- bike_themed_object
-- cafe_pub
-- food
+ - ambulancestation
+ - artwork
+ - bench
+ - bench_at_pt
+ - bicycle_library
+ - bicycle_tube_vending_machine
+ - bike_cafe
+ - bike_cleaning
+ - bike_parking
+ - bike_repair_station
+ - bike_shop
+ - bike_themed_object
+ - binocular
+ - birdhide
+ - cafe_pub
+ - charging_station
+ - defibrillator
+ - drinking_water
+ - entrance
+ - extinguisher
+ - fire_station
+ - food
+ - ghost_bike
+ - grass_in_parks
+ - hydrant
+ - information_board
+ - map
+ - nature_reserve
+ - observation_tower
+ - parking
+ - picnic_table
+ - play_forest
+ - playground
+ - public_bookcase
+ - shops
+ - slow_roads
+ - sport_pitch
+ - surveillance_camera
+ - toilet
+ - trail
+ - tree_node
+ - viewpoint
+ - village_green
+ - watermill
-### description
-- bicycle_library
-- bike_shop
-- bike_themed_object
-- toilet
-### payment-options
-- bicycle_rental
-- cafe_pub
-- food
-- observation_tower
-- shops
-- toilet
+### website
-### payment-options-advanced
-- bicycle_rental
-- charging_station
-### level
-- bike_repair_station
-- charging_station
-- toilet
-### bike_cleaning.bike_cleaning-service:bicycle:cleaning:charge
+ - bicycle_library
+ - bicycle_rental
+ - bike_themed_object
+ - cafe_pub
+ - food
+ - observation_tower
-- bike_shop
-### wheelchair-access
-- cafe_pub
-- defibrillator
-- food
-- observation_tower
-### service:electricity
+### phone
-- cafe_pub
-- food
-### dog-access
-- cafe_pub
-- food
-### all_tags
-- cluster_style
+ - bicycle_library
+ - bicycle_rental
+ - bike_themed_object
+ - cafe_pub
+ - food
-### questions
-- etymology
-- play_forest
-- playground
-- shops
-- sport_pitch
-### reviews
-- food
-- shops
+### email
-### export_as_gpx
-- gps_track
-### minimap
-- gps_track
-### wikipedia
+ - bicycle_library
+ - bicycle_rental
+ - bike_themed_object
+ - cafe_pub
+ - food
-- nature_reserve
-- observation_tower
+
+
+
+### opening_hours
+
+
+
+
+
+ - bicycle_library
+ - bicycle_rental
+ - bike_themed_object
+ - cafe_pub
+ - food
+
+
+
+
+### description
+
+
+
+
+
+ - bicycle_library
+ - bike_shop
+ - bike_themed_object
+ - toilet
+
+
+
+
+### payment-options
+
+
+
+
+
+ - bicycle_rental
+ - cafe_pub
+ - food
+ - observation_tower
+ - shops
+ - toilet
+
+
+
+
+### payment-options-advanced
+
+
+
+
+
+ - bicycle_rental
+ - charging_station
+
+
+
+
+### level
+
+
+
+
+
+ - bike_repair_station
+ - charging_station
+ - toilet
+
+
+
+
+### bike_cleaning.bike_cleaning-service:bicycle:cleaning:charge
+
+
+
+
+
+ - bike_shop
+
+
+
+
+### wheelchair-access
+
+
+
+
+
+ - cafe_pub
+ - defibrillator
+ - food
+ - observation_tower
+
+
+
+
+### service:electricity
+
+
+
+
+
+ - cafe_pub
+ - food
+
+
+
+
+### dog-access
+
+
+
+
+
+ - cafe_pub
+ - food
+
+
+
+
+### all_tags
+
+
+
+
+
+ - cluster_style
+
+
+
+
+### questions
+
+
+
+
+
+ - etymology
+ - play_forest
+ - playground
+ - shops
+ - sport_pitch
+
+
+
+
+### reviews
+
+
+
+
+
+ - food
+ - shops
+
+
+
+
+### export_as_gpx
+
+
+
+
+
+ - gps_track
+
+
+
+
+### minimap
+
+
+
+
+
+ - gps_track
+
+
+
+
+### wikipedia
+
+
+
+
+
+ - nature_reserve
+ - observation_tower
+
This document is autogenerated from assets/layers/*.json
\ No newline at end of file
diff --git a/Docs/BuiltinLayers.md b/Docs/BuiltinLayers.md
index cfee96ecd..9e22dc8de 100644
--- a/Docs/BuiltinLayers.md
+++ b/Docs/BuiltinLayers.md
@@ -1,259 +1,271 @@
-Special and other useful layers
+
+
+ Special and other useful layers
=================================
+
+
## Table of contents
1. [Special and other useful layers](#special-and-other-useful-layers)
1. [Priviliged layers](#priviliged-layers)
1. [gps_location](#gps_location)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
-
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
1. [gps_location_history](#gps_location_history)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
-
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
1. [home_location](#home_location)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
-
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
1. [gps_track](#gps_track)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [Privacy notice](#privacy-notice)
+ [export_as_gpx](#export_as_gpx)
+ [minimap](#minimap)
+ [delete](#delete)
-
1. [type_node](#type_node)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
-
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
1. [note](#note)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [conversation](#conversation)
+ [add_image](#add_image)
+ [comment](#comment)
+ [report-contributor](#report-contributor)
+ [report-note](#report-note)
-
1. [import_candidate](#import_candidate)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [all_tags](#all_tags)
-
1. [conflation](#conflation)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
-
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
1. [left_right_style](#left_right_style)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
-
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
1. [split_point](#split_point)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
-
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
1. [current_view](#current_view)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
-
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
1. [matchpoint](#matchpoint)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
-
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
1. [Normal layers](#normal-layers)
-MapComplete has a few data layers available in the theme which have special properties through builtin-hooks.
-Furthermore, there are some normal layers (which are built from normal Theme-config files) but are so general that they
-get a mention here.
+
+
+MapComplete has a few data layers available in the theme which have special properties through builtin-hooks. Furthermore, there are some normal layers (which are built from normal Theme-config files) but are so general that they get a mention here.
-Priviliged layers
+ Priviliged layers
===================
-- [gps_location](#gps_location)
-- [gps_location_history](#gps_location_history)
-- [home_location](#home_location)
-- [gps_track](#gps_track)
-- [type_node](#type_node)
-- [note](#note)
-- [import_candidate](#import_candidate)
-- [conflation](#conflation)
-- [left_right_style](#left_right_style)
-- [split_point](#split_point)
-- [current_view](#current_view)
-- [matchpoint](#matchpoint)
-gps_location
+
+
+
+ - [gps_location](#gps_location)
+ - [gps_location_history](#gps_location_history)
+ - [home_location](#home_location)
+ - [gps_track](#gps_track)
+ - [type_node](#type_node)
+ - [note](#note)
+ - [import_candidate](#import_candidate)
+ - [conflation](#conflation)
+ - [left_right_style](#left_right_style)
+ - [split_point](#split_point)
+ - [current_view](#current_view)
+ - [matchpoint](#matchpoint)
+
+
+
+
+ gps_location
==============
+
+
+Meta layer showing the current location of the user. Add this to your theme and override the icon to change the appearance of the current location. The object will always have `id=gps` and will have _all_ the properties included in the [`Coordinates`-object](https://developer.mozilla.org/en-US/docs/Web/API/GeolocationCoordinates) returned by the browser.
-Meta layer showing the current location of the user. Add this to your theme and override the icon to change the
-appearance of the current location. The object will always have `id=gps` and will have _all_ the properties included in
-the [`Coordinates`-object](https://developer.mozilla.org/en-US/docs/Web/API/GeolocationCoordinates) returned by the
-browser.
-- **This layer is included automatically in every theme. This layer might contain no points**
-- This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this
- toggleable.
-- Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
+
+
+
+ - **This layer is included automatically in every theme. This layer might contain no points**
+ - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable.
+ - Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
+
[Go to the source code](../assets/layers/gps_location/gps_location.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- id
- =gps
-Supported attributes
+
+ - id=gps
+
+
+
+
+ Supported attributes
----------------------
-gps_location_history
+ gps_location_history
======================
-Meta layer which contains the previous locations of the user as single points. This is mainly for technical reasons,
-e.g. to keep match the distance to the modified object
+Meta layer which contains the previous locations of the user as single points. This is mainly for technical reasons, e.g. to keep match the distance to the modified object
+
+
+
+
+
+
+ - **This layer is included automatically in every theme. This layer might contain no points**
+ - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable.
+ - Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
+ - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
-- **This layer is included automatically in every theme. This layer might contain no points**
-- This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this
- toggleable.
-- Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
-- Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
[Go to the source code](../assets/layers/gps_location_history/gps_location_history.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- user:location
- =yes
-Supported attributes
+
+ - user:location=yes
+
+
+
+
+ Supported attributes
----------------------
-home_location
+ home_location
===============
-
+
-Meta layer showing the home location of the user. The home location can be set in
-the [profile settings](https://www.openstreetmap.org/profile/edit) of OpenStreetMap.
+Meta layer showing the home location of the user. The home location can be set in the [profile settings](https://www.openstreetmap.org/profile/edit) of OpenStreetMap.
+
+
+
+
+
+
+ - **This layer is included automatically in every theme. This layer might contain no points**
+ - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable.
+ - Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
-- **This layer is included automatically in every theme. This layer might contain no points**
-- This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this
- toggleable.
-- Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
[Go to the source code](../assets/layers/home_location/home_location.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- user:home
- =yes
-Supported attributes
+
+ - user:home=yes
+
+
+
+
+ Supported attributes
----------------------
-gps_track
+ gps_track
===========
-Meta layer showing the previous locations of the user as single line. Add this to your theme and override the icon to
-change the appearance of the current location.
+Meta layer showing the previous locations of the user as single line. Add this to your theme and override the icon to change the appearance of the current location.
+
+
+
+
+
+
+ - **This layer is included automatically in every theme. This layer might contain no points**
+ - This layer is not visible by default and must be enabled in the filter by the user.
+ - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
-- **This layer is included automatically in every theme. This layer might contain no points**
-- This layer is not visible by default and must be enabled in the filter by the user.
-- Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
[Go to the source code](../assets/layers/gps_track/gps_track.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- id
- =location_track
-Supported attributes
+
+ - id=location_track
+
+
+
+
+ Supported attributes
----------------------
-### Privacy notice
-_This tagrendering has no question and is thus read-only_
-### export_as_gpx
-_This tagrendering has no question and is thus read-only_
-### minimap
+### Privacy notice
-_This tagrendering has no question and is thus read-only_
-### delete
_This tagrendering has no question and is thus read-only_
@@ -261,85 +273,123 @@ _This tagrendering has no question and is thus read-only_
-type_node
+### export_as_gpx
+
+
+
+_This tagrendering has no question and is thus read-only_
+
+
+
+
+
+### minimap
+
+
+
+_This tagrendering has no question and is thus read-only_
+
+
+
+
+
+### delete
+
+
+
+_This tagrendering has no question and is thus read-only_
+
+
+
+
+
+ type_node
===========
-This is a priviliged meta_layer which exports _every_ point in OSM. This only works if zoomed below the point that the
-full tile is loaded (and not loaded via Overpass). Note that this point will also contain a property `parent_ways` which
-contains all the ways this node is part of as a list. This is mainly used for extremely specialized themes, which do
-advanced conflations. Expert use only.
+This is a priviliged meta_layer which exports _every_ point in OSM. This only works if zoomed below the point that the full tile is loaded (and not loaded via Overpass). Note that this point will also contain a property `parent_ways` which contains all the ways this node is part of as a list. This is mainly used for extremely specialized themes, which do advanced conflations. Expert use only.
+
+
+
+
+
+
+ - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
-- Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
[Go to the source code](../assets/layers/type_node/type_node.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- id~^node\/.*$
-Supported attributes
+
+ - id~^node\/.*$
+
+
+
+
+ Supported attributes
----------------------
-note
+ note
======
-This layer shows notes on OpenStreetMap. Having this layer in your theme will trigger the 'add new note' functionality
-in the 'addNewPoint'-popup (or if your theme has no presets, it'll enable adding notes)
+This layer shows notes on OpenStreetMap. Having this layer in your theme will trigger the 'add new note' functionality in the 'addNewPoint'-popup (or if your theme has no presets, it'll enable adding notes)
+
+
+
+
+
+
+ - This layer is loaded from an external source, namely `https://api.openstreetmap.org/api/0.6/notes.json?limit=10000&closed=7&bbox={x_min},{y_min},{x_max},{y_max}`
-- This layer is loaded from an external source, namely `https://api.openstreetmap.org/api/0.6/notes.json?limit=10000&closed=7&bbox={x_min},{y_min},{x_max},{y_max}`
[Go to the source code](../assets/layers/note/note.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- id~^..*$
-Supported attributes
+
+ - id~^..*$
+
+
+
+
+ Supported attributes
----------------------
-### conversation
-_This tagrendering has no question and is thus read-only_
-### add_image
-_This tagrendering has no question and is thus read-only_
-### comment
+### conversation
-_This tagrendering has no question and is thus read-only_
-### report-contributor
-
-_This tagrendering has no question and is thus read-only_
-
-### report-note
_This tagrendering has no question and is thus read-only_
@@ -347,22 +397,68 @@ _This tagrendering has no question and is thus read-only_
-import_candidate
+### add_image
+
+
+
+_This tagrendering has no question and is thus read-only_
+
+
+
+
+
+### comment
+
+
+
+_This tagrendering has no question and is thus read-only_
+
+
+
+
+
+### report-contributor
+
+
+
+_This tagrendering has no question and is thus read-only_
+
+
+
+
+
+### report-note
+
+
+
+_This tagrendering has no question and is thus read-only_
+
+
+
+
+
+ import_candidate
==================
-
+
Layer used in the importHelper
-- Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
+
+
+
+
+
+ - Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
+
[Go to the source code](../assets/layers/import_candidate/import_candidate.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
@@ -376,10 +472,16 @@ Elements must have the all of following tags to be shown on this layer:
-Supported attributes
+ Supported attributes
----------------------
-### all_tags
+
+
+
+
+### all_tags
+
+
_This tagrendering has no question and is thus read-only_
@@ -387,148 +489,177 @@ _This tagrendering has no question and is thus read-only_
-conflation
+ conflation
============
+
+
+If the import-button moves OSM points, the imported way points or conflates, a preview is shown. This layer defines how this preview is rendered. This layer cannot be included in a theme.
-If the import-button moves OSM points, the imported way points or conflates, a preview is shown. This layer defines how
-this preview is rendered. This layer cannot be included in a theme.
-- This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing
- a minimap with custom data.
+
+
+
+ - This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data.
+
[Go to the source code](../assets/layers/conflation/conflation.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- move
- =yes
- |newpoint
- =yes
-Supported attributes
+
+ - move=yes|newpoint=yes
+
+
+
+
+ Supported attributes
----------------------
-left_right_style
+ left_right_style
==================
-Special meta-style which will show one single line, either on the left or on the right depending on the id. This is used
-in the small popups with left_right roads. Cannot be included in a theme
+Special meta-style which will show one single line, either on the left or on the right depending on the id. This is used in the small popups with left_right roads. Cannot be included in a theme
+
+
+
+
+
+
+ - This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data.
-- This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing
- a minimap with custom data.
[Go to the source code](../assets/layers/left_right_style/left_right_style.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- id
- =left
- |id
- =right
-Supported attributes
+
+ - id=left|id=right
+
+
+
+
+ Supported attributes
----------------------
-split_point
+ split_point
=============
-
+
Layer rendering the little scissors for the minimap in the 'splitRoadWizard'
-- This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing
- a minimap with custom data.
+
+
+
+
+
+ - This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data.
+
[Go to the source code](../assets/layers/split_point/split_point.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- _split_point
- =yes
-Supported attributes
+
+ - _split_point=yes
+
+
+
+
+ Supported attributes
----------------------
-current_view
+ current_view
==============
-A meta-layer which contains one single feature, namely the BBOX of the current map view. This can be used to trigger
-special actions. If a popup is defined for this layer, this popup will be accessible via an extra button on screen.
+A meta-layer which contains one single feature, namely the BBOX of the current map view. This can be used to trigger special actions. If a popup is defined for this layer, this popup will be accessible via an extra button on screen.
The icon on the button is the default icon of the layer, but can be customized by detecting 'button=yes'.
-- This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing
- a minimap with custom data.
+
+
+
+
+
+ - This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data.
+
[Go to the source code](../assets/layers/current_view/current_view.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- current_view
- =yes
-Supported attributes
+
+ - current_view=yes
+
+
+
+
+ Supported attributes
----------------------
-matchpoint
+ matchpoint
============
@@ -537,14 +668,19 @@ matchpoint
The default rendering for a locationInput which snaps onto another object
-- This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing
- a minimap with custom data.
+
+
+
+
+
+ - This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data.
+
[Go to the source code](../assets/layers/matchpoint/matchpoint.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
@@ -558,91 +694,94 @@ Elements must have the all of following tags to be shown on this layer:
-Supported attributes
+ Supported attributes
----------------------
-Normal layers
+ Normal layers
===============
The following layers are included in MapComplete:
-- [address](./Layers/address.md)
-- [ambulancestation](./Layers/ambulancestation.md)
-- [artwork](./Layers/artwork.md)
-- [barrier](./Layers/barrier.md)
-- [bench](./Layers/bench.md)
-- [bench_at_pt](./Layers/bench_at_pt.md)
-- [bicycle_library](./Layers/bicycle_library.md)
-- [bicycle_rental](./Layers/bicycle_rental.md)
-- [bicycle_tube_vending_machine](./Layers/bicycle_tube_vending_machine.md)
-- [bike_cafe](./Layers/bike_cafe.md)
-- [bike_cleaning](./Layers/bike_cleaning.md)
-- [bike_parking](./Layers/bike_parking.md)
-- [bike_repair_station](./Layers/bike_repair_station.md)
-- [bike_shop](./Layers/bike_shop.md)
-- [bike_themed_object](./Layers/bike_themed_object.md)
-- [binocular](./Layers/binocular.md)
-- [birdhide](./Layers/birdhide.md)
-- [cafe_pub](./Layers/cafe_pub.md)
-- [charging_station](./Layers/charging_station.md)
-- [cluster_style](./Layers/cluster_style.md)
-- [conflation](./Layers/conflation.md)
-- [crab_address](./Layers/crab_address.md)
-- [crossings](./Layers/crossings.md)
-- [current_view](./Layers/current_view.md)
-- [cycleways_and_roads](./Layers/cycleways_and_roads.md)
-- [defibrillator](./Layers/defibrillator.md)
-- [direction](./Layers/direction.md)
-- [drinking_water](./Layers/drinking_water.md)
-- [entrance](./Layers/entrance.md)
-- [etymology](./Layers/etymology.md)
-- [extinguisher](./Layers/extinguisher.md)
-- [fire_station](./Layers/fire_station.md)
-- [food](./Layers/food.md)
-- [ghost_bike](./Layers/ghost_bike.md)
-- [gps_location](./Layers/gps_location.md)
-- [gps_location_history](./Layers/gps_location_history.md)
-- [gps_track](./Layers/gps_track.md)
-- [grass_in_parks](./Layers/grass_in_parks.md)
-- [home_location](./Layers/home_location.md)
-- [hydrant](./Layers/hydrant.md)
-- [import_candidate](./Layers/import_candidate.md)
-- [information_board](./Layers/information_board.md)
-- [left_right_style](./Layers/left_right_style.md)
-- [map](./Layers/map.md)
-- [matchpoint](./Layers/matchpoint.md)
-- [named_streets](./Layers/named_streets.md)
-- [nature_reserve](./Layers/nature_reserve.md)
-- [note](./Layers/note.md)
-- [note_import](./Layers/note_import.md)
-- [observation_tower](./Layers/observation_tower.md)
-- [parking](./Layers/parking.md)
-- [pedestrian_path](./Layers/pedestrian_path.md)
-- [picnic_table](./Layers/picnic_table.md)
-- [play_forest](./Layers/play_forest.md)
-- [playground](./Layers/playground.md)
-- [public_bookcase](./Layers/public_bookcase.md)
-- [shops](./Layers/shops.md)
-- [slow_roads](./Layers/slow_roads.md)
-- [split_point](./Layers/split_point.md)
-- [sport_pitch](./Layers/sport_pitch.md)
-- [street_lamps](./Layers/street_lamps.md)
-- [surveillance_camera](./Layers/surveillance_camera.md)
-- [toilet](./Layers/toilet.md)
-- [trail](./Layers/trail.md)
-- [tree_node](./Layers/tree_node.md)
-- [type_node](./Layers/type_node.md)
-- [viewpoint](./Layers/viewpoint.md)
-- [village_green](./Layers/village_green.md)
-- [visitor_information_centre](./Layers/visitor_information_centre.md)
-- [walls_and_buildings](./Layers/walls_and_buildings.md)
-- [waste_basket](./Layers/waste_basket.md)
-- [watermill](./Layers/watermill.md)
+
+
+ - [address](./Layers/address.md)
+ - [ambulancestation](./Layers/ambulancestation.md)
+ - [artwork](./Layers/artwork.md)
+ - [barrier](./Layers/barrier.md)
+ - [bench](./Layers/bench.md)
+ - [bench_at_pt](./Layers/bench_at_pt.md)
+ - [bicycle_library](./Layers/bicycle_library.md)
+ - [bicycle_rental](./Layers/bicycle_rental.md)
+ - [bicycle_tube_vending_machine](./Layers/bicycle_tube_vending_machine.md)
+ - [bike_cafe](./Layers/bike_cafe.md)
+ - [bike_cleaning](./Layers/bike_cleaning.md)
+ - [bike_parking](./Layers/bike_parking.md)
+ - [bike_repair_station](./Layers/bike_repair_station.md)
+ - [bike_shop](./Layers/bike_shop.md)
+ - [bike_themed_object](./Layers/bike_themed_object.md)
+ - [binocular](./Layers/binocular.md)
+ - [birdhide](./Layers/birdhide.md)
+ - [cafe_pub](./Layers/cafe_pub.md)
+ - [charging_station](./Layers/charging_station.md)
+ - [cluster_style](./Layers/cluster_style.md)
+ - [conflation](./Layers/conflation.md)
+ - [crab_address](./Layers/crab_address.md)
+ - [crossings](./Layers/crossings.md)
+ - [current_view](./Layers/current_view.md)
+ - [cycleways_and_roads](./Layers/cycleways_and_roads.md)
+ - [defibrillator](./Layers/defibrillator.md)
+ - [direction](./Layers/direction.md)
+ - [drinking_water](./Layers/drinking_water.md)
+ - [entrance](./Layers/entrance.md)
+ - [etymology](./Layers/etymology.md)
+ - [extinguisher](./Layers/extinguisher.md)
+ - [fire_station](./Layers/fire_station.md)
+ - [food](./Layers/food.md)
+ - [ghost_bike](./Layers/ghost_bike.md)
+ - [gps_location](./Layers/gps_location.md)
+ - [gps_location_history](./Layers/gps_location_history.md)
+ - [gps_track](./Layers/gps_track.md)
+ - [grass_in_parks](./Layers/grass_in_parks.md)
+ - [home_location](./Layers/home_location.md)
+ - [hydrant](./Layers/hydrant.md)
+ - [import_candidate](./Layers/import_candidate.md)
+ - [information_board](./Layers/information_board.md)
+ - [left_right_style](./Layers/left_right_style.md)
+ - [map](./Layers/map.md)
+ - [matchpoint](./Layers/matchpoint.md)
+ - [named_streets](./Layers/named_streets.md)
+ - [nature_reserve](./Layers/nature_reserve.md)
+ - [note](./Layers/note.md)
+ - [note_import](./Layers/note_import.md)
+ - [observation_tower](./Layers/observation_tower.md)
+ - [parking](./Layers/parking.md)
+ - [pedestrian_path](./Layers/pedestrian_path.md)
+ - [picnic_table](./Layers/picnic_table.md)
+ - [play_forest](./Layers/play_forest.md)
+ - [playground](./Layers/playground.md)
+ - [public_bookcase](./Layers/public_bookcase.md)
+ - [shops](./Layers/shops.md)
+ - [slow_roads](./Layers/slow_roads.md)
+ - [split_point](./Layers/split_point.md)
+ - [sport_pitch](./Layers/sport_pitch.md)
+ - [street_lamps](./Layers/street_lamps.md)
+ - [surveillance_camera](./Layers/surveillance_camera.md)
+ - [toilet](./Layers/toilet.md)
+ - [trail](./Layers/trail.md)
+ - [tree_node](./Layers/tree_node.md)
+ - [type_node](./Layers/type_node.md)
+ - [viewpoint](./Layers/viewpoint.md)
+ - [village_green](./Layers/village_green.md)
+ - [visitor_information_centre](./Layers/visitor_information_centre.md)
+ - [walls_and_buildings](./Layers/walls_and_buildings.md)
+ - [waste_basket](./Layers/waste_basket.md)
+ - [watermill](./Layers/watermill.md)
+
This document is autogenerated from AllKnownLayers.ts
\ No newline at end of file
diff --git a/Docs/CalculatedTags.md b/Docs/CalculatedTags.md
index 20cf40306..e767db34f 100644
--- a/Docs/CalculatedTags.md
+++ b/Docs/CalculatedTags.md
@@ -1,11 +1,14 @@
-Metatags
+
+
+ Metatags
==========
+
+
## Table of contents
1. [Metatags](#metatags)
-
-- [Metatags calculated by MapComplete](#metatags-calculated-by-mapcomplete)
+ - [Metatags calculated by MapComplete](#metatags-calculated-by-mapcomplete)
+ [_lat, _lon](#_lat,-_lon)
+ [_layer](#_layer)
+ [_surface, _surface:ha](#_surface,-_surfaceha)
@@ -26,108 +29,166 @@ Metatags
+ [memberships](#memberships)
+ [get](#get)
+
+
Metatags are extra tags available, in order to display more data or to give better questions.
-The are calculated automatically on every feature when the data arrives in the webbrowser. This document gives an
-overview of the available metatags.
+The are calculated automatically on every feature when the data arrives in the webbrowser. This document gives an overview of the available metatags.
-**Hint:** when using metatags, add the [query parameter](URL_Parameters.md) `debug=true` to the URL. This will include a
-box in the popup for features which shows all the properties of the object
+**Hint:** when using metatags, add the [query parameter](URL_Parameters.md) `debug=true` to the URL. This will include a box in the popup for features which shows all the properties of the object
-Metatags calculated by MapComplete
+ Metatags calculated by MapComplete
------------------------------------
-The following values are always calculated, by default, by MapComplete and are available automatically on all elements
-in every theme
+The following values are always calculated, by default, by MapComplete and are available automatically on all elements in every theme
+
+
+
+### _lat, _lon
+
-### _lat, _lon
The latitude and longitude of the point (or centerpoint in the case of a way/area)
-### _layer
-The layer-id to which this feature belongs. Note that this might be return any applicable if `passAllFeatures` is
-defined.
-### _surface, _surface:ha
+
+
+### _layer
+
+
+
+The layer-id to which this feature belongs. Note that this might be return any applicable if `passAllFeatures` is defined.
+
+
+
+
+
+### _surface, _surface:ha
+
+
The surface area of the feature, in square meters and in hectare. Not set on points and ways
This is a lazy metatag and is only calculated when needed
-### _length, _length:km
-The total length of a feature in meters (and in kilometers, rounded to one decimal for '_length:km'). For a surface, the
-length of the perimeter
-### Theme-defined keys
+### _length, _length:km
+
+
+
+The total length of a feature in meters (and in kilometers, rounded to one decimal for '_length:km'). For a surface, the length of the perimeter
+
+
+
+
+
+### Theme-defined keys
+
+
+
+If 'units' is defined in the layoutConfig, then this metatagger will rewrite the specified keys to have the canonical form (e.g. `1meter` will be rewritten to `1m`)
+
+
+
+
+
+### _country
-If 'units' is defined in the layoutConfig, then this metatagger will rewrite the specified keys to have the canonical
-form (e.g. `1meter` will be rewritten to `1m`)
-### _country
The country code of the property (with latlon2country)
-### _isOpen
+
+
+
+
+### _isOpen
+
+
If 'opening_hours' is present, it will add the current state of the feature (being 'yes' or 'no')
This is a lazy metatag and is only calculated when needed
-### _direction:numerical, _direction:leftright
-_direction:numerical is a normalized, numerical direction based on 'camera:direction' or on 'direction'; it is only
-present if a valid direction is found (e.g. 38.5 or NE). _direction:leftright is either 'left' or 'right', which is
-left-looking on the map or 'right-looking' on the map
-### _now:date, _now:datetime, _loaded:date, _loaded:_datetime
+### _direction:numerical, _direction:leftright
+
+
+
+_direction:numerical is a normalized, numerical direction based on 'camera:direction' or on 'direction'; it is only present if a valid direction is found (e.g. 38.5 or NE). _direction:leftright is either 'left' or 'right', which is left-looking on the map or 'right-looking' on the map
+
+
+
+
+
+### _now:date, _now:datetime, _loaded:date, _loaded:_datetime
+
+
+
+Adds the time that the data got loaded - pretty much the time of downloading from overpass. The format is YYYY-MM-DD hh:mm, aka 'sortable' aka ISO-8601-but-not-entirely
+
+
+
+
+
+### _last_edit:contributor, _last_edit:contributor:uid, _last_edit:changeset, _last_edit:timestamp, _version_number, _backend
-Adds the time that the data got loaded - pretty much the time of downloading from overpass. The format is YYYY-MM-DD hh:
-mm, aka 'sortable' aka ISO-8601-but-not-entirely
-### _last_edit:contributor, _last_edit:contributor:uid, _last_edit:changeset, _last_edit:timestamp, _version_number, _backend
Information about the last edit of this object.
-### sidewalk:left, sidewalk:right, generic_key:left:property, generic_key:right:property
-Rewrites tags from 'generic_key:both:property' as 'generic_key:left:property' and 'generic_key:right:property' (and
-similar for sidewalk tagging). Note that this rewritten tags _will be reuploaded on a change_. To prevent to much
-unrelated retagging, this is only enabled if the layer has at least some lineRenderings with offset defined
-### _geometry:type
-Adds the geometry type as property. This is identical to the GoeJson geometry type and is one of `Point`,`LineString`
-, `Polygon` and exceptionally `MultiPolygon` or `MultiLineString`
+
+### sidewalk:left, sidewalk:right, generic_key:left:property, generic_key:right:property
+
+
+
+Rewrites tags from 'generic_key:both:property' as 'generic_key:left:property' and 'generic_key:right:property' (and similar for sidewalk tagging). Note that this rewritten tags _will be reuploaded on a change_. To prevent to much unrelated retagging, this is only enabled if the layer has at least some lineRenderings with offset defined
-Calculating tags with Javascript
+### _geometry:type
+
+
+
+Adds the geometry type as property. This is identical to the GoeJson geometry type and is one of `Point`,`LineString`, `Polygon` and exceptionally `MultiPolygon` or `MultiLineString`
+
+
+
+
+
+ Calculating tags with Javascript
----------------------------------
-In some cases, it is useful to have some tags calculated based on other properties. Some useful tags are available by
-default (e.g. `lat`, `lon`, `_country`), as detailed above.
+In some cases, it is useful to have some tags calculated based on other properties. Some useful tags are available by default (e.g. `lat`, `lon`, `_country`), as detailed above.
It is also possible to calculate your own tags - but this requires some javascript knowledge.
+
+
Before proceeding, some warnings:
-- DO NOT DO THIS AS BEGINNER
-- **Only do this if all other techniques fail** This should _not_ be done to create a rendering effect, only to
- calculate a specific value
-- **THIS MIGHT BE DISABLED WITHOUT ANY NOTICE ON UNOFFICIAL THEMES** As unofficial themes might be loaded from the
- internet, this is the equivalent of injecting arbitrary code into the client. It'll be disabled if abuse occurs.
-To enable this feature, add a field `calculatedTags` in the layer object, e.g.:
+
+ - DO NOT DO THIS AS BEGINNER
+ - **Only do this if all other techniques fail** This should _not_ be done to create a rendering effect, only to calculate a specific value
+ - **THIS MIGHT BE DISABLED WITHOUT ANY NOTICE ON UNOFFICIAL THEMES** As unofficial themes might be loaded from the internet, this is the equivalent of injecting arbitrary code into the client. It'll be disabled if abuse occurs.
+
+
+To enable this feature, add a field `calculatedTags` in the layer object, e.g.:
````
@@ -143,90 +204,92 @@ To enable this feature, add a field `calculatedTags` in the layer object, e.g.:
````
-The above code will be executed for every feature in the layer. The feature is accessible as `feat` and is an amended
-geojson object:
-- `area` contains the surface area (in square meters) of the object
-- `lat` and `lon` contain the latitude and longitude
-Some advanced functions are available on **feat** as well:
+The above code will be executed for every feature in the layer. The feature is accessible as `feat` and is an amended geojson object:
-- [distanceTo](#distanceTo)
-- [overlapWith](#overlapWith)
-- [intersectionsWith](#intersectionsWith)
-- [closest](#closest)
-- [closestn](#closestn)
-- [memberships](#memberships)
-- [get](#get)
-### distanceTo
-Calculates the distance between the feature and a specified point in meter. The input should either be a pair of
-coordinates, a geojson feature or the ID of an object
+ - `area` contains the surface area (in square meters) of the object
+ - `lat` and `lon` contain the latitude and longitude
-0. feature OR featureID OR longitude
-1. undefined OR latitude
-### overlapWith
+Some advanced functions are available on **feat** as well:
-Gives a list of features from the specified layer which this feature (partly) overlaps with. A point which is embedded
-in the feature is detected as well.If the current feature is a point, all features that this point is embeded in are
-given.
+ - [distanceTo](#distanceTo)
+ - [overlapWith](#overlapWith)
+ - [intersectionsWith](#intersectionsWith)
+ - [closest](#closest)
+ - [closestn](#closestn)
+ - [memberships](#memberships)
+ - [get](#get)
+
-The returned value is `{ feat: GeoJSONFeature, overlap: number}[]` where `overlap` is the overlapping surface are (in
-m²) for areas, the overlapping length (in meter) if the current feature is a line or `undefined` if the current feature
-is a point. The resulting list is sorted in descending order by overlap. The feature with the most overlap will thus be
-the first in the list
+### distanceTo
-For example to get all objects which overlap or embed from a layer,
-use `_contained_climbing_routes_properties=feat.overlapWith('climbing_route')`
+ Calculates the distance between the feature and a specified point in meter. The input should either be a pair of coordinates, a geojson feature or the ID of an object
-0. ...layerIds - one or more layer ids of the layer from which every feature is checked for overlap)
+ 0. feature OR featureID OR longitude
+ 1. undefined OR latitude
+
-### intersectionsWith
+### overlapWith
-Gives the intersection points with selected features. Only works with (Multi)Polygons and LineStrings.
+ Gives a list of features from the specified layer which this feature (partly) overlaps with. A point which is embedded in the feature is detected as well.If the current feature is a point, all features that this point is embeded in are given.
-Returns a `{feat: GeoJson, intersections: [number,number][]}` where `feat` is the full, original feature. This list is
-in random order.
+The returned value is `{ feat: GeoJSONFeature, overlap: number}[]` where `overlap` is the overlapping surface are (in m²) for areas, the overlapping length (in meter) if the current feature is a line or `undefined` if the current feature is a point.
+The resulting list is sorted in descending order by overlap. The feature with the most overlap will thus be the first in the list
-If the current feature is a point, this function will return an empty list. Points from other layers are ignored - even
-if the points are parts of the current linestring.
+For example to get all objects which overlap or embed from a layer, use `_contained_climbing_routes_properties=feat.overlapWith('climbing_route')`
-0. ...layerIds - one or more layer ids of the layer from which every feature is checked for intersection)
+ 0. ...layerIds - one or more layer ids of the layer from which every feature is checked for overlap)
+
-### closest
+### intersectionsWith
-Given either a list of geojson features or a single layer name, gives the single object which is nearest to the feature.
-In the case of ways/polygons, only the centerpoint is considered. Returns a single geojson feature or undefined if
-nothing is found (or not yet laoded)
+ Gives the intersection points with selected features. Only works with (Multi)Polygons and LineStrings.
-0. list of features or a layer name or '*' to get all features
+Returns a `{feat: GeoJson, intersections: [number,number][]}` where `feat` is the full, original feature. This list is in random order.
-### closestn
+If the current feature is a point, this function will return an empty list.
+Points from other layers are ignored - even if the points are parts of the current linestring.
-Given either a list of geojson features or a single layer name, gives the n closest objects which are nearest to the
-feature (excluding the feature itself). In the case of ways/polygons, only the centerpoint is considered. Returns a list
-of `{feat: geojson, distance:number}` the empty list if nothing is found (or not yet loaded)
+ 0. ...layerIds - one or more layer ids of the layer from which every feature is checked for intersection)
+
-If a 'unique tag key' is given, the tag with this key will only appear once (e.g. if 'name' is given, all features will
-have a different name)
+### closest
-0. list of features or layer name or '*' to get all features
-1. amount of features
-2. unique tag key (optional)
-3. maxDistanceInMeters (optional)
+ Given either a list of geojson features or a single layer name, gives the single object which is nearest to the feature. In the case of ways/polygons, only the centerpoint is considered. Returns a single geojson feature or undefined if nothing is found (or not yet laoded)
-### memberships
+ 0. list of features or a layer name or '*' to get all features
+
-Gives a list of `{role: string, relation: Relation}`-objects, containing all the relations that this feature is part of.
+### closestn
-For example: `_part_of_walking_routes=feat.memberships().map(r => r.relation.tags.name).join(';')`
+ Given either a list of geojson features or a single layer name, gives the n closest objects which are nearest to the feature (excluding the feature itself). In the case of ways/polygons, only the centerpoint is considered. Returns a list of `{feat: geojson, distance:number}` the empty list if nothing is found (or not yet loaded)
-### get
+If a 'unique tag key' is given, the tag with this key will only appear once (e.g. if 'name' is given, all features will have a different name)
-Gets the property of the feature, parses it (as JSON) and returns it. Might return 'undefined' if not defined, null, ...
+ 0. list of features or layer name or '*' to get all features
+ 1. amount of features
+ 2. unique tag key (optional)
+ 3. maxDistanceInMeters (optional)
+
-0. key
+### memberships
+
+ Gives a list of `{role: string, relation: Relation}`-objects, containing all the relations that this feature is part of.
+
+For example: `_part_of_walking_routes=feat.memberships().map(r => r.relation.tags.name).join(';')`
+
+
+
+
+### get
+
+ Gets the property of the feature, parses it (as JSON) and returns it. Might return 'undefined' if not defined, null, ...
+
+ 0. key
+
This document is autogenerated from SimpleMetaTagger, ExtraFunction
\ No newline at end of file
diff --git a/Docs/Layers/ambulancestation.md b/Docs/Layers/ambulancestation.md
index 721a0f7b6..ed6503344 100644
--- a/Docs/Layers/ambulancestation.md
+++ b/Docs/Layers/ambulancestation.md
@@ -41,6 +41,7 @@ An ambulance station is an area for storage of ambulance vehicles, medical equip
- [hailhydrant](https://mapcomplete.osm.be/hailhydrant)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/ambulancestation/ambulancestation.json)
diff --git a/Docs/Layers/artwork.md b/Docs/Layers/artwork.md
index 5846931e8..f1a603cd7 100644
--- a/Docs/Layers/artwork.md
+++ b/Docs/Layers/artwork.md
@@ -40,6 +40,7 @@ Diverse pieces of artwork
- [artwork](https://mapcomplete.osm.be/artwork)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/artwork/artwork.json)
diff --git a/Docs/Layers/barrier.md b/Docs/Layers/barrier.md
index aff864247..78725cdfa 100644
--- a/Docs/Layers/barrier.md
+++ b/Docs/Layers/barrier.md
@@ -44,6 +44,7 @@ Obstacles while cycling, such as bollards and cycle barriers
- [cycle_infra](https://mapcomplete.osm.be/cycle_infra)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/barrier/barrier.json)
diff --git a/Docs/Layers/bench.md b/Docs/Layers/bench.md
index 553369ea3..df999331e 100644
--- a/Docs/Layers/bench.md
+++ b/Docs/Layers/bench.md
@@ -43,6 +43,7 @@ A bench is a wooden, metal, stone, ... surface where a human can sit. This layer
- [benches](https://mapcomplete.osm.be/benches)
- [nature](https://mapcomplete.osm.be/nature)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/bench/bench.json)
diff --git a/Docs/Layers/bench_at_pt.md b/Docs/Layers/bench_at_pt.md
index 4653d1311..992ff9d47 100644
--- a/Docs/Layers/bench_at_pt.md
+++ b/Docs/Layers/bench_at_pt.md
@@ -38,6 +38,7 @@ A layer showing all public-transport-stops which do have a bench
- [benches](https://mapcomplete.osm.be/benches)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/bench_at_pt/bench_at_pt.json)
diff --git a/Docs/Layers/bicycle_library.md b/Docs/Layers/bicycle_library.md
index e3017e3e1..88a7c3a3a 100644
--- a/Docs/Layers/bicycle_library.md
+++ b/Docs/Layers/bicycle_library.md
@@ -45,6 +45,7 @@ A facility where bicycles can be lent for longer period of times
- [bicyclelib](https://mapcomplete.osm.be/bicyclelib)
- [cyclofix](https://mapcomplete.osm.be/cyclofix)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/bicycle_library/bicycle_library.json)
diff --git a/Docs/Layers/bicycle_rental.md b/Docs/Layers/bicycle_rental.md
index e818dd0a5..35ae5c719 100644
--- a/Docs/Layers/bicycle_rental.md
+++ b/Docs/Layers/bicycle_rental.md
@@ -55,6 +55,7 @@ Bicycle rental stations
- [bicycle_rental](https://mapcomplete.osm.be/bicycle_rental)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/bicycle_rental/bicycle_rental.json)
diff --git a/Docs/Layers/bicycle_tube_vending_machine.md b/Docs/Layers/bicycle_tube_vending_machine.md
index 77a05e667..b83213c72 100644
--- a/Docs/Layers/bicycle_tube_vending_machine.md
+++ b/Docs/Layers/bicycle_tube_vending_machine.md
@@ -42,6 +42,7 @@ A layer showing vending machines for bicycle tubes (either purpose-built bicycle
- [cyclofix](https://mapcomplete.osm.be/cyclofix)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json)
diff --git a/Docs/Layers/bike_cafe.md b/Docs/Layers/bike_cafe.md
index 18e6d980e..aa99ac634 100644
--- a/Docs/Layers/bike_cafe.md
+++ b/Docs/Layers/bike_cafe.md
@@ -5,7 +5,7 @@
-
+
A bike café is a café geared towards cyclists, for example with services such as a pump, with lots of bicycle-related decoration, ...
@@ -44,6 +44,7 @@ A bike café is a café geared towards cyclists, for example with services such
- [cyclofix](https://mapcomplete.osm.be/cyclofix)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/bike_cafe/bike_cafe.json)
diff --git a/Docs/Layers/bike_cleaning.md b/Docs/Layers/bike_cleaning.md
index 67bee5864..9f539795f 100644
--- a/Docs/Layers/bike_cleaning.md
+++ b/Docs/Layers/bike_cleaning.md
@@ -38,6 +38,7 @@ A layer showing facilities where one can clean their bike
- [cyclofix](https://mapcomplete.osm.be/cyclofix)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/bike_cleaning/bike_cleaning.json)
diff --git a/Docs/Layers/bike_parking.md b/Docs/Layers/bike_parking.md
index 6a8629e79..8c61993f7 100644
--- a/Docs/Layers/bike_parking.md
+++ b/Docs/Layers/bike_parking.md
@@ -43,6 +43,7 @@ A layer showing where you can park your bike
- [cyclofix](https://mapcomplete.osm.be/cyclofix)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/bike_parking/bike_parking.json)
diff --git a/Docs/Layers/bike_repair_station.md b/Docs/Layers/bike_repair_station.md
index 8c7db97cc..3e136dc0f 100644
--- a/Docs/Layers/bike_repair_station.md
+++ b/Docs/Layers/bike_repair_station.md
@@ -22,6 +22,7 @@ A layer showing bicycle pumps and bicycle repair tool stands
+ [bike_repair_station-available-services](#bike_repair_station-available-services)
+ [Operational status](#operational-status)
+ [bike_repair_station-opening_hours](#bike_repair_station-opening_hours)
+ + [access](#access)
+ [bike_repair_station-operator](#bike_repair_station-operator)
+ [bike_repair_station-email](#bike_repair_station-email)
+ [bike_repair_station-phone](#bike_repair_station-phone)
@@ -49,6 +50,7 @@ A layer showing bicycle pumps and bicycle repair tool stands
- [cyclofix](https://mapcomplete.osm.be/cyclofix)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/bike_repair_station/bike_repair_station.json)
@@ -83,6 +85,7 @@ attribute | type | values which are supported by this layer
[](https://taginfo.openstreetmap.org/keys/service:bicycle:tools#values) [service:bicycle:tools](https://wiki.openstreetmap.org/wiki/Key:service:bicycle:tools) | Multiple choice | [no](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:tools%3Dno) [yes](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:tools%3Dyes) [yes](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:tools%3Dyes)
[](https://taginfo.openstreetmap.org/keys/service:bicycle:pump:operational_status#values) [service:bicycle:pump:operational_status](https://wiki.openstreetmap.org/wiki/Key:service:bicycle:pump:operational_status) | Multiple choice | [broken](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:pump:operational_status%3Dbroken) [operational](https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:pump:operational_status%3Doperational)
[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [24/7](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7)
+[](https://taginfo.openstreetmap.org/keys/access#values) [access](https://wiki.openstreetmap.org/wiki/Key:access) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:access%3Dyes) [customers](https://wiki.openstreetmap.org/wiki/Tag:access%3Dcustomers) [private](https://wiki.openstreetmap.org/wiki/Tag:access%3Dprivate)
[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) |
[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
@@ -155,6 +158,25 @@ This is rendered with `{opening_hours_table()}`
+### access
+
+
+
+The question is **Who is allowed to use this repair station?**
+
+
+
+
+
+ - **Publicly accessible** corresponds with access=yes
+ - **Publicly accessible** corresponds with access=public_This option cannot be chosen as answer_
+ - **Only for customers** corresponds with access=customers
+ - **Not accessible to the general public** corresponds with access=private
+ - **Not accessible to the general public** corresponds with access=no_This option cannot be chosen as answer_
+
+
+
+
### bike_repair_station-operator
diff --git a/Docs/Layers/bike_shop.md b/Docs/Layers/bike_shop.md
index b5cf88a19..64114c00b 100644
--- a/Docs/Layers/bike_shop.md
+++ b/Docs/Layers/bike_shop.md
@@ -5,7 +5,7 @@
-
+
A shop specifically selling bicycles or related items
@@ -52,6 +52,7 @@ A shop specifically selling bicycles or related items
- [cyclofix](https://mapcomplete.osm.be/cyclofix)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/bike_shop/bike_shop.json)
diff --git a/Docs/Layers/bike_themed_object.md b/Docs/Layers/bike_themed_object.md
index 150c95317..528194727 100644
--- a/Docs/Layers/bike_themed_object.md
+++ b/Docs/Layers/bike_themed_object.md
@@ -41,6 +41,7 @@ A layer with bike-themed objects but who don't match any other layer
- [cyclofix](https://mapcomplete.osm.be/cyclofix)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/bike_themed_object/bike_themed_object.json)
diff --git a/Docs/Layers/binocular.md b/Docs/Layers/binocular.md
index b10ce7f78..5d402799a 100644
--- a/Docs/Layers/binocular.md
+++ b/Docs/Layers/binocular.md
@@ -38,6 +38,7 @@ Binoculas
- [binoculars](https://mapcomplete.osm.be/binoculars)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/binocular/binocular.json)
diff --git a/Docs/Layers/birdhide.md b/Docs/Layers/birdhide.md
index bb001465c..4c5fd7d06 100644
--- a/Docs/Layers/birdhide.md
+++ b/Docs/Layers/birdhide.md
@@ -39,6 +39,7 @@ Een vogelkijkhut
- [nature](https://mapcomplete.osm.be/nature)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/birdhide/birdhide.json)
diff --git a/Docs/Layers/cafe_pub.md b/Docs/Layers/cafe_pub.md
index af04b6700..969650b10 100644
--- a/Docs/Layers/cafe_pub.md
+++ b/Docs/Layers/cafe_pub.md
@@ -46,6 +46,7 @@ A layer showing cafés and pubs where one can gather around a drink. The layer a
- [cafes_and_pubs](https://mapcomplete.osm.be/cafes_and_pubs)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/cafe_pub/cafe_pub.json)
diff --git a/Docs/Layers/charging_station.md b/Docs/Layers/charging_station.md
index 39add11cc..958773c7a 100644
--- a/Docs/Layers/charging_station.md
+++ b/Docs/Layers/charging_station.md
@@ -122,6 +122,7 @@ A charging station
- [charging_stations](https://mapcomplete.osm.be/charging_stations)
+ - [personal](https://mapcomplete.osm.be/personal)
[Go to the source code](../assets/layers/charging_station/charging_station.json)
diff --git a/Docs/Layers/cluster_style.md b/Docs/Layers/cluster_style.md
index 5ac3cd05d..17c201b1a 100644
--- a/Docs/Layers/cluster_style.md
+++ b/Docs/Layers/cluster_style.md
@@ -1,4 +1,6 @@
-cluster_style
+
+
+ cluster_style
===============
@@ -7,35 +9,54 @@ cluster_style
The style for the clustering in all themes. Enable `debug=true` to peak into clustered tiles
+
+
+
## Table of contents
1. [cluster_style](#cluster_style)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [all_tags](#all_tags)
-- Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
+
+
+
+ - Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
+
[Go to the source code](../assets/layers/cluster_style/cluster_style.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- tileId~^..*$
-Supported attributes
+
+ - tileId~^..*$
+
+
+
+
+ Supported attributes
----------------------
-### all_tags
+
+
+
+
+### all_tags
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/cluster_style/cluster_style.json
\ No newline at end of file
diff --git a/Docs/Layers/crab_address.md b/Docs/Layers/crab_address.md
index bcb0730a0..1d4939661 100644
--- a/Docs/Layers/crab_address.md
+++ b/Docs/Layers/crab_address.md
@@ -1,43 +1,62 @@
-crab_address
+
+
+ crab_address
==============
-Address data for Flanders by the governement, suited for import into OpenStreetMap. Datadump from 2021-10-26. This layer
-contains only visualisation logic. Import buttons should be added via an override. Note that HNRLABEL contains the
-original value, whereas _HNRLABEL contains a slightly cleaned version
+Address data for Flanders by the governement, suited for import into OpenStreetMap. Datadump from 2021-10-26. This layer contains only visualisation logic. Import buttons should be added via an override. Note that HNRLABEL contains the original value, whereas _HNRLABEL contains a slightly cleaned version
+
+
+
## Table of contents
1. [crab_address](#crab_address)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [render_crab](#render_crab)
-- This layer is loaded from an external source, namely `https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/CRAB_2021_10_26/tile_{z}_{x}_{y}.geojson`
+
+
+
+ - This layer is loaded from an external source, namely `https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/CRAB_2021_10_26/tile_{z}_{x}_{y}.geojson`
+
[Go to the source code](../assets/layers/crab_address/crab_address.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- HUISNR~^..*$
-Supported attributes
+
+ - HUISNR~^..*$
+
+
+
+
+ Supported attributes
----------------------
-### render_crab
+
+
+
+
+### render_crab
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/crab_address/crab_address.json
\ No newline at end of file
diff --git a/Docs/Layers/crossings.md b/Docs/Layers/crossings.md
index ebaa3bebb..63e3092ae 100644
--- a/Docs/Layers/crossings.md
+++ b/Docs/Layers/crossings.md
@@ -1,4 +1,6 @@
-crossings
+
+
+ crossings
===========
@@ -7,13 +9,15 @@ crossings
Crossings for pedestrians and cyclists
+
+
+
## Table of contents
1. [crossings](#crossings)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [crossing-type](#crossing-type)
+ [crossing-is-zebra](#crossing-is-zebra)
+ [crossing-bicycle-allowed](#crossing-bicycle-allowed)
@@ -24,39 +28,52 @@ Crossings for pedestrians and cyclists
+ [crossing-continue-through-red](#crossing-continue-through-red)
-- 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 [cycleways_and_roads](./cycleways_and_roads.md) into the layout as it depends on
- it: a preset snaps to this layer (presets[1])
-#### Themes using this layer
-- [cycle_infra](https://mapcomplete.osm.be/cycle_infra)
-- [personal](https://mapcomplete.osm.be/personal)
+
+ - 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 [cycleways_and_roads](./cycleways_and_roads.md) into the layout as it depends on it: a preset snaps to this layer (presets[1])
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [cycle_infra](https://mapcomplete.osm.be/cycle_infra)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/crossings/crossings.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- highway
- =traffic_signals
- |highway
- =crossing
-Supported attributes
+
+ - highway=traffic_signals|highway=crossing
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/crossing#values) [crossing](https://wiki.openstreetmap.org/wiki/Key:crossing) | Multiple choice | [uncontrolled](https://wiki.openstreetmap.org/wiki/Tag:crossing%3Duncontrolled) [traffic_signals](https://wiki.openstreetmap.org/wiki/Tag:crossing%3Dtraffic_signals) [unmarked](https://wiki.openstreetmap.org/wiki/Tag:crossing%3Dunmarked)
@@ -68,108 +85,138 @@ attribute | type | values which are supported by this layer
[](https://taginfo.openstreetmap.org/keys/red_turn:right:bicycle#values) [red_turn:right:bicycle](https://wiki.openstreetmap.org/wiki/Key:red_turn:right:bicycle) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:red_turn:right:bicycle%3Dyes) [yes](https://wiki.openstreetmap.org/wiki/Tag:red_turn:right:bicycle%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:red_turn:right:bicycle%3Dno)
[](https://taginfo.openstreetmap.org/keys/red_turn:straight:bicycle#values) [red_turn:straight:bicycle](https://wiki.openstreetmap.org/wiki/Key:red_turn:straight:bicycle) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:red_turn:straight:bicycle%3Dyes) [yes](https://wiki.openstreetmap.org/wiki/Tag:red_turn:straight:bicycle%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:red_turn:straight:bicycle%3Dno)
-### crossing-type
+
+
+
+### crossing-type
+
+
The question is **What kind of crossing is this?**
-- **Crossing, without traffic lights** corresponds
- with crossing
- =uncontrolled
-- **Crossing with traffic signals** corresponds
- with crossing
- =traffic_signals
-- **Zebra crossing** corresponds with
- crossing=zebra_This option
- cannot be chosen as answer_
-- **Crossing without crossing markings** corresponds
- with crossing
- =unmarked
-### crossing-is-zebra
+
+
+
+ - **Crossing, without traffic lights** corresponds with crossing=uncontrolled
+ - **Crossing with traffic signals** corresponds with crossing=traffic_signals
+ - **Zebra crossing** corresponds with crossing=zebra_This option cannot be chosen as answer_
+ - **Crossing without crossing markings** corresponds with crossing=unmarked
+
+
+
+
+### crossing-is-zebra
+
+
The question is **Is this is a zebra crossing?**
-- **This is a zebra crossing** corresponds
- with crossing_ref
- =zebra
-- **This is not a zebra crossing** corresponds with
-### crossing-bicycle-allowed
+
+
+
+ - **This is a zebra crossing** corresponds with crossing_ref=zebra
+ - **This is not a zebra crossing** corresponds with
+
+
+
+
+### crossing-bicycle-allowed
+
+
The question is **Is this crossing also for bicycles?**
-- **A cyclist can use this crossing** corresponds
- with bicycle
- =yes
-- **A cyclist can not use this crossing** corresponds
- with bicycle
- =no
-### crossing-has-island
+
+
+
+ - **A cyclist can use this crossing** corresponds with bicycle=yes
+ - **A cyclist can not use this crossing** corresponds with bicycle=no
+
+
+
+
+### crossing-has-island
+
+
The question is **Does this crossing have an island in the middle?**
-- **This crossing has an island in the middle** corresponds
- with crossing:island
- =yes
-- **This crossing does not have an island in the middle** corresponds
- with crossing:island
- =no
-### crossing-tactile
+
+
+
+ - **This crossing has an island in the middle** corresponds with crossing:island=yes
+ - **This crossing does not have an island in the middle** corresponds with crossing:island=no
+
+
+
+
+### crossing-tactile
+
+
The question is **Does this crossing have tactile paving?**
-- **This crossing has tactile paving** corresponds
- with tactile_paving
- =yes
-- **This crossing does not have tactile paving** corresponds
- with tactile_paving
- =no
-- **This crossing has tactile paving, but is not correct** corresponds
- with tactile_paving
- =incorrect_This
- option cannot be chosen as answer_
-### crossing-button
+
+
+
+ - **This crossing has tactile paving** corresponds with tactile_paving=yes
+ - **This crossing does not have tactile paving** corresponds with tactile_paving=no
+ - **This crossing has tactile paving, but is not correct** corresponds with tactile_paving=incorrect_This option cannot be chosen as answer_
+
+
+
+
+### crossing-button
+
+
The question is **Does this traffic light have a button to request green light?**
-- **This traffic light has a button to request green light** corresponds
- with button_operated
- =yes
-- **This traffic light does not have a button to request green light** corresponds
- with button_operated
- =no
-### crossing-right-turn-through-red
+
+
+
+ - **This traffic light has a button to request green light** corresponds with button_operated=yes
+ - **This traffic light does not have a button to request green light** corresponds with button_operated=no
+
+
+
+
+### crossing-right-turn-through-red
+
+
The question is **Can a cyclist turn right when the light is red?**
-- **A cyclist can turn right if the light is
- red ** corresponds
- with red_turn:right:
- bicycle=yes
-- **A cyclist can turn right if the light is red** corresponds
- with red_turn:right:
- bicycle=yes
-- **A cyclist can not turn right if the light is red** corresponds
- with red_turn:right:
- bicycle=no
-### crossing-continue-through-red
+
+
+
+ - **A cyclist can turn right if the light is red ** corresponds with red_turn:right:bicycle=yes
+ - **A cyclist can turn right if the light is red** corresponds with red_turn:right:bicycle=yes
+ - **A cyclist can not turn right if the light is red** corresponds with red_turn:right:bicycle=no
+
+
+
+
+### crossing-continue-through-red
+
+
The question is **Can a cyclist go straight on when the light is red?**
-- **A cyclist can go straight on if the light is
- red ** corresponds
- with red_turn:straight:
- bicycle=yes
-- **A cyclist can go straight on if the light is red** corresponds
- with red_turn:straight:
- bicycle=yes
-- **A cyclist can not go straight on if the light is red** corresponds
- with red_turn:straight:
- bicycle=no
+
+
+
+
+ - **A cyclist can go straight on if the light is red ** corresponds with red_turn:straight:bicycle=yes
+ - **A cyclist can go straight on if the light is red** corresponds with red_turn:straight:bicycle=yes
+ - **A cyclist can not go straight on if the light is red** corresponds with red_turn:straight:bicycle=no
+
This document is autogenerated from assets/layers/crossings/crossings.json
\ No newline at end of file
diff --git a/Docs/Layers/cycleways_and_roads.md b/Docs/Layers/cycleways_and_roads.md
index 844da2dcb..f754ddff4 100644
--- a/Docs/Layers/cycleways_and_roads.md
+++ b/Docs/Layers/cycleways_and_roads.md
@@ -1,4 +1,6 @@
-cycleways_and_roads
+
+
+ cycleways_and_roads
=====================
@@ -7,13 +9,15 @@ cycleways_and_roads
All infrastructure that someone can cycle over, accompanied with questions about this infrastructure"
+
+
+
## Table of contents
1. [cycleways_and_roads](#cycleways_and_roads)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [Cycleway type for a road](#cycleway-type-for-a-road)
+ [is lit?](#is-lit)
+ [Is this a cyclestreet? (For a road)](#is-this-a-cyclestreet-(for-a-road))
@@ -32,59 +36,54 @@ All infrastructure that someone can cycle over, accompanied with questions about
+ [cycleway-segregation](#cycleway-segregation)
-- This layer is needed as dependency for layer [barrier](#barrier)
-- 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 [crossings](#crossings)
-#### Themes using this layer
-- [cycle_infra](https://mapcomplete.osm.be/cycle_infra)
-- [personal](https://mapcomplete.osm.be/personal)
+
+ - This layer is needed as dependency for layer [barrier](#barrier)
+ - 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 [crossings](#crossings)
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [cycle_infra](https://mapcomplete.osm.be/cycle_infra)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/cycleways_and_roads/cycleways_and_roads.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- highway
- =cycleway
- |cycleway
- =lane
- |cycleway
- =shared_lane
- |cycleway
- =track
- |cyclestreet
- =yes
- |highway
- =residential
- |highway
- =tertiary
- |highway
- =unclassified
- |highway
- =primary
- |highway
- =secondary
- |highway
- =path
- &bicycle
- =designated
-Supported attributes
+
+ - highway=cycleway|cycleway=lane|cycleway=shared_lane|cycleway=track|cyclestreet=yes|highway=residential|highway=tertiary|highway=unclassified|highway=primary|highway=secondary|highway=path&bicycle=designated
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/cycleway#values) [cycleway](https://wiki.openstreetmap.org/wiki/Key:cycleway) | Multiple choice | [shared_lane](https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dshared_lane) [lane](https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dlane) [track](https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dtrack) [separate](https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dseparate) [no](https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dno) [no](https://wiki.openstreetmap.org/wiki/Tag:cycleway%3Dno)
@@ -95,395 +94,325 @@ attribute | type | values which are supported by this layer
[](https://taginfo.openstreetmap.org/keys/cycleway:smoothness#values) [cycleway:smoothness](https://wiki.openstreetmap.org/wiki/Key:cycleway:smoothness) | Multiple choice | [excellent](https://wiki.openstreetmap.org/wiki/Tag:cycleway:smoothness%3Dexcellent) [good](https://wiki.openstreetmap.org/wiki/Tag:cycleway:smoothness%3Dgood) [intermediate](https://wiki.openstreetmap.org/wiki/Tag:cycleway:smoothness%3Dintermediate) [bad](https://wiki.openstreetmap.org/wiki/Tag:cycleway:smoothness%3Dbad) [very_bad](https://wiki.openstreetmap.org/wiki/Tag:cycleway:smoothness%3Dvery_bad) [horrible](https://wiki.openstreetmap.org/wiki/Tag:cycleway:smoothness%3Dhorrible) [very_horrible](https://wiki.openstreetmap.org/wiki/Tag:cycleway:smoothness%3Dvery_horrible) [impassable](https://wiki.openstreetmap.org/wiki/Tag:cycleway:smoothness%3Dimpassable)
[](https://taginfo.openstreetmap.org/keys/surface#values) [surface](https://wiki.openstreetmap.org/wiki/Key:surface) | [string](../SpecialInputElements.md#string) | [asphalt](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dasphalt) [paving_stones](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dpaving_stones) [concrete](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dconcrete) [unhewn_cobblestone](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dunhewn_cobblestone) [sett](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dsett) [wood](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dwood) [gravel](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dgravel) [fine_gravel](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dfine_gravel) [pebblestone](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dpebblestone) [ground](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dground)
[](https://taginfo.openstreetmap.org/keys/smoothness#values) [smoothness](https://wiki.openstreetmap.org/wiki/Key:smoothness) | Multiple choice | [excellent](https://wiki.openstreetmap.org/wiki/Tag:smoothness%3Dexcellent) [good](https://wiki.openstreetmap.org/wiki/Tag:smoothness%3Dgood) [intermediate](https://wiki.openstreetmap.org/wiki/Tag:smoothness%3Dintermediate) [bad](https://wiki.openstreetmap.org/wiki/Tag:smoothness%3Dbad) [very_bad](https://wiki.openstreetmap.org/wiki/Tag:smoothness%3Dvery_bad) [horrible](https://wiki.openstreetmap.org/wiki/Tag:smoothness%3Dhorrible) [very_horrible](https://wiki.openstreetmap.org/wiki/Tag:smoothness%3Dvery_horrible) [impassable](https://wiki.openstreetmap.org/wiki/Tag:smoothness%3Dimpassable)
-[](https://taginfo.openstreetmap.org/keys/width:carriageway#values) [width:carriageway](https://wiki.openstreetmap.org/wiki/Key:width:carriageway) | [length](../SpecialInputElements.md#length) |
+[](https://taginfo.openstreetmap.org/keys/width:carriageway#values) [width:carriageway](https://wiki.openstreetmap.org/wiki/Key:width:carriageway) | [length](../SpecialInputElements.md#length) |
[](https://taginfo.openstreetmap.org/keys/cycleway:traffic_sign#values) [cycleway:traffic_sign](https://wiki.openstreetmap.org/wiki/Key:cycleway:traffic_sign) | Multiple choice | [BE:D7](https://wiki.openstreetmap.org/wiki/Tag:cycleway:traffic_sign%3DBE:D7) [BE:D9](https://wiki.openstreetmap.org/wiki/Tag:cycleway:traffic_sign%3DBE:D9) [BE:D10](https://wiki.openstreetmap.org/wiki/Tag:cycleway:traffic_sign%3DBE:D10) [none](https://wiki.openstreetmap.org/wiki/Tag:cycleway:traffic_sign%3Dnone)
[](https://taginfo.openstreetmap.org/keys/traffic_sign#values) [traffic_sign](https://wiki.openstreetmap.org/wiki/Key:traffic_sign) | Multiple choice | [BE:D7](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DBE:D7) [BE:D9](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DBE:D9) [BE:D10](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3DBE:D10) [none](https://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3Dnone)
-[](https://taginfo.openstreetmap.org/keys/cycleway:buffer#values) [cycleway:buffer](https://wiki.openstreetmap.org/wiki/Key:cycleway:buffer) | [length](../SpecialInputElements.md#length) |
+[](https://taginfo.openstreetmap.org/keys/cycleway:buffer#values) [cycleway:buffer](https://wiki.openstreetmap.org/wiki/Key:cycleway:buffer) | [length](../SpecialInputElements.md#length) |
[](https://taginfo.openstreetmap.org/keys/cycleway:separation#values) [cycleway:separation](https://wiki.openstreetmap.org/wiki/Key:cycleway:separation) | Multiple choice | [dashed_line](https://wiki.openstreetmap.org/wiki/Tag:cycleway:separation%3Ddashed_line) [solid_line](https://wiki.openstreetmap.org/wiki/Tag:cycleway:separation%3Dsolid_line) [parking_lane](https://wiki.openstreetmap.org/wiki/Tag:cycleway:separation%3Dparking_lane) [kerb](https://wiki.openstreetmap.org/wiki/Tag:cycleway:separation%3Dkerb)
[](https://taginfo.openstreetmap.org/keys/separation#values) [separation](https://wiki.openstreetmap.org/wiki/Key:separation) | Multiple choice | [dashed_line](https://wiki.openstreetmap.org/wiki/Tag:separation%3Ddashed_line) [solid_line](https://wiki.openstreetmap.org/wiki/Tag:separation%3Dsolid_line) [parking_lane](https://wiki.openstreetmap.org/wiki/Tag:separation%3Dparking_lane) [kerb](https://wiki.openstreetmap.org/wiki/Tag:separation%3Dkerb)
-### Cycleway type for a road
+
+
+
+### Cycleway type for a road
+
+
The question is **What kind of cycleway is here?**
-- **There is a shared lane** corresponds
- with cycleway
- =shared_lane
-- **There is a lane next to the road (separated with paint)** corresponds
- with cycleway
- =lane
-- **There is a track, but no cycleway drawn separately from this road on the map.** corresponds
- with cycleway
- =track
-- **There is a separately drawn cycleway** corresponds
- with cycleway
- =separate
-- **There is no cycleway** corresponds with
- cycleway=no
-- **There is no cycleway** corresponds with
- cycleway=no
-### is lit?
+
+
+
+ - **There is a shared lane** corresponds with cycleway=shared_lane
+ - **There is a lane next to the road (separated with paint)** corresponds with cycleway=lane
+ - **There is a track, but no cycleway drawn separately from this road on the map.** corresponds with cycleway=track
+ - **There is a separately drawn cycleway** corresponds with cycleway=separate
+ - **There is no cycleway** corresponds with cycleway=no
+ - **There is no cycleway** corresponds with cycleway=no
+
+
+
+
+### is lit?
+
+
The question is **Is this street lit?**
-- **This street is lit** corresponds with lit
- =yes
-- **This road is not lit** corresponds with
- lit=no
-- **This road is lit at night** corresponds with
- lit=sunset-sunrise_This
- option cannot be chosen as answer_
-- **This road is lit 24/7** corresponds with
- lit=24/7
-### Is this a cyclestreet? (For a road)
+
+
+
+ - **This street is lit** corresponds with lit=yes
+ - **This road is not lit** corresponds with lit=no
+ - **This road is lit at night** corresponds with lit=sunset-sunrise_This option cannot be chosen as answer_
+ - **This road is lit 24/7** corresponds with lit=24/7
+
+
+
+
+### Is this a cyclestreet? (For a road)
+
+
The question is **Is this a cyclestreet?**
-- **This is a cyclestreet, and a 30km/h zone.** corresponds
- with cyclestreet
- =yes
-- **This is a cyclestreet** corresponds
- with cyclestreet
- =yes
-- **This is not a cyclestreet.** corresponds with
-### Maxspeed (for road)
+
+
+
+ - **This is a cyclestreet, and a 30km/h zone.** corresponds with cyclestreet=yes
+ - **This is a cyclestreet** corresponds with cyclestreet=yes
+ - **This is not a cyclestreet.** corresponds with
+
+
+
+
+### Maxspeed (for road)
+
+
The question is **What is the maximum speed in this street?**
-This rendering asks information about the property [maxspeed](https://wiki.openstreetmap.org/wiki/Key:maxspeed)
+This rendering asks information about the property [maxspeed](https://wiki.openstreetmap.org/wiki/Key:maxspeed)
This is rendered with `The maximum speed on this road is {maxspeed} km/h`
-- **The maximum speed is 20 km/h** corresponds
- with maxspeed
- =20
-- **The maximum speed is 30 km/h** corresponds
- with maxspeed
- =30
-- **The maximum speed is 50 km/h** corresponds
- with maxspeed
- =50
-- **The maximum speed is 70 km/h** corresponds
- with maxspeed
- =70
-- **The maximum speed is 90 km/h** corresponds
- with maxspeed
- =90
-### Cycleway:surface
+
+ - **The maximum speed is 20 km/h** corresponds with maxspeed=20
+ - **The maximum speed is 30 km/h** corresponds with maxspeed=30
+ - **The maximum speed is 50 km/h** corresponds with maxspeed=50
+ - **The maximum speed is 70 km/h** corresponds with maxspeed=70
+ - **The maximum speed is 90 km/h** corresponds with maxspeed=90
+
+
+
+
+### Cycleway:surface
+
+
The question is **What is the surface of the cycleway made from?**
-This rendering asks information about the
-property [cycleway:surface](https://wiki.openstreetmap.org/wiki/Key:cycleway:surface)
+This rendering asks information about the property [cycleway:surface](https://wiki.openstreetmap.org/wiki/Key:cycleway:surface)
This is rendered with `This cyleway is made of {cycleway:surface}`
-- **This cycleway is unpaved** corresponds
- with cycleway:surface
- =unpaved_This option
- cannot be chosen as answer_
-- **This cycleway is paved** corresponds
- with cycleway:surface
- =paved_This option
- cannot be chosen as answer_
-- **This cycleway is made of asphalt** corresponds
- with cycleway:surface
- =asphalt
-- **This cycleway is made of smooth paving stones** corresponds
- with cycleway:surface
- =paving_stones
-- **This cycleway is made of concrete** corresponds
- with cycleway:surface
- =concrete
-- **This cycleway is made of cobblestone (unhewn or sett)** corresponds
- with cycleway:surface
- =cobblestone_This
- option cannot be chosen as answer_
-- **This cycleway is made of raw, natural cobblestone** corresponds
- with cycleway:surface
- =
- unhewn_cobblestone
-- **This cycleway is made of flat, square cobblestone** corresponds
- with cycleway:surface
- =sett
-- **This cycleway is made of wood** corresponds
- with cycleway:surface
- =wood
-- **This cycleway is made of gravel** corresponds
- with cycleway:surface
- =gravel
-- **This cycleway is made of fine gravel** corresponds
- with cycleway:surface
- =fine_gravel
-- **This cycleway is made of pebblestone** corresponds
- with cycleway:surface
- =pebblestone
-- **This cycleway is made from raw ground** corresponds
- with cycleway:surface
- =ground
-### Cycleway:smoothness
+
+ - **This cycleway is unpaved** corresponds with cycleway:surface=unpaved_This option cannot be chosen as answer_
+ - **This cycleway is paved** corresponds with cycleway:surface=paved_This option cannot be chosen as answer_
+ - **This cycleway is made of asphalt** corresponds with cycleway:surface=asphalt
+ - **This cycleway is made of smooth paving stones** corresponds with cycleway:surface=paving_stones
+ - **This cycleway is made of concrete** corresponds with cycleway:surface=concrete
+ - **This cycleway is made of cobblestone (unhewn or sett)** corresponds with cycleway:surface=cobblestone_This option cannot be chosen as answer_
+ - **This cycleway is made of raw, natural cobblestone** corresponds with cycleway:surface=unhewn_cobblestone
+ - **This cycleway is made of flat, square cobblestone** corresponds with cycleway:surface=sett
+ - **This cycleway is made of wood** corresponds with cycleway:surface=wood
+ - **This cycleway is made of gravel** corresponds with cycleway:surface=gravel
+ - **This cycleway is made of fine gravel** corresponds with cycleway:surface=fine_gravel
+ - **This cycleway is made of pebblestone** corresponds with cycleway:surface=pebblestone
+ - **This cycleway is made from raw ground** corresponds with cycleway:surface=ground
+
+
+
+
+### Cycleway:smoothness
+
+
The question is **What is the smoothness of this cycleway?**
-- **Usable for thin rollers: rollerblade, skateboard** corresponds
- with cycleway:smoothness
- =excellent
-- **Usable for thin wheels: racing bike** corresponds
- with cycleway:smoothness
- =good
-- **Usable for normal wheels: city bike, wheelchair, scooter** corresponds
- with cycleway:smoothness
- =intermediate
-- **Usable for robust wheels: trekking bike, car, rickshaw** corresponds
- with cycleway:smoothness
- =bad
-- **Usable for vehicles with high clearance: light duty off-road vehicle** corresponds
- with cycleway:smoothness
- =very_bad
-- **Usable for off-road vehicles: heavy duty off-road vehicle** corresponds
- with cycleway:smoothness
- =horrible
-- **Usable for specialized off-road vehicles: tractor, ATV** corresponds
- with cycleway:smoothness
- =
- very_horrible
-- **Impassable / No wheeled vehicle** corresponds
- with cycleway:smoothness
- =impassable
-### Surface of the road
+
+
+
+ - **Usable for thin rollers: rollerblade, skateboard** corresponds with cycleway:smoothness=excellent
+ - **Usable for thin wheels: racing bike** corresponds with cycleway:smoothness=good
+ - **Usable for normal wheels: city bike, wheelchair, scooter** corresponds with cycleway:smoothness=intermediate
+ - **Usable for robust wheels: trekking bike, car, rickshaw** corresponds with cycleway:smoothness=bad
+ - **Usable for vehicles with high clearance: light duty off-road vehicle** corresponds with cycleway:smoothness=very_bad
+ - **Usable for off-road vehicles: heavy duty off-road vehicle** corresponds with cycleway:smoothness=horrible
+ - **Usable for specialized off-road vehicles: tractor, ATV** corresponds with cycleway:smoothness=very_horrible
+ - **Impassable / No wheeled vehicle** corresponds with cycleway:smoothness=impassable
+
+
+
+
+### Surface of the road
+
+
The question is **What is the surface of the street made from?**
-This rendering asks information about the property [surface](https://wiki.openstreetmap.org/wiki/Key:surface)
+This rendering asks information about the property [surface](https://wiki.openstreetmap.org/wiki/Key:surface)
This is rendered with `This road is made of {surface}`
-- **This cycleway is unhardened** corresponds
- with surface
- =unpaved_This option cannot be
- chosen as answer_
-- **This cycleway is paved** corresponds with
- surface=paved_This option
- cannot be chosen as answer_
-- **This cycleway is made of asphalt** corresponds
- with surface
- =asphalt
-- **This cycleway is made of smooth paving stones** corresponds
- with surface
- =paving_stones
-- **This cycleway is made of concrete** corresponds
- with surface
- =concrete
-- **This cycleway is made of cobblestone (unhewn or sett)** corresponds
- with surface
- =cobblestone_This option
- cannot be chosen as answer_
-- **This cycleway is made of raw, natural cobblestone** corresponds
- with surface
- =unhewn_cobblestone
-- **This cycleway is made of flat, square cobblestone** corresponds
- with surface
- =sett
-- **This cycleway is made of wood** corresponds
- with surface
- =wood
-- **This cycleway is made of gravel** corresponds
- with surface
- =gravel
-- **This cycleway is made of fine gravel** corresponds
- with surface
- =fine_gravel
-- **This cycleway is made of pebblestone** corresponds
- with surface
- =pebblestone
-- **This cycleway is made from raw ground** corresponds
- with surface
- =ground
-### Surface of the street
+
+ - **This cycleway is unhardened** corresponds with surface=unpaved_This option cannot be chosen as answer_
+ - **This cycleway is paved** corresponds with surface=paved_This option cannot be chosen as answer_
+ - **This cycleway is made of asphalt** corresponds with surface=asphalt
+ - **This cycleway is made of smooth paving stones** corresponds with surface=paving_stones
+ - **This cycleway is made of concrete** corresponds with surface=concrete
+ - **This cycleway is made of cobblestone (unhewn or sett)** corresponds with surface=cobblestone_This option cannot be chosen as answer_
+ - **This cycleway is made of raw, natural cobblestone** corresponds with surface=unhewn_cobblestone
+ - **This cycleway is made of flat, square cobblestone** corresponds with surface=sett
+ - **This cycleway is made of wood** corresponds with surface=wood
+ - **This cycleway is made of gravel** corresponds with surface=gravel
+ - **This cycleway is made of fine gravel** corresponds with surface=fine_gravel
+ - **This cycleway is made of pebblestone** corresponds with surface=pebblestone
+ - **This cycleway is made from raw ground** corresponds with surface=ground
+
+
+
+
+### Surface of the street
+
+
The question is **What is the smoothness of this street?**
-- **Usable for thin rollers: rollerblade, skateboard** corresponds
- with smoothness
- =excellent
-- **Usable for thin wheels: racing bike** corresponds
- with smoothness
- =good
-- **Usable for normal wheels: city bike, wheelchair, scooter** corresponds
- with smoothness
- =intermediate
-- **Usable for robust wheels: trekking bike, car, rickshaw** corresponds
- with smoothness
- =bad
-- **Usable for vehicles with high clearance: light duty off-road vehicle** corresponds
- with smoothness
- =very_bad
-- **Usable for off-road vehicles: heavy duty off-road vehicle** corresponds
- with smoothness
- =horrible
-- **Usable for specialized off-road vehicles: tractor, ATV** corresponds
- with smoothness
- =very_horrible
-- **Impassable / No wheeled vehicle** corresponds
- with smoothness
- =impassable
-### width:carriageway
-The question is **What is the carriage width of this road (in meters)? This is measured curb to
-curb and thus includes the width of parallell parking lanes**
-This rendering asks information about the
-property [width:carriageway](https://wiki.openstreetmap.org/wiki/Key:width:carriageway)
+
+ - **Usable for thin rollers: rollerblade, skateboard** corresponds with smoothness=excellent
+ - **Usable for thin wheels: racing bike** corresponds with smoothness=good
+ - **Usable for normal wheels: city bike, wheelchair, scooter** corresponds with smoothness=intermediate
+ - **Usable for robust wheels: trekking bike, car, rickshaw** corresponds with smoothness=bad
+ - **Usable for vehicles with high clearance: light duty off-road vehicle** corresponds with smoothness=very_bad
+ - **Usable for off-road vehicles: heavy duty off-road vehicle** corresponds with smoothness=horrible
+ - **Usable for specialized off-road vehicles: tractor, ATV** corresponds with smoothness=very_horrible
+ - **Impassable / No wheeled vehicle** corresponds with smoothness=impassable
+
+
+
+
+### width:carriageway
+
+
+
+The question is **What is the carriage width of this road (in meters)? This is measured curb to curb and thus includes the width of parallell parking lanes**
+
+This rendering asks information about the property [width:carriageway](https://wiki.openstreetmap.org/wiki/Key:width:carriageway)
This is rendered with `The carriage width of this road is {width:carriageway}m`
-### cycleway-lane-track-traffic-signs
+
+
+### cycleway-lane-track-traffic-signs
+
+
The question is **What traffic sign does this cycleway have?**
-- **Compulsory cycleway **
- corresponds with cycleway:
- traffic_sign=BE:
- D7
-- **Compulsory cycleway (with supplementary
- sign) ** corresponds with
- cycleway:traffic_sign~^BE:D7;.*$_This option cannot be chosen as answer_
-- **Segregated foot/cycleway **
- corresponds with cycleway:
- traffic_sign=BE:
- D9
-- **Unsegregated foot/cycleway **
- corresponds with cycleway:
- traffic_sign=BE:
- D10
-- **No traffic sign present** corresponds
- with cycleway:traffic_sign
- =none
-### cycleway-traffic-signs
+
+
+
+ - **Compulsory cycleway ** corresponds with cycleway:traffic_sign=BE:D7
+ - **Compulsory cycleway (with supplementary sign) ** corresponds with cycleway:traffic_sign~^BE:D7;.*$_This option cannot be chosen as answer_
+ - **Segregated foot/cycleway ** corresponds with cycleway:traffic_sign=BE:D9
+ - **Unsegregated foot/cycleway ** corresponds with cycleway:traffic_sign=BE:D10
+ - **No traffic sign present** corresponds with cycleway:traffic_sign=none
+
+
+
+
+### cycleway-traffic-signs
+
+
The question is **What traffic sign does this cycleway have?**
-- **Compulsory cycleway **
- corresponds with traffic_sign
- =BE:D7
-- **Compulsory cycleway (with supplementary
- sign) ** corresponds with
- traffic_sign~^BE:D7;.*$_This option cannot be chosen as answer_
-- **Segregated foot/cycleway **
- corresponds with traffic_sign
- =BE:D9
-- **Unsegregated foot/cycleway **
- corresponds with traffic_sign
- =BE:D10
-- **No traffic sign present** corresponds
- with traffic_sign
- =none
-### cycleway-traffic-signs-supplementary
-The question is **Does the traffic sign
-D7 () have a supplementary sign?**
-- **** corresponds
- with cycleway:traffic_sign
- =BE:D7;BE:M6
-- **** corresponds
- with cycleway:traffic_sign
- =BE:D7;BE:
- M13
-- **** corresponds
- with cycleway:traffic_sign
- =BE:D7;BE:
- M14
-- **** corresponds
- with cycleway:traffic_sign
- =BE:D7;BE:M7
-- **** corresponds
- with cycleway:traffic_sign
- =BE:D7;BE:
- M15
-- **** corresponds
- with cycleway:traffic_sign
- =BE:D7;BE:
- M16
-- **No supplementary traffic sign present** corresponds
- with cycleway:
- traffic_sign:supplementary
- =none
-### cycleway-traffic-signs-D7-supplementary
+ - **Compulsory cycleway ** corresponds with traffic_sign=BE:D7
+ - **Compulsory cycleway (with supplementary sign) ** corresponds with traffic_sign~^BE:D7;.*$_This option cannot be chosen as answer_
+ - **Segregated foot/cycleway ** corresponds with traffic_sign=BE:D9
+ - **Unsegregated foot/cycleway ** corresponds with traffic_sign=BE:D10
+ - **No traffic sign present** corresponds with traffic_sign=none
-The question is **Does the traffic sign
-D7 () have a supplementary sign?**
-- **** corresponds
- with traffic_sign
- =BE:D7;BE:M6
-- **** corresponds
- with traffic_sign
- =BE:D7;BE:M13
-- **** corresponds
- with traffic_sign
- =BE:D7;BE:M14
-- **** corresponds
- with traffic_sign
- =BE:D7;BE:M7
-- **** corresponds
- with :traffic_sign
- =BE:D7;BE:M15
-- **** corresponds
- with traffic_sign
- =BE:D7;BE:M16
-- **No supplementary traffic sign present** corresponds
- with traffic_sign:
- supplementary=
- none
-### cycleways_and_roads-cycleway:buffer
+
+### cycleway-traffic-signs-supplementary
+
+
+
+The question is **Does the traffic sign D7 () have a supplementary sign?**
+
+
+
+
+
+ - **** corresponds with cycleway:traffic_sign=BE:D7;BE:M6
+ - **** corresponds with cycleway:traffic_sign=BE:D7;BE:M13
+ - **** corresponds with cycleway:traffic_sign=BE:D7;BE:M14
+ - **** corresponds with cycleway:traffic_sign=BE:D7;BE:M7
+ - **** corresponds with cycleway:traffic_sign=BE:D7;BE:M15
+ - **** corresponds with cycleway:traffic_sign=BE:D7;BE:M16
+ - **No supplementary traffic sign present** corresponds with cycleway:traffic_sign:supplementary=none
+
+
+
+
+### cycleway-traffic-signs-D7-supplementary
+
+
+
+The question is **Does the traffic sign D7 () have a supplementary sign?**
+
+
+
+
+
+ - **** corresponds with traffic_sign=BE:D7;BE:M6
+ - **** corresponds with traffic_sign=BE:D7;BE:M13
+ - **** corresponds with traffic_sign=BE:D7;BE:M14
+ - **** corresponds with traffic_sign=BE:D7;BE:M7
+ - **** corresponds with :traffic_sign=BE:D7;BE:M15
+ - **** corresponds with traffic_sign=BE:D7;BE:M16
+ - **No supplementary traffic sign present** corresponds with traffic_sign:supplementary=none
+
+
+
+
+### cycleways_and_roads-cycleway:buffer
+
+
The question is **How wide is the gap between the cycleway and the road?**
-This rendering asks information about the
-property [cycleway:buffer](https://wiki.openstreetmap.org/wiki/Key:cycleway:buffer)
+This rendering asks information about the property [cycleway:buffer](https://wiki.openstreetmap.org/wiki/Key:cycleway:buffer)
This is rendered with `The buffer besides this cycleway is {cycleway:buffer} m`
-### cyclelan-segregation
+
+
+### cyclelan-segregation
+
+
The question is **How is this cycleway separated from the road?**
-- **This cycleway is separated by a dashed line** corresponds
- with cycleway:separation
- =dashed_line
-- **This cycleway is separated by a solid line** corresponds
- with cycleway:separation
- =solid_line
-- **This cycleway is separated by a parking lane** corresponds
- with cycleway:separation
- =parking_lane
-- **This cycleway is separated by a kerb** corresponds
- with cycleway:separation
- =kerb
-### cycleway-segregation
+
+
+
+ - **This cycleway is separated by a dashed line** corresponds with cycleway:separation=dashed_line
+ - **This cycleway is separated by a solid line** corresponds with cycleway:separation=solid_line
+ - **This cycleway is separated by a parking lane** corresponds with cycleway:separation=parking_lane
+ - **This cycleway is separated by a kerb** corresponds with cycleway:separation=kerb
+
+
+
+
+### cycleway-segregation
+
+
The question is **How is this cycleway separated from the road?**
-- **This cycleway is separated by a dashed line** corresponds
- with separation
- =dashed_line
-- **This cycleway is separated by a solid line** corresponds
- with separation
- =solid_line
-- **This cycleway is separated by a parking lane** corresponds
- with separation
- =parking_lane
-- **This cycleway is separated by a kerb** corresponds
- with separation
- =kerb
+
+
+
+
+ - **This cycleway is separated by a dashed line** corresponds with separation=dashed_line
+ - **This cycleway is separated by a solid line** corresponds with separation=solid_line
+ - **This cycleway is separated by a parking lane** corresponds with separation=parking_lane
+ - **This cycleway is separated by a kerb** corresponds with separation=kerb
+
This document is autogenerated from assets/layers/cycleways_and_roads/cycleways_and_roads.json
\ No newline at end of file
diff --git a/Docs/Layers/defibrillator.md b/Docs/Layers/defibrillator.md
index 4321a42b3..54511815e 100644
--- a/Docs/Layers/defibrillator.md
+++ b/Docs/Layers/defibrillator.md
@@ -1,20 +1,23 @@
-defibrillator
+
+
+ defibrillator
===============
-A layer showing defibrillators which can be used in case of emergency. This contains public defibrillators, but also
-defibrillators which might need staff to fetch the actual device
+A layer showing defibrillators which can be used in case of emergency. This contains public defibrillators, but also defibrillators which might need staff to fetch the actual device
+
+
+
## Table of contents
1. [defibrillator](#defibrillator)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [defibrillator-indoors](#defibrillator-indoors)
+ [defibrillator-access](#defibrillator-access)
@@ -33,216 +36,287 @@ defibrillators which might need staff to fetch the actual device
+ [defibrillator-fixme](#defibrillator-fixme)
-- This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on
- it: a preset snaps to this layer (presets[1])
-#### Themes using this layer
-- [aed](https://mapcomplete.osm.be/aed)
-- [personal](https://mapcomplete.osm.be/personal)
+
+ - This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on it: a preset snaps to this layer (presets[1])
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [aed](https://mapcomplete.osm.be/aed)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/defibrillator/defibrillator.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- emergency
- =defibrillator
-Supported attributes
+
+ - emergency=defibrillator
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/indoor#values) [indoor](https://wiki.openstreetmap.org/wiki/Key:indoor) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dno)
[](https://taginfo.openstreetmap.org/keys/access#values) [access](https://wiki.openstreetmap.org/wiki/Key:access) | [string](../SpecialInputElements.md#string) | [yes](https://wiki.openstreetmap.org/wiki/Tag:access%3Dyes) [customers](https://wiki.openstreetmap.org/wiki/Tag:access%3Dcustomers) [private](https://wiki.openstreetmap.org/wiki/Tag:access%3Dprivate) [no](https://wiki.openstreetmap.org/wiki/Tag:access%3Dno)
[](https://taginfo.openstreetmap.org/keys/defibrillator#values) [defibrillator](https://wiki.openstreetmap.org/wiki/Key:defibrillator) | Multiple choice | [manual](https://wiki.openstreetmap.org/wiki/Tag:defibrillator%3Dmanual) [automatic](https://wiki.openstreetmap.org/wiki/Tag:defibrillator%3Dautomatic)
[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [int](../SpecialInputElements.md#int) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1)
-[](https://taginfo.openstreetmap.org/keys/defibrillator:location#values) [defibrillator:location](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location) | [text](../SpecialInputElements.md#text) |
-[](https://taginfo.openstreetmap.org/keys/defibrillator:location:en#values) [defibrillator:location:en](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location:en) | [text](../SpecialInputElements.md#text) |
-[](https://taginfo.openstreetmap.org/keys/defibrillator:location:fr#values) [defibrillator:location:fr](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location:fr) | [text](../SpecialInputElements.md#text) |
+[](https://taginfo.openstreetmap.org/keys/defibrillator:location#values) [defibrillator:location](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location) | [text](../SpecialInputElements.md#text) |
+[](https://taginfo.openstreetmap.org/keys/defibrillator:location:en#values) [defibrillator:location:en](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location:en) | [text](../SpecialInputElements.md#text) |
+[](https://taginfo.openstreetmap.org/keys/defibrillator:location:fr#values) [defibrillator:location:fr](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location:fr) | [text](../SpecialInputElements.md#text) |
[](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)
-[](https://taginfo.openstreetmap.org/keys/ref#values) [ref](https://wiki.openstreetmap.org/wiki/Key:ref) | [text](../SpecialInputElements.md#text) |
-[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
-[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
+[](https://taginfo.openstreetmap.org/keys/ref#values) [ref](https://wiki.openstreetmap.org/wiki/Key:ref) | [text](../SpecialInputElements.md#text) |
+[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
+[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [24/7](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7)
-[](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [text](../SpecialInputElements.md#text) |
+[](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [text](../SpecialInputElements.md#text) |
[](https://taginfo.openstreetmap.org/keys/survey:date#values) [survey:date](https://wiki.openstreetmap.org/wiki/Key:survey:date) | [date](../SpecialInputElements.md#date) | [](https://wiki.openstreetmap.org/wiki/Tag:survey:date%3D)
-[](https://taginfo.openstreetmap.org/keys/fixme#values) [fixme](https://wiki.openstreetmap.org/wiki/Key:fixme) | [text](../SpecialInputElements.md#text) |
+[](https://taginfo.openstreetmap.org/keys/fixme#values) [fixme](https://wiki.openstreetmap.org/wiki/Key:fixme) | [text](../SpecialInputElements.md#text) |
+
+
+
+
+### images
+
-### images
_This tagrendering has no question and is thus read-only_
-### defibrillator-indoors
+
+
+
+
+### defibrillator-indoors
+
+
The question is **Is this defibrillator located indoors?**
-- **This defibrillator is located indoors** corresponds
- with indoor
- =yes
-- **This defibrillator is located outdoors** corresponds
- with indoor
- =no
-### defibrillator-access
+
+
+
+ - **This defibrillator is located indoors** corresponds with indoor=yes
+ - **This defibrillator is located outdoors** corresponds with indoor=no
+
+
+
+
+### defibrillator-access
+
+
The question is **Is this defibrillator freely accessible?**
-This rendering asks information about the property [access](https://wiki.openstreetmap.org/wiki/Key:access)
+This rendering asks information about the property [access](https://wiki.openstreetmap.org/wiki/Key:access)
This is rendered with `Access is {access}`
-- **Publicly accessible** corresponds with
- access=yes
-- **Publicly accessible** corresponds with
- access=public_This option
- cannot be chosen as answer_
-- **Only accessible to customers** corresponds
- with access
- =customers
-- **Not accessible to the general public (e.g. only accesible to staff, the owners, ...)** corresponds
- with access
- =private
-- **Not accessible, possibly only for professional use** corresponds
- with access
- =no
-### defibrillator-defibrillator
+
+ - **Publicly accessible** corresponds with access=yes
+ - **Publicly accessible** corresponds with access=public_This option cannot be chosen as answer_
+ - **Only accessible to customers** corresponds with access=customers
+ - **Not accessible to the general public (e.g. only accesible to staff, the owners, ...)** corresponds with access=private
+ - **Not accessible, possibly only for professional use** corresponds with access=no
+
+
+
+
+### defibrillator-defibrillator
+
+
The question is **Is this a a regular automatic defibrillator or a manual defibrillator for professionals only?**
-- **There is no info about the type of device** corresponds with _This option cannot be chosen as answer_
-- **This is a manual defibrillator for professionals** corresponds
- with defibrillator
- =manual
-- **This is a normal automatic defibrillator** corresponds
- with defibrillator
- =automatic
-- **This is a special type of defibrillator: {defibrillator}** corresponds with defibrillator~^..*$_This option cannot
- be chosen as answer_
-### defibrillator-level
+
+
+
+ - **There is no info about the type of device** corresponds with _This option cannot be chosen as answer_
+ - **This is a manual defibrillator for professionals** corresponds with defibrillator=manual
+ - **This is a normal automatic defibrillator** corresponds with defibrillator=automatic
+ - **This is a special type of defibrillator: {defibrillator}** corresponds with defibrillator~^..*$_This option cannot be chosen as answer_
+
+
+
+
+### defibrillator-level
+
+
The question is **On which floor is this defibrillator located?**
-This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level)
+This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level)
This is rendered with `This defibrillator is on floor {level}`
-- **This defibrillator is on the ground floor** corresponds
- with level
- =0
-- **This defibrillator is on the first floor** corresponds
- with level
- =1
-### defibrillator-defibrillator:location
+
+ - **This defibrillator is on the ground floor** corresponds with level=0
+ - **This defibrillator is on the first floor** corresponds with level=1
+
+
+
+
+### defibrillator-defibrillator:location
+
+
The question is **Please give some explanation on where the defibrillator can be found (in the local language)**
-This rendering asks information about the
-property [defibrillator:location](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location)
-This is rendered
-with `Extra information about the location (in the local languagel): {defibrillator:location}`
+This rendering asks information about the property [defibrillator:location](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location)
+This is rendered with `Extra information about the location (in the local languagel): {defibrillator:location}`
+
+
+
+### defibrillator-defibrillator:location:en
+
-### defibrillator-defibrillator:location:en
The question is **Please give some explanation on where the defibrillator can be found (in English)**
-This rendering asks information about the
-property [defibrillator:location:en](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location:en)
+This rendering asks information about the property [defibrillator:location:en](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location:en)
This is rendered with `Extra information about the location (in English): {defibrillator:location:en}`
-### defibrillator-defibrillator:location:fr
+
+
+### defibrillator-defibrillator:location:fr
+
+
The question is **Please give some explanation on where the defibrillator can be found (in French)**
-This rendering asks information about the
-property [defibrillator:location:fr](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location:fr)
+This rendering asks information about the property [defibrillator:location:fr](https://wiki.openstreetmap.org/wiki/Key:defibrillator:location:fr)
This is rendered with `Extra information about the location (in French): {defibrillator:location:fr}`
-### wheelchair-access
+
+
+### wheelchair-access
+
+
The question is **Is this place accessible with a wheelchair?**
-- **This place is specially adapted for wheelchair users** corresponds
- with wheelchair
- =designated
-- **This place is easily reachable with a wheelchair** corresponds
- with wheelchair
- =yes
-- **It is possible to reach this place in a wheelchair, but it is not easy** corresponds
- with wheelchair
- =limited
-- **This place is not reachable with a wheelchair** corresponds
- with wheelchair
- =no
-### defibrillator-ref
+
+
+
+ - **This place is specially adapted for wheelchair users** corresponds with wheelchair=designated
+ - **This place is easily reachable with a wheelchair** corresponds with wheelchair=yes
+ - **It is possible to reach this place in a wheelchair, but it is not easy** corresponds with wheelchair=limited
+ - **This place is not reachable with a wheelchair** corresponds with wheelchair=no
+
+
+
+
+### defibrillator-ref
+
+
The question is **What is the official identification number of the device? (if visible on device)**
-This rendering asks information about the property [ref](https://wiki.openstreetmap.org/wiki/Key:ref)
+This rendering asks information about the property [ref](https://wiki.openstreetmap.org/wiki/Key:ref)
This is rendered with `Official identification number of the device: {ref}`
-### defibrillator-email
+
+
+### defibrillator-email
+
+
The question is **What is the email for questions about this defibrillator?**
-This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
+This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
This is rendered with `Email for questions about this defibrillator: {email}`
-### defibrillator-phone
+
+
+### defibrillator-phone
+
+
The question is **What is the phone number for questions about this defibrillator?**
-This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
+This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
This is rendered with `Telephone for questions about this defibrillator: {phone}`
-### defibrillator-opening_hours
+
+
+### defibrillator-opening_hours
+
+
The question is **At what times is this defibrillator available?**
-This rendering asks information about the
-property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
+This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with `{opening_hours_table(opening_hours)}`
-- **24/7 opened (including holidays)** corresponds
- with opening_hours
- =24/7
-### defibrillator-description
-The question is **Is there any useful information for users that you haven't been able to describe above? (leave blank
-if no)**
+ - **24/7 opened (including holidays)** corresponds with opening_hours=24/7
-This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description)
+
+
+
+### defibrillator-description
+
+
+
+The question is **Is there any useful information for users that you haven't been able to describe above? (leave blank if no)**
+
+This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description)
This is rendered with `Additional information: {description}`
-### defibrillator-survey:date
+
+
+### defibrillator-survey:date
+
+
The question is **When was this defibrillator last surveyed?**
-This rendering asks information about the property [survey:date](https://wiki.openstreetmap.org/wiki/Key:survey:date)
+This rendering asks information about the property [survey:date](https://wiki.openstreetmap.org/wiki/Key:survey:date)
This is rendered with `This defibrillator was last surveyed on {survey:date}`
-- **Checked today!** corresponds with survey:date=
-### defibrillator-fixme
-The question is **Is there something wrong with how this is mapped, that you weren't able to fix here? (leave a note to
-OpenStreetMap experts)**
+ - **Checked today!** corresponds with survey:date=
-This rendering asks information about the property [fixme](https://wiki.openstreetmap.org/wiki/Key:fixme)
-This is rendered with `Extra information for OpenStreetMap experts: {fixme}`
+
+
+
+### defibrillator-fixme
+
+
+
+The question is **Is there something wrong with how this is mapped, that you weren't able to fix here? (leave a note to OpenStreetMap experts)**
+
+This rendering asks information about the property [fixme](https://wiki.openstreetmap.org/wiki/Key:fixme)
+This is rendered with `Extra information for OpenStreetMap experts: {fixme}`
This document is autogenerated from assets/layers/defibrillator/defibrillator.json
\ No newline at end of file
diff --git a/Docs/Layers/direction.md b/Docs/Layers/direction.md
index 7af008f90..a8e2309b0 100644
--- a/Docs/Layers/direction.md
+++ b/Docs/Layers/direction.md
@@ -1,45 +1,64 @@
-direction
+
+
+ direction
===========
-
+
This layer visualizes directions
+
+
+
## Table of contents
1. [direction](#direction)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
-- This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this
- toggleable.
-#### Themes using this layer
-- [personal](https://mapcomplete.osm.be/personal)
-- [surveillance](https://mapcomplete.osm.be/surveillance)
+
+ - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable.
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [personal](https://mapcomplete.osm.be/personal)
+ - [surveillance](https://mapcomplete.osm.be/surveillance)
+
[Go to the source code](../assets/layers/direction/direction.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- camera:direction~^..*$|direction~^..*$
-Supported attributes
+
+ - camera:direction~^..*$|direction~^..*$
+
+
+
+
+ Supported attributes
----------------------
-
+
This document is autogenerated from assets/layers/direction/direction.json
\ No newline at end of file
diff --git a/Docs/Layers/drinking_water.md b/Docs/Layers/drinking_water.md
index 7e92ef1d1..4ccc7b371 100644
--- a/Docs/Layers/drinking_water.md
+++ b/Docs/Layers/drinking_water.md
@@ -1,98 +1,137 @@
-drinking_water
+
+
+ drinking_water
================
-
+
A layer showing drinking water fountains
+
+
+
## Table of contents
1. [drinking_water](#drinking_water)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [Still in use?](#still-in-use)
+ [Bottle refill](#bottle-refill)
+ [render-closest-drinking-water](#render-closest-drinking-water)
-- This layer will automatically load [drinking_water](./drinking_water.md) into the layout as it depends on it: A
- calculated tag loads features from this layer (calculatedTag[0] which calculates the value for _
- closest_other_drinking_water)
-- This layer is needed as dependency for layer [drinking_water](#drinking_water)
-#### Themes using this layer
-- [cyclofix](https://mapcomplete.osm.be/cyclofix)
-- [drinking_water](https://mapcomplete.osm.be/drinking_water)
-- [nature](https://mapcomplete.osm.be/nature)
-- [personal](https://mapcomplete.osm.be/personal)
+
+ - This layer will automatically load [drinking_water](./drinking_water.md) into the layout as it depends on it: A calculated tag loads features from this layer (calculatedTag[0] which calculates the value for _closest_other_drinking_water)
+ - This layer is needed as dependency for layer [drinking_water](#drinking_water)
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [cyclofix](https://mapcomplete.osm.be/cyclofix)
+ - [drinking_water](https://mapcomplete.osm.be/drinking_water)
+ - [nature](https://mapcomplete.osm.be/nature)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/drinking_water/drinking_water.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- amenity
- =drinking_water
-- access!~^permissive$
-- access!~^private$
-Supported attributes
+
+ - amenity=drinking_water
+ - access!~^permissive$
+ - access!~^private$
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/operational_status#values) [operational_status](https://wiki.openstreetmap.org/wiki/Key:operational_status) | [string](../SpecialInputElements.md#string) | [](https://wiki.openstreetmap.org/wiki/Tag:operational_status%3D) [broken](https://wiki.openstreetmap.org/wiki/Tag:operational_status%3Dbroken) [closed](https://wiki.openstreetmap.org/wiki/Tag:operational_status%3Dclosed)
[](https://taginfo.openstreetmap.org/keys/bottle#values) [bottle](https://wiki.openstreetmap.org/wiki/Key:bottle) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:bottle%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:bottle%3Dno)
-### images
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### Still in use?
+
+
+
+
+### Still in use?
+
+
The question is **Is this drinking water spot still operational?**
-This rendering asks information about the
-property [operational_status](https://wiki.openstreetmap.org/wiki/Key:operational_status)
+This rendering asks information about the property [operational_status](https://wiki.openstreetmap.org/wiki/Key:operational_status)
This is rendered with `The operational status is {operational_status}`
-- **This drinking water works** corresponds with
-- **This drinking water is broken** corresponds
- with operational_status
- =broken
-- **This drinking water is closed** corresponds
- with operational_status
- =closed
-### Bottle refill
+
+ - **This drinking water works** corresponds with
+ - **This drinking water is broken** corresponds with operational_status=broken
+ - **This drinking water is closed** corresponds with operational_status=closed
+
+
+
+
+### Bottle refill
+
+
The question is **How easy is it to fill water bottles?**
-- **It is easy to refill water bottles** corresponds
- with bottle
- =yes
-- **Water bottles may not fit** corresponds
- with bottle
- =no
-### render-closest-drinking-water
+
+
+
+ - **It is easy to refill water bottles** corresponds with bottle=yes
+ - **Water bottles may not fit** corresponds with bottle=no
+
+
+
+
+### render-closest-drinking-water
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/drinking_water/drinking_water.json
\ No newline at end of file
diff --git a/Docs/Layers/entrance.md b/Docs/Layers/entrance.md
index 0990f73f4..e04972904 100644
--- a/Docs/Layers/entrance.md
+++ b/Docs/Layers/entrance.md
@@ -1,20 +1,23 @@
-entrance
+
+
+ entrance
==========
-
+
+
+A layer showing entrances and offering capabilities to survey some advanced data which is important for e.g. wheelchair users (but also bicycle users, people who want to deliver, ...)
+
+
-A layer showing entrances and offering capabilities to survey some advanced data which is important for e.g. wheelchair
-users (but also bicycle users, people who want to deliver, ...)
## Table of contents
1. [entrance](#entrance)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [Entrance type](#entrance-type)
+ [Door_type](#door_type)
@@ -22,147 +25,145 @@ users (but also bicycle users, people who want to deliver, ...)
+ [width](#width)
-- This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on
- it: a preset snaps to this layer (presets[0])
-- This layer will automatically load [pedestrian_path](./pedestrian_path.md) into the layout as it depends on it: a
- preset snaps to this layer (presets[0])
-#### Themes using this layer
-- [entrances](https://mapcomplete.osm.be/entrances)
-- [personal](https://mapcomplete.osm.be/personal)
+
+ - This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on it: a preset snaps to this layer (presets[0])
+ - This layer will automatically load [pedestrian_path](./pedestrian_path.md) into the layout as it depends on it: a preset snaps to this layer (presets[0])
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [entrances](https://mapcomplete.osm.be/entrances)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/entrance/entrance.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- entrance~^..*$|indoor
- =door
-Supported attributes
+
+ - entrance~^..*$|indoor=door
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/entrance#values) [entrance](https://wiki.openstreetmap.org/wiki/Key:entrance) | Multiple choice | [](https://wiki.openstreetmap.org/wiki/Tag:entrance%3D) [main](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dmain) [secondary](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dsecondary) [service](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dservice) [exit](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dexit) [entrance](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dentrance) [emergency](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Demergency) [home](https://wiki.openstreetmap.org/wiki/Tag:entrance%3Dhome)
[](https://taginfo.openstreetmap.org/keys/door#values) [door](https://wiki.openstreetmap.org/wiki/Key:door) | Multiple choice | [hinged](https://wiki.openstreetmap.org/wiki/Tag:door%3Dhinged) [revolving](https://wiki.openstreetmap.org/wiki/Tag:door%3Drevolving) [sliding](https://wiki.openstreetmap.org/wiki/Tag:door%3Dsliding) [overhead](https://wiki.openstreetmap.org/wiki/Tag:door%3Doverhead) [no](https://wiki.openstreetmap.org/wiki/Tag:door%3Dno)
[](https://taginfo.openstreetmap.org/keys/automatic_door#values) [automatic_door](https://wiki.openstreetmap.org/wiki/Key:automatic_door) | Multiple choice | [no](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dno) [motion](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dmotion) [floor](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dfloor) [button](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dbutton) [slowdown_button](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dslowdown_button) [continuous](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dcontinuous) [serviced_on_button_press](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dserviced_on_button_press) [serviced_on_request](https://wiki.openstreetmap.org/wiki/Tag:automatic_door%3Dserviced_on_request)
-[](https://taginfo.openstreetmap.org/keys/width#values) [width](https://wiki.openstreetmap.org/wiki/Key:width) | [length](../SpecialInputElements.md#length) |
+[](https://taginfo.openstreetmap.org/keys/width#values) [width](https://wiki.openstreetmap.org/wiki/Key:width) | [length](../SpecialInputElements.md#length) |
+
+
+
+
+### images
+
-### images
_This tagrendering has no question and is thus read-only_
-### Entrance type
+
+
+
+
+### Entrance type
+
+
The question is **What type of entrance is this?**
-- **No specific entrance type is known** corresponds
- with entrance
- =yes_This option cannot be chosen
- as answer_
-- **This is an indoor door, separating a room or a corridor within a single building** corresponds
- with indoor
- =door
-- **This is the main entrance** corresponds
- with entrance
- =main
-- **This is a secondary entrance** corresponds
- with entrance
- =secondary
-- **This is a service entrance - normally only used for employees, delivery, ...** corresponds
- with entrance
- =service
-- **This is an exit where one can not enter** corresponds
- with entrance
- =exit
-- **This is an entrance where one can only enter (but not exit)** corresponds
- with entrance
- =entrance
-- **This is emergency exit** corresponds
- with entrance
- =emergency
-- **This is the entrance to a private home** corresponds
- with entrance
- =home
-### Door_type
-The question is **What is the type of this door? Wether or not the door is automated is asked
-in the next question**
-- **The door type is not known** corresponds
- with door
- =yes_This option cannot be chosen as
- answer_
-- **A classical, hinged door supported by joints** corresponds
- with door
- =hinged
-- **A revolving door which hangs on a central shaft, rotating within a cylindrical enclosure** corresponds
- with door
- =revolving
-- **A sliding door where the door slides sidewards, typically parallel with a wall** corresponds
- with door
- =sliding
-- **A door which rolls from overhead, typically seen for garages** corresponds
- with door
- =overhead
-- **This is an entrance without a physical door** corresponds
- with door
- =no
-### automatic_door
+ - **No specific entrance type is known** corresponds with entrance=yes_This option cannot be chosen as answer_
+ - **This is an indoor door, separating a room or a corridor within a single building** corresponds with indoor=door
+ - **This is the main entrance** corresponds with entrance=main
+ - **This is a secondary entrance** corresponds with entrance=secondary
+ - **This is a service entrance - normally only used for employees, delivery, ...** corresponds with entrance=service
+ - **This is an exit where one can not enter** corresponds with entrance=exit
+ - **This is an entrance where one can only enter (but not exit)** corresponds with entrance=entrance
+ - **This is emergency exit** corresponds with entrance=emergency
+ - **This is the entrance to a private home** corresponds with entrance=home
+
+
+
+
+### Door_type
+
+
+
+The question is **What is the type of this door? Wether or not the door is automated is asked in the next question**
+
+
+
+
+
+ - **The door type is not known** corresponds with door=yes_This option cannot be chosen as answer_
+ - **A classical, hinged door supported by joints** corresponds with door=hinged
+ - **A revolving door which hangs on a central shaft, rotating within a cylindrical enclosure** corresponds with door=revolving
+ - **A sliding door where the door slides sidewards, typically parallel with a wall** corresponds with door=sliding
+ - **A door which rolls from overhead, typically seen for garages** corresponds with door=overhead
+ - **This is an entrance without a physical door** corresponds with door=no
+
+
+
+
+### automatic_door
+
+
The question is **Is this door automated?**
-- **This is an automatic door** corresponds
- with automatic_door
- =yes_This option cannot be
- chosen as answer_
-- **This door is not automated** corresponds
- with automatic_door
- =no
-- **This door will open automatically when motion is detected** corresponds
- with automatic_door
- =motion
-- **This door will open automatically when a sensor in the floor is triggered** corresponds
- with automatic_door
- =floor
-- **This door will open automatically when a button is pressed** corresponds
- with automatic_door
- =button
-- **This door revolves automatically all the time, but has a button to slow it down, e.g. for wheelchair users**
- corresponds with automatic_door
- =
- slowdown_button
-- **This door revolves automatically all the time** corresponds
- with automatic_door
- =continuous
-- **This door will be opened by staff when requested by pressing a buttonautomatic_door
- =
- serviced_on_button_press
-- **This door will be opened by staff when requested** corresponds
- with automatic_door
- =
- serviced_on_request
-### width
+
+
+
+ - **This is an automatic door** corresponds with automatic_door=yes_This option cannot be chosen as answer_
+ - **This door is not automated** corresponds with automatic_door=no
+ - **This door will open automatically when motion is detected** corresponds with automatic_door=motion
+ - **This door will open automatically when a sensor in the floor is triggered** corresponds with automatic_door=floor
+ - **This door will open automatically when a button is pressed** corresponds with automatic_door=button
+ - **This door revolves automatically all the time, but has a button to slow it down, e.g. for wheelchair users** corresponds with automatic_door=slowdown_button
+ - **This door revolves automatically all the time** corresponds with automatic_door=continuous
+ - **This door will be opened by staff when requested by pressing a buttonautomatic_door=serviced_on_button_press
+ - **This door will be opened by staff when requested** corresponds with automatic_door=serviced_on_request
+
+
+
+
+### width
+
+
The question is **What is the width of this door/entrance?**
-This rendering asks information about the property [width](https://wiki.openstreetmap.org/wiki/Key:width)
-This is rendered with `This door has a width of {canonical(width)} meter`
+This rendering asks information about the property [width](https://wiki.openstreetmap.org/wiki/Key:width)
+This is rendered with `This door has a width of {canonical(width)} meter`
This document is autogenerated from assets/layers/entrance/entrance.json
\ No newline at end of file
diff --git a/Docs/Layers/etymology.md b/Docs/Layers/etymology.md
index 06e6251b0..aea921331 100644
--- a/Docs/Layers/etymology.md
+++ b/Docs/Layers/etymology.md
@@ -1,19 +1,23 @@
-etymology
+
+
+ etymology
===========
-
+
All objects which have an etymology known
+
+
+
## Table of contents
1. [etymology](#etymology)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [etymology-images-from-wikipedia](#etymology-images-from-wikipedia)
+ [wikipedia-etymology](#wikipedia-etymology)
+ [zoeken op inventaris onroerend erfgoed](#zoeken-op-inventaris-onroerend-erfgoed)
@@ -24,84 +28,153 @@ All objects which have an etymology known
+ [etymology_multi_apply](#etymology_multi_apply)
+ [wikipedia](#wikipedia)
-#### Themes using this layer
-- [etymology](https://mapcomplete.osm.be/etymology)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [etymology](https://mapcomplete.osm.be/etymology)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/etymology/etymology.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- name:etymology:wikidata~^..*$|name:etymology~^..*$
-Supported attributes
+
+ - name:etymology:wikidata~^..*$|name:etymology~^..*$
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/name:etymology:wikidata#values) [name:etymology:wikidata](https://wiki.openstreetmap.org/wiki/Key:name:etymology:wikidata) | [wikidata](../SpecialInputElements.md#wikidata) |
+[](https://taginfo.openstreetmap.org/keys/name:etymology:wikidata#values) [name:etymology:wikidata](https://wiki.openstreetmap.org/wiki/Key:name:etymology:wikidata) | [wikidata](../SpecialInputElements.md#wikidata) |
[](https://taginfo.openstreetmap.org/keys/name:etymology#values) [name:etymology](https://wiki.openstreetmap.org/wiki/Key:name:etymology) | [string](../SpecialInputElements.md#string) | [unknown](https://wiki.openstreetmap.org/wiki/Tag:name:etymology%3Dunknown)
-### etymology-images-from-wikipedia
+
+
+
+### etymology-images-from-wikipedia
+
+
_This tagrendering has no question and is thus read-only_
-### wikipedia-etymology
+
+
+
+
+### wikipedia-etymology
+
+
The question is **What is the Wikidata-item that this object is named after?**
-This rendering asks information about the
-property [name:etymology:wikidata](https://wiki.openstreetmap.org/wiki/Key:name:etymology:wikidata)
-This is rendered
-with `
Wikipedia article of the name giver
{wikipedia(name:etymology:wikidata):max-height:20rem}`
+This rendering asks information about the property [name:etymology:wikidata](https://wiki.openstreetmap.org/wiki/Key:name:etymology:wikidata)
+This is rendered with `
Wikipedia article of the name giver
{wikipedia(name:etymology:wikidata):max-height:20rem}`
+
+
+
+### zoeken op inventaris onroerend erfgoed
+
-### zoeken op inventaris onroerend erfgoed
_This tagrendering has no question and is thus read-only_
-### simple etymology
-The question is **What is this object named after? This might be written on the street name
-sign**
-This rendering asks information about the
-property [name:etymology](https://wiki.openstreetmap.org/wiki/Key:name:etymology)
+
+
+### simple etymology
+
+
+
+The question is **What is this object named after? This might be written on the street name sign**
+
+This rendering asks information about the property [name:etymology](https://wiki.openstreetmap.org/wiki/Key:name:etymology)
This is rendered with `Named after {name:etymology}`
-- **The origin of this name is unknown in all literature** corresponds
- with name:etymology
- =unknown
-### questions
+
+ - **The origin of this name is unknown in all literature** corresponds with name:etymology=unknown
+
+
+
+
+### questions
+
+
_This tagrendering has no question and is thus read-only_
-### street-name-sign-image
+
+
+
+
+### street-name-sign-image
+
+
_This tagrendering has no question and is thus read-only_
-### minimap
+
+
+
+
+### minimap
+
+
_This tagrendering has no question and is thus read-only_
-### etymology_multi_apply
+
+
+
+
+### etymology_multi_apply
+
+
_This tagrendering has no question and is thus read-only_
-### wikipedia
+
+
+
+
+### wikipedia
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/etymology/etymology.json
\ No newline at end of file
diff --git a/Docs/Layers/extinguisher.md b/Docs/Layers/extinguisher.md
index d9ab42317..e8df792b2 100644
--- a/Docs/Layers/extinguisher.md
+++ b/Docs/Layers/extinguisher.md
@@ -1,4 +1,6 @@
-extinguisher
+
+
+ extinguisher
==============
@@ -7,60 +9,94 @@ extinguisher
Map layer to show fire hydrants.
+
+
+
## Table of contents
1. [extinguisher](#extinguisher)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [extinguisher-location](#extinguisher-location)
+ [images](#images)
-#### Themes using this layer
-- [hailhydrant](https://mapcomplete.osm.be/hailhydrant)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [hailhydrant](https://mapcomplete.osm.be/hailhydrant)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/extinguisher/extinguisher.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- emergency
- =fire_extinguisher
-Supported attributes
+
+ - emergency=fire_extinguisher
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/location#values) [location](https://wiki.openstreetmap.org/wiki/Key:location) | [string](../SpecialInputElements.md#string) | [indoor](https://wiki.openstreetmap.org/wiki/Tag:location%3Dindoor) [outdoor](https://wiki.openstreetmap.org/wiki/Tag:location%3Doutdoor)
-### extinguisher-location
+
+
+
+### extinguisher-location
+
+
The question is **Where is it positioned?**
-This rendering asks information about the property [location](https://wiki.openstreetmap.org/wiki/Key:location)
+This rendering asks information about the property [location](https://wiki.openstreetmap.org/wiki/Key:location)
This is rendered with `Location: {location}`
-- **Found indoors.** corresponds with
- location=indoor
-- **Found outdoors.** corresponds with
- location=outdoor
-### images
+
+ - **Found indoors.** corresponds with location=indoor
+ - **Found outdoors.** corresponds with location=outdoor
+
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/extinguisher/extinguisher.json
\ No newline at end of file
diff --git a/Docs/Layers/fire_station.md b/Docs/Layers/fire_station.md
index 9c6419ecd..410023ffe 100644
--- a/Docs/Layers/fire_station.md
+++ b/Docs/Layers/fire_station.md
@@ -1,4 +1,6 @@
-fire_station
+
+
+ fire_station
==============
@@ -7,13 +9,15 @@ fire_station
Map layer to show fire stations.
+
+
+
## Table of contents
1. [fire_station](#fire_station)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [station-name](#station-name)
+ [station-street](#station-street)
+ [station-place](#station-place)
@@ -21,97 +25,137 @@ Map layer to show fire stations.
+ [station-operator](#station-operator)
+ [images](#images)
-#### Themes using this layer
-- [hailhydrant](https://mapcomplete.osm.be/hailhydrant)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [hailhydrant](https://mapcomplete.osm.be/hailhydrant)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/fire_station/fire_station.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- amenity
- =fire_station
-Supported attributes
+
+ - amenity=fire_station
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
-[](https://taginfo.openstreetmap.org/keys/addr:street#values) [addr:street](https://wiki.openstreetmap.org/wiki/Key:addr:street) | [string](../SpecialInputElements.md#string) |
-[](https://taginfo.openstreetmap.org/keys/addr:place#values) [addr:place](https://wiki.openstreetmap.org/wiki/Key:addr:place) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/addr:street#values) [addr:street](https://wiki.openstreetmap.org/wiki/Key:addr:street) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/addr:place#values) [addr:place](https://wiki.openstreetmap.org/wiki/Key:addr:place) | [string](../SpecialInputElements.md#string) |
[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) | [Bureau of Fire Protection](https://wiki.openstreetmap.org/wiki/Tag:operator%3DBureau of Fire Protection)
[](https://taginfo.openstreetmap.org/keys/operator:type#values) [operator:type](https://wiki.openstreetmap.org/wiki/Key:operator:type) | [string](../SpecialInputElements.md#string) | [government](https://wiki.openstreetmap.org/wiki/Tag:operator:type%3Dgovernment) [community](https://wiki.openstreetmap.org/wiki/Tag:operator:type%3Dcommunity) [ngo](https://wiki.openstreetmap.org/wiki/Tag:operator:type%3Dngo) [private](https://wiki.openstreetmap.org/wiki/Tag:operator:type%3Dprivate)
-### station-name
+
+
+
+### station-name
+
+
The question is **What is the name of this fire station?**
-This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
+This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with `This station is called {name}.`
-### station-street
+
+
+### station-street
+
+
The question is ** What is the street name where the station located?**
-This rendering asks information about the property [addr:street](https://wiki.openstreetmap.org/wiki/Key:addr:street)
+This rendering asks information about the property [addr:street](https://wiki.openstreetmap.org/wiki/Key:addr:street)
This is rendered with `This station is along a highway called {addr:street}.`
-### station-place
+
+
+### station-place
+
+
The question is **Where is the station located? (e.g. name of neighborhood, villlage, or town)**
-This rendering asks information about the property [addr:place](https://wiki.openstreetmap.org/wiki/Key:addr:place)
+This rendering asks information about the property [addr:place](https://wiki.openstreetmap.org/wiki/Key:addr:place)
This is rendered with `This station is found within {addr:place}.`
-### station-agency
+
+
+### station-agency
+
+
The question is **What agency operates this station?**
-This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
+This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
This is rendered with `This station is operated by {operator}.`
-- **Bureau of Fire Protection** corresponds
- with operator
- =Bureau of Fire
- Protection&operator:type
- =government
-### station-operator
+
+ - **Bureau of Fire Protection** corresponds with operator=Bureau of Fire Protection&operator:type=government
+
+
+
+
+### station-operator
+
+
The question is **How is the station operator classified?**
-This rendering asks information about the
-property [operator:type](https://wiki.openstreetmap.org/wiki/Key:operator:type)
+This rendering asks information about the property [operator:type](https://wiki.openstreetmap.org/wiki/Key:operator:type)
This is rendered with `The operator is a(n) {operator:type} entity.`
-- **The station is operated by the government.** corresponds
- with operator:type
- =government
-- **The station is operated by a community-based, or informal organization.** corresponds
- with operator:type
- =community
-- **The station is operated by a formal group of volunteers.** corresponds
- with operator:type
- =ngo
-- **The station is privately operated.** corresponds
- with operator:type
- =private
-### images
+
+ - **The station is operated by the government.** corresponds with operator:type=government
+ - **The station is operated by a community-based, or informal organization.** corresponds with operator:type=community
+ - **The station is operated by a formal group of volunteers.** corresponds with operator:type=ngo
+ - **The station is privately operated.** corresponds with operator:type=private
+
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/fire_station/fire_station.json
\ No newline at end of file
diff --git a/Docs/Layers/food.md b/Docs/Layers/food.md
index 25548feef..d37bc10af 100644
--- a/Docs/Layers/food.md
+++ b/Docs/Layers/food.md
@@ -1,19 +1,23 @@
-food
+
+
+ food
======
-
+
A layer showing restaurants and fast-food amenities (with a special rendering for friteries)
+
+
+
## Table of contents
1. [food](#food)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [Name](#name)
+ [Fastfood vs restaurant](#fastfood-vs-restaurant)
@@ -36,43 +40,61 @@ A layer showing restaurants and fast-food amenities (with a special rendering fo
+ [dog-access](#dog-access)
+ [reviews](#reviews)
-#### Themes using this layer
-- [food](https://mapcomplete.osm.be/food)
-- [fritures](https://mapcomplete.osm.be/fritures)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [food](https://mapcomplete.osm.be/food)
+ - [fritures](https://mapcomplete.osm.be/fritures)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/food/food.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- amenity
- =fast_food
- |amenity
- =restaurant
-Supported attributes
+
+ - amenity=fast_food|amenity=restaurant
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
[](https://taginfo.openstreetmap.org/keys/amenity#values) [amenity](https://wiki.openstreetmap.org/wiki/Key:amenity) | Multiple choice | [fast_food](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dfast_food) [restaurant](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Drestaurant)
-[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) |
-[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
-[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
-[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
+[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) |
+[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
+[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
+[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
[](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)
[](https://taginfo.openstreetmap.org/keys/cuisine#values) [cuisine](https://wiki.openstreetmap.org/wiki/Key:cuisine) | [string](../SpecialInputElements.md#string) | [pizza](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dpizza) [friture](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dfriture) [pasta](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dpasta) [kebab](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dkebab) [sandwich](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dsandwich) [burger](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dburger) [sushi](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dsushi) [coffee](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dcoffee) [italian](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Ditalian) [french](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dfrench) [chinese](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dchinese) [greek](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dgreek) [indian](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dindian) [turkish](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dturkish) [thai](https://wiki.openstreetmap.org/wiki/Tag:cuisine%3Dthai)
[](https://taginfo.openstreetmap.org/keys/takeaway#values) [takeaway](https://wiki.openstreetmap.org/wiki/Key:takeaway) | Multiple choice | [only](https://wiki.openstreetmap.org/wiki/Tag:takeaway%3Donly) [yes](https://wiki.openstreetmap.org/wiki/Tag:takeaway%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:takeaway%3Dno)
@@ -86,302 +108,349 @@ attribute | type | values which are supported by this layer
[](https://taginfo.openstreetmap.org/keys/service:electricity#values) [service:electricity](https://wiki.openstreetmap.org/wiki/Key:service:electricity) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dyes) [limited](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dlimited) [ask](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dask) [no](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dno)
[](https://taginfo.openstreetmap.org/keys/dog#values) [dog](https://wiki.openstreetmap.org/wiki/Key:dog) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dno) [leashed](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dleashed) [unleashed](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dunleashed)
-### images
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### Name
+
+
+
+
+### Name
+
+
The question is **What is the name of this restaurant?**
-This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
+This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with `The name of this restaurant is {name}`
-### Fastfood vs restaurant
+
+
+### Fastfood vs restaurant
+
+
The question is **What type of business is this?**
-- **Dit is een fastfood-zaak. De focus ligt op snelle bediening, zitplaatsen zijn vaak beperkt en functioneel**
- corresponds with amenity
- =fast_food
-- **Dit is een restaurant. De focus ligt op een aangename ervaring waar je aan tafel wordt bediend** corresponds
- with amenity
- =restaurant
-### opening_hours
+
+
+
+ - **Dit is een fastfood-zaak. De focus ligt op snelle bediening, zitplaatsen zijn vaak beperkt en functioneel** corresponds with amenity=fast_food
+ - **Dit is een restaurant. De focus ligt op een aangename ervaring waar je aan tafel wordt bediend** corresponds with amenity=restaurant
+
+
+
+
+### opening_hours
+
+
The question is **What are the opening hours of {name}?**
-This rendering asks information about the
-property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
+This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with `
Opening hours
{opening_hours_table(opening_hours)}`
-### website
+
+
+### website
+
+
The question is **What is the website of {name}?**
-This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
+This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
This is rendered with `{website}`
-- **{contact:website}** corresponds with contact:website~^..*$_This
- option cannot be chosen as answer_
-### email
+
+ - **{contact:website}** corresponds with contact:website~^..*$_This option cannot be chosen as answer_
+
+
+
+
+### email
+
+
The question is **What is the email address of {name}?**
-This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
+This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
This is rendered with `{email}`
-- **{contact:email}** corresponds with contact:email~^..*$_This
- option cannot be chosen as answer_
-### phone
+
+ - **{contact:email}** corresponds with contact:email~^..*$_This option cannot be chosen as answer_
+
+
+
+
+### phone
+
+
The question is **What is the phone number of {name}?**
-This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
+This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
This is rendered with `{phone}`
-- **{contact:phone}** corresponds with contact:phone~^..*$_This option cannot be
- chosen as answer_
-### payment-options
+
+ - **{contact:phone}** corresponds with contact:phone~^..*$_This option cannot be chosen as answer_
+
+
+
+
+### payment-options
+
+
The question is **Which methods of payment are accepted here?**
-- **Cash is accepted here** corresponds
- with payment:cash
- =yesUnselecting this answer
- will add payment:cash
- =no
-- **Payment cards are accepted here** corresponds
- with payment:cards
- =yesUnselecting this answer
- will add payment:cards
- =no
-### wheelchair-access
+
+
+
+ - **Cash is accepted here** corresponds with payment:cash=yesUnselecting this answer will add payment:cash=no
+ - **Payment cards are accepted here** corresponds with payment:cards=yesUnselecting this answer will add payment:cards=no
+
+
+
+
+### wheelchair-access
+
+
The question is **Is this place accessible with a wheelchair?**
-- **This place is specially adapted for wheelchair users** corresponds
- with wheelchair
- =designated
-- **This place is easily reachable with a wheelchair** corresponds
- with wheelchair
- =yes
-- **It is possible to reach this place in a wheelchair, but it is not easy** corresponds
- with wheelchair
- =limited
-- **This place is not reachable with a wheelchair** corresponds
- with wheelchair
- =no
-### Cuisine
+
+
+
+ - **This place is specially adapted for wheelchair users** corresponds with wheelchair=designated
+ - **This place is easily reachable with a wheelchair** corresponds with wheelchair=yes
+ - **It is possible to reach this place in a wheelchair, but it is not easy** corresponds with wheelchair=limited
+ - **This place is not reachable with a wheelchair** corresponds with wheelchair=no
+
+
+
+
+### Cuisine
+
+
The question is **Which food is served here?**
-This rendering asks information about the property [cuisine](https://wiki.openstreetmap.org/wiki/Key:cuisine)
+This rendering asks information about the property [cuisine](https://wiki.openstreetmap.org/wiki/Key:cuisine)
This is rendered with `This place mostly serves {cuisine}`
-- **This is a pizzeria** corresponds with
- cuisine=pizza
-- **This is a friture** corresponds with
- cuisine=friture
-- **Mainly serves pasta** corresponds with
- cuisine=pasta
-- **Dit is een kebabzaak** corresponds with
- cuisine=kebab
-- **Dit is een broodjeszaak** corresponds
- with cuisine
- =sandwich
-- **Dit is een hamburgerrestaurant** corresponds
- with cuisine
- =burger
-- **Dit is een sushirestaurant** corresponds
- with cuisine
- =sushi
-- **Dit is een koffiezaak** corresponds with
- cuisine=coffee
-- **Dit is een Italiaans restaurant (dat meer dan enkel pasta of pizza verkoopt)** corresponds
- with cuisine
- =italian
-- **Dit is een Frans restaurant** corresponds
- with cuisine
- =french
-- **Dit is een Chinees restaurant** corresponds
- with cuisine
- =chinese
-- **Dit is een Grieks restaurant** corresponds
- with cuisine
- =greek
-- **Dit is een Indisch restaurant** corresponds
- with cuisine
- =indian
-- **Dit is een Turks restaurant (dat meer dan enkel kebab verkoopt)** corresponds
- with cuisine
- =turkish
-- **Dit is een Thaïs restaurant** corresponds
- with cuisine
- =thai
-### Takeaway
+
+ - **This is a pizzeria** corresponds with cuisine=pizza
+ - **This is a friture** corresponds with cuisine=friture
+ - **Mainly serves pasta** corresponds with cuisine=pasta
+ - **Dit is een kebabzaak** corresponds with cuisine=kebab
+ - **Dit is een broodjeszaak** corresponds with cuisine=sandwich
+ - **Dit is een hamburgerrestaurant** corresponds with cuisine=burger
+ - **Dit is een sushirestaurant** corresponds with cuisine=sushi
+ - **Dit is een koffiezaak** corresponds with cuisine=coffee
+ - **Dit is een Italiaans restaurant (dat meer dan enkel pasta of pizza verkoopt)** corresponds with cuisine=italian
+ - **Dit is een Frans restaurant** corresponds with cuisine=french
+ - **Dit is een Chinees restaurant** corresponds with cuisine=chinese
+ - **Dit is een Grieks restaurant** corresponds with cuisine=greek
+ - **Dit is een Indisch restaurant** corresponds with cuisine=indian
+ - **Dit is een Turks restaurant (dat meer dan enkel kebab verkoopt)** corresponds with cuisine=turkish
+ - **Dit is een Thaïs restaurant** corresponds with cuisine=thai
+
+
+
+
+### Takeaway
+
+
The question is **Does this place offer takea-way?**
-- **This is a take-away only business** corresponds
- with takeaway
- =only
-- **Take-away is possible here** corresponds
- with takeaway
- =yes
-- **Take-away is not possible here** corresponds
- with takeaway
- =no
-### Vegetarian (no friture)
+
+
+
+ - **This is a take-away only business** corresponds with takeaway=only
+ - **Take-away is possible here** corresponds with takeaway=yes
+ - **Take-away is not possible here** corresponds with takeaway=no
+
+
+
+
+### Vegetarian (no friture)
+
+
The question is **Does this restaurant have a vegetarian option?**
-- **Geen vegetarische opties beschikbaar** corresponds
- with diet:vegetarian
- =no
-- **Beperkte vegetarische opties zijn beschikbaar** corresponds
- with diet:vegetarian
- =limited
-- **Vegetarische opties zijn beschikbaar** corresponds
- with diet:vegetarian
- =yes
-- **Enkel vegetarische opties zijn beschikbaar** corresponds
- with diet:vegetarian
- =only
-### Vegan (no friture)
+
+
+
+ - **Geen vegetarische opties beschikbaar** corresponds with diet:vegetarian=no
+ - **Beperkte vegetarische opties zijn beschikbaar** corresponds with diet:vegetarian=limited
+ - **Vegetarische opties zijn beschikbaar** corresponds with diet:vegetarian=yes
+ - **Enkel vegetarische opties zijn beschikbaar** corresponds with diet:vegetarian=only
+
+
+
+
+### Vegan (no friture)
+
+
The question is **Heeft deze eetgelegenheid een veganistische optie?**
-- **Geen veganistische opties beschikbaar** corresponds
- with diet:vegan
- =no
-- **Beperkte veganistische opties zijn beschikbaar** corresponds
- with diet:vegan
- =limited
-- **Veganistische opties zijn beschikbaar** corresponds
- with diet:vegan
- =yes
-- **Enkel veganistische opties zijn beschikbaar** corresponds
- with diet:vegan
- =only
-### halal (no friture)
+
+
+
+ - **Geen veganistische opties beschikbaar** corresponds with diet:vegan=no
+ - **Beperkte veganistische opties zijn beschikbaar** corresponds with diet:vegan=limited
+ - **Veganistische opties zijn beschikbaar** corresponds with diet:vegan=yes
+ - **Enkel veganistische opties zijn beschikbaar** corresponds with diet:vegan=only
+
+
+
+
+### halal (no friture)
+
+
The question is **Does this restaurant offer a halal menu?**
-- **There are no halal options available** corresponds
- with diet:halal
- =no
-- **There is a small halal menu** corresponds
- with diet:halal
- =limited
-- **There is a halal menu** corresponds
- with diet:halal
- =yes
-- **Only halal options are available** corresponds
- with diet:halal
- =only
-### friture-vegetarian
+
+
+
+ - **There are no halal options available** corresponds with diet:halal=no
+ - **There is a small halal menu** corresponds with diet:halal=limited
+ - **There is a halal menu** corresponds with diet:halal=yes
+ - **Only halal options are available** corresponds with diet:halal=only
+
+
+
+
+### friture-vegetarian
+
+
The question is **Heeft deze frituur vegetarische snacks?**
-- **Er zijn vegetarische snacks aanwezig** corresponds
- with diet:vegetarian
- =yes
-- **Slechts enkele vegetarische snacks** corresponds
- with diet:vegetarian
- =limited
-- **Geen vegetarische snacks beschikbaar** corresponds
- with diet:vegetarian
- =no
-### friture-vegan
+
+
+
+ - **Er zijn vegetarische snacks aanwezig** corresponds with diet:vegetarian=yes
+ - **Slechts enkele vegetarische snacks** corresponds with diet:vegetarian=limited
+ - **Geen vegetarische snacks beschikbaar** corresponds with diet:vegetarian=no
+
+
+
+
+### friture-vegan
+
+
The question is **Heeft deze frituur veganistische snacks?**
-- **Er zijn veganistische snacks aanwezig** corresponds
- with diet:vegan
- =yes
-- **Slechts enkele veganistische snacks** corresponds
- with diet:vegan
- =limited
-- **Geen veganistische snacks beschikbaar** corresponds
- with diet:vegan
- =no
-### friture-oil
+
+
+
+ - **Er zijn veganistische snacks aanwezig** corresponds with diet:vegan=yes
+ - **Slechts enkele veganistische snacks** corresponds with diet:vegan=limited
+ - **Geen veganistische snacks beschikbaar** corresponds with diet:vegan=no
+
+
+
+
+### friture-oil
+
+
The question is **Bakt deze frituur met dierlijk vet of met plantaardige olie?**
-- **Plantaardige olie** corresponds with
- friture:oil=
- vegetable
-- **Dierlijk vet** corresponds with
- friture:oil=animal
-### friture-take-your-container
-The question is **If you bring your own container (such as a cooking pot and small pots), is it used to package your
-order? **
-- **You can bring your own containers to get your order, saving on single-use packaging material and thus waste**
- corresponds with
- reusable_packaging:accept
- =yes
-- **Bringing your own container is not allowed** corresponds
- with reusable_packaging:
- accept=no
-- **You must bring your own container to order here.** corresponds
- with reusable_packaging:
- accept=only
-### service:electricity
+ - **Plantaardige olie** corresponds with friture:oil=vegetable
+ - **Dierlijk vet** corresponds with friture:oil=animal
+
+
+
+
+### friture-take-your-container
+
+
+
+The question is **If you bring your own container (such as a cooking pot and small pots), is it used to package your order? **
+
+
+
+
+
+ - **You can bring your own containers to get your order, saving on single-use packaging material and thus waste** corresponds with reusable_packaging:accept=yes
+ - **Bringing your own container is not allowed** corresponds with reusable_packaging:accept=no
+ - **You must bring your own container to order here.** corresponds with reusable_packaging:accept=only
+
+
+
+
+### service:electricity
+
+
The question is **Does this amenity have electrical outlets, available to customers when they are inside?**
-- **There are plenty of domestic sockets available to customers seated indoors, where they can charge their
- electronics** corresponds with
- service:electricity=
- yes
-- **There are a few domestic sockets available to customers seated indoors, where they can charge their electronics**
- corresponds with service:
- electricity=
- limited
-- **There are no sockets available indoors to customers, but charging might be possible if the staff is asked**
- corresponds with service:
- electricity=ask
-- **There are a no domestic sockets available to customers seated indoors** corresponds
- with service:electricity
- =no
-### dog-access
+
+
+
+ - **There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics** corresponds with service:electricity=yes
+ - **There are a few domestic sockets available to customers seated indoors, where they can charge their electronics** corresponds with service:electricity=limited
+ - **There are no sockets available indoors to customers, but charging might be possible if the staff is asked** corresponds with service:electricity=ask
+ - **There are a no domestic sockets available to customers seated indoors** corresponds with service:electricity=no
+
+
+
+
+### dog-access
+
+
The question is **Are dogs allowed in this business?**
-- **Dogs are allowed** corresponds with dog
- =yes
-- **Dogs are not allowed** corresponds
- with dog
- =no
-- **Dogs are allowed, but they have to be leashed** corresponds
- with dog
- =leashed
-- **Dogs are allowed and can run around freely** corresponds
- with dog
- =unleashed
-### reviews
+
+
+
+ - **Dogs are allowed** corresponds with dog=yes
+ - **Dogs are not allowed** corresponds with dog=no
+ - **Dogs are allowed, but they have to be leashed** corresponds with dog=leashed
+ - **Dogs are allowed and can run around freely** corresponds with dog=unleashed
+
+
+
+
+### reviews
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/food/food.json
\ No newline at end of file
diff --git a/Docs/Layers/ghost_bike.md b/Docs/Layers/ghost_bike.md
index c86cbb782..9c786a270 100644
--- a/Docs/Layers/ghost_bike.md
+++ b/Docs/Layers/ghost_bike.md
@@ -1,4 +1,6 @@
-ghost_bike
+
+
+ ghost_bike
============
@@ -7,13 +9,15 @@ ghost_bike
A layer showing memorials for cyclists, killed in road accidents
+
+
+
## Table of contents
1. [ghost_bike](#ghost_bike)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [ghost-bike-explanation](#ghost-bike-explanation)
+ [images](#images)
+ [ghost_bike-name](#ghost_bike-name)
@@ -21,78 +25,127 @@ A layer showing memorials for cyclists, killed in road accidents
+ [ghost_bike-inscription](#ghost_bike-inscription)
+ [ghost_bike-start_date](#ghost_bike-start_date)
-#### Themes using this layer
-- [ghostbikes](https://mapcomplete.osm.be/ghostbikes)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [ghostbikes](https://mapcomplete.osm.be/ghostbikes)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/ghost_bike/ghost_bike.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- memorial
- =ghost_bike
-Supported attributes
+
+ - memorial=ghost_bike
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
-[](https://taginfo.openstreetmap.org/keys/source#values) [source](https://wiki.openstreetmap.org/wiki/Key:source) | [url](../SpecialInputElements.md#url) |
-[](https://taginfo.openstreetmap.org/keys/inscription#values) [inscription](https://wiki.openstreetmap.org/wiki/Key:inscription) | [string](../SpecialInputElements.md#string) |
-[](https://taginfo.openstreetmap.org/keys/start_date#values) [start_date](https://wiki.openstreetmap.org/wiki/Key:start_date) | [date](../SpecialInputElements.md#date) |
+[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/source#values) [source](https://wiki.openstreetmap.org/wiki/Key:source) | [url](../SpecialInputElements.md#url) |
+[](https://taginfo.openstreetmap.org/keys/inscription#values) [inscription](https://wiki.openstreetmap.org/wiki/Key:inscription) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/start_date#values) [start_date](https://wiki.openstreetmap.org/wiki/Key:start_date) | [date](../SpecialInputElements.md#date) |
+
+
+
+
+### ghost-bike-explanation
+
-### ghost-bike-explanation
_This tagrendering has no question and is thus read-only_
-### images
+
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### ghost_bike-name
-The question is **Whom is remembered by this ghost bike? Please respect privacy -
-only fill out the name if it is widely published or marked on the cycle. Opt to leave out the family name.**
-This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
+
+
+### ghost_bike-name
+
+
+
+The question is **Whom is remembered by this ghost bike? Please respect privacy - only fill out the name if it is widely published or marked on the cycle. Opt to leave out the family name.**
+
+This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with `In remembrance of {name}`
-- **No name is marked on the bike** corresponds
- with noname
- =yes
-### ghost_bike-source
+
+ - **No name is marked on the bike** corresponds with noname=yes
+
+
+
+
+### ghost_bike-source
+
+
The question is **On what webpage can one find more information about the Ghost bike or the accident?**
-This rendering asks information about the property [source](https://wiki.openstreetmap.org/wiki/Key:source)
+This rendering asks information about the property [source](https://wiki.openstreetmap.org/wiki/Key:source)
This is rendered with `More information is available`
-### ghost_bike-inscription
+
+
+### ghost_bike-inscription
+
+
The question is **What is the inscription on this Ghost bike?**
-This rendering asks information about the property [inscription](https://wiki.openstreetmap.org/wiki/Key:inscription)
+This rendering asks information about the property [inscription](https://wiki.openstreetmap.org/wiki/Key:inscription)
This is rendered with `{inscription}`
-### ghost_bike-start_date
+
+
+### ghost_bike-start_date
+
+
The question is **When was this Ghost bike installed?**
-This rendering asks information about the property [start_date](https://wiki.openstreetmap.org/wiki/Key:start_date)
-This is rendered with `Placed on {start_date}`
+This rendering asks information about the property [start_date](https://wiki.openstreetmap.org/wiki/Key:start_date)
+This is rendered with `Placed on {start_date}`
This document is autogenerated from assets/layers/ghost_bike/ghost_bike.json
\ No newline at end of file
diff --git a/Docs/Layers/grass_in_parks.md b/Docs/Layers/grass_in_parks.md
index 682410e02..19e05058c 100644
--- a/Docs/Layers/grass_in_parks.md
+++ b/Docs/Layers/grass_in_parks.md
@@ -1,4 +1,6 @@
-grass_in_parks
+
+
+ grass_in_parks
================
@@ -7,49 +9,76 @@ grass_in_parks
Searches for all accessible grass patches within public parks - these are 'groenzones'"
+
+
+
## Table of contents
1. [grass_in_parks](#grass_in_parks)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [explanation](#explanation)
+ [grass-in-parks-reviews](#grass-in-parks-reviews)
+
+
+
+
+
+
+
[Go to the source code](../assets/layers/grass_in_parks/grass_in_parks.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- name
- =Park Oude God
- |landuse
- =grass
- &access
- =public
- |access
- =yes
-Supported attributes
+
+ - name=Park Oude God|landuse=grass&access=public|access=yes
+
+
+
+
+ Supported attributes
----------------------
-### images
+
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### explanation
+
+
+
+
+### explanation
+
+
_This tagrendering has no question and is thus read-only_
-### grass-in-parks-reviews
+
+
+
+
+### grass-in-parks-reviews
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/grass_in_parks/grass_in_parks.json
\ No newline at end of file
diff --git a/Docs/Layers/hydrant.md b/Docs/Layers/hydrant.md
index 281c44120..30dbca1e9 100644
--- a/Docs/Layers/hydrant.md
+++ b/Docs/Layers/hydrant.md
@@ -1,4 +1,6 @@
-hydrant
+
+
+ hydrant
=========
@@ -7,103 +9,136 @@ hydrant
Map layer to show fire hydrants.
+
+
+
## Table of contents
1. [hydrant](#hydrant)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [hydrant-color](#hydrant-color)
+ [hydrant-type](#hydrant-type)
+ [hydrant-state](#hydrant-state)
+ [images](#images)
-#### Themes using this layer
-- [hailhydrant](https://mapcomplete.osm.be/hailhydrant)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [hailhydrant](https://mapcomplete.osm.be/hailhydrant)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/hydrant/hydrant.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- emergency
- =fire_hydrant
-Supported attributes
+
+ - emergency=fire_hydrant
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/colour#values) [colour](https://wiki.openstreetmap.org/wiki/Key:colour) | [string](../SpecialInputElements.md#string) | [yellow](https://wiki.openstreetmap.org/wiki/Tag:colour%3Dyellow) [red](https://wiki.openstreetmap.org/wiki/Tag:colour%3Dred)
[](https://taginfo.openstreetmap.org/keys/fire_hydrant:type#values) [fire_hydrant:type](https://wiki.openstreetmap.org/wiki/Key:fire_hydrant:type) | [string](../SpecialInputElements.md#string) | [pillar](https://wiki.openstreetmap.org/wiki/Tag:fire_hydrant:type%3Dpillar) [pipe](https://wiki.openstreetmap.org/wiki/Tag:fire_hydrant:type%3Dpipe) [wall](https://wiki.openstreetmap.org/wiki/Tag:fire_hydrant:type%3Dwall) [underground](https://wiki.openstreetmap.org/wiki/Tag:fire_hydrant:type%3Dunderground)
[](https://taginfo.openstreetmap.org/keys/emergency#values) [emergency](https://wiki.openstreetmap.org/wiki/Key:emergency) | Multiple choice | [fire_hydrant](https://wiki.openstreetmap.org/wiki/Tag:emergency%3Dfire_hydrant) [](https://wiki.openstreetmap.org/wiki/Tag:emergency%3D) [](https://wiki.openstreetmap.org/wiki/Tag:emergency%3D)
-### hydrant-color
+
+
+
+### hydrant-color
+
+
The question is **What color is the hydrant?**
-This rendering asks information about the property [colour](https://wiki.openstreetmap.org/wiki/Key:colour)
+This rendering asks information about the property [colour](https://wiki.openstreetmap.org/wiki/Key:colour)
This is rendered with `The hydrant color is {colour}`
-- **The hydrant color is unknown.** corresponds with _This option cannot be chosen as answer_
-- **The hydrant color is yellow.** corresponds
- with colour
- =yellow
-- **The hydrant color is red.** corresponds
- with colour
- =red
-### hydrant-type
+
+ - **The hydrant color is unknown.** corresponds with _This option cannot be chosen as answer_
+ - **The hydrant color is yellow.** corresponds with colour=yellow
+ - **The hydrant color is red.** corresponds with colour=red
+
+
+
+
+### hydrant-type
+
+
The question is **What type of hydrant is it?**
-This rendering asks information about the
-property [fire_hydrant:type](https://wiki.openstreetmap.org/wiki/Key:fire_hydrant:type)
+This rendering asks information about the property [fire_hydrant:type](https://wiki.openstreetmap.org/wiki/Key:fire_hydrant:type)
This is rendered with ` Hydrant type: {fire_hydrant:type}`
-- **The hydrant type is unknown.** corresponds with _This option cannot be chosen as answer_
-- ** Pillar type.** corresponds
- with fire_hydrant:type
- =pillar
-- ** Pipe type.** corresponds
- with fire_hydrant:type
- =pipe
-- ** Wall type.** corresponds
- with fire_hydrant:type
- =wall
-- ** Underground type.** corresponds
- with fire_hydrant:type
- =underground
-### hydrant-state
+
+ - **The hydrant type is unknown.** corresponds with _This option cannot be chosen as answer_
+ - ** Pillar type.** corresponds with fire_hydrant:type=pillar
+ - ** Pipe type.** corresponds with fire_hydrant:type=pipe
+ - ** Wall type.** corresponds with fire_hydrant:type=wall
+ - ** Underground type.** corresponds with fire_hydrant:type=underground
+
+
+
+
+### hydrant-state
+
+
The question is **Is this hydrant still working?**
-- **The hydrant is (fully or partially) working** corresponds
- with emergency
- =fire_hydrant
-- **The hydrant is unavailable** corresponds
- with disused:emergency
- =fire_hydrant
-- **The hydrant has been removed** corresponds
- with removed:emergency
- =fire_hydrant
-### images
+
+
+
+ - **The hydrant is (fully or partially) working** corresponds with emergency=fire_hydrant
+ - **The hydrant is unavailable** corresponds with disused:emergency=fire_hydrant
+ - **The hydrant has been removed** corresponds with removed:emergency=fire_hydrant
+
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/hydrant/hydrant.json
\ No newline at end of file
diff --git a/Docs/Layers/information_board.md b/Docs/Layers/information_board.md
index 19e2fa124..081894604 100644
--- a/Docs/Layers/information_board.md
+++ b/Docs/Layers/information_board.md
@@ -1,46 +1,75 @@
-information_board
+
+
+ information_board
===================
-A layer showing touristical, road side information boards (e.g. giving information about the landscape, a building, a
-feature, a map, ...)
+A layer showing touristical, road side information boards (e.g. giving information about the landscape, a building, a feature, a map, ...)
+
+
+
## Table of contents
1. [information_board](#information_board)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
-#### Themes using this layer
-- [nature](https://mapcomplete.osm.be/nature)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [nature](https://mapcomplete.osm.be/nature)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/information_board/information_board.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- information
- =board
-Supported attributes
+
+ - information=board
+
+
+
+
+ Supported attributes
----------------------
-### images
+
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/information_board/information_board.json
\ No newline at end of file
diff --git a/Docs/Layers/map.md b/Docs/Layers/map.md
index c59177385..3330d65bb 100644
--- a/Docs/Layers/map.md
+++ b/Docs/Layers/map.md
@@ -1,4 +1,6 @@
-map
+
+
+ map
=====
@@ -7,88 +9,115 @@ map
A map, meant for tourists which is permanently installed in the public space
+
+
+
## Table of contents
1. [map](#map)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [map-map_source](#map-map_source)
+ [map-attribution](#map-attribution)
-#### Themes using this layer
-- [maps](https://mapcomplete.osm.be/maps)
-- [nature](https://mapcomplete.osm.be/nature)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [maps](https://mapcomplete.osm.be/maps)
+ - [nature](https://mapcomplete.osm.be/nature)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/map/map.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- tourism
- =map
- |information
- =map
-Supported attributes
+
+ - tourism=map|information=map
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/map_source#values) [map_source](https://wiki.openstreetmap.org/wiki/Key:map_source) | [string](../SpecialInputElements.md#string) | [OpenStreetMap](https://wiki.openstreetmap.org/wiki/Tag:map_source%3DOpenStreetMap)
[](https://taginfo.openstreetmap.org/keys/map_source:attribution#values) [map_source:attribution](https://wiki.openstreetmap.org/wiki/Key:map_source:attribution) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:map_source:attribution%3Dyes) [incomplete](https://wiki.openstreetmap.org/wiki/Tag:map_source:attribution%3Dincomplete) [sticker](https://wiki.openstreetmap.org/wiki/Tag:map_source:attribution%3Dsticker) [none](https://wiki.openstreetmap.org/wiki/Tag:map_source:attribution%3Dnone)
-### images
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### map-map_source
+
+
+
+
+### map-map_source
+
+
The question is **On which data is this map based?**
-This rendering asks information about the property [map_source](https://wiki.openstreetmap.org/wiki/Key:map_source)
+This rendering asks information about the property [map_source](https://wiki.openstreetmap.org/wiki/Key:map_source)
This is rendered with `This map is based on {map_source}`
-- **This map is based on OpenStreetMap** corresponds
- with map_source
- =OpenStreetMap
-### map-attribution
+
+ - **This map is based on OpenStreetMap** corresponds with map_source=OpenStreetMap
+
+
+
+
+### map-attribution
+
+
The question is **Is the OpenStreetMap-attribution given?**
-- **OpenStreetMap is clearly attributed, including the ODBL-license** corresponds
- with map_source:
- attribution=yes
-- **OpenStreetMap is clearly attributed, but the license is not mentioned** corresponds
- with map_source:
- attribution=
- incomplete
-- **OpenStreetMap wasn't mentioned, but someone put an OpenStreetMap-sticker on it** corresponds
- with map_source:
- attribution=
- sticker
-- **There is no attribution at all** corresponds
- with map_source:
- attribution=
- none
-- **There is no attribution at all** corresponds
- with map_source:
- attribution=no_
- This option cannot be chosen as answer_
+
+
+
+
+ - **OpenStreetMap is clearly attributed, including the ODBL-license** corresponds with map_source:attribution=yes
+ - **OpenStreetMap is clearly attributed, but the license is not mentioned** corresponds with map_source:attribution=incomplete
+ - **OpenStreetMap wasn't mentioned, but someone put an OpenStreetMap-sticker on it** corresponds with map_source:attribution=sticker
+ - **There is no attribution at all** corresponds with map_source:attribution=none
+ - **There is no attribution at all** corresponds with map_source:attribution=no_This option cannot be chosen as answer_
+
This document is autogenerated from assets/layers/map/map.json
\ No newline at end of file
diff --git a/Docs/Layers/named_streets.md b/Docs/Layers/named_streets.md
index a5e5a7b76..bbbb93ba2 100644
--- a/Docs/Layers/named_streets.md
+++ b/Docs/Layers/named_streets.md
@@ -1,4 +1,6 @@
-named_streets
+
+
+ named_streets
===============
@@ -7,41 +9,49 @@ named_streets
Hidden layer with all streets which have a name. Useful to detect addresses
+
+
+
## Table of contents
1. [named_streets](#named_streets)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
-- This layer is not visible by default and must be enabled in the filter by the user.
-- This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this
- toggleable.
-- This layer is not visible by default and the visibility cannot be toggled, effectively resulting in a fully hidden
- layer. This can be useful, e.g. to calculate some metatags. If you want to render this layer (e.g. for debugging),
- enable it by setting the URL-parameter layer-=true
-- Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
-- Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
-- This layer is needed as dependency for layer [address](#address)
+
+
+
+ - This layer is not visible by default and must be enabled in the filter by the user.
+ - This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable.
+ - This layer is not visible by default and the visibility cannot be toggled, effectively resulting in a fully hidden layer. This can be useful, e.g. to calculate some metatags. If you want to render this layer (e.g. for debugging), enable it by setting the URL-parameter layer-=true
+ - Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
+ - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
+ - This layer is needed as dependency for layer [address](#address)
+
[Go to the source code](../assets/layers/named_streets/named_streets.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- highway~^..*$
-- name~^..*$
-Supported attributes
+
+ - highway~^..*$
+ - name~^..*$
+
+
+
+
+ Supported attributes
----------------------
-
+
This document is autogenerated from assets/layers/named_streets/named_streets.json
\ No newline at end of file
diff --git a/Docs/Layers/nature_reserve.md b/Docs/Layers/nature_reserve.md
index ea46aac32..50481bb1d 100644
--- a/Docs/Layers/nature_reserve.md
+++ b/Docs/Layers/nature_reserve.md
@@ -1,20 +1,23 @@
-nature_reserve
+
+
+ nature_reserve
================
-Een natuurgebied is een gebied waar actief ruimte gemaakt word voor de natuur. Typisch zijn deze in beheer van
-Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid.
+Een natuurgebied is een gebied waar actief ruimte gemaakt word voor de natuur. Typisch zijn deze in beheer van Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid.
+
+
+
## Table of contents
1. [nature_reserve](#nature_reserve)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [Access tag](#access-tag)
+ [Operator tag](#operator-tag)
@@ -30,185 +33,251 @@ Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid.
+ [Surface area](#surface-area)
+ [wikipedia](#wikipedia)
-#### Themes using this layer
-- [nature](https://mapcomplete.osm.be/nature)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [nature](https://mapcomplete.osm.be/nature)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/nature_reserve/nature_reserve.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- leisure
- =nature_reserve
- |protect_class!~^98$&boundary
- =protected_area
-Supported attributes
+
+ - leisure=nature_reserve|protect_class!~^98$&boundary=protected_area
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/access:description#values) [access:description](https://wiki.openstreetmap.org/wiki/Key:access:description) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/access:description#values) [access:description](https://wiki.openstreetmap.org/wiki/Key:access:description) | [string](../SpecialInputElements.md#string) |
[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) | [Natuurpunt](https://wiki.openstreetmap.org/wiki/Tag:operator%3DNatuurpunt) [Agentschap Natuur en Bos](https://wiki.openstreetmap.org/wiki/Tag:operator%3DAgentschap Natuur en Bos)
-[](https://taginfo.openstreetmap.org/keys/name:nl#values) [name:nl](https://wiki.openstreetmap.org/wiki/Key:name:nl) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/name:nl#values) [name:nl](https://wiki.openstreetmap.org/wiki/Key:name:nl) | [string](../SpecialInputElements.md#string) |
[](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)
[](https://taginfo.openstreetmap.org/keys/dog#values) [dog](https://wiki.openstreetmap.org/wiki/Key:dog) | Multiple choice | [leashed](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dleashed) [no](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dno) [yes](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dyes)
-[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
-[](https://taginfo.openstreetmap.org/keys/curator#values) [curator](https://wiki.openstreetmap.org/wiki/Key:curator) | [string](../SpecialInputElements.md#string) |
-[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
-[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
-[](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [string](../SpecialInputElements.md#string) |
-[](https://taginfo.openstreetmap.org/keys/description:0#values) [description:0](https://wiki.openstreetmap.org/wiki/Key:description:0) | [string](../SpecialInputElements.md#string) |
-[](https://taginfo.openstreetmap.org/keys/wikidata#values) [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata) | [wikidata](../SpecialInputElements.md#wikidata) |
+[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
+[](https://taginfo.openstreetmap.org/keys/curator#values) [curator](https://wiki.openstreetmap.org/wiki/Key:curator) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
+[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
+[](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/description:0#values) [description:0](https://wiki.openstreetmap.org/wiki/Key:description:0) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/wikidata#values) [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata) | [wikidata](../SpecialInputElements.md#wikidata) |
+
+
+
+
+### images
+
-### images
_This tagrendering has no question and is thus read-only_
-### Access tag
+
+
+
+
+### Access tag
+
+
The question is **Is dit gebied toegankelijk?**
-This rendering asks information about the
-property [access:description](https://wiki.openstreetmap.org/wiki/Key:access:description)
+This rendering asks information about the property [access:description](https://wiki.openstreetmap.org/wiki/Key:access:description)
This is rendered with `De toegankelijkheid van dit gebied is: {access:description}`
-- **Vrij toegankelijk** corresponds with
- access=yes
-- **Niet toegankelijk** corresponds with
- access=no
-- **Niet toegankelijk, want privégebied** corresponds
- with access
- =private
-- **Toegankelijk, ondanks dat het privegebied is** corresponds
- with access
- =permissive
-- **Enkel toegankelijk met een gids of tijdens een activiteit** corresponds
- with access
- =guided
-- **Toegankelijk mits betaling** corresponds
- with access
- =yes
- &fee
- =yes
-### Operator tag
+
+ - **Vrij toegankelijk** corresponds with access=yes
+ - **Niet toegankelijk** corresponds with access=no
+ - **Niet toegankelijk, want privégebied** corresponds with access=private
+ - **Toegankelijk, ondanks dat het privegebied is** corresponds with access=permissive
+ - **Enkel toegankelijk met een gids of tijdens een activiteit** corresponds with access=guided
+ - **Toegankelijk mits betaling** corresponds with access=yes&fee=yes
+
+
+
+
+### Operator tag
+
+
The question is **Wie beheert dit gebied?**
-This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
+This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
This is rendered with `Beheer door {operator}`
-- **Dit gebied wordt beheerd door Natuurpunt** corresponds
- with operator
- =Natuurpunt
-- **Dit gebied wordt beheerd door {operator}** corresponds with operator~^(n|N)atuurpunt.*$_This option cannot be chosen
- as answer_
-- **Dit gebied wordt beheerd door het Agentschap Natuur en Bos** corresponds
- with operator
- =Agentschap
- Natuur en Bos
-### Name:nl-tag
+
+ - **Dit gebied wordt beheerd door Natuurpunt** corresponds with operator=Natuurpunt
+ - **Dit gebied wordt beheerd door {operator}** corresponds with operator~^(n|N)atuurpunt.*$_This option cannot be chosen as answer_
+ - **Dit gebied wordt beheerd door het Agentschap Natuur en Bos** corresponds with operator=Agentschap Natuur en Bos
+
+
+
+
+### Name:nl-tag
+
+
The question is **Wat is de Nederlandstalige naam van dit gebied?**
-This rendering asks information about the property [name:nl](https://wiki.openstreetmap.org/wiki/Key:name:nl)
+This rendering asks information about the property [name:nl](https://wiki.openstreetmap.org/wiki/Key:name:nl)
This is rendered with `Dit gebied heet {name:nl}`
-### Name tag
+
+
+### Name tag
+
+
The question is **Wat is de naam van dit gebied?**
-This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
+This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with `Dit gebied heet {name}`
-- **Dit gebied heeft geen naam** corresponds
- with noname
- =yes
-### Dogs?
+
+ - **Dit gebied heeft geen naam** corresponds with noname=yes
+
+
+
+
+### Dogs?
+
+
The question is **Are dogs allowed in this nature reserve?**
-- **Dogs have to be leashed** corresponds with
- dog=leashed
-- **No dogs allowed** corresponds with dog
- =no
-- **Dogs are allowed to roam freely** corresponds
- with dog
- =yes
-### Website
+
+
+
+ - **Dogs have to be leashed** corresponds with dog=leashed
+ - **No dogs allowed** corresponds with dog=no
+ - **Dogs are allowed to roam freely** corresponds with dog=yes
+
+
+
+
+### Website
+
+
The question is **On which webpage can one find more information about this nature reserve?**
-This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
+This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
This is rendered with `{website}`
-### Curator
-The question is **Whom is the curator of this nature reserve? Respect privacy - only fill out a
-name if this is widely published**
-This rendering asks information about the property [curator](https://wiki.openstreetmap.org/wiki/Key:curator)
+### Curator
+
+
+
+The question is **Whom is the curator of this nature reserve? Respect privacy - only fill out a name if this is widely published**
+
+This rendering asks information about the property [curator](https://wiki.openstreetmap.org/wiki/Key:curator)
This is rendered with `{curator} is the curator of this nature reserve`
-### Email
-The question is **What email adress can one send to with questions and problems with this nature
-reserve? Respect privacy - only fill out a personal email address if this is widely published**
-This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
+### Email
+
+
+
+The question is **What email adress can one send to with questions and problems with this nature reserve? Respect privacy - only fill out a personal email address if this is widely published**
+
+This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
This is rendered with `{email}`
-### phone
-The question is **What phone number can one call to with questions and problems with this nature
-reserve? Respect privacy - only fill out a personal phone number address if this is widely
-published**
-This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
+### phone
+
+
+
+The question is **What phone number can one call to with questions and problems with this nature reserve? Respect privacy - only fill out a personal phone number address if this is widely published**
+
+This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
This is rendered with `{phone}`
-### Non-editable description
+
+
+### Non-editable description
+
+
_This tagrendering has no question and is thus read-only_
-This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description)
+This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description)
This is rendered with `Extra info: {description}`
-### Editable description
+
+
+### Editable description
+
+
The question is **Is er extra info die je kwijt wil?**
-This rendering asks information about the
-property [description:0](https://wiki.openstreetmap.org/wiki/Key:description:0)
+This rendering asks information about the property [description:0](https://wiki.openstreetmap.org/wiki/Key:description:0)
This is rendered with `Extra info: {description:0}`
-### Surface area
+
+
+### Surface area
+
+
_This tagrendering has no question and is thus read-only_
-### wikipedia
+
+
+
+
+### wikipedia
+
+
The question is **What is the corresponding Wikidata entity?**
-This rendering asks information about the property [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata)
+This rendering asks information about the property [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata)
This is rendered with `{wikipedia():max-height:25rem}`
-- **No Wikipedia page has been linked yet** corresponds with _This option cannot be chosen as answer_
+
+
+ - **No Wikipedia page has been linked yet** corresponds with _This option cannot be chosen as answer_
+
This document is autogenerated from assets/layers/nature_reserve/nature_reserve.json
\ No newline at end of file
diff --git a/Docs/Layers/note_import.md b/Docs/Layers/note_import.md
index 563557e86..7147f18fc 100644
--- a/Docs/Layers/note_import.md
+++ b/Docs/Layers/note_import.md
@@ -1,18 +1,22 @@
-note_import
+
+
+ note_import
=============
-
+
Template for note note imports.
+
+
+
## Table of contents
1. [note_import](#note_import)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [conversation](#conversation)
+ [Intro](#intro)
+ [import](#import)
@@ -22,52 +26,104 @@ Template for note note imports.
+ [add_image](#add_image)
-- This layer is loaded from an external source, namely `https://api.openstreetmap.org/api/0.6/notes.json?closed=0&bbox={x_min},{y_min},{x_max},{y_max}`
-- This layer will automatically load [public_bookcase](./public_bookcase.md) into the layout as it depends on it: a
- tagrendering needs this layer (import)
+
+
+
+ - This layer is loaded from an external source, namely `https://api.openstreetmap.org/api/0.6/notes.json?closed=0&bbox={x_min},{y_min},{x_max},{y_max}`
+ - This layer will automatically load [public_bookcase](./public_bookcase.md) into the layout as it depends on it: a tagrendering needs this layer (import)
+
[Go to the source code](../assets/layers/note_import/note_import.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- id~^..*$
-Supported attributes
+
+ - id~^..*$
+
+
+
+
+ Supported attributes
----------------------
-### conversation
+
+
+
+
+### conversation
+
+
_This tagrendering has no question and is thus read-only_
-### Intro
+
+
+
+
+### Intro
+
+
_This tagrendering has no question and is thus read-only_
-### import
+
+
+
+
+### import
+
+
_This tagrendering has no question and is thus read-only_
-### close_note_
+
+
+
+
+### close_note_
+
+
_This tagrendering has no question and is thus read-only_
-### close_note_mapped
+
+
+
+
+### close_note_mapped
+
+
_This tagrendering has no question and is thus read-only_
-### comment
+
+
+
+
+### comment
+
+
_This tagrendering has no question and is thus read-only_
-### add_image
+
+
+
+
+### add_image
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/note_import/note_import.json
\ No newline at end of file
diff --git a/Docs/Layers/observation_tower.md b/Docs/Layers/observation_tower.md
index 4e1e2c596..9807c9ad7 100644
--- a/Docs/Layers/observation_tower.md
+++ b/Docs/Layers/observation_tower.md
@@ -1,175 +1,267 @@
-observation_tower
+
+
+ observation_tower
===================
-
+
Towers with a panoramic view
+
+
+
## Table of contents
1. [observation_tower](#observation_tower)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [name](#name)
+ [Height](#height)
- + [Operator](#operator)
- + [website](#website)
+ + [access](#access)
+ [Fee](#fee)
+ [payment-options](#payment-options)
+ + [website](#website)
+ [step_count](#step_count)
+ [elevator](#elevator)
+ + [Operator](#operator)
+ [wheelchair-access](#wheelchair-access)
+ [wikipedia](#wikipedia)
-#### Themes using this layer
-- [observation_towers](https://mapcomplete.osm.be/observation_towers)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [observation_towers](https://mapcomplete.osm.be/observation_towers)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/observation_tower/observation_tower.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- tower:type
- =observation
-Supported attributes
+
+ - tower:type=observation
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
-[](https://taginfo.openstreetmap.org/keys/height#values) [height](https://wiki.openstreetmap.org/wiki/Key:height) | [pfloat](../SpecialInputElements.md#pfloat) |
-[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) |
-[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
+[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/height#values) [height](https://wiki.openstreetmap.org/wiki/Key:height) | [pfloat](../SpecialInputElements.md#pfloat) |
+[](https://taginfo.openstreetmap.org/keys/access#values) [access](https://wiki.openstreetmap.org/wiki/Key:access) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:access%3Dyes) [guided](https://wiki.openstreetmap.org/wiki/Tag:access%3Dguided)
[](https://taginfo.openstreetmap.org/keys/charge#values) [charge](https://wiki.openstreetmap.org/wiki/Key:charge) | [string](../SpecialInputElements.md#string) | [](https://wiki.openstreetmap.org/wiki/Tag:charge%3D)
-[](https://taginfo.openstreetmap.org/keys/step_count#values) [step_count](https://wiki.openstreetmap.org/wiki/Key:step_count) | [pnat](../SpecialInputElements.md#pnat) |
+[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
+[](https://taginfo.openstreetmap.org/keys/step_count#values) [step_count](https://wiki.openstreetmap.org/wiki/Key:step_count) | [pnat](../SpecialInputElements.md#pnat) |
[](https://taginfo.openstreetmap.org/keys/elevator#values) [elevator](https://wiki.openstreetmap.org/wiki/Key:elevator) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:elevator%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:elevator%3Dno)
+[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) |
[](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)
-[](https://taginfo.openstreetmap.org/keys/wikidata#values) [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata) | [wikidata](../SpecialInputElements.md#wikidata) |
+[](https://taginfo.openstreetmap.org/keys/wikidata#values) [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata) | [wikidata](../SpecialInputElements.md#wikidata) |
+
+
+
+
+### images
+
-### images
_This tagrendering has no question and is thus read-only_
-### name
+
+
+
+
+### name
+
+
The question is **What is the name of this tower?**
-This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
+This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with `This tower is called {name}`
-- **This tower doesn't have a specific name** corresponds
- with noname
- =yes
-### Height
+
+ - **This tower doesn't have a specific name** corresponds with noname=yes
+
+
+
+
+### Height
+
+
The question is **What is the height of this tower?**
-This rendering asks information about the property [height](https://wiki.openstreetmap.org/wiki/Key:height)
+This rendering asks information about the property [height](https://wiki.openstreetmap.org/wiki/Key:height)
This is rendered with `This tower is {height} high`
-### Operator
-The question is **Who maintains this tower?**
-This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
-This is rendered with `Maintained by {operator}`
+### access
-### website
-The question is **What is the website of {name}?**
-This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
-This is rendered with `{website}`
+The question is **Can this tower be visited?**
+
+
+
+
+
+ - **This tower is publicly accessible** corresponds with access=yes
+ - **This tower can only be visited with a guide** corresponds with access=guided
+
+
+
+
+### Fee
-- **{contact:website}** corresponds with contact:website~^..*$_This
- option cannot be chosen as answer_
-### Fee
The question is **How much does one have to pay to enter this tower?**
-This rendering asks information about the property [charge](https://wiki.openstreetmap.org/wiki/Key:charge)
+This rendering asks information about the property [charge](https://wiki.openstreetmap.org/wiki/Key:charge)
This is rendered with `Visiting this tower costs {charge}`
-- **Free to visit** corresponds with fee
- =no
-### payment-options
+
+ - **Free to visit** corresponds with fee=no
+
+
+
+
+### payment-options
+
+
The question is **Which methods of payment are accepted here?**
-- **Cash is accepted here** corresponds
- with payment:cash
- =yesUnselecting this answer
- will add payment:cash
- =no
-- **Payment cards are accepted here** corresponds
- with payment:cards
- =yesUnselecting this answer
- will add payment:cards
- =no
-### step_count
+
+
+
+ - **Cash is accepted here** corresponds with payment:cash=yesUnselecting this answer will add payment:cash=no
+ - **Payment cards are accepted here** corresponds with payment:cards=yesUnselecting this answer will add payment:cards=no
+
+
+
+
+### website
+
+
+
+The question is **What is the website of {name}?**
+
+This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
+This is rendered with `{website}`
+
+
+
+ - **{contact:website}** corresponds with contact:website~^..*$_This option cannot be chosen as answer_
+
+
+
+
+### step_count
+
+
The question is **How much individual steps does one have to climb to reach the top of this tower?**
-This rendering asks information about the property [step_count](https://wiki.openstreetmap.org/wiki/Key:step_count)
+This rendering asks information about the property [step_count](https://wiki.openstreetmap.org/wiki/Key:step_count)
This is rendered with `This tower has {step_count} steps to reach the top`
-### elevator
+
+
+### elevator
+
+
The question is **Does this tower have an elevator?**
-- **This tower has an elevator which takes visitors to the top** corresponds
- with elevator
- =yes
-- **This tower does not have an elevator** corresponds
- with elevator
- =no
-### wheelchair-access
+
+
+
+ - **This tower has an elevator which takes visitors to the top** corresponds with elevator=yes
+ - **This tower does not have an elevator** corresponds with elevator=no
+
+
+
+
+### Operator
+
+
+
+The question is **Who maintains this tower?**
+
+This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
+This is rendered with `Maintained by {operator}`
+
+
+
+### wheelchair-access
+
+
The question is **Is this place accessible with a wheelchair?**
-- **This place is specially adapted for wheelchair users** corresponds
- with wheelchair
- =designated
-- **This place is easily reachable with a wheelchair** corresponds
- with wheelchair
- =yes
-- **It is possible to reach this place in a wheelchair, but it is not easy** corresponds
- with wheelchair
- =limited
-- **This place is not reachable with a wheelchair** corresponds
- with wheelchair
- =no
-### wikipedia
+
+
+
+ - **This place is specially adapted for wheelchair users** corresponds with wheelchair=designated
+ - **This place is easily reachable with a wheelchair** corresponds with wheelchair=yes
+ - **It is possible to reach this place in a wheelchair, but it is not easy** corresponds with wheelchair=limited
+ - **This place is not reachable with a wheelchair** corresponds with wheelchair=no
+
+
+
+
+### wikipedia
+
+
The question is **What is the corresponding Wikidata entity?**
-This rendering asks information about the property [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata)
+This rendering asks information about the property [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata)
This is rendered with `{wikipedia():max-height:25rem}`
-- **No Wikipedia page has been linked yet** corresponds with _This option cannot be chosen as answer_
+
+
+ - **No Wikipedia page has been linked yet** corresponds with _This option cannot be chosen as answer_
+
This document is autogenerated from assets/layers/observation_tower/observation_tower.json
\ No newline at end of file
diff --git a/Docs/Layers/parking.md b/Docs/Layers/parking.md
index 34f295b0e..41e749c52 100644
--- a/Docs/Layers/parking.md
+++ b/Docs/Layers/parking.md
@@ -1,4 +1,6 @@
-parking
+
+
+ parking
=========
@@ -7,39 +9,67 @@ parking
A layer showing car parkings
+
+
+
## Table of contents
1. [parking](#parking)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
-#### Themes using this layer
-- [parkings](https://mapcomplete.osm.be/parkings)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [parkings](https://mapcomplete.osm.be/parkings)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/parking/parking.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- amenity
- =parking
-Supported attributes
+
+ - amenity=parking
+
+
+
+
+ Supported attributes
----------------------
-### images
+
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/parking/parking.json
\ No newline at end of file
diff --git a/Docs/Layers/pedestrian_path.md b/Docs/Layers/pedestrian_path.md
index 10300a0be..768f8cb1a 100644
--- a/Docs/Layers/pedestrian_path.md
+++ b/Docs/Layers/pedestrian_path.md
@@ -1,4 +1,6 @@
-pedestrian_path
+
+
+ pedestrian_path
=================
@@ -7,45 +9,56 @@ pedestrian_path
Pedestrian footpaths, especially used for indoor navigation and snapping entrances to this layer
+
+
+
## Table of contents
1. [pedestrian_path](#pedestrian_path)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
-- This layer is needed as dependency for layer [entrance](#entrance)
-#### Themes using this layer
-- [entrances](https://mapcomplete.osm.be/entrances)
-- [personal](https://mapcomplete.osm.be/personal)
+
+ - This layer is needed as dependency for layer [entrance](#entrance)
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [entrances](https://mapcomplete.osm.be/entrances)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/pedestrian_path/pedestrian_path.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- highway
- =footway
- |highway
- =path
- |highway
- =corridor
- |highway
- =steps
-Supported attributes
+
+ - highway=footway|highway=path|highway=corridor|highway=steps
+
+
+
+
+ Supported attributes
----------------------
-
+
This document is autogenerated from assets/layers/pedestrian_path/pedestrian_path.json
\ No newline at end of file
diff --git a/Docs/Layers/picnic_table.md b/Docs/Layers/picnic_table.md
index 0481ec8f6..55554a4f2 100644
--- a/Docs/Layers/picnic_table.md
+++ b/Docs/Layers/picnic_table.md
@@ -1,69 +1,103 @@
-picnic_table
+
+
+ picnic_table
==============
-
+
The layer showing picnic tables
+
+
+
## Table of contents
1. [picnic_table](#picnic_table)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [picnic_table-material](#picnic_table-material)
-#### Themes using this layer
-- [benches](https://mapcomplete.osm.be/benches)
-- [nature](https://mapcomplete.osm.be/nature)
-- [personal](https://mapcomplete.osm.be/personal)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [benches](https://mapcomplete.osm.be/benches)
+ - [nature](https://mapcomplete.osm.be/nature)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/picnic_table/picnic_table.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- leisure
- =picnic_table
-Supported attributes
+
+ - leisure=picnic_table
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/material#values) [material](https://wiki.openstreetmap.org/wiki/Key:material) | [string](../SpecialInputElements.md#string) | [wood](https://wiki.openstreetmap.org/wiki/Tag:material%3Dwood) [concrete](https://wiki.openstreetmap.org/wiki/Tag:material%3Dconcrete)
-### images
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### picnic_table-material
+
+
+
+
+### picnic_table-material
+
+
The question is **What material is this picnic table made of?**
-This rendering asks information about the property [material](https://wiki.openstreetmap.org/wiki/Key:material)
+This rendering asks information about the property [material](https://wiki.openstreetmap.org/wiki/Key:material)
This is rendered with `This picnic table is made of {material}`
-- **This is a wooden picnic table** corresponds
- with material
- =wood
-- **This is a concrete picnic table** corresponds
- with material
- =concrete
+
+
+ - **This is a wooden picnic table** corresponds with material=wood
+ - **This is a concrete picnic table** corresponds with material=concrete
+
This document is autogenerated from assets/layers/picnic_table/picnic_table.json
\ No newline at end of file
diff --git a/Docs/Layers/play_forest.md b/Docs/Layers/play_forest.md
index d782beb0b..bde5ec6ff 100644
--- a/Docs/Layers/play_forest.md
+++ b/Docs/Layers/play_forest.md
@@ -1,4 +1,6 @@
-play_forest
+
+
+ play_forest
=============
@@ -7,12 +9,14 @@ play_forest
Een speelbos is een vrij toegankelijke zone in een bos
+
+
+
## Table of contents
1. [play_forest](#play_forest)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [play_forest-operator](#play_forest-operator)
+ [play_forest-opening_hours](#play_forest-opening_hours)
@@ -21,84 +25,131 @@ Een speelbos is een vrij toegankelijke zone in een bos
+ [questions](#questions)
+ [play_forest-reviews](#play_forest-reviews)
+
+
+
+
+
+
+
[Go to the source code](../assets/layers/play_forest/play_forest.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- playground
- =forest
-Supported attributes
+
+ - playground=forest
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) | [Agenstchap Natuur en Bos](https://wiki.openstreetmap.org/wiki/Tag:operator%3DAgenstchap Natuur en Bos)
[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | Multiple choice | [08:00-22:00](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D08:00-22:00) [Jul-Aug 08:00-22:00](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3DJul-Aug 08:00-22:00)
-[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
-[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
+[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
+[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
+
+
+
+
+### images
+
-### images
_This tagrendering has no question and is thus read-only_
-### play_forest-operator
+
+
+
+
+### play_forest-operator
+
+
The question is **Wie beheert dit gebied?**
-This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
+This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
This is rendered with `Dit gebied wordt beheerd door {operator}`
-- **Dit gebied wordt beheerd door het Agentschap Natuur en Bos**
- corresponds with operator~^[aA][nN][bB]$_This option cannot be chosen as answer_
-- **Dit gebied wordt beheerd door het Agentschap Natuur en Bos**
- corresponds with operator
- =Agenstchap
- Natuur en Bos
-### play_forest-opening_hours
+
+ - **Dit gebied wordt beheerd door het Agentschap Natuur en Bos** corresponds with operator~^[aA][nN][bB]$_This option cannot be chosen as answer_
+ - **Dit gebied wordt beheerd door het Agentschap Natuur en Bos** corresponds with operator=Agenstchap Natuur en Bos
+
+
+
+
+### play_forest-opening_hours
+
+
The question is **Wanneer is deze speelzone toegankelijk?**
-- **Het hele jaar door overdag toegankelijk (van 08:00 tot 22:00)** corresponds
- with opening_hours
- =08:00-22:00
-- **Enkel in de zomervakantie en overdag toegankelijk (van 1 juli tot 31 augustus, van 08:00 tot 22:00**
- corresponds with opening_hours
- =Jul-Aug 08:
- 00-22:00
-### play_forest-email
+
+
+
+ - **Het hele jaar door overdag toegankelijk (van 08:00 tot 22:00)** corresponds with opening_hours=08:00-22:00
+ - **Enkel in de zomervakantie en overdag toegankelijk (van 1 juli tot 31 augustus, van 08:00 tot 22:00** corresponds with opening_hours=Jul-Aug 08:00-22:00
+
+
+
+
+### play_forest-email
+
+
The question is **Wie kan men emailen indien er problemen zijn met de speelzone?**
-This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
+This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
This is rendered with `De bevoegde dienst kan bereikt worden via {email}`
-### play_forest-phone
+
+
+### play_forest-phone
+
+
The question is **Wie kan men bellen indien er problemen zijn met de speelzone?**
-This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
+This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
This is rendered with `De bevoegde dienst kan getelefoneerd worden via {phone}`
-### questions
+
+
+### questions
+
+
_This tagrendering has no question and is thus read-only_
-### play_forest-reviews
+
+
+
+
+### play_forest-reviews
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/play_forest/play_forest.json
\ No newline at end of file
diff --git a/Docs/Layers/playground.md b/Docs/Layers/playground.md
index 6747f0413..3f9b497e3 100644
--- a/Docs/Layers/playground.md
+++ b/Docs/Layers/playground.md
@@ -1,4 +1,6 @@
-playground
+
+
+ playground
============
@@ -7,13 +9,15 @@ playground
Playgrounds
+
+
+
## Table of contents
1. [playground](#playground)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [playground-surface](#playground-surface)
+ [playground-lit](#playground-lit)
@@ -28,184 +32,241 @@ Playgrounds
+ [questions](#questions)
+ [playground-reviews](#playground-reviews)
-#### Themes using this layer
-- [personal](https://mapcomplete.osm.be/personal)
-- [playgrounds](https://mapcomplete.osm.be/playgrounds)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [personal](https://mapcomplete.osm.be/personal)
+ - [playgrounds](https://mapcomplete.osm.be/playgrounds)
+
[Go to the source code](../assets/layers/playground/playground.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- leisure
- =playground
-- playground!~^forest$
-Supported attributes
+
+ - leisure=playground
+ - playground!~^forest$
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/surface#values) [surface](https://wiki.openstreetmap.org/wiki/Key:surface) | [string](../SpecialInputElements.md#string) | [grass](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dgrass) [sand](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dsand) [woodchips](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dwoodchips) [paving_stones](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dpaving_stones) [asphalt](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dasphalt) [concrete](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dconcrete)
[](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)
-[](https://taginfo.openstreetmap.org/keys/min_age#values) [min_age](https://wiki.openstreetmap.org/wiki/Key:min_age) | [pnat](../SpecialInputElements.md#pnat) |
-[](https://taginfo.openstreetmap.org/keys/max_age#values) [max_age](https://wiki.openstreetmap.org/wiki/Key:max_age) | [pnat](../SpecialInputElements.md#pnat) |
-[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) |
-[](https://taginfo.openstreetmap.org/keys/access#values) [access](https://wiki.openstreetmap.org/wiki/Key:access) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:access%3Dyes) [customers](https://wiki.openstreetmap.org/wiki/Tag:access%3Dcustomers) [students](https://wiki.openstreetmap.org/wiki/Tag:access%3Dstudents) [private](https://wiki.openstreetmap.org/wiki/Tag:access%3Dprivate)
-[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
-[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
+[](https://taginfo.openstreetmap.org/keys/min_age#values) [min_age](https://wiki.openstreetmap.org/wiki/Key:min_age) | [pnat](../SpecialInputElements.md#pnat) |
+[](https://taginfo.openstreetmap.org/keys/max_age#values) [max_age](https://wiki.openstreetmap.org/wiki/Key:max_age) | [pnat](../SpecialInputElements.md#pnat) |
+[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/access#values) [access](https://wiki.openstreetmap.org/wiki/Key:access) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:access%3Dyes) [customers](https://wiki.openstreetmap.org/wiki/Tag:access%3Dcustomers) [private](https://wiki.openstreetmap.org/wiki/Tag:access%3Dprivate)
+[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
+[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
[](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) [limited](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno)
[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [sunrise-sunset](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3Dsunrise-sunset) [24/7](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7)
-### images
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### playground-surface
-The question is **Which is the surface of this playground? If there are multiple, select the most occuring
-one**
-This rendering asks information about the property [surface](https://wiki.openstreetmap.org/wiki/Key:surface)
+
+
+### playground-surface
+
+
+
+The question is **Which is the surface of this playground? If there are multiple, select the most occuring one**
+
+This rendering asks information about the property [surface](https://wiki.openstreetmap.org/wiki/Key:surface)
This is rendered with `The surface is {surface}`
-- **The surface is grass** corresponds
- with surface
- =grass
-- **The surface is sand** corresponds
- with surface
- =sand
-- **The surface consist of woodchips** corresponds
- with surface
- =woodchips
-- **The surface is paving stones** corresponds
- with surface
- =paving_stones
-- **The surface is asphalt** corresponds
- with surface
- =asphalt
-- **The surface is concrete** corresponds
- with surface
- =concrete
-- **The surface is unpaved** corresponds
- with surface
- =unpaved_This option cannot be
- chosen as answer_
-- **The surface is paved** corresponds
- with surface
- =paved_This option cannot be
- chosen as answer_
-### playground-lit
+
+ - **The surface is grass** corresponds with surface=grass
+ - **The surface is sand** corresponds with surface=sand
+ - **The surface consist of woodchips** corresponds with surface=woodchips
+ - **The surface is paving stones** corresponds with surface=paving_stones
+ - **The surface is asphalt** corresponds with surface=asphalt
+ - **The surface is concrete** corresponds with surface=concrete
+ - **The surface is unpaved** corresponds with surface=unpaved_This option cannot be chosen as answer_
+ - **The surface is paved** corresponds with surface=paved_This option cannot be chosen as answer_
+
+
+
+
+### playground-lit
+
+
The question is **Is this playground lit at night?**
-- **This playground is lit at night** corresponds
- with lit
- =yes
-- **This playground is not lit at night** corresponds
- with lit
- =no
-### playground-min_age
+
+
+
+ - **This playground is lit at night** corresponds with lit=yes
+ - **This playground is not lit at night** corresponds with lit=no
+
+
+
+
+### playground-min_age
+
+
The question is **What is the minimum age required to access this playground?**
-This rendering asks information about the property [min_age](https://wiki.openstreetmap.org/wiki/Key:min_age)
+This rendering asks information about the property [min_age](https://wiki.openstreetmap.org/wiki/Key:min_age)
This is rendered with `Accessible to kids older than {min_age} years`
-### playground-max_age
+
+
+### playground-max_age
+
+
The question is **What is the maximum age allowed to access this playground?**
-This rendering asks information about the property [max_age](https://wiki.openstreetmap.org/wiki/Key:max_age)
+This rendering asks information about the property [max_age](https://wiki.openstreetmap.org/wiki/Key:max_age)
This is rendered with `Accessible to kids of at most {max_age}`
-### playground-operator
+
+
+### playground-operator
+
+
The question is **Who operates this playground?**
-This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
+This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
This is rendered with `Operated by {operator}`
-### playground-access
+
+
+### playground-access
+
+
The question is **Is this playground accessible to the general public?**
-- **Accessible to the general public** corresponds with _This option cannot be chosen as answer_
-- **Accessible to the general public** corresponds
- with access
- =yes
-- **Only accessible for clients of the operating business** corresponds
- with access
- =customers
-- **Only accessible to students of the school** corresponds
- with access
- =students
-- **Not accessible** corresponds with
- access=private
-### playground-email
+
+
+
+ - **Accessible to the general public** corresponds with access=yes
+ - **Only accessible for clients of the operating business** corresponds with access=customers
+ - **Only accessible to students of the school** corresponds with access=students_This option cannot be chosen as answer_
+ - **Not accessible** corresponds with access=private
+
+
+
+
+### playground-email
+
+
The question is **What is the email address of the playground maintainer?**
-This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
+This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
This is rendered with `{email}`
-### playground-phone
+
+
+### playground-phone
+
+
The question is **What is the phone number of the playground maintainer?**
-This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
+This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
This is rendered with `{phone}`
-### Playground-wheelchair
+
+
+### Playground-wheelchair
+
+
The question is **Is this playground accessible to wheelchair users?**
-- **Completely accessible for wheelchair users** corresponds
- with wheelchair
- =yes
-- **Limited accessibility for wheelchair users** corresponds
- with wheelchair
- =limited
-- **Not accessible for wheelchair users** corresponds
- with wheelchair
- =no
-### playground-opening_hours
+
+
+
+ - **Completely accessible for wheelchair users** corresponds with wheelchair=yes
+ - **Limited accessibility for wheelchair users** corresponds with wheelchair=limited
+ - **Not accessible for wheelchair users** corresponds with wheelchair=no
+
+
+
+
+### playground-opening_hours
+
+
The question is **When is this playground accessible?**
-This rendering asks information about the
-property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
+This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with `{opening_hours_table(opening_hours)}`
-- **Accessible from sunrise till sunset** corresponds
- with opening_hours
- =sunrise-sunset
-- **Always accessible** corresponds
- with opening_hours
- =24/7
-- **Always accessible** corresponds with _This option cannot be chosen as answer_
-### questions
+
+ - **Accessible from sunrise till sunset** corresponds with opening_hours=sunrise-sunset
+ - **Always accessible** corresponds with opening_hours=24/7
+
+
+
+
+### questions
+
+
_This tagrendering has no question and is thus read-only_
-### playground-reviews
+
+
+
+
+### playground-reviews
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/playground/playground.json
\ No newline at end of file
diff --git a/Docs/Layers/public_bookcase.md b/Docs/Layers/public_bookcase.md
index bf92e4764..6d187d70f 100644
--- a/Docs/Layers/public_bookcase.md
+++ b/Docs/Layers/public_bookcase.md
@@ -1,4 +1,6 @@
-public_bookcase
+
+
+ public_bookcase
=================
@@ -7,13 +9,15 @@ public_bookcase
A streetside cabinet with books, accessible to anyone
+
+
+
## Table of contents
1. [public_bookcase](#public_bookcase)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [public_bookcase-name](#public_bookcase-name)
+ [public_bookcase-capacity](#public_bookcase-capacity)
@@ -27,147 +31,216 @@ A streetside cabinet with books, accessible to anyone
+ [public_bookcase-website](#public_bookcase-website)
-- This layer is needed as dependency for layer [note_import](#note_import)
-#### Themes using this layer
-- [bookcases](https://mapcomplete.osm.be/bookcases)
-- [personal](https://mapcomplete.osm.be/personal)
+
+ - This layer is needed as dependency for layer [note_import](#note_import)
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [bookcases](https://mapcomplete.osm.be/bookcases)
+ - [personal](https://mapcomplete.osm.be/personal)
+
[Go to the source code](../assets/layers/public_bookcase/public_bookcase.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- amenity
- =public_bookcase
-Supported attributes
+
+ - amenity=public_bookcase
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](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)
-[](https://taginfo.openstreetmap.org/keys/capacity#values) [capacity](https://wiki.openstreetmap.org/wiki/Key:capacity) | [nat](../SpecialInputElements.md#nat) |
+[](https://taginfo.openstreetmap.org/keys/capacity#values) [capacity](https://wiki.openstreetmap.org/wiki/Key:capacity) | [nat](../SpecialInputElements.md#nat) |
[](https://taginfo.openstreetmap.org/keys/books#values) [books](https://wiki.openstreetmap.org/wiki/Key:books) | Multiple choice | [children](https://wiki.openstreetmap.org/wiki/Tag:books%3Dchildren) [adults](https://wiki.openstreetmap.org/wiki/Tag:books%3Dadults) [children;adults](https://wiki.openstreetmap.org/wiki/Tag:books%3Dchildren;adults)
[](https://taginfo.openstreetmap.org/keys/indoor#values) [indoor](https://wiki.openstreetmap.org/wiki/Key:indoor) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dno)
[](https://taginfo.openstreetmap.org/keys/access#values) [access](https://wiki.openstreetmap.org/wiki/Key:access) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:access%3Dyes) [customers](https://wiki.openstreetmap.org/wiki/Tag:access%3Dcustomers)
-[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) |
[](https://taginfo.openstreetmap.org/keys/brand#values) [brand](https://wiki.openstreetmap.org/wiki/Key:brand) | [string](../SpecialInputElements.md#string) | [Little Free Library](https://wiki.openstreetmap.org/wiki/Tag:brand%3DLittle Free Library) [](https://wiki.openstreetmap.org/wiki/Tag:brand%3D)
[](https://taginfo.openstreetmap.org/keys/ref#values) [ref](https://wiki.openstreetmap.org/wiki/Key:ref) | [string](../SpecialInputElements.md#string) | [](https://wiki.openstreetmap.org/wiki/Tag:ref%3D)
-[](https://taginfo.openstreetmap.org/keys/start_date#values) [start_date](https://wiki.openstreetmap.org/wiki/Key:start_date) | [date](../SpecialInputElements.md#date) |
-[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
+[](https://taginfo.openstreetmap.org/keys/start_date#values) [start_date](https://wiki.openstreetmap.org/wiki/Key:start_date) | [date](../SpecialInputElements.md#date) |
+[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
+
+
+
+
+### images
+
-### images
_This tagrendering has no question and is thus read-only_
-### public_bookcase-name
+
+
+
+
+### public_bookcase-name
+
+
The question is **What is the name of this public bookcase?**
-This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
+This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with `The name of this bookcase is {name}`
-- **This bookcase doesn't have a name** corresponds
- with noname
- =yes
-### public_bookcase-capacity
+
+ - **This bookcase doesn't have a name** corresponds with noname=yes
+
+
+
+
+### public_bookcase-capacity
+
+
The question is **How many books fit into this public bookcase?**
-This rendering asks information about the property [capacity](https://wiki.openstreetmap.org/wiki/Key:capacity)
+This rendering asks information about the property [capacity](https://wiki.openstreetmap.org/wiki/Key:capacity)
This is rendered with `{capacity} books fit in this bookcase`
-### bookcase-booktypes
+
+
+### bookcase-booktypes
+
+
The question is **What kind of books can be found in this public bookcase?**
-- **Mostly children books** corresponds with
- books=children
-- **Mostly books for adults** corresponds with
- books=adults
-- **Both books for kids and adults** corresponds
- with books
- =children;adults
-### bookcase-is-indoors
+
+
+
+ - **Mostly children books** corresponds with books=children
+ - **Mostly books for adults** corresponds with books=adults
+ - **Both books for kids and adults** corresponds with books=children;adults
+
+
+
+
+### bookcase-is-indoors
+
+
The question is **Is this bookcase located outdoors?**
-- **This bookcase is located indoors** corresponds
- with indoor
- =yes
-- **This bookcase is located outdoors** corresponds
- with indoor
- =no
-- **This bookcase is located outdoors** corresponds with _This option cannot be chosen as answer_
-### bookcase-is-accessible
+
+
+
+ - **This bookcase is located indoors** corresponds with indoor=yes
+ - **This bookcase is located outdoors** corresponds with indoor=no
+ - **This bookcase is located outdoors** corresponds with _This option cannot be chosen as answer_
+
+
+
+
+### bookcase-is-accessible
+
+
The question is **Is this public bookcase freely accessible?**
-- **Publicly accessible** corresponds with
- access=yes
-- **Only accessible to customers** corresponds
- with access
- =customers
-### public_bookcase-operator
+
+
+
+ - **Publicly accessible** corresponds with access=yes
+ - **Only accessible to customers** corresponds with access=customers
+
+
+
+
+### public_bookcase-operator
+
+
The question is **Who maintains this public bookcase?**
-This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
+This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
This is rendered with `Operated by {operator}`
-### public_bookcase-brand
+
+
+### public_bookcase-brand
+
+
The question is **Is this public bookcase part of a bigger network?**
-This rendering asks information about the property [brand](https://wiki.openstreetmap.org/wiki/Key:brand)
+This rendering asks information about the property [brand](https://wiki.openstreetmap.org/wiki/Key:brand)
This is rendered with `This public bookcase is part of {brand}`
-- **Part of the network 'Little Free Library'** corresponds
- with brand
- =Little Free Library
-- **This public bookcase is not part of a bigger network** corresponds
- with nobrand
- =yes
-### public_bookcase-ref
+
+ - **Part of the network 'Little Free Library'** corresponds with brand=Little Free Library
+ - **This public bookcase is not part of a bigger network** corresponds with nobrand=yes
+
+
+
+
+### public_bookcase-ref
+
+
The question is **What is the reference number of this public bookcase?**
-This rendering asks information about the property [ref](https://wiki.openstreetmap.org/wiki/Key:ref)
+This rendering asks information about the property [ref](https://wiki.openstreetmap.org/wiki/Key:ref)
This is rendered with `The reference number of this public bookcase within {brand} is {ref}`
-- **This bookcase is not part of a bigger network** corresponds
- with nobrand
- =yes
-### public_bookcase-start_date
+
+ - **This bookcase is not part of a bigger network** corresponds with nobrand=yes
+
+
+
+
+### public_bookcase-start_date
+
+
The question is **When was this public bookcase installed?**
-This rendering asks information about the property [start_date](https://wiki.openstreetmap.org/wiki/Key:start_date)
+This rendering asks information about the property [start_date](https://wiki.openstreetmap.org/wiki/Key:start_date)
This is rendered with `Installed on {start_date}`
-### public_bookcase-website
+
+
+### public_bookcase-website
+
+
The question is **Is there a website with more information about this public bookcase?**
-This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
-This is rendered with `More info on the website`
+This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
+This is rendered with `More info on the website`
This document is autogenerated from assets/layers/public_bookcase/public_bookcase.json
\ No newline at end of file
diff --git a/Docs/Layers/shops.md b/Docs/Layers/shops.md
index 6a2604283..d7e65dfb1 100644
--- a/Docs/Layers/shops.md
+++ b/Docs/Layers/shops.md
@@ -1,4 +1,6 @@
-shops
+
+
+ shops
=======
@@ -7,13 +9,15 @@ shops
A shop
+
+
+
## Table of contents
1. [shops](#shops)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [shops-name](#shops-name)
+ [shops-shop](#shops-shop)
@@ -25,123 +29,183 @@ A shop
+ [questions](#questions)
+ [reviews](#reviews)
-#### Themes using this layer
-- [personal](https://mapcomplete.osm.be/personal)
-- [shops](https://mapcomplete.osm.be/shops)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [personal](https://mapcomplete.osm.be/personal)
+ - [shops](https://mapcomplete.osm.be/shops)
+
[Go to the source code](../assets/layers/shops/shops.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- shop~^..*$
-Supported attributes
+
+ - shop~^..*$
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
[](https://taginfo.openstreetmap.org/keys/shop#values) [shop](https://wiki.openstreetmap.org/wiki/Key:shop) | [string](../SpecialInputElements.md#string) | [convenience](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dconvenience) [supermarket](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsupermarket) [clothes](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dclothes) [hairdresser](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dhairdresser) [bakery](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbakery) [car_repair](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcar_repair) [car](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcar)
-[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
-[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
-[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
-[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) |
+[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
+[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |
+[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
+[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) |
+
+
+
+
+### images
+
-### images
_This tagrendering has no question and is thus read-only_
-### shops-name
+
+
+
+
+### shops-name
+
+
The question is **What is the name of this shop?**
-This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
+This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with `This shop is called {name}`
-### shops-shop
+
+
+### shops-shop
+
+
The question is **What does this shop sell?**
-This rendering asks information about the property [shop](https://wiki.openstreetmap.org/wiki/Key:shop)
+This rendering asks information about the property [shop](https://wiki.openstreetmap.org/wiki/Key:shop)
This is rendered with `This shop sells {shop}`
-- **Convenience store** corresponds with shop
- =convenience
-- **Supermarket** corresponds with shop
- =supermarket
-- **Clothing store** corresponds with shop
- =clothes
-- **Hairdresser** corresponds with shop
- =hairdresser
-- **Bakery** corresponds with shop
- =bakery
-- **Car repair (garage)** corresponds with
- shop=car_repair
-- **Car dealer** corresponds with shop
- =car
-### shops-phone
+
+ - **Convenience store** corresponds with shop=convenience
+ - **Supermarket** corresponds with shop=supermarket
+ - **Clothing store** corresponds with shop=clothes
+ - **Hairdresser** corresponds with shop=hairdresser
+ - **Bakery** corresponds with shop=bakery
+ - **Car repair (garage)** corresponds with shop=car_repair
+ - **Car dealer** corresponds with shop=car
+
+
+
+
+### shops-phone
+
+
The question is **What is the phone number?**
-This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
+This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
This is rendered with `{phone}`
-### shops-website
+
+
+### shops-website
+
+
The question is **What is the website of this shop?**
-This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
+This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website)
This is rendered with `{website}`
-### shops-email
+
+
+### shops-email
+
+
The question is **What is the email address of this shop?**
-This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
+This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
This is rendered with `{email}`
-### shops-opening_hours
+
+
+### shops-opening_hours
+
+
The question is **What are the opening hours of this shop?**
-This rendering asks information about the
-property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
+This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with `{opening_hours_table(opening_hours)}`
-### payment-options
+
+
+### payment-options
+
+
The question is **Which methods of payment are accepted here?**
-- **Cash is accepted here** corresponds
- with payment:cash
- =yesUnselecting this answer
- will add payment:cash
- =no
-- **Payment cards are accepted here** corresponds
- with payment:cards
- =yesUnselecting this answer
- will add payment:cards
- =no
-### questions
+
+
+
+ - **Cash is accepted here** corresponds with payment:cash=yesUnselecting this answer will add payment:cash=no
+ - **Payment cards are accepted here** corresponds with payment:cards=yesUnselecting this answer will add payment:cards=no
+
+
+
+
+### questions
+
+
_This tagrendering has no question and is thus read-only_
-### reviews
+
+
+
+
+### reviews
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/shops/shops.json
\ No newline at end of file
diff --git a/Docs/Layers/slow_roads.md b/Docs/Layers/slow_roads.md
index 6a64a11e5..88948e17d 100644
--- a/Docs/Layers/slow_roads.md
+++ b/Docs/Layers/slow_roads.md
@@ -1,4 +1,6 @@
-slow_roads
+
+
+ slow_roads
============
@@ -7,125 +9,129 @@ slow_roads
All carfree roads
+
+
+
## Table of contents
1. [slow_roads](#slow_roads)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [explanation](#explanation)
+ [slow_roads-surface](#slow_roads-surface)
+ [slow_road_is_lit](#slow_road_is_lit)
+
+
+
+
+
+
+
[Go to the source code](../assets/layers/slow_roads/slow_roads.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- highway
- =pedestrian
- |highway
- =footway
- |highway
- =path
- |highway
- =bridleway
- |highway
- =living_street
- |highway
- =track
-- access!~^no$
-- access!~^private$
-Supported attributes
+
+ - highway=pedestrian|highway=footway|highway=path|highway=bridleway|highway=living_street|highway=track
+ - access!~^no$
+ - access!~^private$
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/highway#values) [highway](https://wiki.openstreetmap.org/wiki/Key:highway) | Multiple choice | [living_street](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dliving_street) [pedestrian](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dpedestrian) [footway](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dfootway) [path](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dpath) [bridleway](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dbridleway) [track](https://wiki.openstreetmap.org/wiki/Tag:highway%3Dtrack)
[](https://taginfo.openstreetmap.org/keys/surface#values) [surface](https://wiki.openstreetmap.org/wiki/Key:surface) | [string](../SpecialInputElements.md#string) | [grass](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dgrass) [ground](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dground) [sand](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dsand) [paving_stones](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dpaving_stones) [asphalt](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dasphalt) [concrete](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dconcrete)
[](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)
-### images
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### explanation
+
+
+
+
+### explanation
+
+
_This tagrendering has no question and is thus read-only_
-- **
- Dit is een woonerf:
Voetgangers mogen hier de volledige breedte van de straat gebruiken
** corresponds
- with highway
- =living_street
-- **Dit is een brede, autovrije straat** corresponds
- with highway
- =pedestrian
-- **Dit is een voetpaadje** corresponds with
- highway=footway
-- **Dit is een wegeltje of bospad** corresponds
- with highway
- =path
-- **Dit is een ruiterswegel** corresponds
- with highway
- =bridleway
-- **Dit is een tractorspoor of weg om landbouwgrond te bereikken** corresponds
- with highway
- =track
-### slow_roads-surface
+
+
+
+ - **
Dit is een woonerf:
Voetgangers mogen hier de volledige breedte van de straat gebruiken
Gemotoriseerd verkeer mag maximaal 20km/h rijden
** corresponds with highway=living_street
+ - **Dit is een brede, autovrije straat** corresponds with highway=pedestrian
+ - **Dit is een voetpaadje** corresponds with highway=footway
+ - **Dit is een wegeltje of bospad** corresponds with highway=path
+ - **Dit is een ruiterswegel** corresponds with highway=bridleway
+ - **Dit is een tractorspoor of weg om landbouwgrond te bereikken** corresponds with highway=track
+
+
+
+
+### slow_roads-surface
+
+
The question is **Wat is de wegverharding van dit pad?**
-This rendering asks information about the property [surface](https://wiki.openstreetmap.org/wiki/Key:surface)
+This rendering asks information about the property [surface](https://wiki.openstreetmap.org/wiki/Key:surface)
This is rendered with `The surface is {surface}`
-- **The surface is grass** corresponds
- with surface
- =grass
-- **The surface is ground** corresponds
- with surface
- =ground
-- **The surface is unpaved** corresponds
- with surface
- =unpaved_This option cannot be
- chosen as answer_
-- **The surface is sand** corresponds
- with surface
- =sand
-- **The surface is paving stones** corresponds
- with surface
- =paving_stones
-- **The surface is asphalt** corresponds
- with surface
- =asphalt
-- **The surface is concrete** corresponds
- with surface
- =concrete
-- **The surface is paved** corresponds
- with surface
- =paved_This option cannot be
- chosen as answer_
-### slow_road_is_lit
+
+ - **The surface is grass** corresponds with surface=grass
+ - **The surface is ground** corresponds with surface=ground
+ - **The surface is unpaved** corresponds with surface=unpaved_This option cannot be chosen as answer_
+ - **The surface is sand** corresponds with surface=sand
+ - **The surface is paving stones** corresponds with surface=paving_stones
+ - **The surface is asphalt** corresponds with surface=asphalt
+ - **The surface is concrete** corresponds with surface=concrete
+ - **The surface is paved** corresponds with surface=paved_This option cannot be chosen as answer_
+
+
+
+
+### slow_road_is_lit
+
+
The question is **Is deze weg 's nachts verlicht?**
-- **'s nachts verlicht** corresponds with lit
- =yes
-- **Niet verlicht** corresponds with lit
- =no
+
+
+
+
+ - **'s nachts verlicht** corresponds with lit=yes
+ - **Niet verlicht** corresponds with lit=no
+
This document is autogenerated from assets/layers/slow_roads/slow_roads.json
\ No newline at end of file
diff --git a/Docs/Layers/sport_pitch.md b/Docs/Layers/sport_pitch.md
index 284f84d06..5b19e2b8f 100644
--- a/Docs/Layers/sport_pitch.md
+++ b/Docs/Layers/sport_pitch.md
@@ -1,19 +1,23 @@
-sport_pitch
+
+
+ sport_pitch
=============
-
+
A sport pitch
+
+
+
## Table of contents
1. [sport_pitch](#sport_pitch)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [sport_pitch-sport](#sport_pitch-sport)
+ [sport_pitch-surface](#sport_pitch-surface)
@@ -25,158 +29,207 @@ A sport pitch
+ [questions](#questions)
+ [sport-pitch-reviews](#sport-pitch-reviews)
-#### Themes using this layer
-- [personal](https://mapcomplete.osm.be/personal)
-- [sport_pitches](https://mapcomplete.osm.be/sport_pitches)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [personal](https://mapcomplete.osm.be/personal)
+ - [sport_pitches](https://mapcomplete.osm.be/sport_pitches)
+
[Go to the source code](../assets/layers/sport_pitch/sport_pitch.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- leisure
- =pitch
-Supported attributes
+
+ - leisure=pitch
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/sport#values) [sport](https://wiki.openstreetmap.org/wiki/Key:sport) | [string](../SpecialInputElements.md#string) | [basketball](https://wiki.openstreetmap.org/wiki/Tag:sport%3Dbasketball) [soccer](https://wiki.openstreetmap.org/wiki/Tag:sport%3Dsoccer) [table_tennis](https://wiki.openstreetmap.org/wiki/Tag:sport%3Dtable_tennis) [tennis](https://wiki.openstreetmap.org/wiki/Tag:sport%3Dtennis) [korfball](https://wiki.openstreetmap.org/wiki/Tag:sport%3Dkorfball)
[](https://taginfo.openstreetmap.org/keys/surface#values) [surface](https://wiki.openstreetmap.org/wiki/Key:surface) | [string](../SpecialInputElements.md#string) | [grass](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dgrass) [sand](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dsand) [paving_stones](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dpaving_stones) [asphalt](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dasphalt) [concrete](https://wiki.openstreetmap.org/wiki/Tag:surface%3Dconcrete)
[](https://taginfo.openstreetmap.org/keys/access#values) [access](https://wiki.openstreetmap.org/wiki/Key:access) | Multiple choice | [public](https://wiki.openstreetmap.org/wiki/Tag:access%3Dpublic) [limited](https://wiki.openstreetmap.org/wiki/Tag:access%3Dlimited) [members](https://wiki.openstreetmap.org/wiki/Tag:access%3Dmembers) [private](https://wiki.openstreetmap.org/wiki/Tag:access%3Dprivate)
[](https://taginfo.openstreetmap.org/keys/reservation#values) [reservation](https://wiki.openstreetmap.org/wiki/Key:reservation) | Multiple choice | [required](https://wiki.openstreetmap.org/wiki/Tag:reservation%3Drequired) [recommended](https://wiki.openstreetmap.org/wiki/Tag:reservation%3Drecommended) [yes](https://wiki.openstreetmap.org/wiki/Tag:reservation%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:reservation%3Dno)
-[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
-[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
+[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |
+[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |
[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [24/7](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7)
-### images
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### sport_pitch-sport
+
+
+
+
+### sport_pitch-sport
+
+
The question is **Which sport can be played here?**
-This rendering asks information about the property [sport](https://wiki.openstreetmap.org/wiki/Key:sport)
+This rendering asks information about the property [sport](https://wiki.openstreetmap.org/wiki/Key:sport)
This is rendered with `{sport} is played here`
-- **Basketball is played here** corresponds
- with sport
- =basketball
-- **Soccer is played here** corresponds with
- sport=soccer
-- **This is a pingpong table** corresponds with
- sport=table_tennis
-- **Tennis is played here** corresponds with
- sport=tennis
-- **Korfball is played here** corresponds with
- sport=korfball
-- **Basketball is played here** corresponds
- with sport
- =basket_This option cannot be
- chosen as answer_
-### sport_pitch-surface
+
+ - **Basketball is played here** corresponds with sport=basketball
+ - **Soccer is played here** corresponds with sport=soccer
+ - **This is a pingpong table** corresponds with sport=table_tennis
+ - **Tennis is played here** corresponds with sport=tennis
+ - **Korfball is played here** corresponds with sport=korfball
+ - **Basketball is played here** corresponds with sport=basket_This option cannot be chosen as answer_
+
+
+
+
+### sport_pitch-surface
+
+
The question is **Which is the surface of this sport pitch?**
-This rendering asks information about the property [surface](https://wiki.openstreetmap.org/wiki/Key:surface)
+This rendering asks information about the property [surface](https://wiki.openstreetmap.org/wiki/Key:surface)
This is rendered with `The surface is {surface}`
-- **The surface is grass** corresponds
- with surface
- =grass
-- **The surface is sand** corresponds
- with surface
- =sand
-- **The surface is paving stones** corresponds
- with surface
- =paving_stones
-- **The surface is asphalt** corresponds
- with surface
- =asphalt
-- **The surface is concrete** corresponds
- with surface
- =concrete
-### sport-pitch-access
+
+ - **The surface is grass** corresponds with surface=grass
+ - **The surface is sand** corresponds with surface=sand
+ - **The surface is paving stones** corresponds with surface=paving_stones
+ - **The surface is asphalt** corresponds with surface=asphalt
+ - **The surface is concrete** corresponds with surface=concrete
+
+
+
+
+### sport-pitch-access
+
+
The question is **Is this sport pitch publicly accessible?**
-- **Public access** corresponds with access
- =public
-- **Limited access (e.g. only with an appointment, during certain hours, ...)** corresponds
- with access
- =limited
-- **Only accessible for members of the club** corresponds
- with access
- =members
-- **Private - not accessible to the public** corresponds
- with access
- =private
-### sport-pitch-reservation
+
+
+
+ - **Public access** corresponds with access=public
+ - **Limited access (e.g. only with an appointment, during certain hours, ...)** corresponds with access=limited
+ - **Only accessible for members of the club** corresponds with access=members
+ - **Private - not accessible to the public** corresponds with access=private
+
+
+
+
+### sport-pitch-reservation
+
+
The question is **Does one have to make an appointment to use this sport pitch?**
-- **Making an appointment is obligatory to use this sport pitch** corresponds
- with reservation
- =required
-- **Making an appointment is recommended when using this sport pitch** corresponds
- with reservation
- =recommended
-- **Making an appointment is possible, but not necessary to use this sport pitch** corresponds
- with reservation
- =yes
-- **Making an appointment is not possible** corresponds
- with reservation
- =no
-### sport_pitch-phone
+
+
+
+ - **Making an appointment is obligatory to use this sport pitch** corresponds with reservation=required
+ - **Making an appointment is recommended when using this sport pitch** corresponds with reservation=recommended
+ - **Making an appointment is possible, but not necessary to use this sport pitch** corresponds with reservation=yes
+ - **Making an appointment is not possible** corresponds with reservation=no
+
+
+
+
+### sport_pitch-phone
+
+
The question is **What is the phone number of the operator?**
-This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
+This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone)
This is rendered with `{phone}`
-### sport_pitch-email
+
+
+### sport_pitch-email
+
+
The question is **What is the email address of the operator?**
-This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
+This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email)
This is rendered with `{email}`
-### sport_pitch-opening_hours
+
+
+### sport_pitch-opening_hours
+
+
The question is **When is this pitch accessible?**
-This rendering asks information about the
-property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
+This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with `Openingsuren: {opening_hours_table()}`
-- **24/7 toegankelijk** corresponds with _This option cannot be chosen as answer_
-- **Always accessible** corresponds
- with opening_hours
- =24/7
-### questions
+
+ - **24/7 toegankelijk** corresponds with _This option cannot be chosen as answer_
+ - **Always accessible** corresponds with opening_hours=24/7
+
+
+
+
+### questions
+
+
_This tagrendering has no question and is thus read-only_
-### sport-pitch-reviews
+
+
+
+
+### sport-pitch-reviews
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/sport_pitch/sport_pitch.json
\ No newline at end of file
diff --git a/Docs/Layers/street_lamps.md b/Docs/Layers/street_lamps.md
index 61182e041..1d7cb5ce3 100644
--- a/Docs/Layers/street_lamps.md
+++ b/Docs/Layers/street_lamps.md
@@ -1,4 +1,6 @@
-street_lamps
+
+
+ street_lamps
==============
@@ -7,13 +9,15 @@ street_lamps
A layer showing street lights
+
+
+
## Table of contents
1. [street_lamps](#street_lamps)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [ref](#ref)
+ [support](#support)
+ [lamp_mount](#lamp_mount)
@@ -23,185 +27,200 @@ A layer showing street lights
+ [lit](#lit)
+ [direction](#direction)
-#### Themes using this layer
-- [personal](https://mapcomplete.osm.be/personal)
-- [street_lighting](https://mapcomplete.osm.be/street_lighting)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [personal](https://mapcomplete.osm.be/personal)
+ - [street_lighting](https://mapcomplete.osm.be/street_lighting)
+
[Go to the source code](../assets/layers/street_lamps/street_lamps.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- highway
- =street_lamp
-Supported attributes
+
+ - highway=street_lamp
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/ref#values) [ref](https://wiki.openstreetmap.org/wiki/Key:ref) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/ref#values) [ref](https://wiki.openstreetmap.org/wiki/Key:ref) | [string](../SpecialInputElements.md#string) |
[](https://taginfo.openstreetmap.org/keys/support#values) [support](https://wiki.openstreetmap.org/wiki/Key:support) | Multiple choice | [catenary](https://wiki.openstreetmap.org/wiki/Tag:support%3Dcatenary) [ceiling](https://wiki.openstreetmap.org/wiki/Tag:support%3Dceiling) [ground](https://wiki.openstreetmap.org/wiki/Tag:support%3Dground) [pedestal](https://wiki.openstreetmap.org/wiki/Tag:support%3Dpedestal) [pole](https://wiki.openstreetmap.org/wiki/Tag:support%3Dpole) [wall](https://wiki.openstreetmap.org/wiki/Tag:support%3Dwall) [wall_mount](https://wiki.openstreetmap.org/wiki/Tag:support%3Dwall_mount)
[](https://taginfo.openstreetmap.org/keys/lamp_mount#values) [lamp_mount](https://wiki.openstreetmap.org/wiki/Key:lamp_mount) | Multiple choice | [straight_mast](https://wiki.openstreetmap.org/wiki/Tag:lamp_mount%3Dstraight_mast) [bent_mast](https://wiki.openstreetmap.org/wiki/Tag:lamp_mount%3Dbent_mast)
[](https://taginfo.openstreetmap.org/keys/light:method#values) [light:method](https://wiki.openstreetmap.org/wiki/Key:light:method) | Multiple choice | [LED](https://wiki.openstreetmap.org/wiki/Tag:light:method%3DLED) [incandescent](https://wiki.openstreetmap.org/wiki/Tag:light:method%3Dincandescent) [halogen](https://wiki.openstreetmap.org/wiki/Tag:light:method%3Dhalogen) [discharge](https://wiki.openstreetmap.org/wiki/Tag:light:method%3Ddischarge) [mercury](https://wiki.openstreetmap.org/wiki/Tag:light:method%3Dmercury) [metal-halide](https://wiki.openstreetmap.org/wiki/Tag:light:method%3Dmetal-halide) [fluorescent](https://wiki.openstreetmap.org/wiki/Tag:light:method%3Dfluorescent) [sodium](https://wiki.openstreetmap.org/wiki/Tag:light:method%3Dsodium) [low_pressure_sodium](https://wiki.openstreetmap.org/wiki/Tag:light:method%3Dlow_pressure_sodium) [high_pressure_sodium](https://wiki.openstreetmap.org/wiki/Tag:light:method%3Dhigh_pressure_sodium) [gas](https://wiki.openstreetmap.org/wiki/Tag:light:method%3Dgas)
[](https://taginfo.openstreetmap.org/keys/light:colour#values) [light:colour](https://wiki.openstreetmap.org/wiki/Key:light:colour) | [color](../SpecialInputElements.md#color) | [white](https://wiki.openstreetmap.org/wiki/Tag:light:colour%3Dwhite) [green](https://wiki.openstreetmap.org/wiki/Tag:light:colour%3Dgreen) [orange](https://wiki.openstreetmap.org/wiki/Tag:light:colour%3Dorange)
[](https://taginfo.openstreetmap.org/keys/light:count#values) [light:count](https://wiki.openstreetmap.org/wiki/Key:light:count) | [pnat](../SpecialInputElements.md#pnat) | [1](https://wiki.openstreetmap.org/wiki/Tag:light:count%3D1) [2](https://wiki.openstreetmap.org/wiki/Tag:light:count%3D2)
[](https://taginfo.openstreetmap.org/keys/light:lit#values) [light:lit](https://wiki.openstreetmap.org/wiki/Key:light:lit) | Multiple choice | [dusk-dawn](https://wiki.openstreetmap.org/wiki/Tag:light:lit%3Ddusk-dawn) [24/7](https://wiki.openstreetmap.org/wiki/Tag:light:lit%3D24/7) [motion](https://wiki.openstreetmap.org/wiki/Tag:light:lit%3Dmotion) [demand](https://wiki.openstreetmap.org/wiki/Tag:light:lit%3Ddemand)
-[](https://taginfo.openstreetmap.org/keys/light:direction#values) [light:direction](https://wiki.openstreetmap.org/wiki/Key:light:direction) | [direction](../SpecialInputElements.md#direction) |
+[](https://taginfo.openstreetmap.org/keys/light:direction#values) [light:direction](https://wiki.openstreetmap.org/wiki/Key:light:direction) | [direction](../SpecialInputElements.md#direction) |
+
+
+
+
+### ref
+
-### ref
The question is **What is the reference number of this street lamp?**
-This rendering asks information about the property [ref](https://wiki.openstreetmap.org/wiki/Key:ref)
+This rendering asks information about the property [ref](https://wiki.openstreetmap.org/wiki/Key:ref)
This is rendered with `This street lamp has the reference number {ref}`
-### support
+
+
+### support
+
+
The question is **How is this street lamp mounted?**
-- **This lamp is suspended using cables** corresponds
- with support
- =catenary
-- **This lamp is mounted on a ceiling** corresponds
- with support
- =ceiling
-- **This lamp is mounted in the ground** corresponds
- with support
- =ground
-- **This lamp is mounted on a short pole (mostly < 1.5m)** corresponds
- with support
- =pedestal
-- **This lamp is mounted on a pole** corresponds
- with support
- =pole
-- **This lamp is mounted directly to the wall** corresponds
- with support
- =wall
-- **This lamp is mounted to the wall using a metal bar** corresponds
- with support
- =wall_mount
-### lamp_mount
+
+
+
+ - **This lamp is suspended using cables** corresponds with support=catenary
+ - **This lamp is mounted on a ceiling** corresponds with support=ceiling
+ - **This lamp is mounted in the ground** corresponds with support=ground
+ - **This lamp is mounted on a short pole (mostly < 1.5m)** corresponds with support=pedestal
+ - **This lamp is mounted on a pole** corresponds with support=pole
+ - **This lamp is mounted directly to the wall** corresponds with support=wall
+ - **This lamp is mounted to the wall using a metal bar** corresponds with support=wall_mount
+
+
+
+
+### lamp_mount
+
+
The question is **How is this lamp mounted to the pole?**
-- **This lamp sits atop of a straight mast** corresponds
- with lamp_mount
- =straight_mast
-- **This lamp sits at the end of a bent mast** corresponds
- with lamp_mount
- =bent_mast
-### method
+
+
+
+ - **This lamp sits atop of a straight mast** corresponds with lamp_mount=straight_mast
+ - **This lamp sits at the end of a bent mast** corresponds with lamp_mount=bent_mast
+
+
+
+
+### method
+
+
The question is **What kind of lighting does this lamp use?**
-- **This lamp is lit electrically** corresponds
- with light:method
- =electric_This option
- cannot be chosen as answer_
-- **This lamp uses LEDs** corresponds
- with light:method
- =LED
-- **This lamp uses incandescent lighting** corresponds
- with light:method
- =incandescent
-- **This lamp uses halogen lighting** corresponds
- with light:method
- =halogen
-- **This lamp uses discharge lamps (unknown type)** corresponds
- with light:method
- =discharge
-- **This lamp uses a mercury-vapour lamp (lightly blueish)** corresponds
- with light:method
- =mercury
-- **This lamp uses metal-halide lamps (bright white)** corresponds
- with light:method
- =metal-halide
-- **This lamp uses fluorescent lighting** corresponds
- with light:method
- =fluorescent
-- **This lamp uses sodium lamps (unknown type)** corresponds
- with light:method
- =sodium
-- **This lamp uses low pressure sodium lamps (monochrome orange)** corresponds
- with light:method
- =
- low_pressure_sodium
-- **This lamp uses high pressure sodium lamps (orange with white)** corresponds
- with light:method
- =
- high_pressure_sodium
-- **This lamp is lit using gas** corresponds
- with light:method
- =gas
-### colour
+
+
+
+ - **This lamp is lit electrically** corresponds with light:method=electric_This option cannot be chosen as answer_
+ - **This lamp uses LEDs** corresponds with light:method=LED
+ - **This lamp uses incandescent lighting** corresponds with light:method=incandescent
+ - **This lamp uses halogen lighting** corresponds with light:method=halogen
+ - **This lamp uses discharge lamps (unknown type)** corresponds with light:method=discharge
+ - **This lamp uses a mercury-vapour lamp (lightly blueish)** corresponds with light:method=mercury
+ - **This lamp uses metal-halide lamps (bright white)** corresponds with light:method=metal-halide
+ - **This lamp uses fluorescent lighting** corresponds with light:method=fluorescent
+ - **This lamp uses sodium lamps (unknown type)** corresponds with light:method=sodium
+ - **This lamp uses low pressure sodium lamps (monochrome orange)** corresponds with light:method=low_pressure_sodium
+ - **This lamp uses high pressure sodium lamps (orange with white)** corresponds with light:method=high_pressure_sodium
+ - **This lamp is lit using gas** corresponds with light:method=gas
+
+
+
+
+### colour
+
+
The question is **What colour light does this lamp emit?**
-This rendering asks information about the property [light:colour](https://wiki.openstreetmap.org/wiki/Key:light:colour)
+This rendering asks information about the property [light:colour](https://wiki.openstreetmap.org/wiki/Key:light:colour)
This is rendered with `This lamp emits {light:colour} light`
-- **This lamp emits white light** corresponds
- with light:colour
- =white
-- **This lamp emits green light** corresponds
- with light:colour
- =green
-- **This lamp emits orange light** corresponds
- with light:colour
- =orange
-### count
+
+ - **This lamp emits white light** corresponds with light:colour=white
+ - **This lamp emits green light** corresponds with light:colour=green
+ - **This lamp emits orange light** corresponds with light:colour=orange
+
+
+
+
+### count
+
+
The question is **How many fixtures does this light have?**
-This rendering asks information about the property [light:count](https://wiki.openstreetmap.org/wiki/Key:light:count)
+This rendering asks information about the property [light:count](https://wiki.openstreetmap.org/wiki/Key:light:count)
This is rendered with `This lamp has {light:count} fixtures`
-- **This lamp has 1 fixture** corresponds
- with light:count
- =1
-- **This lamp has 2 fixtures** corresponds
- with light:count
- =2
-### lit
+
+ - **This lamp has 1 fixture** corresponds with light:count=1
+ - **This lamp has 2 fixtures** corresponds with light:count=2
+
+
+
+
+### lit
+
+
The question is **When is this lamp lit?**
-- **This lamp is lit at night** corresponds
- with light:lit
- =dusk-dawn
-- **This lamp is lit 24/7** corresponds
- with light:lit
- =24/7
-- **This lamp is lit based on motion** corresponds
- with light:lit
- =motion
-- **This lamp is lit based on demand (e.g. with a pushbutton)** corresponds
- with light:lit
- =demand
-### direction
+
+
+
+ - **This lamp is lit at night** corresponds with light:lit=dusk-dawn
+ - **This lamp is lit 24/7** corresponds with light:lit=24/7
+ - **This lamp is lit based on motion** corresponds with light:lit=motion
+ - **This lamp is lit based on demand (e.g. with a pushbutton)** corresponds with light:lit=demand
+
+
+
+
+### direction
+
+
The question is **Where does this lamp point to?**
-This rendering asks information about the
-property [light:direction](https://wiki.openstreetmap.org/wiki/Key:light:direction)
-This is rendered with `This lamp points towards {light:direction}`
+This rendering asks information about the property [light:direction](https://wiki.openstreetmap.org/wiki/Key:light:direction)
+This is rendered with `This lamp points towards {light:direction}`
This document is autogenerated from assets/layers/street_lamps/street_lamps.json
\ No newline at end of file
diff --git a/Docs/Layers/surveillance_camera.md b/Docs/Layers/surveillance_camera.md
index 41d5caf6e..685f417ec 100644
--- a/Docs/Layers/surveillance_camera.md
+++ b/Docs/Layers/surveillance_camera.md
@@ -1,4 +1,6 @@
-surveillance_camera
+
+
+ surveillance_camera
=====================
@@ -7,13 +9,15 @@ surveillance_camera
This layer shows surveillance cameras and allows a contributor to update information and add new cameras
+
+
+
## Table of contents
1. [surveillance_camera](#surveillance_camera)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [Camera type: fixed; panning; dome](#camera-type-fixed;-panning;-dome)
+ [camera_direction](#camera_direction)
@@ -25,162 +29,200 @@ This layer shows surveillance cameras and allows a contributor to update informa
+ [camera:mount](#cameramount)
-- This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on
- it: a preset snaps to this layer (presets[1])
-#### Themes using this layer
-- [personal](https://mapcomplete.osm.be/personal)
-- [surveillance](https://mapcomplete.osm.be/surveillance)
+
+ - This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on it: a preset snaps to this layer (presets[1])
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [personal](https://mapcomplete.osm.be/personal)
+ - [surveillance](https://mapcomplete.osm.be/surveillance)
+
[Go to the source code](../assets/layers/surveillance_camera/surveillance_camera.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- man_made
- =surveillance
-- surveillance:type
- =camera
- |surveillance:type
- =ALPR
- |surveillance:type
- =ANPR
-Supported attributes
+
+ - man_made=surveillance
+ - surveillance:type=camera|surveillance:type=ALPR|surveillance:type=ANPR
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/camera:type#values) [camera:type](https://wiki.openstreetmap.org/wiki/Key:camera:type) | Multiple choice | [fixed](https://wiki.openstreetmap.org/wiki/Tag:camera:type%3Dfixed) [dome](https://wiki.openstreetmap.org/wiki/Tag:camera:type%3Ddome) [panning](https://wiki.openstreetmap.org/wiki/Tag:camera:type%3Dpanning)
-[](https://taginfo.openstreetmap.org/keys/camera:direction#values) [camera:direction](https://wiki.openstreetmap.org/wiki/Key:camera:direction) | [direction](../SpecialInputElements.md#direction) |
-[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/camera:direction#values) [camera:direction](https://wiki.openstreetmap.org/wiki/Key:camera:direction) | [direction](../SpecialInputElements.md#direction) |
+[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) |
[](https://taginfo.openstreetmap.org/keys/surveillance#values) [surveillance](https://wiki.openstreetmap.org/wiki/Key:surveillance) | Multiple choice | [public](https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Dpublic) [outdoor](https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Doutdoor) [indoor](https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Dindoor)
[](https://taginfo.openstreetmap.org/keys/indoor#values) [indoor](https://wiki.openstreetmap.org/wiki/Key:indoor) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dno)
-[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [nat](../SpecialInputElements.md#nat) |
+[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [nat](../SpecialInputElements.md#nat) |
[](https://taginfo.openstreetmap.org/keys/surveillance:zone#values) [surveillance:zone](https://wiki.openstreetmap.org/wiki/Key:surveillance:zone) | [string](../SpecialInputElements.md#string) | [parking](https://wiki.openstreetmap.org/wiki/Tag:surveillance:zone%3Dparking) [traffic](https://wiki.openstreetmap.org/wiki/Tag:surveillance:zone%3Dtraffic) [entrance](https://wiki.openstreetmap.org/wiki/Tag:surveillance:zone%3Dentrance) [corridor](https://wiki.openstreetmap.org/wiki/Tag:surveillance:zone%3Dcorridor) [public_transport_platform](https://wiki.openstreetmap.org/wiki/Tag:surveillance:zone%3Dpublic_transport_platform) [shop](https://wiki.openstreetmap.org/wiki/Tag:surveillance:zone%3Dshop)
[](https://taginfo.openstreetmap.org/keys/camera:mount#values) [camera:mount](https://wiki.openstreetmap.org/wiki/Key:camera:mount) | [string](../SpecialInputElements.md#string) | [wall](https://wiki.openstreetmap.org/wiki/Tag:camera:mount%3Dwall) [pole](https://wiki.openstreetmap.org/wiki/Tag:camera:mount%3Dpole) [ceiling](https://wiki.openstreetmap.org/wiki/Tag:camera:mount%3Dceiling)
-### images
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### Camera type: fixed; panning; dome
+
+
+
+
+### Camera type: fixed; panning; dome
+
+
The question is **What kind of camera is this?**
-- **A fixed (non-moving) camera** corresponds
- with camera:type
- =fixed
-- **A dome camera (which can turn)** corresponds
- with camera:type
- =dome
-- **A panning camera** corresponds with
- camera:type=panning
-### camera_direction
+
+
+
+ - **A fixed (non-moving) camera** corresponds with camera:type=fixed
+ - **A dome camera (which can turn)** corresponds with camera:type=dome
+ - **A panning camera** corresponds with camera:type=panning
+
+
+
+
+### camera_direction
+
+
The question is **In which geographical direction does this camera film?**
-This rendering asks information about the
-property [camera:direction](https://wiki.openstreetmap.org/wiki/Key:camera:direction)
+This rendering asks information about the property [camera:direction](https://wiki.openstreetmap.org/wiki/Key:camera:direction)
This is rendered with `Films to a compass heading of {camera:direction}`
-- **Films to a compass heading of {direction}** corresponds with direction~^..*$_This option cannot be chosen as answer_
-### Operator
+
+ - **Films to a compass heading of {direction}** corresponds with direction~^..*$_This option cannot be chosen as answer_
+
+
+
+
+### Operator
+
+
The question is **Who operates this CCTV?**
-This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
+This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
This is rendered with `Operated by {operator}`
-### Surveillance type: public, outdoor, indoor
+
+
+### Surveillance type: public, outdoor, indoor
+
+
The question is **What kind of surveillance is this camera**
-- **A public area is surveilled, such as a street, a bridge, a square, a park, a train station, a public corridor or
- tunnel,...** corresponds with
- surveillance=public
-- **An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private
- driveway, ...)** corresponds with
- surveillance=outdoor
-- **A private indoor area is surveilled, e.g. a shop, a private underground parking, ...** corresponds
- with surveillance
- =indoor
-### is_indoor
+
+
+
+ - **A public area is surveilled, such as a street, a bridge, a square, a park, a train station, a public corridor or tunnel,...** corresponds with surveillance=public
+ - **An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private driveway, ...)** corresponds with surveillance=outdoor
+ - **A private indoor area is surveilled, e.g. a shop, a private underground parking, ...** corresponds with surveillance=indoor
+
+
+
+
+### is_indoor
+
+
The question is **Is the public space surveilled by this camera an indoor or outdoor space?**
-- **This camera is located indoors** corresponds
- with indoor
- =yes
-- **This camera is located outdoors** corresponds
- with indoor
- =no
-- **This camera is probably located outdoors** corresponds with _This option cannot be chosen as answer_
-### Level
+
+
+
+ - **This camera is located indoors** corresponds with indoor=yes
+ - **This camera is located outdoors** corresponds with indoor=no
+ - **This camera is probably located outdoors** corresponds with _This option cannot be chosen as answer_
+
+
+
+
+### Level
+
+
The question is **On which level is this camera located?**
-This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level)
+This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level)
This is rendered with `Located on level {level}`
-### Surveillance:zone
+
+
+### Surveillance:zone
+
+
The question is **What exactly is surveilled here?**
-This rendering asks information about the
-property [surveillance:zone](https://wiki.openstreetmap.org/wiki/Key:surveillance:zone)
+This rendering asks information about the property [surveillance:zone](https://wiki.openstreetmap.org/wiki/Key:surveillance:zone)
This is rendered with ` Surveills a {surveillance:zone}`
-- **Surveills a parking** corresponds
- with surveillance:zone
- =parking
-- **Surveills the traffic** corresponds
- with surveillance:zone
- =traffic
-- **Surveills an entrance** corresponds
- with surveillance:zone
- =entrance
-- **Surveills a corridor** corresponds
- with surveillance:zone
- =corridor
-- **Surveills a public tranport platform** corresponds
- with surveillance:zone
- =
- public_transport_platform
-- **Surveills a shop** corresponds
- with surveillance:zone
- =shop
-### camera:mount
+
+ - **Surveills a parking** corresponds with surveillance:zone=parking
+ - **Surveills the traffic** corresponds with surveillance:zone=traffic
+ - **Surveills an entrance** corresponds with surveillance:zone=entrance
+ - **Surveills a corridor** corresponds with surveillance:zone=corridor
+ - **Surveills a public tranport platform** corresponds with surveillance:zone=public_transport_platform
+ - **Surveills a shop** corresponds with surveillance:zone=shop
+
+
+
+
+### camera:mount
+
+
The question is **How is this camera placed?**
-This rendering asks information about the property [camera:mount](https://wiki.openstreetmap.org/wiki/Key:camera:mount)
+This rendering asks information about the property [camera:mount](https://wiki.openstreetmap.org/wiki/Key:camera:mount)
This is rendered with `Mounting method: {camera:mount}`
-- **This camera is placed against a wall** corresponds
- with camera:mount
- =wall
-- **This camera is placed one a pole** corresponds
- with camera:mount
- =pole
-- **This camera is placed on the ceiling** corresponds
- with camera:mount
- =ceiling
+
+
+ - **This camera is placed against a wall** corresponds with camera:mount=wall
+ - **This camera is placed one a pole** corresponds with camera:mount=pole
+ - **This camera is placed on the ceiling** corresponds with camera:mount=ceiling
+
This document is autogenerated from assets/layers/surveillance_camera/surveillance_camera.json
\ No newline at end of file
diff --git a/Docs/Layers/toilet.md b/Docs/Layers/toilet.md
index d9075eeb2..20337920f 100644
--- a/Docs/Layers/toilet.md
+++ b/Docs/Layers/toilet.md
@@ -1,4 +1,6 @@
-toilet
+
+
+ toilet
========
@@ -7,13 +9,15 @@ toilet
A layer showing (public) toilets
+
+
+
## Table of contents
1. [toilet](#toilet)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [toilet-access](#toilet-access)
+ [toilets-fee](#toilets-fee)
@@ -29,38 +33,58 @@ A layer showing (public) toilets
+ [level](#level)
+ [description](#description)
-#### Themes using this layer
-- [nature](https://mapcomplete.osm.be/nature)
-- [personal](https://mapcomplete.osm.be/personal)
-- [toilets](https://mapcomplete.osm.be/toilets)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [nature](https://mapcomplete.osm.be/nature)
+ - [personal](https://mapcomplete.osm.be/personal)
+ - [toilets](https://mapcomplete.osm.be/toilets)
+
[Go to the source code](../assets/layers/toilet/toilet.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- amenity
- =toilets
-Supported attributes
+
+ - amenity=toilets
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/access#values) [access](https://wiki.openstreetmap.org/wiki/Key:access) | [string](../SpecialInputElements.md#string) | [yes](https://wiki.openstreetmap.org/wiki/Tag:access%3Dyes) [customers](https://wiki.openstreetmap.org/wiki/Tag:access%3Dcustomers) [no](https://wiki.openstreetmap.org/wiki/Tag:access%3Dno) [key](https://wiki.openstreetmap.org/wiki/Tag:access%3Dkey)
[](https://taginfo.openstreetmap.org/keys/fee#values) [fee](https://wiki.openstreetmap.org/wiki/Key:fee) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:fee%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:fee%3Dno)
-[](https://taginfo.openstreetmap.org/keys/charge#values) [charge](https://wiki.openstreetmap.org/wiki/Key:charge) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/charge#values) [charge](https://wiki.openstreetmap.org/wiki/Key:charge) | [string](../SpecialInputElements.md#string) |
[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [24/7](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7)
[](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)
[](https://taginfo.openstreetmap.org/keys/toilets:position#values) [toilets:position](https://wiki.openstreetmap.org/wiki/Key:toilets:position) | Multiple choice | [seated](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated) [urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Durinal) [squat](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dsquat) [seated;urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated;urinal)
@@ -68,191 +92,229 @@ attribute | type | values which are supported by this layer
[](https://taginfo.openstreetmap.org/keys/changing_table:location#values) [changing_table:location](https://wiki.openstreetmap.org/wiki/Key:changing_table:location) | [string](../SpecialInputElements.md#string) | [female_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dfemale_toilet) [male_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dmale_toilet) [wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dwheelchair_toilet) [dedicated_room](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Ddedicated_room)
[](https://taginfo.openstreetmap.org/keys/toilets:handwashing#values) [toilets:handwashing](https://wiki.openstreetmap.org/wiki/Key:toilets:handwashing) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dno)
[](https://taginfo.openstreetmap.org/keys/toilets:paper_supplied#values) [toilets:paper_supplied](https://wiki.openstreetmap.org/wiki/Key:toilets:paper_supplied) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dno)
-[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1)
-[](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1)
+[](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [string](../SpecialInputElements.md#string) |
+
+
+
+
+### images
+
-### images
_This tagrendering has no question and is thus read-only_
-### toilet-access
+
+
+
+
+### toilet-access
+
+
The question is **Are these toilets publicly accessible?**
-This rendering asks information about the property [access](https://wiki.openstreetmap.org/wiki/Key:access)
+This rendering asks information about the property [access](https://wiki.openstreetmap.org/wiki/Key:access)
This is rendered with `Access is {access}`
-- **Public access** corresponds with access
- =yes
-- **Only access to customers** corresponds
- with access
- =customers
-- **Not accessible** corresponds with
- access=no
-- **Accessible, but one has to ask a key to enter** corresponds
- with access
- =key
-- **Public access** corresponds with access
- =public_This option cannot be
- chosen as answer_
-### toilets-fee
+
+ - **Public access** corresponds with access=yes
+ - **Only access to customers** corresponds with access=customers
+ - **Not accessible** corresponds with access=no
+ - **Accessible, but one has to ask a key to enter** corresponds with access=key
+ - **Public access** corresponds with access=public_This option cannot be chosen as answer_
+
+
+
+
+### toilets-fee
+
+
The question is **Are these toilets free to use?**
-- **These are paid toilets** corresponds with
- fee=yes
-- **Free to use** corresponds with fee
- =no
-### toilet-charge
+
+
+
+ - **These are paid toilets** corresponds with fee=yes
+ - **Free to use** corresponds with fee=no
+
+
+
+
+### toilet-charge
+
+
The question is **How much does one have to pay for these toilets?**
-This rendering asks information about the property [charge](https://wiki.openstreetmap.org/wiki/Key:charge)
+This rendering asks information about the property [charge](https://wiki.openstreetmap.org/wiki/Key:charge)
This is rendered with `The fee is {charge}`
-### payment-options
+
+
+### payment-options
+
+
The question is **Which methods of payment are accepted here?**
-- **Cash is accepted here** corresponds
- with payment:cash
- =yesUnselecting this answer
- will add payment:cash
- =no
-- **Payment cards are accepted here** corresponds
- with payment:cards
- =yesUnselecting this answer
- will add payment:cards
- =no
-### Opening-hours
+
+
+
+ - **Cash is accepted here** corresponds with payment:cash=yesUnselecting this answer will add payment:cash=no
+ - **Payment cards are accepted here** corresponds with payment:cards=yesUnselecting this answer will add payment:cards=no
+
+
+
+
+### Opening-hours
+
+
The question is **When are these toilets opened?**
-This rendering asks information about the
-property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
+This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)
This is rendered with `{opening_hours_table()}`
-- **Opened 24/7** corresponds with
- opening_hours=24/7
-### toilets-wheelchair
+
+ - **Opened 24/7** corresponds with opening_hours=24/7
+
+
+
+
+### toilets-wheelchair
+
+
The question is **Is there a dedicated toilet for wheelchair users**
-- **There is a dedicated toilet for wheelchair users** corresponds
- with wheelchair
- =yes
-- **No wheelchair access** corresponds
- with wheelchair
- =no
-### toilets-type
+
+
+
+ - **There is a dedicated toilet for wheelchair users** corresponds with wheelchair=yes
+ - **No wheelchair access** corresponds with wheelchair=no
+
+
+
+
+### toilets-type
+
+
The question is **Which kind of toilets are this?**
-- **There are only seated toilets** corresponds
- with toilets:position
- =seated
-- **There are only urinals here** corresponds
- with toilets:position
- =urinal
-- **There are only squat toilets here** corresponds
- with toilets:position
- =squat
-- **Both seated toilets and urinals are available here** corresponds
- with toilets:position
- =seated;urinal
-### toilets-changing-table
+
+
+
+ - **There are only seated toilets** corresponds with toilets:position=seated
+ - **There are only urinals here** corresponds with toilets:position=urinal
+ - **There are only squat toilets here** corresponds with toilets:position=squat
+ - **Both seated toilets and urinals are available here** corresponds with toilets:position=seated;urinal
+
+
+
+
+### toilets-changing-table
+
+
The question is **Is a changing table (to change diapers) available?**
-- **A changing table is available** corresponds
- with changing_table
- =yes
-- **No changing table is available** corresponds
- with changing_table
- =no
-### toilet-changing_table:location
+
+
+
+ - **A changing table is available** corresponds with changing_table=yes
+ - **No changing table is available** corresponds with changing_table=no
+
+
+
+
+### toilet-changing_table:location
+
+
The question is **Where is the changing table located?**
-This rendering asks information about the
-property [changing_table:location](https://wiki.openstreetmap.org/wiki/Key:changing_table:location)
+This rendering asks information about the property [changing_table:location](https://wiki.openstreetmap.org/wiki/Key:changing_table:location)
This is rendered with `The changing table is located at {changing_table:location}`
-- **The changing table is in the toilet for women. ** corresponds
- with changing_table:
- location
- =
- female_toilet
-- **The changing table is in the toilet for men. ** corresponds
- with changing_table:
- location=
- male_toilet
-- **The changing table is in the toilet for wheelchair users. ** corresponds
- with changing_table:
- location
- =
- wheelchair_toilet
-- **The changing table is in a dedicated room. ** corresponds
- with changing_table:
- location
- =
- dedicated_room
-### toilet-handwashing
+
+ - **The changing table is in the toilet for women. ** corresponds with changing_table:location=female_toilet
+ - **The changing table is in the toilet for men. ** corresponds with changing_table:location=male_toilet
+ - **The changing table is in the toilet for wheelchair users. ** corresponds with changing_table:location=wheelchair_toilet
+ - **The changing table is in a dedicated room. ** corresponds with changing_table:location=dedicated_room
+
+
+
+
+### toilet-handwashing
+
+
The question is **Do these toilets have a sink to wash your hands?**
-- **This toilets have a sink to wash your hands** corresponds
- with toilets:handwashing
- =yes
-- **This toilets don't have a sink to wash your hands** corresponds
- with toilets:handwashing
- =no
-### toilet-has-paper
+
+
+
+ - **This toilets have a sink to wash your hands** corresponds with toilets:handwashing=yes
+ - **This toilets don't have a sink to wash your hands** corresponds with toilets:handwashing=no
+
+
+
+
+### toilet-has-paper
+
+
The question is **Does one have to bring their own toilet paper to this toilet?**
-- **This toilet is equipped with toilet paper** corresponds
- with toilets:
- paper_supplied=
- yes
-- **You have to bring your own toilet paper to this toilet** corresponds
- with toilets:
- paper_supplied=
- no
-### level
+
+
+
+ - **This toilet is equipped with toilet paper** corresponds with toilets:paper_supplied=yes
+ - **You have to bring your own toilet paper to this toilet** corresponds with toilets:paper_supplied=no
+
+
+
+
+### level
+
+
The question is **On what level is this feature located?**
-This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level)
+This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level)
This is rendered with `Located on the {level}th floor`
-- **Located underground** corresponds with
- location=underground_
- This option cannot be chosen as answer_
-- **Located on the ground floor** corresponds
- with level
- =0
-- **Located on the ground floor** corresponds with _This option cannot be chosen as answer_
-- **Located on the first floor** corresponds
- with level
- =1
-### description
-The question is **Is there still something relevant you couldn't give in the previous questions? Add it
-here. Don't repeat already stated facts**
+ - **Located underground** corresponds with location=underground_This option cannot be chosen as answer_
+ - **Located on the ground floor** corresponds with level=0
+ - **Located on the ground floor** corresponds with _This option cannot be chosen as answer_
+ - **Located on the first floor** corresponds with level=1
+ - **Located on the first basement level** corresponds with level=-1
-This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description)
-This is rendered with `{description}`
+
+
+
+### description
+
+
+
+The question is **Is there still something relevant you couldn't give in the previous questions? Add it here. Don't repeat already stated facts**
+
+This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description)
+This is rendered with `{description}`
This document is autogenerated from assets/layers/toilet/toilet.json
\ No newline at end of file
diff --git a/Docs/Layers/trail.md b/Docs/Layers/trail.md
index 324da9989..d84ad3bbf 100644
--- a/Docs/Layers/trail.md
+++ b/Docs/Layers/trail.md
@@ -1,4 +1,6 @@
-trail
+
+
+ trail
=======
@@ -7,12 +9,14 @@ trail
Aangeduide wandeltochten
+
+
+
## Table of contents
1. [trail](#trail)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [trail-length](#trail-length)
+ [Name](#name)
@@ -21,98 +25,146 @@ Aangeduide wandeltochten
+ [Wheelchair access](#wheelchair-access)
+ [pushchair access](#pushchair-access)
+
+
+
+
+
+
+
[Go to the source code](../assets/layers/trail/trail.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- route~^.*foot.*$|route~^.*hiking.*$|route~^.*bycicle.*$|route~^.*horse.*$
-Supported attributes
+
+ - route~^.*foot.*$|route~^.*hiking.*$|route~^.*bycicle.*$|route~^.*horse.*$
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) |
[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) | [Natuurpunt](https://wiki.openstreetmap.org/wiki/Tag:operator%3DNatuurpunt)
[](https://taginfo.openstreetmap.org/keys/colour#values) [colour](https://wiki.openstreetmap.org/wiki/Key:colour) | [color](../SpecialInputElements.md#color) | [blue](https://wiki.openstreetmap.org/wiki/Tag:colour%3Dblue) [red](https://wiki.openstreetmap.org/wiki/Tag:colour%3Dred) [green](https://wiki.openstreetmap.org/wiki/Tag:colour%3Dgreen) [yellow](https://wiki.openstreetmap.org/wiki/Tag:colour%3Dyellow)
[](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)
[](https://taginfo.openstreetmap.org/keys/pushchair#values) [pushchair](https://wiki.openstreetmap.org/wiki/Key:pushchair) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:pushchair%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:pushchair%3Dno)
-### images
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### trail-length
+
+
+
+
+### trail-length
+
+
_This tagrendering has no question and is thus read-only_
-### Name
+
+
+
+
+### Name
+
+
The question is **Wat is de naam van deze wandeling?**
-This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
+This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with `Deze wandeling heet {name}`
-### Operator tag
+
+
+### Operator tag
+
+
The question is **Wie beheert deze wandeltocht?**
-This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
+This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
This is rendered with `Beheer door {operator}`
-- **Dit gebied wordt beheerd door Natuurpunt**
- corresponds with operator
- =Natuurpunt
-- **Dit gebied wordt beheerd door {operator}**
- corresponds with operator~^(n|N)atuurpunt.*$_This option cannot be chosen as answer_
-### Color
+
+ - **Dit gebied wordt beheerd door Natuurpunt** corresponds with operator=Natuurpunt
+ - **Dit gebied wordt beheerd door {operator}** corresponds with operator~^(n|N)atuurpunt.*$_This option cannot be chosen as answer_
+
+
+
+
+### Color
+
+
The question is **Welke kleur heeft deze wandeling?**
-This rendering asks information about the property [colour](https://wiki.openstreetmap.org/wiki/Key:colour)
+This rendering asks information about the property [colour](https://wiki.openstreetmap.org/wiki/Key:colour)
This is rendered with `Deze wandeling heeft kleur {colour}`
-- **Blue trail** corresponds with colour
- =blue
-- **Red trail** corresponds with colour
- =red
-- **Green trail** corresponds with colour
- =green
-- **Yellow trail** corresponds with colour
- =yellow
-### Wheelchair access
+
+ - **Blue trail** corresponds with colour=blue
+ - **Red trail** corresponds with colour=red
+ - **Green trail** corresponds with colour=green
+ - **Yellow trail** corresponds with colour=yellow
+
+
+
+
+### Wheelchair access
+
+
The question is **Is deze wandeling toegankelijk met de rolstoel?**
-- **deze wandeltocht is toegankelijk met de rolstoel** corresponds
- with wheelchair
- =yes
-- **deze wandeltocht is niet toegankelijk met de rolstoel** corresponds
- with wheelchair
- =no
-### pushchair access
+
+
+
+ - **deze wandeltocht is toegankelijk met de rolstoel** corresponds with wheelchair=yes
+ - **deze wandeltocht is niet toegankelijk met de rolstoel** corresponds with wheelchair=no
+
+
+
+
+### pushchair access
+
+
The question is **Is deze wandeltocht toegankelijk met de buggy?**
-- **deze wandeltocht is toegankelijk met de buggy** corresponds
- with pushchair
- =yes
-- **deze wandeltocht is niet toegankelijk met de buggy** corresponds
- with pushchair
- =no
+
+
+
+
+ - **deze wandeltocht is toegankelijk met de buggy** corresponds with pushchair=yes
+ - **deze wandeltocht is niet toegankelijk met de buggy** corresponds with pushchair=no
+
This document is autogenerated from assets/layers/trail/trail.json
\ No newline at end of file
diff --git a/Docs/Layers/tree_node.md b/Docs/Layers/tree_node.md
index ddb54c8f8..ceb5fca0f 100644
--- a/Docs/Layers/tree_node.md
+++ b/Docs/Layers/tree_node.md
@@ -1,19 +1,23 @@
-tree_node
+
+
+ tree_node
===========
-
+
A layer showing trees
+
+
+
## Table of contents
1. [tree_node](#tree_node)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [tree-height](#tree-height)
+ [tree-leaf_type](#tree-leaf_type)
@@ -24,158 +28,199 @@ A layer showing trees
+ [tree_node-ref:OnroerendErfgoed](#tree_node-refonroerenderfgoed)
+ [tree_node-wikidata](#tree_node-wikidata)
-#### Themes using this layer
-- [personal](https://mapcomplete.osm.be/personal)
-- [trees](https://mapcomplete.osm.be/trees)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [personal](https://mapcomplete.osm.be/personal)
+ - [trees](https://mapcomplete.osm.be/trees)
+
[Go to the source code](../assets/layers/tree_node/tree_node.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- natural
- =tree
-Supported attributes
+
+ - natural=tree
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/height#values) [height](https://wiki.openstreetmap.org/wiki/Key:height) | Multiple choice |
+[](https://taginfo.openstreetmap.org/keys/height#values) [height](https://wiki.openstreetmap.org/wiki/Key:height) | Multiple choice |
[](https://taginfo.openstreetmap.org/keys/leaf_type#values) [leaf_type](https://wiki.openstreetmap.org/wiki/Key:leaf_type) | Multiple choice | [broadleaved](https://wiki.openstreetmap.org/wiki/Tag:leaf_type%3Dbroadleaved) [needleleaved](https://wiki.openstreetmap.org/wiki/Tag:leaf_type%3Dneedleleaved)
[](https://taginfo.openstreetmap.org/keys/denotation#values) [denotation](https://wiki.openstreetmap.org/wiki/Key:denotation) | Multiple choice | [landmark](https://wiki.openstreetmap.org/wiki/Tag:denotation%3Dlandmark) [natural_monument](https://wiki.openstreetmap.org/wiki/Tag:denotation%3Dnatural_monument) [agricultural](https://wiki.openstreetmap.org/wiki/Tag:denotation%3Dagricultural) [park](https://wiki.openstreetmap.org/wiki/Tag:denotation%3Dpark) [garden](https://wiki.openstreetmap.org/wiki/Tag:denotation%3Dgarden) [avenue](https://wiki.openstreetmap.org/wiki/Tag:denotation%3Davenue) [urban](https://wiki.openstreetmap.org/wiki/Tag:denotation%3Durban) [none](https://wiki.openstreetmap.org/wiki/Tag:denotation%3Dnone)
[](https://taginfo.openstreetmap.org/keys/leaf_cycle#values) [leaf_cycle](https://wiki.openstreetmap.org/wiki/Key:leaf_cycle) | Multiple choice | [deciduous](https://wiki.openstreetmap.org/wiki/Tag:leaf_cycle%3Ddeciduous) [evergreen](https://wiki.openstreetmap.org/wiki/Tag:leaf_cycle%3Devergreen)
[](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)
[](https://taginfo.openstreetmap.org/keys/heritage#values) [heritage](https://wiki.openstreetmap.org/wiki/Key:heritage) | Multiple choice | [4](https://wiki.openstreetmap.org/wiki/Tag:heritage%3D4) [4](https://wiki.openstreetmap.org/wiki/Tag:heritage%3D4) [yes](https://wiki.openstreetmap.org/wiki/Tag:heritage%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:heritage%3Dno)
-[](https://taginfo.openstreetmap.org/keys/ref:OnroerendErfgoed#values) [ref:OnroerendErfgoed](https://wiki.openstreetmap.org/wiki/Key:ref:OnroerendErfgoed) | [nat](../SpecialInputElements.md#nat) |
-[](https://taginfo.openstreetmap.org/keys/wikidata#values) [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata) | [wikidata](../SpecialInputElements.md#wikidata) |
+[](https://taginfo.openstreetmap.org/keys/ref:OnroerendErfgoed#values) [ref:OnroerendErfgoed](https://wiki.openstreetmap.org/wiki/Key:ref:OnroerendErfgoed) | [nat](../SpecialInputElements.md#nat) |
+[](https://taginfo.openstreetmap.org/keys/wikidata#values) [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata) | [wikidata](../SpecialInputElements.md#wikidata) |
+
+
+
+
+### images
+
-### images
_This tagrendering has no question and is thus read-only_
-### tree-height
+
+
+
+
+### tree-height
+
+
_This tagrendering has no question and is thus read-only_
-- **Height: {height} m** corresponds with height~^[0-9.]+$
-### tree-leaf_type
+
+
+
+ - **Height: {height} m** corresponds with height~^[0-9.]+$
+
+
+
+
+### tree-leaf_type
+
+
The question is **Is this a broadleaved or needleleaved tree?**
-- ** Broadleaved** corresponds
- with leaf_type
- =broadleaved
-- ** Needleleaved**
- corresponds with leaf_type
- =needleleaved
-- ** Permanently leafless**
- corresponds with leaf_type
- =leafless_This option
- cannot be chosen as answer_
-### tree-denotation
+
+
+
+ - ** Broadleaved** corresponds with leaf_type=broadleaved
+ - ** Needleleaved** corresponds with leaf_type=needleleaved
+ - ** Permanently leafless** corresponds with leaf_type=leafless_This option cannot be chosen as answer_
+
+
+
+
+### tree-denotation
+
+
The question is **How significant is this tree? Choose the first answer that applies.**
-- **The tree is remarkable due to its size or prominent location. It is useful for navigation.** corresponds
- with denotation
- =landmark
-- **The tree is a natural monument, e.g. because it is especially old, or of a valuable species.** corresponds
- with denotation
- =natural_monument
-- **The tree is used for agricultural purposes, e.g. in an orchard.** corresponds
- with denotation
- =agricultural
-- **The tree is in a park or similar (cemetery, school grounds, …).** corresponds
- with denotation
- =park
-- **The tree is a residential garden.** corresponds
- with denotation
- =garden
-- **This is a tree along an avenue.** corresponds
- with denotation
- =avenue
-- **The tree is an urban area.** corresponds
- with denotation
- =urban
-- **The tree is outside of an urban area.** corresponds
- with denotation
- =none
-### tree-decidouous
+
+
+
+ - **The tree is remarkable due to its size or prominent location. It is useful for navigation.** corresponds with denotation=landmark
+ - **The tree is a natural monument, e.g. because it is especially old, or of a valuable species.** corresponds with denotation=natural_monument
+ - **The tree is used for agricultural purposes, e.g. in an orchard.** corresponds with denotation=agricultural
+ - **The tree is in a park or similar (cemetery, school grounds, …).** corresponds with denotation=park
+ - **The tree is a residential garden.** corresponds with denotation=garden
+ - **This is a tree along an avenue.** corresponds with denotation=avenue
+ - **The tree is an urban area.** corresponds with denotation=urban
+ - **The tree is outside of an urban area.** corresponds with denotation=none
+
+
+
+
+### tree-decidouous
+
+
The question is **Is this tree evergreen or deciduous?**
-- **Deciduous: the tree loses its leaves for some time of the year.** corresponds
- with leaf_cycle
- =deciduous
-- **Evergreen.** corresponds with
- leaf_cycle=evergreen
-### tree_node-name
+
+
+
+ - **Deciduous: the tree loses its leaves for some time of the year.** corresponds with leaf_cycle=deciduous
+ - **Evergreen.** corresponds with leaf_cycle=evergreen
+
+
+
+
+### tree_node-name
+
+
The question is **Does the tree have a name?**
-This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
+This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name)
This is rendered with `Name: {name}`
-- **The tree does not have a name.** corresponds
- with noname
- =yes
-### tree-heritage
+
+ - **The tree does not have a name.** corresponds with noname=yes
+
+
+
+
+### tree-heritage
+
+
The question is **Is this tree registered heritage?**
-- **
- Registered as heritage by Onroerend Erfgoed Flanders** corresponds
- with heritage
- =4
- &heritage:operator
- =
- OnroerendErfgoed
-- **Registered as heritage by Direction du Patrimoine culturel Brussels** corresponds
- with heritage
- =4
- &heritage:operator
- =aatl
-- **Registered as heritage by a different organisation** corresponds
- with heritage
- =yes
-- **Not registered as heritage** corresponds
- with heritage
- =no
-- **Registered as heritage by a different organisation** corresponds with heritage~^..*$_This option cannot be chosen as
- answer_
-### tree_node-ref:OnroerendErfgoed
+
+
+
+ - ** Registered as heritage by Onroerend Erfgoed Flanders** corresponds with heritage=4&heritage:operator=OnroerendErfgoed
+ - **Registered as heritage by Direction du Patrimoine culturel Brussels** corresponds with heritage=4&heritage:operator=aatl
+ - **Registered as heritage by a different organisation** corresponds with heritage=yes
+ - **Not registered as heritage** corresponds with heritage=no
+ - **Registered as heritage by a different organisation** corresponds with heritage~^..*$_This option cannot be chosen as answer_
+
+
+
+
+### tree_node-ref:OnroerendErfgoed
+
+
The question is **What is the ID issued by Onroerend Erfgoed Flanders?**
-This rendering asks information about the
-property [ref:OnroerendErfgoed](https://wiki.openstreetmap.org/wiki/Key:ref:OnroerendErfgoed)
-This is rendered
-with ` Onroerend Erfgoed ID: {ref:OnroerendErfgoed}`
+This rendering asks information about the property [ref:OnroerendErfgoed](https://wiki.openstreetmap.org/wiki/Key:ref:OnroerendErfgoed)
+This is rendered with ` Onroerend Erfgoed ID: {ref:OnroerendErfgoed}`
+
+
+
+### tree_node-wikidata
+
-### tree_node-wikidata
The question is **What is the Wikidata ID for this tree?**
-This rendering asks information about the property [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata)
-This is rendered
-with ` Wikidata: {wikidata}`
+This rendering asks information about the property [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata)
+This is rendered with ` Wikidata: {wikidata}`
This document is autogenerated from assets/layers/tree_node/tree_node.json
\ No newline at end of file
diff --git a/Docs/Layers/viewpoint.md b/Docs/Layers/viewpoint.md
index 341db70b2..8b2bcac35 100644
--- a/Docs/Layers/viewpoint.md
+++ b/Docs/Layers/viewpoint.md
@@ -1,4 +1,6 @@
-viewpoint
+
+
+ viewpoint
===========
@@ -7,49 +9,75 @@ viewpoint
A nice viewpoint or nice view. Ideal to add an image if no other category fits
+
+
+
## Table of contents
1. [viewpoint](#viewpoint)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [viewpoint-description](#viewpoint-description)
+
+
+
+
+
+
+
[Go to the source code](../assets/layers/viewpoint/viewpoint.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- tourism
- =viewpoint
-Supported attributes
+
+ - tourism=viewpoint
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [string](../SpecialInputElements.md#string) |
+
+
+
+
+### images
+
-### images
_This tagrendering has no question and is thus read-only_
-### viewpoint-description
+
+
+
+
+### viewpoint-description
+
+
The question is **Do you want to add a description?**
-This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description)
-This is rendered with `{description}`
+This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description)
+This is rendered with `{description}`
This document is autogenerated from assets/layers/viewpoint/viewpoint.json
\ No newline at end of file
diff --git a/Docs/Layers/village_green.md b/Docs/Layers/village_green.md
index 2511c9708..fbc8ce8ee 100644
--- a/Docs/Layers/village_green.md
+++ b/Docs/Layers/village_green.md
@@ -1,4 +1,6 @@
-village_green
+
+
+ village_green
===============
@@ -7,43 +9,76 @@ village_green
A layer showing village-green (which are communal green areas, but not quite parks"
+
+
+
## Table of contents
1. [village_green](#village_green)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [village_green-explanation](#village_green-explanation)
+ [village_green-reviews](#village_green-reviews)
+
+
+
+
+
+
+
[Go to the source code](../assets/layers/village_green/village_green.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- landuse
- =village_green
-Supported attributes
+
+ - landuse=village_green
+
+
+
+
+ Supported attributes
----------------------
-### images
+
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### village_green-explanation
+
+
+
+
+### village_green-explanation
+
+
_This tagrendering has no question and is thus read-only_
-### village_green-reviews
+
+
+
+
+### village_green-reviews
+
+
_This tagrendering has no question and is thus read-only_
+
+
This document is autogenerated from assets/layers/village_green/village_green.json
\ No newline at end of file
diff --git a/Docs/Layers/visitor_information_centre.md b/Docs/Layers/visitor_information_centre.md
index 44b52f3fc..06f61cf60 100644
--- a/Docs/Layers/visitor_information_centre.md
+++ b/Docs/Layers/visitor_information_centre.md
@@ -1,4 +1,6 @@
-visitor_information_centre
+
+
+ visitor_information_centre
============================
@@ -7,32 +9,43 @@ visitor_information_centre
A visitor center offers information about a specific attraction or place of interest where it is located.
+
+
+
## Table of contents
1. [visitor_information_centre](#visitor_information_centre)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+
+
+
+
+
+
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
[Go to the source code](../assets/layers/visitor_information_centre/visitor_information_centre.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- information
- =visitor_centre
- |information
- =office
-Supported attributes
+
+ - information=visitor_centre|information=office
+
+
+
+
+ Supported attributes
----------------------
-
+
This document is autogenerated from assets/layers/visitor_information_centre/visitor_information_centre.json
\ No newline at end of file
diff --git a/Docs/Layers/walls_and_buildings.md b/Docs/Layers/walls_and_buildings.md
index 7940feec6..3cf13aa66 100644
--- a/Docs/Layers/walls_and_buildings.md
+++ b/Docs/Layers/walls_and_buildings.md
@@ -1,54 +1,71 @@
-walls_and_buildings
+
+
+ walls_and_buildings
=====================
-Special builtin layer providing all walls and buildings. This layer is useful in presets for objects which can be placed
-against walls (e.g. AEDs, postboxes, entrances, addresses, surveillance cameras, ...). This layer is invisible by
-default and not toggleable by the user.
+Special builtin layer providing all walls and buildings. This layer is useful in presets for objects which can be placed against walls (e.g. AEDs, postboxes, entrances, addresses, surveillance cameras, ...). This layer is invisible by default and not toggleable by the user.
+
+
+
## Table of contents
1. [walls_and_buildings](#walls_and_buildings)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
-- This layer is not visible by default and must be enabled in the filter by the user.
-- Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
-- Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
-- This layer is needed as dependency for layer [defibrillator](#defibrillator)
-- This layer is needed as dependency for layer [entrance](#entrance)
-- This layer is needed as dependency for layer [surveillance_camera](#surveillance_camera)
-#### Themes using this layer
-- [aed](https://mapcomplete.osm.be/aed)
-- [entrances](https://mapcomplete.osm.be/entrances)
-- [personal](https://mapcomplete.osm.be/personal)
-- [surveillance](https://mapcomplete.osm.be/surveillance)
+
+ - This layer is not visible by default and must be enabled in the filter by the user.
+ - Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
+ - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`
+ - This layer is needed as dependency for layer [defibrillator](#defibrillator)
+ - This layer is needed as dependency for layer [entrance](#entrance)
+ - This layer is needed as dependency for layer [surveillance_camera](#surveillance_camera)
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [aed](https://mapcomplete.osm.be/aed)
+ - [entrances](https://mapcomplete.osm.be/entrances)
+ - [personal](https://mapcomplete.osm.be/personal)
+ - [surveillance](https://mapcomplete.osm.be/surveillance)
+
[Go to the source code](../assets/layers/walls_and_buildings/walls_and_buildings.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- barrier
- =wall|building~^..*$
-Supported attributes
+
+ - barrier=wall|building~^..*$
+
+
+
+
+ Supported attributes
----------------------
-
+
This document is autogenerated from assets/layers/walls_and_buildings/walls_and_buildings.json
\ No newline at end of file
diff --git a/Docs/Layers/waste_basket.md b/Docs/Layers/waste_basket.md
index 3357babed..1797f60fe 100644
--- a/Docs/Layers/waste_basket.md
+++ b/Docs/Layers/waste_basket.md
@@ -1,4 +1,6 @@
-waste_basket
+
+
+ waste_basket
==============
@@ -7,78 +9,105 @@ waste_basket
This is a public waste basket, thrash can, where you can throw away your thrash.
+
+
+
## Table of contents
1. [waste_basket](#waste_basket)
- * [Themes using this layer](#themes-using-this-layer)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ * [Themes using this layer](#themes-using-this-layer)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [waste-basket-waste-types](#waste-basket-waste-types)
+ [dispensing_dog_bags](#dispensing_dog_bags)
-#### Themes using this layer
-- [personal](https://mapcomplete.osm.be/personal)
-- [waste_basket](https://mapcomplete.osm.be/waste_basket)
+
+
+
+
+
+
+
+
+#### Themes using this layer
+
+
+
+
+
+ - [personal](https://mapcomplete.osm.be/personal)
+ - [waste_basket](https://mapcomplete.osm.be/waste_basket)
+
[Go to the source code](../assets/layers/waste_basket/waste_basket.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- amenity
- =waste_basket
-Supported attributes
+
+ - amenity=waste_basket
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
[](https://taginfo.openstreetmap.org/keys/waste#values) [waste](https://wiki.openstreetmap.org/wiki/Key:waste) | Multiple choice | [trash](https://wiki.openstreetmap.org/wiki/Tag:waste%3Dtrash) [dog_excrement](https://wiki.openstreetmap.org/wiki/Tag:waste%3Ddog_excrement) [cigarettes](https://wiki.openstreetmap.org/wiki/Tag:waste%3Dcigarettes) [drugs](https://wiki.openstreetmap.org/wiki/Tag:waste%3Ddrugs) [sharps](https://wiki.openstreetmap.org/wiki/Tag:waste%3Dsharps)
[](https://taginfo.openstreetmap.org/keys/vending#values) [vending](https://wiki.openstreetmap.org/wiki/Key:vending) | Multiple choice | [dog_excrement_bag](https://wiki.openstreetmap.org/wiki/Tag:vending%3Ddog_excrement_bag) [](https://wiki.openstreetmap.org/wiki/Tag:vending%3D) [](https://wiki.openstreetmap.org/wiki/Tag:vending%3D)
-### waste-basket-waste-types
+
+
+
+### waste-basket-waste-types
+
+
The question is **What kind of waste basket is this?**
-- **A waste basket for general waste** corresponds with _This option cannot be chosen as answer_
-- **A waste basket for general waste** corresponds
- with waste
- =trash
-- **A waste basket for dog excrements** corresponds
- with waste
- =dog_excrement
-- **A waste basket for cigarettes** corresponds
- with waste
- =cigarettes
-- **A waste basket for drugs** corresponds with
- waste=drugs
-- **A waste basket for needles and other sharp objects** corresponds
- with waste
- =sharps
-### dispensing_dog_bags
+
+
+
+ - **A waste basket for general waste** corresponds with _This option cannot be chosen as answer_
+ - **A waste basket for general waste** corresponds with waste=trash
+ - **A waste basket for dog excrements** corresponds with waste=dog_excrement
+ - **A waste basket for cigarettes** corresponds with waste=cigarettes
+ - **A waste basket for drugs** corresponds with waste=drugs
+ - **A waste basket for needles and other sharp objects** corresponds with waste=sharps
+
+
+
+
+### dispensing_dog_bags
+
+
The question is **Does this waste basket have a dispenser for dog excrement bags?**
-- **This waste basket has a dispenser for (dog) excrement bags** corresponds
- with vending
- =dog_excrement_bag
-- **This waste basket does not have a dispenser for (dog) excrement bags** corresponds
- with not:vending
- =
- dog_excrement_bag
-- **This waste basket does not have a dispenser for (dog) excrement bags** corresponds with
+
+
+
+
+ - **This waste basket has a dispenser for (dog) excrement bags** corresponds with vending=dog_excrement_bag
+ - **This waste basket does not have a dispenser for (dog) excrement bags** corresponds with not:vending=dog_excrement_bag
+ - **This waste basket does not have a dispenser for (dog) excrement bags** corresponds with
+
This document is autogenerated from assets/layers/waste_basket/waste_basket.json
\ No newline at end of file
diff --git a/Docs/Layers/watermill.md b/Docs/Layers/watermill.md
index 939beb29f..a69c90700 100644
--- a/Docs/Layers/watermill.md
+++ b/Docs/Layers/watermill.md
@@ -1,4 +1,6 @@
-watermill
+
+
+ watermill
===========
@@ -7,84 +9,104 @@ watermill
Watermolens
+
+
+
## Table of contents
1. [watermill](#watermill)
-
-- [Basic tags for this layer](#basic-tags-for-this-layer)
-- [Supported attributes](#supported-attributes)
+ - [Basic tags for this layer](#basic-tags-for-this-layer)
+ - [Supported attributes](#supported-attributes)
+ [images](#images)
+ [Access tag](#access-tag)
+ [Operator tag](#operator-tag)
+
+
+
+
+
+
+
[Go to the source code](../assets/layers/watermill/watermill.json)
-Basic tags for this layer
+ Basic tags for this layer
---------------------------
Elements must have the all of following tags to be shown on this layer:
-- man_made
- =watermill
-Supported attributes
+
+ - man_made=watermill
+
+
+
+
+ Supported attributes
----------------------
**Warning** This quick overview is incomplete
+
+
attribute | type | values which are supported by this layer
----------- | ------ | ------------------------------------------
-[](https://taginfo.openstreetmap.org/keys/access:description#values) [access:description](https://wiki.openstreetmap.org/wiki/Key:access:description) | [string](../SpecialInputElements.md#string) |
+[](https://taginfo.openstreetmap.org/keys/access:description#values) [access:description](https://wiki.openstreetmap.org/wiki/Key:access:description) | [string](../SpecialInputElements.md#string) |
[](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) | [Natuurpunt](https://wiki.openstreetmap.org/wiki/Tag:operator%3DNatuurpunt)
-### images
+
+
+
+### images
+
+
_This tagrendering has no question and is thus read-only_
-### Access tag
+
+
+
+
+### Access tag
+
+
The question is **Is dit gebied toegankelijk?**
-This rendering asks information about the
-property [access:description](https://wiki.openstreetmap.org/wiki/Key:access:description)
+This rendering asks information about the property [access:description](https://wiki.openstreetmap.org/wiki/Key:access:description)
This is rendered with `De toegankelijkheid van dit gebied is: {access:description}`
-- **Vrij toegankelijk** corresponds with
- access=yes
-- **Niet toegankelijk** corresponds with
- access=no
-- **Niet toegankelijk, want privégebied** corresponds
- with access
- =private
-- **Toegankelijk, ondanks dat het privegebied is** corresponds
- with access
- =permissive
-- **Enkel toegankelijk met een gids of tijdens een activiteit** corresponds
- with access
- =guided
-- **Toegankelijk mits betaling** corresponds
- with access
- =yes
- &fee
- =yes
-### Operator tag
+
+ - **Vrij toegankelijk** corresponds with access=yes
+ - **Niet toegankelijk** corresponds with access=no
+ - **Niet toegankelijk, want privégebied** corresponds with access=private
+ - **Toegankelijk, ondanks dat het privegebied is** corresponds with access=permissive
+ - **Enkel toegankelijk met een gids of tijdens een activiteit** corresponds with access=guided
+ - **Toegankelijk mits betaling** corresponds with access=yes&fee=yes
+
+
+
+
+### Operator tag
+
+
The question is **Wie beheert dit pad?**
-This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
+This rendering asks information about the property [operator](https://wiki.openstreetmap.org/wiki/Key:operator)
This is rendered with `Beheer door {operator}`
-- **Dit gebied wordt beheerd door Natuurpunt**
- corresponds with operator
- =Natuurpunt
-- **Dit gebied wordt beheerd door {operator}**
- corresponds with operator~^(n|N)atuurpunt.*$_This option cannot be chosen as answer_
+
+
+ - **Dit gebied wordt beheerd door Natuurpunt** corresponds with operator=Natuurpunt
+ - **Dit gebied wordt beheerd door {operator}** corresponds with operator~^(n|N)atuurpunt.*$_This option cannot be chosen as answer_
+
This document is autogenerated from assets/layers/watermill/watermill.json
\ No newline at end of file
diff --git a/Docs/Schemas/ExtraLinkConfigJson.schema.json b/Docs/Schemas/ExtraLinkConfigJson.schema.json
new file mode 100644
index 000000000..9d232d1f2
--- /dev/null
+++ b/Docs/Schemas/ExtraLinkConfigJson.schema.json
@@ -0,0 +1,66 @@
+{
+ "type": "object",
+ "properties": {
+ "icon": {
+ "type": "string"
+ },
+ "text": {},
+ "href": {
+ "type": "string"
+ },
+ "newTab": {
+ "type": "boolean"
+ },
+ "requirements": {
+ "type": "array",
+ "items": {
+ "enum": [
+ "iframe",
+ "no-iframe",
+ "no-welcome-message",
+ "welcome-message"
+ ],
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "href"
+ ],
+ "definitions": {
+ "AndOrTagConfigJson": {
+ "type": "object",
+ "properties": {
+ "and": {
+ "type": "array",
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/AndOrTagConfigJson"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ }
+ },
+ "or": {
+ "type": "array",
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/AndOrTagConfigJson"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ }
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/Docs/Schemas/ExtraLinkConfigJsonJSC.ts b/Docs/Schemas/ExtraLinkConfigJsonJSC.ts
new file mode 100644
index 000000000..b3175e1c4
--- /dev/null
+++ b/Docs/Schemas/ExtraLinkConfigJsonJSC.ts
@@ -0,0 +1,64 @@
+export default {
+ "type": "object",
+ "properties": {
+ "icon": {
+ "type": "string"
+ },
+ "text": {},
+ "href": {
+ "type": "string"
+ },
+ "newTab": {
+ "type": "boolean"
+ },
+ "requirements": {
+ "type": "array",
+ "items": {
+ "enum": [
+ "iframe",
+ "no-iframe",
+ "no-welcome-message",
+ "welcome-message"
+ ],
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "href"
+ ],
+ "definitions": {
+ "AndOrTagConfigJson": {
+ "type": "object",
+ "properties": {
+ "and": {
+ "type": "array",
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/AndOrTagConfigJson"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ }
+ },
+ "or": {
+ "type": "array",
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/AndOrTagConfigJson"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#"
+}
\ No newline at end of file
diff --git a/Docs/Schemas/FilterConfigJson.schema.json b/Docs/Schemas/FilterConfigJson.schema.json
index e20cfeb04..ad6acfd29 100644
--- a/Docs/Schemas/FilterConfigJson.schema.json
+++ b/Docs/Schemas/FilterConfigJson.schema.json
@@ -22,6 +22,9 @@
}
]
},
+ "default": {
+ "type": "boolean"
+ },
"fields": {
"type": "array",
"items": {
diff --git a/Docs/Schemas/FilterConfigJsonJSC.ts b/Docs/Schemas/FilterConfigJsonJSC.ts
index 25ecaa851..fc54409ec 100644
--- a/Docs/Schemas/FilterConfigJsonJSC.ts
+++ b/Docs/Schemas/FilterConfigJsonJSC.ts
@@ -22,6 +22,9 @@ export default {
}
]
},
+ "default": {
+ "type": "boolean"
+ },
"fields": {
"type": "array",
"items": {
diff --git a/Docs/Schemas/LayerConfigJson.schema.json b/Docs/Schemas/LayerConfigJson.schema.json
index d5aa2df92..52f9f1e69 100644
--- a/Docs/Schemas/LayerConfigJson.schema.json
+++ b/Docs/Schemas/LayerConfigJson.schema.json
@@ -13,7 +13,7 @@
"description": "A description for this layer.\nShown in the layer selections and in the personel theme"
},
"source": {
- "description": "This determines where the data for the layer is fetched.\nThere are some options:\n\n# Query OSM directly\nsource: {osmTags: \"key=value\"}\n will fetch all objects with given tags from OSM.\n Currently, this will create a query to overpass and fetch the data - in the future this might fetch from the OSM API\n\n# Query OSM Via the overpass API with a custom script\nsource: {overpassScript: \"\"} when you want to do special things. _This should be really rare_.\n This means that the data will be pulled from overpass with this script, and will ignore the osmTags for the query\n However, for the rest of the pipeline, the OsmTags will _still_ be used. This is important to enable layers etc...\n\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}\nSome API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this\n\nNote that both geojson-options might set a flag 'isOsmCache' indicating that the data originally comes from OSM too\n\n\nNOTE: the previous format was 'overpassTags: AndOrTagConfigJson | string', which is interpreted as a shorthand for source: {osmTags: \"key=value\"}\n While still supported, this is considered deprecated",
+ "description": "This determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.",
"anyOf": [
{
"allOf": [
@@ -21,6 +21,7 @@
"type": "object",
"properties": {
"osmTags": {
+ "description": "Every source must set which tags have to be present in order to load the given layer.",
"anyOf": [
{
"$ref": "#/definitions/AndOrTagConfigJson"
@@ -30,8 +31,9 @@
}
]
},
- "overpassScript": {
- "type": "string"
+ "maxCacheAge": {
+ "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
+ "type": "number"
}
},
"required": [
@@ -41,9 +43,8 @@
{
"type": "object",
"properties": {
- "maxCacheAge": {
- "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
- "type": "number"
+ "overpassScript": {
+ "type": "string"
}
}
}
@@ -55,6 +56,7 @@
"type": "object",
"properties": {
"osmTags": {
+ "description": "Every source must set which tags have to be present in order to load the given layer.",
"anyOf": [
{
"$ref": "#/definitions/AndOrTagConfigJson"
@@ -64,32 +66,42 @@
}
]
},
- "geoJson": {
- "type": "string"
- },
- "geoJsonZoomLevel": {
+ "maxCacheAge": {
+ "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
"type": "number"
- },
- "isOsmCache": {
- "type": "boolean"
- },
- "mercatorCrs": {
- "type": "boolean"
}
},
"required": [
- "geoJson",
"osmTags"
]
},
{
"type": "object",
"properties": {
- "maxCacheAge": {
- "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
+ "geoJson": {
+ "description": "The actual source of the data to load, if loaded via geojson.\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}",
+ "type": "string"
+ },
+ "geoJsonZoomLevel": {
+ "description": "To load a tiled geojson layer, set the zoomlevel of the tiles",
"type": "number"
+ },
+ "isOsmCache": {
+ "description": "Indicates that the upstream geojson data is OSM-derived.\nUseful for e.g. merging or for scripts generating this cache",
+ "type": "boolean"
+ },
+ "mercatorCrs": {
+ "description": "Some API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this",
+ "type": "boolean"
+ },
+ "idKey": {
+ "description": "Some API's have an id-field, but give it a different name.\nSetting this key will rename this field into 'id'",
+ "type": "string"
}
- }
+ },
+ "required": [
+ "geoJson"
+ ]
}
]
}
@@ -175,10 +187,10 @@
"items": {
"anyOf": [
{
- "$ref": "#/definitions/default_3"
+ "$ref": "#/definitions/default_4"
},
{
- "$ref": "#/definitions/default_4"
+ "$ref": "#/definitions/default_5"
}
]
}
@@ -366,7 +378,7 @@
{
"type": "array",
"items": {
- "$ref": "#/definitions/default"
+ "$ref": "#/definitions/default_1"
}
},
{
@@ -397,7 +409,7 @@
"description": "Indicates if a point can be moved and configures the modalities.\n\nA feature can be moved by MapComplete if:\n\n- It is a point\n- The point is _not_ part of a way or a a relation.\n\nOff by default. Can be enabled by setting this flag or by configuring.",
"anyOf": [
{
- "$ref": "#/definitions/default_2"
+ "$ref": "#/definitions/default_3"
},
{
"type": "boolean"
@@ -412,7 +424,7 @@
"description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n default: true,\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given",
"type": "array",
"items": {
- "$ref": "#/definitions/default_1"
+ "$ref": "#/definitions/default_2"
}
}
},
@@ -511,8 +523,11 @@
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
@@ -635,7 +650,7 @@
},
"additionalProperties": false
},
- "default_3": {
+ "default_4": {
"description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way",
"type": "object",
"properties": {
@@ -730,7 +745,7 @@
],
"additionalProperties": false
},
- "default_4": {
+ "default_5": {
"description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area",
"type": "object",
"properties": {
@@ -821,7 +836,7 @@
},
"additionalProperties": false
},
- "default": {
+ "default_1": {
"type": "object",
"properties": {
"id": {
@@ -845,6 +860,9 @@
}
]
},
+ "default": {
+ "type": "boolean"
+ },
"fields": {
"type": "array",
"items": {
@@ -933,7 +951,7 @@
},
"additionalProperties": false
},
- "default_2": {
+ "default_3": {
"type": "object",
"properties": {
"enableImproveAccuracy": {
@@ -947,7 +965,7 @@
},
"additionalProperties": false
},
- "default_1": {
+ "default_2": {
"type": "object",
"properties": {
"appliesToKey": {
diff --git a/Docs/Schemas/LayerConfigJsonJSC.ts b/Docs/Schemas/LayerConfigJsonJSC.ts
index ccafa9158..35dc011ac 100644
--- a/Docs/Schemas/LayerConfigJsonJSC.ts
+++ b/Docs/Schemas/LayerConfigJsonJSC.ts
@@ -13,7 +13,7 @@ export default {
"description": "A description for this layer.\nShown in the layer selections and in the personel theme"
},
"source": {
- "description": "This determines where the data for the layer is fetched.\nThere are some options:\n\n# Query OSM directly\nsource: {osmTags: \"key=value\"}\n will fetch all objects with given tags from OSM.\n Currently, this will create a query to overpass and fetch the data - in the future this might fetch from the OSM API\n\n# Query OSM Via the overpass API with a custom script\nsource: {overpassScript: \"\"} when you want to do special things. _This should be really rare_.\n This means that the data will be pulled from overpass with this script, and will ignore the osmTags for the query\n However, for the rest of the pipeline, the OsmTags will _still_ be used. This is important to enable layers etc...\n\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}\nSome API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this\n\nNote that both geojson-options might set a flag 'isOsmCache' indicating that the data originally comes from OSM too\n\n\nNOTE: the previous format was 'overpassTags: AndOrTagConfigJson | string', which is interpreted as a shorthand for source: {osmTags: \"key=value\"}\n While still supported, this is considered deprecated",
+ "description": "This determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.",
"anyOf": [
{
"allOf": [
@@ -21,6 +21,7 @@ export default {
"type": "object",
"properties": {
"osmTags": {
+ "description": "Every source must set which tags have to be present in order to load the given layer.",
"anyOf": [
{
"$ref": "#/definitions/AndOrTagConfigJson"
@@ -30,8 +31,9 @@ export default {
}
]
},
- "overpassScript": {
- "type": "string"
+ "maxCacheAge": {
+ "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
+ "type": "number"
}
},
"required": [
@@ -41,9 +43,8 @@ export default {
{
"type": "object",
"properties": {
- "maxCacheAge": {
- "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
- "type": "number"
+ "overpassScript": {
+ "type": "string"
}
}
}
@@ -55,6 +56,7 @@ export default {
"type": "object",
"properties": {
"osmTags": {
+ "description": "Every source must set which tags have to be present in order to load the given layer.",
"anyOf": [
{
"$ref": "#/definitions/AndOrTagConfigJson"
@@ -64,32 +66,42 @@ export default {
}
]
},
- "geoJson": {
- "type": "string"
- },
- "geoJsonZoomLevel": {
+ "maxCacheAge": {
+ "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
"type": "number"
- },
- "isOsmCache": {
- "type": "boolean"
- },
- "mercatorCrs": {
- "type": "boolean"
}
},
"required": [
- "geoJson",
"osmTags"
]
},
{
"type": "object",
"properties": {
- "maxCacheAge": {
- "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
+ "geoJson": {
+ "description": "The actual source of the data to load, if loaded via geojson.\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}",
+ "type": "string"
+ },
+ "geoJsonZoomLevel": {
+ "description": "To load a tiled geojson layer, set the zoomlevel of the tiles",
"type": "number"
+ },
+ "isOsmCache": {
+ "description": "Indicates that the upstream geojson data is OSM-derived.\nUseful for e.g. merging or for scripts generating this cache",
+ "type": "boolean"
+ },
+ "mercatorCrs": {
+ "description": "Some API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this",
+ "type": "boolean"
+ },
+ "idKey": {
+ "description": "Some API's have an id-field, but give it a different name.\nSetting this key will rename this field into 'id'",
+ "type": "string"
}
- }
+ },
+ "required": [
+ "geoJson"
+ ]
}
]
}
@@ -175,10 +187,10 @@ export default {
"items": {
"anyOf": [
{
- "$ref": "#/definitions/default_3"
+ "$ref": "#/definitions/default_4"
},
{
- "$ref": "#/definitions/default_4"
+ "$ref": "#/definitions/default_5"
}
]
}
@@ -366,7 +378,7 @@ export default {
{
"type": "array",
"items": {
- "$ref": "#/definitions/default"
+ "$ref": "#/definitions/default_1"
}
},
{
@@ -397,7 +409,7 @@ export default {
"description": "Indicates if a point can be moved and configures the modalities.\n\nA feature can be moved by MapComplete if:\n\n- It is a point\n- The point is _not_ part of a way or a a relation.\n\nOff by default. Can be enabled by setting this flag or by configuring.",
"anyOf": [
{
- "$ref": "#/definitions/default_2"
+ "$ref": "#/definitions/default_3"
},
{
"type": "boolean"
@@ -412,7 +424,7 @@ export default {
"description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n default: true,\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given",
"type": "array",
"items": {
- "$ref": "#/definitions/default_1"
+ "$ref": "#/definitions/default_2"
}
}
},
@@ -509,8 +521,11 @@ export default {
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
@@ -632,7 +647,7 @@ export default {
}
}
},
- "default_3": {
+ "default_4": {
"description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way",
"type": "object",
"properties": {
@@ -726,7 +741,7 @@ export default {
"location"
]
},
- "default_4": {
+ "default_5": {
"description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area",
"type": "object",
"properties": {
@@ -816,7 +831,7 @@ export default {
}
}
},
- "default": {
+ "default_1": {
"type": "object",
"properties": {
"id": {
@@ -840,6 +855,9 @@ export default {
}
]
},
+ "default": {
+ "type": "boolean"
+ },
"fields": {
"type": "array",
"items": {
@@ -926,7 +944,7 @@ export default {
}
}
},
- "default_2": {
+ "default_3": {
"type": "object",
"properties": {
"enableImproveAccuracy": {
@@ -939,7 +957,7 @@ export default {
}
}
},
- "default_1": {
+ "default_2": {
"type": "object",
"properties": {
"appliesToKey": {
diff --git a/Docs/Schemas/LayoutConfigJson.schema.json b/Docs/Schemas/LayoutConfigJson.schema.json
index cd18248bd..dcfda9918 100644
--- a/Docs/Schemas/LayoutConfigJson.schema.json
+++ b/Docs/Schemas/LayoutConfigJson.schema.json
@@ -78,7 +78,7 @@
"description": "Define some (overlay) slippy map tilesources",
"type": "array",
"items": {
- "$ref": "#/definitions/default_5"
+ "$ref": "#/definitions/default_6"
}
},
"layers": {
@@ -201,49 +201,59 @@
"type": "number"
}
}
- },
- {
- "type": "boolean"
}
]
},
+ "extraLink": {
+ "description": "Adds an additional button on the top-left of the application.\nThis can link to an arbitrary location.\n\nNote that {lat},{lon},{zoom}, {language} and {theme} will be replaced\n\nDefault: {icon: \"./assets/svg/pop-out.svg\", href: 'https://mapcomplete.osm.be/{theme}.html?lat={lat}&lon={lon}&z={zoom}, requirements: [\"iframe\",\"no-welcome-message]},",
+ "$ref": "#/definitions/default"
+ },
"enableUserBadge": {
+ "description": "If set to false, disables logging in.\nThe userbadge will be hidden, all login-buttons will be hidden and editing will be disabled",
"type": "boolean"
},
"enableShareScreen": {
+ "description": "If false, hides the tab 'share'-tab in the welcomeMessage",
"type": "boolean"
},
"enableMoreQuests": {
+ "description": "Hides the tab with more themes in the welcomeMessage",
"type": "boolean"
},
"enableLayers": {
+ "description": "If false, the layer selection/filter view will be hidden\nThe corresponding URL-parameter is 'fs-filters' instead of 'fs-layers'",
"type": "boolean"
},
"enableSearch": {
+ "description": "If set to false, hides the search bar",
"type": "boolean"
},
"enableAddNewPoints": {
+ "description": "If set to false, the ability to add new points or nodes will be disabled.\nEditing already existing features will still be possible",
"type": "boolean"
},
"enableGeolocation": {
+ "description": "If set to false, the 'geolocation'-button will be hidden.",
"type": "boolean"
},
"enableBackgroundLayerSelection": {
+ "description": "Enable switching the backgroundlayer.\nIf false, the quickswitch-buttons are removed (bottom left) and the dropdown in the layer selection is removed as well",
"type": "boolean"
},
"enableShowAllQuestions": {
+ "description": "If set to true, will show _all_ unanswered questions in a popup instead of just the next one",
"type": "boolean"
},
"enableDownload": {
+ "description": "If set to true, download button for the data will be shown (offers downloading as geojson and csv)",
"type": "boolean"
},
"enablePdfDownload": {
- "type": "boolean"
- },
- "enableIframePopout": {
+ "description": "If set to true, exporting a pdf is enabled",
"type": "boolean"
},
"enableNoteImports": {
+ "description": "If true, notes will be loaded and parsed. If a note is an import (as created by the import_helper.html-tool from mapcomplete),\nthese notes will be shown if a relevant layer is present.",
"type": "boolean"
},
"overpassUrl": {
@@ -367,8 +377,11 @@
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
@@ -491,7 +504,7 @@
},
"additionalProperties": false
},
- "default_3": {
+ "default_4": {
"description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way",
"type": "object",
"properties": {
@@ -586,7 +599,7 @@
],
"additionalProperties": false
},
- "default_4": {
+ "default_5": {
"description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area",
"type": "object",
"properties": {
@@ -677,7 +690,7 @@
},
"additionalProperties": false
},
- "default": {
+ "default_1": {
"type": "object",
"properties": {
"id": {
@@ -701,6 +714,9 @@
}
]
},
+ "default": {
+ "type": "boolean"
+ },
"fields": {
"type": "array",
"items": {
@@ -789,7 +805,7 @@
},
"additionalProperties": false
},
- "default_2": {
+ "default_3": {
"type": "object",
"properties": {
"enableImproveAccuracy": {
@@ -803,7 +819,7 @@
},
"additionalProperties": false
},
- "default_1": {
+ "default_2": {
"type": "object",
"properties": {
"appliesToKey": {
@@ -831,7 +847,7 @@
],
"additionalProperties": false
},
- "default_5": {
+ "default_6": {
"description": "Configuration for a tilesource config",
"type": "object",
"properties": {
@@ -885,7 +901,7 @@
"description": "A description for this layer.\nShown in the layer selections and in the personel theme"
},
"source": {
- "description": "This determines where the data for the layer is fetched.\nThere are some options:\n\n# Query OSM directly\nsource: {osmTags: \"key=value\"}\n will fetch all objects with given tags from OSM.\n Currently, this will create a query to overpass and fetch the data - in the future this might fetch from the OSM API\n\n# Query OSM Via the overpass API with a custom script\nsource: {overpassScript: \"\"} when you want to do special things. _This should be really rare_.\n This means that the data will be pulled from overpass with this script, and will ignore the osmTags for the query\n However, for the rest of the pipeline, the OsmTags will _still_ be used. This is important to enable layers etc...\n\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}\nSome API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this\n\nNote that both geojson-options might set a flag 'isOsmCache' indicating that the data originally comes from OSM too\n\n\nNOTE: the previous format was 'overpassTags: AndOrTagConfigJson | string', which is interpreted as a shorthand for source: {osmTags: \"key=value\"}\n While still supported, this is considered deprecated",
+ "description": "This determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.",
"anyOf": [
{
"allOf": [
@@ -893,6 +909,7 @@
"type": "object",
"properties": {
"osmTags": {
+ "description": "Every source must set which tags have to be present in order to load the given layer.",
"anyOf": [
{
"$ref": "#/definitions/AndOrTagConfigJson"
@@ -902,8 +919,9 @@
}
]
},
- "overpassScript": {
- "type": "string"
+ "maxCacheAge": {
+ "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
+ "type": "number"
}
},
"required": [
@@ -913,9 +931,8 @@
{
"type": "object",
"properties": {
- "maxCacheAge": {
- "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
- "type": "number"
+ "overpassScript": {
+ "type": "string"
}
}
}
@@ -927,6 +944,7 @@
"type": "object",
"properties": {
"osmTags": {
+ "description": "Every source must set which tags have to be present in order to load the given layer.",
"anyOf": [
{
"$ref": "#/definitions/AndOrTagConfigJson"
@@ -936,32 +954,42 @@
}
]
},
- "geoJson": {
- "type": "string"
- },
- "geoJsonZoomLevel": {
+ "maxCacheAge": {
+ "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
"type": "number"
- },
- "isOsmCache": {
- "type": "boolean"
- },
- "mercatorCrs": {
- "type": "boolean"
}
},
"required": [
- "geoJson",
"osmTags"
]
},
{
"type": "object",
"properties": {
- "maxCacheAge": {
- "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
+ "geoJson": {
+ "description": "The actual source of the data to load, if loaded via geojson.\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}",
+ "type": "string"
+ },
+ "geoJsonZoomLevel": {
+ "description": "To load a tiled geojson layer, set the zoomlevel of the tiles",
"type": "number"
+ },
+ "isOsmCache": {
+ "description": "Indicates that the upstream geojson data is OSM-derived.\nUseful for e.g. merging or for scripts generating this cache",
+ "type": "boolean"
+ },
+ "mercatorCrs": {
+ "description": "Some API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this",
+ "type": "boolean"
+ },
+ "idKey": {
+ "description": "Some API's have an id-field, but give it a different name.\nSetting this key will rename this field into 'id'",
+ "type": "string"
}
- }
+ },
+ "required": [
+ "geoJson"
+ ]
}
]
}
@@ -1047,10 +1075,10 @@
"items": {
"anyOf": [
{
- "$ref": "#/definitions/default_3"
+ "$ref": "#/definitions/default_4"
},
{
- "$ref": "#/definitions/default_4"
+ "$ref": "#/definitions/default_5"
}
]
}
@@ -1238,7 +1266,7 @@
{
"type": "array",
"items": {
- "$ref": "#/definitions/default"
+ "$ref": "#/definitions/default_1"
}
},
{
@@ -1269,7 +1297,7 @@
"description": "Indicates if a point can be moved and configures the modalities.\n\nA feature can be moved by MapComplete if:\n\n- It is a point\n- The point is _not_ part of a way or a a relation.\n\nOff by default. Can be enabled by setting this flag or by configuring.",
"anyOf": [
{
- "$ref": "#/definitions/default_2"
+ "$ref": "#/definitions/default_3"
},
{
"type": "boolean"
@@ -1284,7 +1312,7 @@
"description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n default: true,\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given",
"type": "array",
"items": {
- "$ref": "#/definitions/default_1"
+ "$ref": "#/definitions/default_2"
}
}
},
@@ -1294,6 +1322,37 @@
"source"
],
"additionalProperties": false
+ },
+ "default": {
+ "type": "object",
+ "properties": {
+ "icon": {
+ "type": "string"
+ },
+ "text": {},
+ "href": {
+ "type": "string"
+ },
+ "newTab": {
+ "type": "boolean"
+ },
+ "requirements": {
+ "type": "array",
+ "items": {
+ "enum": [
+ "iframe",
+ "no-iframe",
+ "no-welcome-message",
+ "welcome-message"
+ ],
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "href"
+ ],
+ "additionalProperties": false
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
diff --git a/Docs/Schemas/LayoutConfigJsonJSC.ts b/Docs/Schemas/LayoutConfigJsonJSC.ts
index 8ae08a433..14f441f16 100644
--- a/Docs/Schemas/LayoutConfigJsonJSC.ts
+++ b/Docs/Schemas/LayoutConfigJsonJSC.ts
@@ -78,7 +78,7 @@ export default {
"description": "Define some (overlay) slippy map tilesources",
"type": "array",
"items": {
- "$ref": "#/definitions/default_5"
+ "$ref": "#/definitions/default_6"
}
},
"layers": {
@@ -201,49 +201,59 @@ export default {
"type": "number"
}
}
- },
- {
- "type": "boolean"
}
]
},
+ "extraLink": {
+ "description": "Adds an additional button on the top-left of the application.\nThis can link to an arbitrary location.\n\nNote that {lat},{lon},{zoom}, {language} and {theme} will be replaced\n\nDefault: {icon: \"./assets/svg/pop-out.svg\", href: 'https://mapcomplete.osm.be/{theme}.html?lat={lat}&lon={lon}&z={zoom}, requirements: [\"iframe\",\"no-welcome-message]},",
+ "$ref": "#/definitions/default"
+ },
"enableUserBadge": {
+ "description": "If set to false, disables logging in.\nThe userbadge will be hidden, all login-buttons will be hidden and editing will be disabled",
"type": "boolean"
},
"enableShareScreen": {
+ "description": "If false, hides the tab 'share'-tab in the welcomeMessage",
"type": "boolean"
},
"enableMoreQuests": {
+ "description": "Hides the tab with more themes in the welcomeMessage",
"type": "boolean"
},
"enableLayers": {
+ "description": "If false, the layer selection/filter view will be hidden\nThe corresponding URL-parameter is 'fs-filters' instead of 'fs-layers'",
"type": "boolean"
},
"enableSearch": {
+ "description": "If set to false, hides the search bar",
"type": "boolean"
},
"enableAddNewPoints": {
+ "description": "If set to false, the ability to add new points or nodes will be disabled.\nEditing already existing features will still be possible",
"type": "boolean"
},
"enableGeolocation": {
+ "description": "If set to false, the 'geolocation'-button will be hidden.",
"type": "boolean"
},
"enableBackgroundLayerSelection": {
+ "description": "Enable switching the backgroundlayer.\nIf false, the quickswitch-buttons are removed (bottom left) and the dropdown in the layer selection is removed as well",
"type": "boolean"
},
"enableShowAllQuestions": {
+ "description": "If set to true, will show _all_ unanswered questions in a popup instead of just the next one",
"type": "boolean"
},
"enableDownload": {
+ "description": "If set to true, download button for the data will be shown (offers downloading as geojson and csv)",
"type": "boolean"
},
"enablePdfDownload": {
- "type": "boolean"
- },
- "enableIframePopout": {
+ "description": "If set to true, exporting a pdf is enabled",
"type": "boolean"
},
"enableNoteImports": {
+ "description": "If true, notes will be loaded and parsed. If a note is an import (as created by the import_helper.html-tool from mapcomplete),\nthese notes will be shown if a relevant layer is present.",
"type": "boolean"
},
"overpassUrl": {
@@ -365,8 +375,11 @@ export default {
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
@@ -488,7 +501,7 @@ export default {
}
}
},
- "default_3": {
+ "default_4": {
"description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way",
"type": "object",
"properties": {
@@ -582,7 +595,7 @@ export default {
"location"
]
},
- "default_4": {
+ "default_5": {
"description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area",
"type": "object",
"properties": {
@@ -672,7 +685,7 @@ export default {
}
}
},
- "default": {
+ "default_1": {
"type": "object",
"properties": {
"id": {
@@ -696,6 +709,9 @@ export default {
}
]
},
+ "default": {
+ "type": "boolean"
+ },
"fields": {
"type": "array",
"items": {
@@ -782,7 +798,7 @@ export default {
}
}
},
- "default_2": {
+ "default_3": {
"type": "object",
"properties": {
"enableImproveAccuracy": {
@@ -795,7 +811,7 @@ export default {
}
}
},
- "default_1": {
+ "default_2": {
"type": "object",
"properties": {
"appliesToKey": {
@@ -822,7 +838,7 @@ export default {
"appliesToKey"
]
},
- "default_5": {
+ "default_6": {
"description": "Configuration for a tilesource config",
"type": "object",
"properties": {
@@ -875,7 +891,7 @@ export default {
"description": "A description for this layer.\nShown in the layer selections and in the personel theme"
},
"source": {
- "description": "This determines where the data for the layer is fetched.\nThere are some options:\n\n# Query OSM directly\nsource: {osmTags: \"key=value\"}\n will fetch all objects with given tags from OSM.\n Currently, this will create a query to overpass and fetch the data - in the future this might fetch from the OSM API\n\n# Query OSM Via the overpass API with a custom script\nsource: {overpassScript: \"\"} when you want to do special things. _This should be really rare_.\n This means that the data will be pulled from overpass with this script, and will ignore the osmTags for the query\n However, for the rest of the pipeline, the OsmTags will _still_ be used. This is important to enable layers etc...\n\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}\nSome API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this\n\nNote that both geojson-options might set a flag 'isOsmCache' indicating that the data originally comes from OSM too\n\n\nNOTE: the previous format was 'overpassTags: AndOrTagConfigJson | string', which is interpreted as a shorthand for source: {osmTags: \"key=value\"}\n While still supported, this is considered deprecated",
+ "description": "This determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.",
"anyOf": [
{
"allOf": [
@@ -883,6 +899,7 @@ export default {
"type": "object",
"properties": {
"osmTags": {
+ "description": "Every source must set which tags have to be present in order to load the given layer.",
"anyOf": [
{
"$ref": "#/definitions/AndOrTagConfigJson"
@@ -892,8 +909,9 @@ export default {
}
]
},
- "overpassScript": {
- "type": "string"
+ "maxCacheAge": {
+ "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
+ "type": "number"
}
},
"required": [
@@ -903,9 +921,8 @@ export default {
{
"type": "object",
"properties": {
- "maxCacheAge": {
- "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
- "type": "number"
+ "overpassScript": {
+ "type": "string"
}
}
}
@@ -917,6 +934,7 @@ export default {
"type": "object",
"properties": {
"osmTags": {
+ "description": "Every source must set which tags have to be present in order to load the given layer.",
"anyOf": [
{
"$ref": "#/definitions/AndOrTagConfigJson"
@@ -926,32 +944,42 @@ export default {
}
]
},
- "geoJson": {
- "type": "string"
- },
- "geoJsonZoomLevel": {
+ "maxCacheAge": {
+ "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
"type": "number"
- },
- "isOsmCache": {
- "type": "boolean"
- },
- "mercatorCrs": {
- "type": "boolean"
}
},
"required": [
- "geoJson",
"osmTags"
]
},
{
"type": "object",
"properties": {
- "maxCacheAge": {
- "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
+ "geoJson": {
+ "description": "The actual source of the data to load, if loaded via geojson.\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}",
+ "type": "string"
+ },
+ "geoJsonZoomLevel": {
+ "description": "To load a tiled geojson layer, set the zoomlevel of the tiles",
"type": "number"
+ },
+ "isOsmCache": {
+ "description": "Indicates that the upstream geojson data is OSM-derived.\nUseful for e.g. merging or for scripts generating this cache",
+ "type": "boolean"
+ },
+ "mercatorCrs": {
+ "description": "Some API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this",
+ "type": "boolean"
+ },
+ "idKey": {
+ "description": "Some API's have an id-field, but give it a different name.\nSetting this key will rename this field into 'id'",
+ "type": "string"
}
- }
+ },
+ "required": [
+ "geoJson"
+ ]
}
]
}
@@ -1037,10 +1065,10 @@ export default {
"items": {
"anyOf": [
{
- "$ref": "#/definitions/default_3"
+ "$ref": "#/definitions/default_4"
},
{
- "$ref": "#/definitions/default_4"
+ "$ref": "#/definitions/default_5"
}
]
}
@@ -1228,7 +1256,7 @@ export default {
{
"type": "array",
"items": {
- "$ref": "#/definitions/default"
+ "$ref": "#/definitions/default_1"
}
},
{
@@ -1259,7 +1287,7 @@ export default {
"description": "Indicates if a point can be moved and configures the modalities.\n\nA feature can be moved by MapComplete if:\n\n- It is a point\n- The point is _not_ part of a way or a a relation.\n\nOff by default. Can be enabled by setting this flag or by configuring.",
"anyOf": [
{
- "$ref": "#/definitions/default_2"
+ "$ref": "#/definitions/default_3"
},
{
"type": "boolean"
@@ -1274,7 +1302,7 @@ export default {
"description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n default: true,\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given",
"type": "array",
"items": {
- "$ref": "#/definitions/default_1"
+ "$ref": "#/definitions/default_2"
}
}
},
@@ -1283,6 +1311,36 @@ export default {
"mapRendering",
"source"
]
+ },
+ "default": {
+ "type": "object",
+ "properties": {
+ "icon": {
+ "type": "string"
+ },
+ "text": {},
+ "href": {
+ "type": "string"
+ },
+ "newTab": {
+ "type": "boolean"
+ },
+ "requirements": {
+ "type": "array",
+ "items": {
+ "enum": [
+ "iframe",
+ "no-iframe",
+ "no-welcome-message",
+ "welcome-message"
+ ],
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "href"
+ ]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
diff --git a/Docs/Schemas/LineRenderingConfigJson.schema.json b/Docs/Schemas/LineRenderingConfigJson.schema.json
index 048840304..a410d218d 100644
--- a/Docs/Schemas/LineRenderingConfigJson.schema.json
+++ b/Docs/Schemas/LineRenderingConfigJson.schema.json
@@ -177,8 +177,11 @@
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
diff --git a/Docs/Schemas/LineRenderingConfigJsonJSC.ts b/Docs/Schemas/LineRenderingConfigJsonJSC.ts
index 65e192785..918f1b4c8 100644
--- a/Docs/Schemas/LineRenderingConfigJsonJSC.ts
+++ b/Docs/Schemas/LineRenderingConfigJsonJSC.ts
@@ -175,8 +175,11 @@ export default {
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
diff --git a/Docs/Schemas/PointRenderingConfigJson.schema.json b/Docs/Schemas/PointRenderingConfigJson.schema.json
index 895df91e5..5f14ee615 100644
--- a/Docs/Schemas/PointRenderingConfigJson.schema.json
+++ b/Docs/Schemas/PointRenderingConfigJson.schema.json
@@ -181,8 +181,11 @@
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
diff --git a/Docs/Schemas/PointRenderingConfigJsonJSC.ts b/Docs/Schemas/PointRenderingConfigJsonJSC.ts
index 0da109383..30827308f 100644
--- a/Docs/Schemas/PointRenderingConfigJsonJSC.ts
+++ b/Docs/Schemas/PointRenderingConfigJsonJSC.ts
@@ -179,8 +179,11 @@ export default {
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
diff --git a/Docs/Schemas/TagRenderingConfigJson.schema.json b/Docs/Schemas/TagRenderingConfigJson.schema.json
index 5c8809ccc..9b74df032 100644
--- a/Docs/Schemas/TagRenderingConfigJson.schema.json
+++ b/Docs/Schemas/TagRenderingConfigJson.schema.json
@@ -17,8 +17,11 @@
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
diff --git a/Docs/Schemas/TagRenderingConfigJsonJSC.ts b/Docs/Schemas/TagRenderingConfigJsonJSC.ts
index 3d15c6b6d..2bc849c6e 100644
--- a/Docs/Schemas/TagRenderingConfigJsonJSC.ts
+++ b/Docs/Schemas/TagRenderingConfigJsonJSC.ts
@@ -17,8 +17,11 @@ export default {
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
diff --git a/Docs/Schemas/TilesourceConfigJson.schema.json b/Docs/Schemas/TilesourceConfigJson.schema.json
index b8d102661..cef3d5386 100644
--- a/Docs/Schemas/TilesourceConfigJson.schema.json
+++ b/Docs/Schemas/TilesourceConfigJson.schema.json
@@ -125,8 +125,11 @@
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
@@ -249,7 +252,7 @@
},
"additionalProperties": false
},
- "default_3": {
+ "default_4": {
"description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way",
"type": "object",
"properties": {
@@ -344,7 +347,7 @@
],
"additionalProperties": false
},
- "default_4": {
+ "default_5": {
"description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area",
"type": "object",
"properties": {
@@ -435,7 +438,7 @@
},
"additionalProperties": false
},
- "default": {
+ "default_1": {
"type": "object",
"properties": {
"id": {
@@ -459,6 +462,9 @@
}
]
},
+ "default": {
+ "type": "boolean"
+ },
"fields": {
"type": "array",
"items": {
@@ -547,7 +553,7 @@
},
"additionalProperties": false
},
- "default_2": {
+ "default_3": {
"type": "object",
"properties": {
"enableImproveAccuracy": {
@@ -561,7 +567,7 @@
},
"additionalProperties": false
},
- "default_1": {
+ "default_2": {
"type": "object",
"properties": {
"appliesToKey": {
diff --git a/Docs/Schemas/TilesourceConfigJsonJSC.ts b/Docs/Schemas/TilesourceConfigJsonJSC.ts
index d2d6631b2..15178b758 100644
--- a/Docs/Schemas/TilesourceConfigJsonJSC.ts
+++ b/Docs/Schemas/TilesourceConfigJsonJSC.ts
@@ -123,8 +123,11 @@ export default {
"type": "string"
}
},
+ "render": {
+ "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered"
+ },
"question": {
- "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A `\ntype: rendered\n/\nrender?: string | any,\n\n/**\nIf it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
+ "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only"
},
"condition": {
"description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...",
@@ -246,7 +249,7 @@ export default {
}
}
},
- "default_3": {
+ "default_4": {
"description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way",
"type": "object",
"properties": {
@@ -340,7 +343,7 @@ export default {
"location"
]
},
- "default_4": {
+ "default_5": {
"description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area",
"type": "object",
"properties": {
@@ -430,7 +433,7 @@ export default {
}
}
},
- "default": {
+ "default_1": {
"type": "object",
"properties": {
"id": {
@@ -454,6 +457,9 @@ export default {
}
]
},
+ "default": {
+ "type": "boolean"
+ },
"fields": {
"type": "array",
"items": {
@@ -540,7 +546,7 @@ export default {
}
}
},
- "default_2": {
+ "default_3": {
"type": "object",
"properties": {
"enableImproveAccuracy": {
@@ -553,7 +559,7 @@ export default {
}
}
},
- "default_1": {
+ "default_2": {
"type": "object",
"properties": {
"appliesToKey": {
diff --git a/Docs/SpecialInputElements.md b/Docs/SpecialInputElements.md
index bfb724bb9..f9f701cad 100644
--- a/Docs/SpecialInputElements.md
+++ b/Docs/SpecialInputElements.md
@@ -1,6 +1,10 @@
-Available types for text fields
+
+
+ Available types for text fields
=================================
+
+
## Table of contents
1. [Available types for text fields](#available-types-for-text-fields)
@@ -21,50 +25,77 @@ Available types for text fields
+ [opening_hours](#opening_hours)
+ [color](#color)
-The listed types here trigger a special input element. Use them in `tagrendering.freeform.type` of your tagrendering to
-activate them
-### string
+
+The listed types here trigger a special input element. Use them in `tagrendering.freeform.type` of your tagrendering to activate them
+
+
+
+### string
+
+
A basic string
-### text
+
+
+### text
+
+
A string, but allows input of longer strings more comfortably and supports newlines (a text area)
-### date
+
+
+### date
+
+
A date
-### direction
+
+
+### direction
+
+
A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)
-### length
-A geographical length in meters (rounded at two points). Will give an extra minimap with a measurement tool.
-Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `["21", "map,photo"]
-### wikidata
+### length
-A wikidata identifier, e.g. Q42.
-### Helper arguments
+
+A geographical length in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `["21", "map,photo"]
+
+
+
+### wikidata
+
+
+
+A wikidata identifier, e.g. Q42.
+
+### Helper arguments
+
+
name | doc
------ | -----
key | the value of this tag will initialize search (default: name)
-options | A JSON-object of type `{ removePrefixes: string[], removePostfixes: string[] }`.
+options | A JSON-object of type `{ removePrefixes: string[], removePostfixes: string[] }`.
subarg | doc
-------- | -----
removePrefixes | remove these snippets of text from the start of the passed string to search
removePostfixes | remove these snippets of text from the end of the passed string to search
-### Example usage
+
-The following is the 'freeform'-part of a layer config which will trigger a search for the wikidata item corresponding
-with the name of the selected feature. It will also remove '-street', '-square', ... if found at the end of the name
+### Example usage
+
+ The following is the 'freeform'-part of a layer config which will trigger a search for the wikidata item corresponding with the name of the selected feature. It will also remove '-street', '-square', ... if found at the end of the name
```
"freeform": {
@@ -85,57 +116,96 @@ with the name of the selected feature. It will also remove '-street', '-square',
}
```
-### int
+
+
+### int
+
+
A number
-### nat
+
+
+### nat
+
+
A positive number or zero
-### pnat
+
+
+### pnat
+
+
A strict positive number
-### float
+
+
+### float
+
+
A decimal
-### pfloat
+
+
+### pfloat
+
+
A positive decimal (incl zero)
-### email
+
+
+### email
+
+
An email adress
-### url
-The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will
-be hidden from the user
-### phone
+### url
+
+
+
+The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user
+
+
+
+### phone
+
+
A phone number
-### opening_hours
-Has extra elements to easily input when a POI is opened.
-### Helper arguments
+### opening_hours
+
+
+
+Has extra elements to easily input when a POI is opened.
+
+### Helper arguments
+
+
name | doc
------ | -----
-options | A JSON-object of type `{ prefix: string, postfix: string }`.
+options | A JSON-object of type `{ prefix: string, postfix: string }`.
subarg | doc
-------- | -----
prefix | Piece of text that will always be added to the front of the generated opening hours. If the OSM-data does not start with this, it will fail to parse
postfix | Piece of text that will always be added to the end of the generated opening hours
-### Example usage
+
-To add a conditional (based on time) access restriction:
+### Example usage
+
+ To add a conditional (based on time) access restriction:
```
@@ -151,11 +221,14 @@ To add a conditional (based on time) access restriction:
}
```
-*Don't forget to pass the prefix and postfix in the rendering as
-well*: `{opening_hours_table(opening_hours,yes @ &LPARENS, &RPARENS )`
+*Don't forget to pass the prefix and postfix in the rendering as well*: `{opening_hours_table(opening_hours,yes @ &LPARENS, &RPARENS )`
-### color
-Shows a color picker
+
+### color
+
+
+
+Shows a color picker
This document is autogenerated from ValidatedTextField.ts
\ No newline at end of file
diff --git a/Docs/SpecialRenderings.md b/Docs/SpecialRenderings.md
index f104e8dac..be501da18 100644
--- a/Docs/SpecialRenderings.md
+++ b/Docs/SpecialRenderings.md
@@ -1,544 +1,545 @@
-Special tag renderings
+
+
+ Special tag renderings
========================
+
+
## Table of contents
1. [Special tag renderings](#special-tag-renderings)
+ [all_tags](#all_tags)
- * [Example usage of all_tags](#example-usage-of-all_tags)
+ * [Example usage of all_tags](#example-usage-of-all_tags)
+ [image_carousel](#image_carousel)
- * [Example usage of image_carousel](#example-usage-of-image_carousel)
+ * [Example usage of image_carousel](#example-usage-of-image_carousel)
+ [image_upload](#image_upload)
- * [Example usage of image_upload](#example-usage-of-image_upload)
+ * [Example usage of image_upload](#example-usage-of-image_upload)
+ [wikipedia](#wikipedia)
- * [Example usage of wikipedia](#example-usage-of-wikipedia)
+ * [Example usage of wikipedia](#example-usage-of-wikipedia)
+ [minimap](#minimap)
- * [Example usage of minimap](#example-usage-of-minimap)
+ * [Example usage of minimap](#example-usage-of-minimap)
+ [sided_minimap](#sided_minimap)
- * [Example usage of sided_minimap](#example-usage-of-sided_minimap)
+ * [Example usage of sided_minimap](#example-usage-of-sided_minimap)
+ [reviews](#reviews)
- * [Example usage of reviews](#example-usage-of-reviews)
+ * [Example usage of reviews](#example-usage-of-reviews)
+ [opening_hours_table](#opening_hours_table)
- * [Example usage of opening_hours_table](#example-usage-of-opening_hours_table)
+ * [Example usage of opening_hours_table](#example-usage-of-opening_hours_table)
+ [live](#live)
- * [Example usage of live](#example-usage-of-live)
+ * [Example usage of live](#example-usage-of-live)
+ [histogram](#histogram)
- * [Example usage of histogram](#example-usage-of-histogram)
+ * [Example usage of histogram](#example-usage-of-histogram)
+ [share_link](#share_link)
- * [Example usage of share_link](#example-usage-of-share_link)
+ * [Example usage of share_link](#example-usage-of-share_link)
+ [canonical](#canonical)
- * [Example usage of canonical](#example-usage-of-canonical)
+ * [Example usage of canonical](#example-usage-of-canonical)
+ [import_button](#import_button)
- * [Example usage of import_button](#example-usage-of-import_button)
+ * [Example usage of import_button](#example-usage-of-import_button)
+ [import_way_button](#import_way_button)
- * [Example usage of import_way_button](#example-usage-of-import_way_button)
+ * [Example usage of import_way_button](#example-usage-of-import_way_button)
+ [conflate_button](#conflate_button)
- * [Example usage of conflate_button](#example-usage-of-conflate_button)
+ * [Example usage of conflate_button](#example-usage-of-conflate_button)
+ [multi_apply](#multi_apply)
- * [Example usage of multi_apply](#example-usage-of-multi_apply)
+ * [Example usage of multi_apply](#example-usage-of-multi_apply)
+ [tag_apply](#tag_apply)
- * [Example usage of tag_apply](#example-usage-of-tag_apply)
+ * [Example usage of tag_apply](#example-usage-of-tag_apply)
+ [export_as_gpx](#export_as_gpx)
- * [Example usage of export_as_gpx](#example-usage-of-export_as_gpx)
+ * [Example usage of export_as_gpx](#example-usage-of-export_as_gpx)
+ [export_as_geojson](#export_as_geojson)
- * [Example usage of export_as_geojson](#example-usage-of-export_as_geojson)
+ * [Example usage of export_as_geojson](#example-usage-of-export_as_geojson)
+ [open_in_iD](#open_in_id)
- * [Example usage of open_in_iD](#example-usage-of-open_in_id)
+ * [Example usage of open_in_iD](#example-usage-of-open_in_id)
+ [clear_location_history](#clear_location_history)
- * [Example usage of clear_location_history](#example-usage-of-clear_location_history)
+ * [Example usage of clear_location_history](#example-usage-of-clear_location_history)
+ [close_note](#close_note)
- * [Example usage of close_note](#example-usage-of-close_note)
+ * [Example usage of close_note](#example-usage-of-close_note)
+ [add_note_comment](#add_note_comment)
- * [Example usage of add_note_comment](#example-usage-of-add_note_comment)
+ * [Example usage of add_note_comment](#example-usage-of-add_note_comment)
+ [visualize_note_comments](#visualize_note_comments)
- * [Example usage of visualize_note_comments](#example-usage-of-visualize_note_comments)
+ * [Example usage of visualize_note_comments](#example-usage-of-visualize_note_comments)
+ [add_image_to_note](#add_image_to_note)
- * [Example usage of add_image_to_note](#example-usage-of-add_image_to_note)
+ * [Example usage of add_image_to_note](#example-usage-of-add_image_to_note)
+ [auto_apply](#auto_apply)
- * [Example usage of auto_apply](#example-usage-of-auto_apply)
+ * [Example usage of auto_apply](#example-usage-of-auto_apply)
-In a tagrendering, some special values are substituted by an advanced UI-element. This allows advanced features and
-visualizations to be reused by custom themes or even to query third-party API's.
-General usage is `{func_name()}`, `{func_name(arg, someotherarg)}` or `{func_name(args):cssStyle}`. Note that you _do
-not_ need to use quotes around your arguments, the comma is enough to separate them. This also implies you cannot use a
-comma in your args
-### all_tags
+In a tagrendering, some special values are substituted by an advanced UI-element. This allows advanced features and visualizations to be reused by custom themes or even to query third-party API's.
-Prints all key-value pairs of the object - used for debugging
+General usage is `{func_name()}`, `{func_name(arg, someotherarg)}` or `{func_name(args):cssStyle}`. Note that you _do not_ need to use quotes around your arguments, the comma is enough to separate them. This also implies you cannot use a comma in your args
-#### Example usage of all_tags
-`{all_tags()}`
-### image_carousel
+### all_tags
-Creates an image carousel for the given sources. An attempt will be made to guess what source is used. Supported:
-Wikidata identifiers, Wikipedia pages, Wikimedia categories, IMGUR (with attribution, direct links)
+ Prints all key-value pairs of the object - used for debugging
+
+#### Example usage of all_tags
+
+ `{all_tags()}`
+
+
+
+### image_carousel
+
+ Creates an image carousel for the given sources. An attempt will be made to guess what source is used. Supported: Wikidata identifiers, Wikipedia pages, Wikimedia categories, IMGUR (with attribution, direct links)
name | default | description
------ | --------- | -------------
-image key/prefix (multiple values allowed if comma-seperated) | image,mapillary,image,wikidata,wikimedia_commons,image,image | The keys given to the images, e.g. if image is given, the first picture URL will be added as image, the second as image:0, the third as image:1, etc...
+image key/prefix (multiple values allowed if comma-seperated) | image,mapillary,image,wikidata,wikimedia_commons,image,image | The keys given to the images, e.g. if image is given, the first picture URL will be added as image, the second as image:0, the third as image:1, etc...
+
-#### Example usage of image_carousel
+#### Example usage of image_carousel
-`{image_carousel(image,mapillary,image,wikidata,wikimedia_commons,image,image)}`
+ `{image_carousel(image,mapillary,image,wikidata,wikimedia_commons,image,image)}`
-### image_upload
-Creates a button where a user can upload an image to IMGUR
+
+### image_upload
+
+ Creates a button where a user can upload an image to IMGUR
name | default | description
------ | --------- | -------------
image-key | image | Image tag to add the URL to (or image-tag:0, image-tag:1 when multiple images are added)
label | Add image | The text to show on the button
+
-#### Example usage of image_upload
+#### Example usage of image_upload
-`{image_upload(image,Add image)}`
+ `{image_upload(image,Add image)}`
-### wikipedia
-A box showing the corresponding wikipedia article - based on the wikidata tag
+
+### wikipedia
+
+ A box showing the corresponding wikipedia article - based on the wikidata tag
name | default | description
------ | --------- | -------------
keyToShowWikipediaFor | wikidata | Use the wikidata entry from this key to show the wikipedia article for
+
-#### Example usage of wikipedia
+#### Example usage of wikipedia
-`{wikipedia()}` is a basic example, `{wikipedia(name:etymology:wikidata)}` to show the wikipedia page of whom the
-feature was named after. Also remember that these can be styled, e.g. `{wikipedia():max-height: 10rem}` to limit the
-height
+ `{wikipedia()}` is a basic example, `{wikipedia(name:etymology:wikidata)}` to show the wikipedia page of whom the feature was named after. Also remember that these can be styled, e.g. `{wikipedia():max-height: 10rem}` to limit the height
-### minimap
-A small map showing the selected feature.
+
+### minimap
+
+ A small map showing the selected feature.
name | default | description
------ | --------- | -------------
zoomlevel | 18 | The (maximum) zoomlevel: the target zoomlevel after fitting the entire feature. The minimap will fit the entire feature, then zoom out to this zoom level. The higher, the more zoomed in with 1 being the entire world and 19 being really close
idKey | id | (Matches all resting arguments) This argument should be the key of a property of the feature. The corresponding value is interpreted as either the id or the a list of ID's. The features with these ID's will be shown on this minimap.
+
-#### Example usage of minimap
+#### Example usage of minimap
-`{minimap()}`
-, `{minimap(17, id, _list_of_embedded_feature_ids_calculated_by_calculated_tag):height:10rem; border: 2px solid black}`
+ `{minimap()}`, `{minimap(17, id, _list_of_embedded_feature_ids_calculated_by_calculated_tag):height:10rem; border: 2px solid black}`
-### sided_minimap
-A small map showing _only one side_ the selected feature. *This features requires to have linerenderings with offset* as
-only linerenderings with a postive or negative offset will be shown. Note: in most cases, this map will be automatically
-introduced
+
+### sided_minimap
+
+ A small map showing _only one side_ the selected feature. *This features requires to have linerenderings with offset* as only linerenderings with a postive or negative offset will be shown. Note: in most cases, this map will be automatically introduced
name | default | description
------ | --------- | -------------
side | _undefined_ | The side to show, either `left` or `right`
+
-#### Example usage of sided_minimap
+#### Example usage of sided_minimap
-`{sided_minimap(left)}`
+ `{sided_minimap(left)}`
-### reviews
-Adds an overview of the mangrove-reviews of this object. Mangrove.Reviews needs - in order to identify the reviewed
-object - a coordinate and a name. By default, the name of the object is given, but this can be overwritten
+
+### reviews
+
+ Adds an overview of the mangrove-reviews of this object. Mangrove.Reviews needs - in order to identify the reviewed object - a coordinate and a name. By default, the name of the object is given, but this can be overwritten
name | default | description
------ | --------- | -------------
subjectKey | name | The key to use to determine the subject. If specified, the subject will be tags[subjectKey]
-fallback | _
-undefined_ | The identifier to use, if tags[subjectKey] as specified above is not available. This is effectively a fallback value
+fallback | _undefined_ | The identifier to use, if tags[subjectKey] as specified above is not available. This is effectively a fallback value
+
-#### Example usage of reviews
+#### Example usage of reviews
-`{reviews()}` for a vanilla review, `{reviews(name, play_forest)}` to review a play forest. If a name is known, the name
-will be used as identifier, otherwise 'play_forest' is used
+ `{reviews()}` for a vanilla review, `{reviews(name, play_forest)}` to review a play forest. If a name is known, the name will be used as identifier, otherwise 'play_forest' is used
-### opening_hours_table
-Creates an opening-hours table. Usage: {opening_hours_table(opening_hours)} to create a table of the tag '
-opening_hours'.
+
+### opening_hours_table
+
+ Creates an opening-hours table. Usage: {opening_hours_table(opening_hours)} to create a table of the tag 'opening_hours'.
name | default | description
------ | --------- | -------------
key | opening_hours | The tagkey from which the table is constructed.
-prefix | _empty string_ | Remove this string from the start of the value before parsing. __Note: use `&LPARENs` to
+prefix | _empty string_ | Remove this string from the start of the value before parsing. __Note: use `&LPARENs` to indicate `(` if needed__
+postfix | _empty string_ | Remove this string from the end of the value before parsing. __Note: use `&RPARENs` to indicate `)` if needed__
+
-indicate `(` if needed__
-postfix | _empty string_ | Remove this string from the end of the value before parsing. __Note: use `&RPARENs` to
-indicate `)` if needed__
+#### Example usage of opening_hours_table
-#### Example usage of opening_hours_table
+ A normal opening hours table can be invoked with `{opening_hours_table()}`. A table for e.g. conditional access with opening hours can be `{opening_hours_table(access:conditional, no @ &LPARENS, &RPARENS)}`
-A normal opening hours table can be invoked with `{opening_hours_table()}`. A table for e.g. conditional access with
-opening hours can be `{opening_hours_table(access:conditional, no @ &LPARENS, &RPARENS)}`
-### live
-Downloads a JSON from the given URL, e.g. '{live(example.org/data.json, shorthand:x.y.z, other:a.b.c, shorthand)}' will
-download the given file, will create an object {shorthand: json[x][y][z], other: json[a][b][c] out of it and will
-return 'other' or 'json[a][b][c]. This is made to use in combination with tags, e.g. {live({url}, {url:format},
-needed_value)}
+### live
+
+ Downloads a JSON from the given URL, e.g. '{live(example.org/data.json, shorthand:x.y.z, other:a.b.c, shorthand)}' will download the given file, will create an object {shorthand: json[x][y][z], other: json[a][b][c] out of it and will return 'other' or 'json[a][b][c]. This is made to use in combination with tags, e.g. {live({url}, {url:format}, needed_value)}
name | default | description
------ | --------- | -------------
Url | _undefined_ | The URL to load
Shorthands | _undefined_ | A list of shorthands, of the format 'shorthandname:path.path.path'. separated by ;
path | _undefined_ | The path (or shorthand) that should be returned
+
-#### Example usage of live
+#### Example usage of live
-{live({url},{url:format},hour)}
-{live(https://data.mobility.brussels/bike/api/counts/?request=live&featureID=CB2105,hour:data.hour_cnt;day:data.day_cnt;year:data.year_cnt,hour)}
+ {live({url},{url:format},hour)} {live(https://data.mobility.brussels/bike/api/counts/?request=live&featureID=CB2105,hour:data.hour_cnt;day:data.day_cnt;year:data.year_cnt,hour)}
-### histogram
-Create a histogram for a list of given values, read from the properties.
+
+### histogram
+
+ Create a histogram for a list of given values, read from the properties.
name | default | description
------ | --------- | -------------
key | _undefined_ | The key to be read and to generate a histogram from
title | _empty string_ | This text will be placed above the texts (in the first column of the visulasition)
countHeader | _empty string_ | This text will be placed above the bars
-colors* | _
-undefined_ | (Matches all resting arguments - optional) Matches a regex onto a color value, e.g. `3[a-zA-Z+-]*:#33cc33`
+colors* | _undefined_ | (Matches all resting arguments - optional) Matches a regex onto a color value, e.g. `3[a-zA-Z+-]*:#33cc33`
+
-#### Example usage of histogram
+#### Example usage of histogram
-`{histogram('some_key')}` with properties being `{some_key: ['a','b','a','c']} to create a histogram
+ `{histogram('some_key')}` with properties being `{some_key: ['a','b','a','c']} to create a histogram
-### share_link
-Creates a link that (attempts to) open the native 'share'-screen
+
+### share_link
+
+ Creates a link that (attempts to) open the native 'share'-screen
name | default | description
------ | --------- | -------------
url | _undefined_ | The url to share (default: current URL)
+
-#### Example usage of share_link
+#### Example usage of share_link
-{share_link()} to share the current page, {share_link()} to share the given url
+ {share_link()} to share the current page, {share_link()} to share the given url
-### canonical
-Converts a short, canonical value into the long, translated text
+
+### canonical
+
+ Converts a short, canonical value into the long, translated text
name | default | description
------ | --------- | -------------
key | _undefined_ | The key of the tag to give the canonical text for
+
-#### Example usage of canonical
+#### Example usage of canonical
-{canonical(length)} will give 42 metre (in french)
+ {canonical(length)} will give 42 metre (in french)
-### import_button
-This button will copy the point from an external dataset into OpenStreetMap
-Note that the contributor must zoom to at least zoomlevel 18 to be able to use this functionality. It is only functional
-in official themes, but can be tested in unoffical themes.
+### import_button
+
+ This button will copy the point from an external dataset into OpenStreetMap
+
+Note that the contributor must zoom to at least zoomlevel 18 to be able to use this functionality.
+It is only functional in official themes, but can be tested in unoffical themes.
#### Specifying which tags to copy or add
-The argument `tags` of the import button takes a `;`-seperated list of tags to add (or the name of a property which
-contains a JSON-list of properties).
+The argument `tags` of the import button takes a `;`-seperated list of tags to add (or the name of a property which contains a JSON-list of properties).
-These can either be a tag to add, such as `amenity=fast_food` or can use a substitution, e.g. `addr:housenumber=$number`
-. This new point will then have the tags `amenity=fast_food` and `addr:housenumber` with the value that was saved
-in `number` in the original feature.
+These can either be a tag to add, such as `amenity=fast_food` or can use a substitution, e.g. `addr:housenumber=$number`.
+This new point will then have the tags `amenity=fast_food` and `addr:housenumber` with the value that was saved in `number` in the original feature.
If a value to substitute is undefined, empty string will be used instead.
This supports multiple values, e.g. `ref=$source:geometry:type/$source:geometry:ref`
-Remark that the syntax is slightly different then expected; it uses '$' to note a value to copy, followed by a name (
-matched with `[a-zA-Z0-9_:]*`). Sadly, delimiting with `{}` as these already mark the boundaries of the special
-rendering...
-
-Note that these values can be prepare with javascript in the theme by using
-a [calculatedTag](calculatedTags.md#calculating-tags-with-javascript)
+Remark that the syntax is slightly different then expected; it uses '$' to note a value to copy, followed by a name (matched with `[a-zA-Z0-9_:]*`). Sadly, delimiting with `{}` as these already mark the boundaries of the special rendering...
+Note that these values can be prepare with javascript in the theme by using a [calculatedTag](calculatedTags.md#calculating-tags-with-javascript)
+
#### Importing a dataset into OpenStreetMap: requirements
If you want to import a dataset, make sure that:
1. The dataset to import has a suitable license
2. The community has been informed of the import
-3. All other requirements of the [import guidelines](https://wiki.openstreetmap.org/wiki/Import/Guidelines) have been
- followed
+3. All other requirements of the [import guidelines](https://wiki.openstreetmap.org/wiki/Import/Guidelines) have been followed
There are also some technicalities in your theme to keep in mind:
-1. The new feature will be added and will flow through the program as any other new point as if it came from OSM. This
- means that there should be a layer which will match the new tags and which will display it.
-2. The original feature from your geojson layer will gain the tag '_imported=yes'. This should be used to change the
- appearance or even to hide it (eg by changing the icon size to zero)
-3. There should be a way for the theme to detect previously imported points, even after reloading. A reference number to
- the original dataset is an excellent way to do this
-4. When importing ways, the theme creator is also responsible of avoiding overlapping ways.
-
+1. The new feature will be added and will flow through the program as any other new point as if it came from OSM.
+ This means that there should be a layer which will match the new tags and which will display it.
+2. The original feature from your geojson layer will gain the tag '_imported=yes'.
+ This should be used to change the appearance or even to hide it (eg by changing the icon size to zero)
+3. There should be a way for the theme to detect previously imported points, even after reloading.
+ A reference number to the original dataset is an excellent way to do this
+4. When importing ways, the theme creator is also responsible of avoiding overlapping ways.
+
#### Disabled in unofficial themes
-The import button can be tested in an unofficial theme by adding `test=true` or `backend=osm-test`
-as [URL-paramter](URL_Parameters.md). The import button will show up then. If in testmode, you can read the
-changeset-XML directly in the web console. In the case that MapComplete is pointed to the testing grounds, the edit will
-be made on https://master.apis.dev.openstreetmap.org
+The import button can be tested in an unofficial theme by adding `test=true` or `backend=osm-test` as [URL-paramter](URL_Parameters.md).
+The import button will show up then. If in testmode, you can read the changeset-XML directly in the web console.
+In the case that MapComplete is pointed to the testing grounds, the edit will be made on https://master.apis.dev.openstreetmap.org
+
name | default | description
------ | --------- | -------------
-targetLayer | _
-undefined_ | The id of the layer where this point should end up. This is not very strict, it will simply result in checking that this layer is shown preventing possible duplicate elements
-tags | _
-undefined_ | The tags to add onto the new object - see specification above. If this is a key (a single word occuring in the properties of the object), the corresponding value is taken and expanded instead
+targetLayer | _undefined_ | The id of the layer where this point should end up. This is not very strict, it will simply result in checking that this layer is shown preventing possible duplicate elements
+tags | _undefined_ | The tags to add onto the new object - see specification above. If this is a key (a single word occuring in the properties of the object), the corresponding value is taken and expanded instead
text | Import this data into OpenStreetMap | The text to show on the button
icon | ./assets/svg/addSmall.svg | A nice icon to show in the button
-snap_onto_layers | _
-undefined_ | If a way of the given layer(s) is closeby, will snap the new point onto this way (similar as preset might snap). To show multiple layers to snap onto, use a `;`-seperated list
+snap_onto_layers | _undefined_ | If a way of the given layer(s) is closeby, will snap the new point onto this way (similar as preset might snap). To show multiple layers to snap onto, use a `;`-seperated list
max_snap_distance | 5 | The maximum distance that the imported point will be moved to snap onto a way in an already existing layer (in meters). This is previewed to the contributor, similar to the 'add new point'-action of MapComplete
-note_id | _
-undefined_ | If given, this key will be read. The corresponding note on OSM will be closed, stating 'imported'
+note_id | _undefined_ | If given, this key will be read. The corresponding note on OSM will be closed, stating 'imported'
+
-#### Example usage of import_button
+#### Example usage of import_button
-`{import_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,,5,)}`
+ `{import_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,,5,)}`
-### import_way_button
-This button will copy the data from an external dataset into OpenStreetMap
-Note that the contributor must zoom to at least zoomlevel 18 to be able to use this functionality. It is only functional
-in official themes, but can be tested in unoffical themes.
+### import_way_button
+
+ This button will copy the data from an external dataset into OpenStreetMap
+
+Note that the contributor must zoom to at least zoomlevel 18 to be able to use this functionality.
+It is only functional in official themes, but can be tested in unoffical themes.
#### Specifying which tags to copy or add
-The argument `tags` of the import button takes a `;`-seperated list of tags to add (or the name of a property which
-contains a JSON-list of properties).
+The argument `tags` of the import button takes a `;`-seperated list of tags to add (or the name of a property which contains a JSON-list of properties).
-These can either be a tag to add, such as `amenity=fast_food` or can use a substitution, e.g. `addr:housenumber=$number`
-. This new point will then have the tags `amenity=fast_food` and `addr:housenumber` with the value that was saved
-in `number` in the original feature.
+These can either be a tag to add, such as `amenity=fast_food` or can use a substitution, e.g. `addr:housenumber=$number`.
+This new point will then have the tags `amenity=fast_food` and `addr:housenumber` with the value that was saved in `number` in the original feature.
If a value to substitute is undefined, empty string will be used instead.
This supports multiple values, e.g. `ref=$source:geometry:type/$source:geometry:ref`
-Remark that the syntax is slightly different then expected; it uses '$' to note a value to copy, followed by a name (
-matched with `[a-zA-Z0-9_:]*`). Sadly, delimiting with `{}` as these already mark the boundaries of the special
-rendering...
-
-Note that these values can be prepare with javascript in the theme by using
-a [calculatedTag](calculatedTags.md#calculating-tags-with-javascript)
+Remark that the syntax is slightly different then expected; it uses '$' to note a value to copy, followed by a name (matched with `[a-zA-Z0-9_:]*`). Sadly, delimiting with `{}` as these already mark the boundaries of the special rendering...
+Note that these values can be prepare with javascript in the theme by using a [calculatedTag](calculatedTags.md#calculating-tags-with-javascript)
+
#### Importing a dataset into OpenStreetMap: requirements
If you want to import a dataset, make sure that:
1. The dataset to import has a suitable license
2. The community has been informed of the import
-3. All other requirements of the [import guidelines](https://wiki.openstreetmap.org/wiki/Import/Guidelines) have been
- followed
+3. All other requirements of the [import guidelines](https://wiki.openstreetmap.org/wiki/Import/Guidelines) have been followed
There are also some technicalities in your theme to keep in mind:
-1. The new feature will be added and will flow through the program as any other new point as if it came from OSM. This
- means that there should be a layer which will match the new tags and which will display it.
-2. The original feature from your geojson layer will gain the tag '_imported=yes'. This should be used to change the
- appearance or even to hide it (eg by changing the icon size to zero)
-3. There should be a way for the theme to detect previously imported points, even after reloading. A reference number to
- the original dataset is an excellent way to do this
-4. When importing ways, the theme creator is also responsible of avoiding overlapping ways.
-
+1. The new feature will be added and will flow through the program as any other new point as if it came from OSM.
+ This means that there should be a layer which will match the new tags and which will display it.
+2. The original feature from your geojson layer will gain the tag '_imported=yes'.
+ This should be used to change the appearance or even to hide it (eg by changing the icon size to zero)
+3. There should be a way for the theme to detect previously imported points, even after reloading.
+ A reference number to the original dataset is an excellent way to do this
+4. When importing ways, the theme creator is also responsible of avoiding overlapping ways.
+
#### Disabled in unofficial themes
-The import button can be tested in an unofficial theme by adding `test=true` or `backend=osm-test`
-as [URL-paramter](URL_Parameters.md). The import button will show up then. If in testmode, you can read the
-changeset-XML directly in the web console. In the case that MapComplete is pointed to the testing grounds, the edit will
-be made on https://master.apis.dev.openstreetmap.org
+The import button can be tested in an unofficial theme by adding `test=true` or `backend=osm-test` as [URL-paramter](URL_Parameters.md).
+The import button will show up then. If in testmode, you can read the changeset-XML directly in the web console.
+In the case that MapComplete is pointed to the testing grounds, the edit will be made on https://master.apis.dev.openstreetmap.org
+
name | default | description
------ | --------- | -------------
-targetLayer | _
-undefined_ | The id of the layer where this point should end up. This is not very strict, it will simply result in checking that this layer is shown preventing possible duplicate elements
-tags | _
-undefined_ | The tags to add onto the new object - see specification above. If this is a key (a single word occuring in the properties of the object), the corresponding value is taken and expanded instead
+targetLayer | _undefined_ | The id of the layer where this point should end up. This is not very strict, it will simply result in checking that this layer is shown preventing possible duplicate elements
+tags | _undefined_ | The tags to add onto the new object - see specification above. If this is a key (a single word occuring in the properties of the object), the corresponding value is taken and expanded instead
text | Import this data into OpenStreetMap | The text to show on the button
icon | ./assets/svg/addSmall.svg | A nice icon to show in the button
snap_to_point_if | _undefined_ | Points with the given tags will be snapped to or moved
max_snap_distance | 5 | If the imported object is a LineString or (Multi)Polygon, already existing OSM-points will be reused to construct the geometry of the newly imported way
move_osm_point_if | _undefined_ | Moves the OSM-point to the newly imported point if these conditions are met
max_move_distance | 1 | If an OSM-point is moved, the maximum amount of meters it is moved. Capped on 20m
-snap_onto_layers | _
-undefined_ | If no existing nearby point exists, but a line of a specified layer is closeby, snap to this layer instead
+snap_onto_layers | _undefined_ | If no existing nearby point exists, but a line of a specified layer is closeby, snap to this layer instead
snap_to_layer_max_distance | 0.1 | Distance to distort the geometry to snap to this layer
+
-#### Example usage of import_way_button
+#### Example usage of import_way_button
-`{import_way_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,,5,,1,,0.1)}`
+ `{import_way_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,,5,,1,,0.1)}`
-### conflate_button
-This button will modify the geometry of an existing OSM way to match the specified geometry. This can conflate OSM-ways
-with LineStrings and Polygons (only simple polygons with one single ring). An attempt is made to move points with
-special values to a decent new location (e.g. entrances)
-Note that the contributor must zoom to at least zoomlevel 18 to be able to use this functionality. It is only functional
-in official themes, but can be tested in unoffical themes.
+### conflate_button
+
+ This button will modify the geometry of an existing OSM way to match the specified geometry. This can conflate OSM-ways with LineStrings and Polygons (only simple polygons with one single ring). An attempt is made to move points with special values to a decent new location (e.g. entrances)
+
+Note that the contributor must zoom to at least zoomlevel 18 to be able to use this functionality.
+It is only functional in official themes, but can be tested in unoffical themes.
#### Specifying which tags to copy or add
-The argument `tags` of the import button takes a `;`-seperated list of tags to add (or the name of a property which
-contains a JSON-list of properties).
+The argument `tags` of the import button takes a `;`-seperated list of tags to add (or the name of a property which contains a JSON-list of properties).
-These can either be a tag to add, such as `amenity=fast_food` or can use a substitution, e.g. `addr:housenumber=$number`
-. This new point will then have the tags `amenity=fast_food` and `addr:housenumber` with the value that was saved
-in `number` in the original feature.
+These can either be a tag to add, such as `amenity=fast_food` or can use a substitution, e.g. `addr:housenumber=$number`.
+This new point will then have the tags `amenity=fast_food` and `addr:housenumber` with the value that was saved in `number` in the original feature.
If a value to substitute is undefined, empty string will be used instead.
This supports multiple values, e.g. `ref=$source:geometry:type/$source:geometry:ref`
-Remark that the syntax is slightly different then expected; it uses '$' to note a value to copy, followed by a name (
-matched with `[a-zA-Z0-9_:]*`). Sadly, delimiting with `{}` as these already mark the boundaries of the special
-rendering...
-
-Note that these values can be prepare with javascript in the theme by using
-a [calculatedTag](calculatedTags.md#calculating-tags-with-javascript)
+Remark that the syntax is slightly different then expected; it uses '$' to note a value to copy, followed by a name (matched with `[a-zA-Z0-9_:]*`). Sadly, delimiting with `{}` as these already mark the boundaries of the special rendering...
+Note that these values can be prepare with javascript in the theme by using a [calculatedTag](calculatedTags.md#calculating-tags-with-javascript)
+
#### Importing a dataset into OpenStreetMap: requirements
If you want to import a dataset, make sure that:
1. The dataset to import has a suitable license
2. The community has been informed of the import
-3. All other requirements of the [import guidelines](https://wiki.openstreetmap.org/wiki/Import/Guidelines) have been
- followed
+3. All other requirements of the [import guidelines](https://wiki.openstreetmap.org/wiki/Import/Guidelines) have been followed
There are also some technicalities in your theme to keep in mind:
-1. The new feature will be added and will flow through the program as any other new point as if it came from OSM. This
- means that there should be a layer which will match the new tags and which will display it.
-2. The original feature from your geojson layer will gain the tag '_imported=yes'. This should be used to change the
- appearance or even to hide it (eg by changing the icon size to zero)
-3. There should be a way for the theme to detect previously imported points, even after reloading. A reference number to
- the original dataset is an excellent way to do this
-4. When importing ways, the theme creator is also responsible of avoiding overlapping ways.
-
+1. The new feature will be added and will flow through the program as any other new point as if it came from OSM.
+ This means that there should be a layer which will match the new tags and which will display it.
+2. The original feature from your geojson layer will gain the tag '_imported=yes'.
+ This should be used to change the appearance or even to hide it (eg by changing the icon size to zero)
+3. There should be a way for the theme to detect previously imported points, even after reloading.
+ A reference number to the original dataset is an excellent way to do this
+4. When importing ways, the theme creator is also responsible of avoiding overlapping ways.
+
#### Disabled in unofficial themes
-The import button can be tested in an unofficial theme by adding `test=true` or `backend=osm-test`
-as [URL-paramter](URL_Parameters.md). The import button will show up then. If in testmode, you can read the
-changeset-XML directly in the web console. In the case that MapComplete is pointed to the testing grounds, the edit will
-be made on https://master.apis.dev.openstreetmap.org
+The import button can be tested in an unofficial theme by adding `test=true` or `backend=osm-test` as [URL-paramter](URL_Parameters.md).
+The import button will show up then. If in testmode, you can read the changeset-XML directly in the web console.
+In the case that MapComplete is pointed to the testing grounds, the edit will be made on https://master.apis.dev.openstreetmap.org
+
name | default | description
------ | --------- | -------------
-targetLayer | _
-undefined_ | The id of the layer where this point should end up. This is not very strict, it will simply result in checking that this layer is shown preventing possible duplicate elements
-tags | _
-undefined_ | The tags to add onto the new object - see specification above. If this is a key (a single word occuring in the properties of the object), the corresponding value is taken and expanded instead
+targetLayer | _undefined_ | The id of the layer where this point should end up. This is not very strict, it will simply result in checking that this layer is shown preventing possible duplicate elements
+tags | _undefined_ | The tags to add onto the new object - see specification above. If this is a key (a single word occuring in the properties of the object), the corresponding value is taken and expanded instead
text | Import this data into OpenStreetMap | The text to show on the button
icon | ./assets/svg/addSmall.svg | A nice icon to show in the button
-way_to_conflate | _
-undefined_ | The key, of which the corresponding value is the id of the OSM-way that must be conflated; typically a calculatedTag
+way_to_conflate | _undefined_ | The key, of which the corresponding value is the id of the OSM-way that must be conflated; typically a calculatedTag
+
-#### Example usage of conflate_button
+#### Example usage of conflate_button
-`{conflate_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,)}`
+ `{conflate_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,)}`
-### multi_apply
-A button to apply the tagging of this object onto a list of other features. This is an advanced feature for which you'll
-need calculatedTags
+
+### multi_apply
+
+ A button to apply the tagging of this object onto a list of other features. This is an advanced feature for which you'll need calculatedTags
name | default | description
------ | --------- | -------------
-feature_ids | _undefined_ | A JSOn-serialized list of IDs of features to apply the tagging on
-keys | _
-undefined_ | One key (or multiple keys, seperated by ';') of the attribute that should be copied onto the other features.
+feature_ids | _undefined_ | A JSON-serialized list of IDs of features to apply the tagging on
+keys | _undefined_ | One key (or multiple keys, seperated by ';') of the attribute that should be copied onto the other features.
text | _undefined_ | The text to show on the button
-autoapply | _
-undefined_ | A boolean indicating wether this tagging should be applied automatically if the relevant tags on this object are changed. A visual element indicating the multi_apply is still shown
-overwrite | _
-undefined_ | If set to 'true', the tags on the other objects will always be overwritten. The default behaviour will be to only change the tags on other objects if they are either undefined or had the same value before the change
+autoapply | _undefined_ | A boolean indicating wether this tagging should be applied automatically if the relevant tags on this object are changed. A visual element indicating the multi_apply is still shown
+overwrite | _undefined_ | If set to 'true', the tags on the other objects will always be overwritten. The default behaviour will be to only change the tags on other objects if they are either undefined or had the same value before the change
+
-#### Example usage of multi_apply
+#### Example usage of multi_apply
-{multi_apply(_features_with_the_same_name_within_100m, name:etymology:wikidata;name:etymology, Apply etymology
-information on all nearby objects with the same name)}
+ {multi_apply(_features_with_the_same_name_within_100m, name:etymology:wikidata;name:etymology, Apply etymology information on all nearby objects with the same name)}
-### tag_apply
-Shows a big button; clicking this button will apply certain tags onto the feature.
-The first argument takes a specification of which tags to add. These can either be a tag to add, such
-as `amenity=fast_food` or can use a substitution, e.g. `addr:housenumber=$number`. This new point will then have the
-tags `amenity=fast_food` and `addr:housenumber` with the value that was saved in `number` in the original feature.
+### tag_apply
+
+ Shows a big button; clicking this button will apply certain tags onto the feature.
+
+The first argument takes a specification of which tags to add.
+These can either be a tag to add, such as `amenity=fast_food` or can use a substitution, e.g. `addr:housenumber=$number`.
+This new point will then have the tags `amenity=fast_food` and `addr:housenumber` with the value that was saved in `number` in the original feature.
If a value to substitute is undefined, empty string will be used instead.
This supports multiple values, e.g. `ref=$source:geometry:type/$source:geometry:ref`
-Remark that the syntax is slightly different then expected; it uses '$' to note a value to copy, followed by a name (
-matched with `[a-zA-Z0-9_:]*`). Sadly, delimiting with `{}` as these already mark the boundaries of the special
-rendering...
+Remark that the syntax is slightly different then expected; it uses '$' to note a value to copy, followed by a name (matched with `[a-zA-Z0-9_:]*`). Sadly, delimiting with `{}` as these already mark the boundaries of the special rendering...
-Note that these values can be prepare with javascript in the theme by using
-a [calculatedTag](calculatedTags.md#calculating-tags-with-javascript)
+Note that these values can be prepare with javascript in the theme by using a [calculatedTag](calculatedTags.md#calculating-tags-with-javascript)
+
name | default | description
------ | --------- | -------------
tags_to_apply | _undefined_ | A specification of the tags to apply
message | _undefined_ | The text to show to the contributor
image | _undefined_ | An image to show to the contributor on the button
-id_of_object_to_apply_this_one | _undefined_ | If specified, applies the the tags onto _
+id_of_object_to_apply_this_one | _undefined_ | If specified, applies the the tags onto _another_ object. The id will be read from properties[id_of_object_to_apply_this_one] of the selected object. The tags are still calculated based on the tags of the _selected_ element
+
-another_ object. The id will be read from properties[id_of_object_to_apply_this_one] of the selected object. The tags
-are still calculated based on the tags of the _
-selected_ element
+#### Example usage of tag_apply
-#### Example usage of tag_apply
+ `{tag_apply(survey_date=$_now:date, Surveyed today!)}`, `{tag_apply(addr:street=$addr:street, Apply the address, apply_icon.svg, _closest_osm_id)
-`{tag_apply(survey_date=$_now:date, Surveyed today!)}`, `{tag_apply(addr:street=$addr:street, Apply the address,
-apply_icon.svg, _closest_osm_id)
-### export_as_gpx
-Exports the selected feature as GPX-file
+### export_as_gpx
-#### Example usage of export_as_gpx
+ Exports the selected feature as GPX-file
-`{export_as_gpx()}`
+#### Example usage of export_as_gpx
-### export_as_geojson
+ `{export_as_gpx()}`
-Exports the selected feature as GeoJson-file
-#### Example usage of export_as_geojson
-`{export_as_geojson()}`
+### export_as_geojson
-### open_in_iD
+ Exports the selected feature as GeoJson-file
-Opens the current view in the iD-editor
+#### Example usage of export_as_geojson
-#### Example usage of open_in_iD
+ `{export_as_geojson()}`
-`{open_in_iD()}`
-### clear_location_history
-A button to remove the travelled track information from the device
+### open_in_iD
-#### Example usage of clear_location_history
+ Opens the current view in the iD-editor
-`{clear_location_history()}`
+#### Example usage of open_in_iD
-### close_note
+ `{open_in_iD()}`
-Button to close a note. A predifined text can be defined to close the note with. If the note is already closed, will
-show a small text.
+
+
+### clear_location_history
+
+ A button to remove the travelled track information from the device
+
+#### Example usage of clear_location_history
+
+ `{clear_location_history()}`
+
+
+
+### close_note
+
+ Button to close a note. A predifined text can be defined to close the note with. If the note is already closed, will show a small text.
name | default | description
------ | --------- | -------------
@@ -546,72 +547,81 @@ text | _undefined_ | Text to show on this button
icon | checkmark.svg | Icon to show
Id-key | id | The property name where the ID of the note to close can be found
comment | _undefined_ | Text to add onto the note when closing
+
-#### Example usage of close_note
+#### Example usage of close_note
-`{close_note(,checkmark.svg,id,)}`
+ `{close_note(,checkmark.svg,id,)}`
-### add_note_comment
-A textfield to add a comment to a node (with the option to close the note).
+
+### add_note_comment
+
+ A textfield to add a comment to a node (with the option to close the note).
name | default | description
------ | --------- | -------------
Id-key | id | The property name where the ID of the note to close can be found
+
-#### Example usage of add_note_comment
+#### Example usage of add_note_comment
-`{add_note_comment(id)}`
+ `{add_note_comment(id)}`
-### visualize_note_comments
-Visualises the comments for notes
+
+### visualize_note_comments
+
+ Visualises the comments for notes
name | default | description
------ | --------- | -------------
commentsKey | comments | The property name of the comments, which should be stringified json
start | 0 | Drop the first 'start' comments
+
-#### Example usage of visualize_note_comments
+#### Example usage of visualize_note_comments
-`{visualize_note_comments(comments,0)}`
+ `{visualize_note_comments(comments,0)}`
-### add_image_to_note
-Adds an image to a node
+
+### add_image_to_note
+
+ Adds an image to a node
name | default | description
------ | --------- | -------------
Id-key | id | The property name where the ID of the note to close can be found
+
-#### Example usage of add_image_to_note
+#### Example usage of add_image_to_note
-`{add_image_to_note(id)}`
+ `{add_image_to_note(id)}`
-### auto_apply
-A button to run many actions for many features at once.
+
+### auto_apply
+
+ A button to run many actions for many features at once.
To effectively use this button, you'll need some ingredients:
-
-- A target layer with features for which an action is defined in a tag rendering. The following special visualisations
- support an autoAction: tag_apply
-- A host feature to place the auto-action on. This can be a big outline (such as a city). Another good option for this
- is the [current_view](./BuiltinLayers.md#current_view)
+- A target layer with features for which an action is defined in a tag rendering. The following special visualisations support an autoAction: import_way_button, tag_apply
+- A host feature to place the auto-action on. This can be a big outline (such as a city). Another good option for this is the [current_view](./BuiltinLayers.md#current_view)
- Then, use a calculated tag on the host feature to determine the overlapping object ids
-- At last, add this component
+- At last, add this component
name | default | description
------ | --------- | -------------
target_layer | _undefined_ | The layer that the target features will reside in
target_feature_ids | _undefined_ | The key, of which the value contains a list of ids
-tag_rendering_id | _
-undefined_ | The ID of the tagRendering containing the autoAction. This tagrendering will be calculated. The embedded actions will be executed
+tag_rendering_id | _undefined_ | The ID of the tagRendering containing the autoAction. This tagrendering will be calculated. The embedded actions will be executed
text | _undefined_ | The text to show on the button
icon | ./assets/svg/robot.svg | The icon to show on the button
+
-#### Example usage of auto_apply
+#### Example usage of auto_apply
-`{auto_apply(,,,,./assets/svg/robot.svg)}`
+ `{auto_apply(,,,,./assets/svg/robot.svg)}`
This document is autogenerated from UI/SpecialVisualisations.ts
\ No newline at end of file
diff --git a/Docs/TagInfo/mapcomplete_bicycle_rental.json b/Docs/TagInfo/mapcomplete_bicycle_rental.json
index e81fc5e24..6374d0914 100644
--- a/Docs/TagInfo/mapcomplete_bicycle_rental.json
+++ b/Docs/TagInfo/mapcomplete_bicycle_rental.json
@@ -2,7 +2,7 @@
"data_format": 1,
"project": {
"name": "MapComplete Bicycle rental",
- "description": "A map with biyccle rental stations and bicycle rental shops",
+ "description": "A map with bicycle rental stations and bicycle rental shops",
"project_url": "https://mapcomplete.osm.be/bicycle_rental",
"doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
"icon_url": "https://mapcomplete.osm.be/assets/themes/bicycle_rental/logo.svg",
diff --git a/Docs/TagInfo/mapcomplete_charging_stations.json b/Docs/TagInfo/mapcomplete_charging_stations.json
index 5e4879860..00fe86ead 100644
--- a/Docs/TagInfo/mapcomplete_charging_stations.json
+++ b/Docs/TagInfo/mapcomplete_charging_stations.json
@@ -1119,6 +1119,11 @@
"description": "Layer 'Charging stations' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')",
"value": "1"
},
+ {
+ "key": "level",
+ "description": "Layer 'Charging stations' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')",
+ "value": "-1"
+ },
{
"key": "ref",
"description": "Layer 'Charging stations' shows and asks freeform values for key 'ref' (in the MapComplete.osm.be theme 'Charging stations')"
diff --git a/Docs/TagInfo/mapcomplete_cyclestreets.json b/Docs/TagInfo/mapcomplete_cyclestreets.json
index 6c92545d8..998ff2159 100644
--- a/Docs/TagInfo/mapcomplete_cyclestreets.json
+++ b/Docs/TagInfo/mapcomplete_cyclestreets.json
@@ -5,7 +5,7 @@
"description": "A map of cyclestreets",
"project_url": "https://mapcomplete.osm.be/cyclestreets",
"doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
- "icon_url": "https://mapcomplete.osm.be/assets/themes/cyclestreets/F111.svg",
+ "icon_url": "https://mapcomplete.osm.be/assets/themes/cyclestreets/logo.svg",
"contact_name": "Pieter Vander Vennet, MapComplete",
"contact_email": "pietervdvn@posteo.net"
},
diff --git a/Docs/TagInfo/mapcomplete_cyclofix.json b/Docs/TagInfo/mapcomplete_cyclofix.json
index 3f9700e03..774e972bb 100644
--- a/Docs/TagInfo/mapcomplete_cyclofix.json
+++ b/Docs/TagInfo/mapcomplete_cyclofix.json
@@ -416,184 +416,204 @@
},
{
"key": "amenity",
- "description": "The MapComplete theme Cyclofix - an open map for cyclists has a layer Bike stations (repair, pump or both) showing features with this tag",
+ "description": "The MapComplete theme Cyclofix - an open map for cyclists has a layer Bicycle pump and repair showing features with this tag",
"value": "bicycle_repair_station"
},
{
"key": "image",
- "description": "The layer 'Bike stations (repair, pump or both) allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ "description": "The layer 'Bicycle pump and repair 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 stations (repair, pump or both) allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ "description": "The layer 'Bicycle pump and repair 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 stations (repair, pump or both) allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ "description": "The layer 'Bicycle pump and repair 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 stations (repair, pump or both) allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ "description": "The layer 'Bicycle pump and repair 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": "service:bicycle:tools",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=no&service:bicycle:pump=yes with a fixed text, namely 'There is only a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=no&service:bicycle:pump=yes with a fixed text, namely 'There is only a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "no"
},
{
"key": "service:bicycle:pump",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=no&service:bicycle:pump=yes with a fixed text, namely 'There is only a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=no&service:bicycle:pump=yes with a fixed text, namely 'There is only a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "yes"
},
{
"key": "service:bicycle:tools",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=yes&service:bicycle:pump=no with a fixed text, namely 'There are only tools (screwdrivers, pliers...) present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=yes&service:bicycle:pump=no with a fixed text, namely 'There are only tools (screwdrivers, pliers...) present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "yes"
},
{
"key": "service:bicycle:pump",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=yes&service:bicycle:pump=no with a fixed text, namely 'There are only tools (screwdrivers, pliers...) present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=yes&service:bicycle:pump=no with a fixed text, namely 'There are only tools (screwdrivers, pliers...) present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "no"
},
{
"key": "service:bicycle:tools",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=yes&service:bicycle:pump=yes with a fixed text, namely 'There are both tools and a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=yes&service:bicycle:pump=yes with a fixed text, namely 'There are both tools and a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "yes"
},
{
"key": "service:bicycle:pump",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=yes&service:bicycle:pump=yes with a fixed text, namely 'There are both tools and a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=yes&service:bicycle:pump=yes with a fixed text, namely 'There are both tools and a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "yes"
},
- {
- "key": "operator",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
- },
- {
- "key": "operator",
- "description": "Layer 'Bike stations (repair, pump or both)' shows operator=De Fietsambassade Gent with a fixed text, namely 'De Fietsambassade Gent' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
- "value": "De Fietsambassade Gent"
- },
- {
- "key": "email",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
- },
- {
- "key": "phone",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
- },
- {
- "key": "opening_hours",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
- },
- {
- "key": "opening_hours",
- "description": "Layer 'Bike stations (repair, pump or both)' shows opening_hours=24/7 with a fixed text, namely 'Always open' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
- "value": "24/7"
- },
- {
- "key": "opening_hours",
- "description": "Layer 'Bike stations (repair, pump or both)' shows with a fixed text, namely 'Always open' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key opening_hours.",
- "value": ""
- },
- {
- "key": "service:bicycle:chain_tool",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:chain_tool=yes with a fixed text, namely 'There is a chain tool' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
- "value": "yes"
- },
- {
- "key": "service:bicycle:chain_tool",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:chain_tool=no with a fixed text, namely 'There is no chain tool' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
- "value": "no"
- },
- {
- "key": "service:bicycle:stand",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:stand=yes with a fixed text, namely 'There is a hook or stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
- "value": "yes"
- },
- {
- "key": "service:bicycle:stand",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:stand=no with a fixed text, namely 'There is no hook or stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
- "value": "no"
- },
{
"key": "service:bicycle:pump:operational_status",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:pump:operational_status=broken with a fixed text, namely 'The bike pump is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:pump:operational_status=broken with a fixed text, namely 'The bike pump is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "broken"
},
{
"key": "service:bicycle:pump:operational_status",
- "description": "Layer 'Bike stations (repair, pump or both)' shows with a fixed text, namely 'The bike pump is operational' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key service:bicycle:pump:operational_status.",
- "value": ""
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:pump:operational_status=operational with a fixed text, namely 'The bike pump is operational' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "operational"
+ },
+ {
+ "key": "opening_hours",
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
+ },
+ {
+ "key": "opening_hours",
+ "description": "Layer 'Bicycle pump and repair' shows opening_hours=24/7 with a fixed text, namely 'Always open' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "24/7"
+ },
+ {
+ "key": "access",
+ "description": "Layer 'Bicycle pump and repair' 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 'Cyclofix - an open map for cyclists')",
+ "value": "yes"
+ },
+ {
+ "key": "access",
+ "description": "Layer 'Bicycle pump and repair' shows access=public with a fixed text, namely 'Publicly accessible' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "public"
+ },
+ {
+ "key": "access",
+ "description": "Layer 'Bicycle pump and repair' shows access=customers with a fixed text, namely 'Only for customers' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "customers"
+ },
+ {
+ "key": "access",
+ "description": "Layer 'Bicycle pump and repair' shows access=private with a fixed text, namely 'Not accessible to the general public' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "private"
+ },
+ {
+ "key": "access",
+ "description": "Layer 'Bicycle pump and repair' shows access=no with a fixed text, namely 'Not accessible to the general public' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "no"
+ },
+ {
+ "key": "operator",
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
+ },
+ {
+ "key": "email",
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
+ },
+ {
+ "key": "phone",
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
+ },
+ {
+ "key": "service:bicycle:chain_tool",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:chain_tool=yes with a fixed text, namely 'There is a chain tool' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "yes"
+ },
+ {
+ "key": "service:bicycle:chain_tool",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:chain_tool=no with a fixed text, namely 'There is no chain tool' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "no"
+ },
+ {
+ "key": "service:bicycle:stand",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:stand=yes with a fixed text, namely 'There is a hook or stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "yes"
+ },
+ {
+ "key": "service:bicycle:stand",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:stand=no with a fixed text, namely 'There is no hook or stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "no"
},
{
"key": "valves",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'valves' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'valves' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
},
{
"key": "valves",
- "description": "Layer 'Bike stations (repair, pump or both)' shows valves=sclaverand with a fixed text, namely 'Sclaverand (also known as Presta)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows valves=sclaverand with a fixed text, namely 'Sclaverand (also known as Presta)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "sclaverand"
},
{
"key": "valves",
- "description": "Layer 'Bike stations (repair, pump or both)' shows valves=dunlop with a fixed text, namely 'Dunlop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows valves=dunlop with a fixed text, namely 'Dunlop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "dunlop"
},
{
"key": "valves",
- "description": "Layer 'Bike stations (repair, pump or both)' shows valves=schrader with a fixed text, namely 'Schrader (cars)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows valves=schrader with a fixed text, namely 'Schrader (cars)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "schrader"
},
{
"key": "manual",
- "description": "Layer 'Bike stations (repair, pump or both)' shows manual=yes with a fixed text, namely 'Manual pump' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows manual=yes with a fixed text, namely 'Manual pump' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "yes"
},
{
"key": "manual",
- "description": "Layer 'Bike stations (repair, pump or both)' shows manual=no with a fixed text, namely 'Electrical pump' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows manual=no with a fixed text, namely 'Electrical pump' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "no"
},
{
"key": "manometer",
- "description": "Layer 'Bike stations (repair, pump or both)' shows manometer=yes with a fixed text, namely 'There is a manometer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows manometer=yes with a fixed text, namely 'There is a manometer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "yes"
},
{
"key": "manometer",
- "description": "Layer 'Bike stations (repair, pump or both)' shows manometer=no with a fixed text, namely 'There is no manometer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows manometer=no with a fixed text, namely 'There is no manometer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "no"
},
{
"key": "manometer",
- "description": "Layer 'Bike stations (repair, pump or both)' shows manometer=broken with a fixed text, namely 'There is manometer but it is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows manometer=broken with a fixed text, namely 'There is manometer but it is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "broken"
},
{
"key": "level",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')"
},
{
"key": "location",
- "description": "Layer 'Bike stations (repair, pump or both)' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "underground"
},
{
"key": "level",
- "description": "Layer 'Bike stations (repair, pump or both)' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "0"
},
{
"key": "level",
- "description": "Layer 'Bike stations (repair, pump or both)' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key level.",
+ "description": "Layer 'Bicycle pump and repair' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key level.",
"value": ""
},
{
"key": "level",
- "description": "Layer 'Bike stations (repair, pump or both)' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "description": "Layer 'Bicycle pump and repair' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
"value": "1"
},
+ {
+ "key": "level",
+ "description": "Layer 'Bicycle pump and repair' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')",
+ "value": "-1"
+ },
{
"key": "amenity",
"description": "The MapComplete theme Cyclofix - an open map for cyclists has a layer Bicycle tube vending machine showing features with this tag",
diff --git a/Docs/TagInfo/mapcomplete_etymology.json b/Docs/TagInfo/mapcomplete_etymology.json
index c4c90109d..9eb2fabed 100644
--- a/Docs/TagInfo/mapcomplete_etymology.json
+++ b/Docs/TagInfo/mapcomplete_etymology.json
@@ -175,6 +175,75 @@
"key": "wikipedia",
"description": "The layer 'Parks and forests without etymology information allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
+ {
+ "key": "name",
+ "description": "The MapComplete theme Open Etymology Map has a layer Education institutions without etymology information showing features with this tag"
+ },
+ {
+ "key": "amenity",
+ "description": "The MapComplete theme Open Etymology Map has a layer Education institutions without etymology information showing features with this tag",
+ "value": "school"
+ },
+ {
+ "key": "amenity",
+ "description": "The MapComplete theme Open Etymology Map has a layer Education institutions without etymology information showing features with this tag",
+ "value": "kindergarten"
+ },
+ {
+ "key": "amenity",
+ "description": "The MapComplete theme Open Etymology Map has a layer Education institutions without etymology information showing features with this tag",
+ "value": "university"
+ },
+ {
+ "key": "amenity",
+ "description": "The MapComplete theme Open Etymology Map has a layer Education institutions without etymology information showing features with this tag",
+ "value": "college"
+ },
+ {
+ "key": "image",
+ "description": "The layer 'Education institutions without etymology information shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "mapillary",
+ "description": "The layer 'Education institutions without etymology information shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikidata",
+ "description": "The layer 'Education institutions without etymology information shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "wikipedia",
+ "description": "The layer 'Education institutions without etymology information shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary"
+ },
+ {
+ "key": "name:etymology:wikidata",
+ "description": "Layer 'Education institutions without etymology information' shows and asks freeform values for key 'name:etymology:wikidata' (in the MapComplete.osm.be theme 'Open Etymology Map')"
+ },
+ {
+ "key": "name:etymology",
+ "description": "Layer 'Education institutions without etymology information' shows and asks freeform values for key 'name:etymology' (in the MapComplete.osm.be theme 'Open Etymology Map')"
+ },
+ {
+ "key": "name:etymology",
+ "description": "Layer 'Education institutions without etymology information' shows name:etymology=unknown with a fixed text, namely 'The origin of this name is unknown in all literature' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Etymology Map')",
+ "value": "unknown"
+ },
+ {
+ "key": "image",
+ "description": "The layer 'Education institutions without etymology information 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 'Education institutions without etymology information 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 'Education institutions without etymology information 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 'Education institutions without etymology information 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": "id",
"description": "The MapComplete theme Open Etymology Map has a layer Your travelled track showing features with this tag",
diff --git a/Docs/TagInfo/mapcomplete_fritures.json b/Docs/TagInfo/mapcomplete_fritures.json
index 09d9f2987..4e088a504 100644
--- a/Docs/TagInfo/mapcomplete_fritures.json
+++ b/Docs/TagInfo/mapcomplete_fritures.json
@@ -362,353 +362,6 @@
"description": "Layer 'Fries shop' shows dog=unleashed with a fixed text, namely 'Dogs are allowed and can run around freely' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
"value": "unleashed"
},
- {
- "key": "amenity",
- "description": "The MapComplete theme Friturenkaart has a layer Restaurants and fast food showing features with this tag",
- "value": "fast_food"
- },
- {
- "key": "amenity",
- "description": "The MapComplete theme Friturenkaart has a layer Restaurants and fast food showing features with this tag",
- "value": "restaurant"
- },
- {
- "key": "image",
- "description": "The layer 'Restaurants and fast food 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 'Restaurants and fast food 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 'Restaurants and fast food 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 'Restaurants and fast food allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
- },
- {
- "key": "name",
- "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Friturenkaart')"
- },
- {
- "key": "amenity",
- "description": "Layer 'Restaurants and fast food' shows amenity=fast_food with a fixed text, namely 'Dit is een fastfood-zaak. De focus ligt op snelle bediening, zitplaatsen zijn vaak beperkt en functioneel' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "fast_food"
- },
- {
- "key": "amenity",
- "description": "Layer 'Restaurants and fast food' shows amenity=restaurant with a fixed text, namely 'Dit is een restaurant. De focus ligt op een aangename ervaring waar je aan tafel wordt bediend' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "restaurant"
- },
- {
- "key": "opening_hours",
- "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Friturenkaart')"
- },
- {
- "key": "website",
- "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Friturenkaart')"
- },
- {
- "key": "contact:website",
- "description": "Layer 'Restaurants and fast food' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Friturenkaart')"
- },
- {
- "key": "email",
- "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Friturenkaart')"
- },
- {
- "key": "contact:email",
- "description": "Layer 'Restaurants and fast food' shows contact:email~^..*$ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Friturenkaart')"
- },
- {
- "key": "phone",
- "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Friturenkaart')"
- },
- {
- "key": "contact:phone",
- "description": "Layer 'Restaurants and fast food' shows contact:phone~^..*$ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Friturenkaart')"
- },
- {
- "key": "payment:cash",
- "description": "Layer 'Restaurants and fast food' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "payment:cards",
- "description": "Layer 'Restaurants and fast food' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "wheelchair",
- "description": "Layer 'Restaurants and fast food' 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 'Friturenkaart')",
- "value": "designated"
- },
- {
- "key": "wheelchair",
- "description": "Layer 'Restaurants and fast food' 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 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "wheelchair",
- "description": "Layer 'Restaurants and fast food' 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 'Friturenkaart')",
- "value": "limited"
- },
- {
- "key": "wheelchair",
- "description": "Layer 'Restaurants and fast food' 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 'Friturenkaart')",
- "value": "no"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'cuisine' (in the MapComplete.osm.be theme 'Friturenkaart')"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=pizza with a fixed text, namely 'This is a pizzeria' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "pizza"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=friture with a fixed text, namely 'This is a friture' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "friture"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=pasta with a fixed text, namely 'Mainly serves pasta' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "pasta"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=kebab with a fixed text, namely 'Dit is een kebabzaak' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "kebab"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=sandwich with a fixed text, namely 'Dit is een broodjeszaak' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "sandwich"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=burger with a fixed text, namely 'Dit is een hamburgerrestaurant' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "burger"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=sushi with a fixed text, namely 'Dit is een sushirestaurant' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "sushi"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=coffee with a fixed text, namely 'Dit is een koffiezaak' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "coffee"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=italian with a fixed text, namely 'Dit is een Italiaans restaurant (dat meer dan enkel pasta of pizza verkoopt)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "italian"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=french with a fixed text, namely 'Dit is een Frans restaurant' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "french"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=chinese with a fixed text, namely 'Dit is een Chinees restaurant' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "chinese"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=greek with a fixed text, namely 'Dit is een Grieks restaurant' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "greek"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=indian with a fixed text, namely 'Dit is een Indisch restaurant' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "indian"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=turkish with a fixed text, namely 'Dit is een Turks restaurant (dat meer dan enkel kebab verkoopt)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "turkish"
- },
- {
- "key": "cuisine",
- "description": "Layer 'Restaurants and fast food' shows cuisine=thai with a fixed text, namely 'Dit is een Thaïs restaurant' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "thai"
- },
- {
- "key": "takeaway",
- "description": "Layer 'Restaurants and fast food' shows takeaway=only with a fixed text, namely 'This is a take-away only business' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "only"
- },
- {
- "key": "takeaway",
- "description": "Layer 'Restaurants and fast food' shows takeaway=yes with a fixed text, namely 'Take-away is possible here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "takeaway",
- "description": "Layer 'Restaurants and fast food' shows takeaway=no with a fixed text, namely 'Take-away is not possible here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "no"
- },
- {
- "key": "diet:vegetarian",
- "description": "Layer 'Restaurants and fast food' shows diet:vegetarian=no with a fixed text, namely 'Geen vegetarische opties beschikbaar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "no"
- },
- {
- "key": "diet:vegetarian",
- "description": "Layer 'Restaurants and fast food' shows diet:vegetarian=limited with a fixed text, namely 'Beperkte vegetarische opties zijn beschikbaar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "limited"
- },
- {
- "key": "diet:vegetarian",
- "description": "Layer 'Restaurants and fast food' shows diet:vegetarian=yes with a fixed text, namely 'Vegetarische opties zijn beschikbaar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "diet:vegetarian",
- "description": "Layer 'Restaurants and fast food' shows diet:vegetarian=only with a fixed text, namely 'Enkel vegetarische opties zijn beschikbaar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "only"
- },
- {
- "key": "diet:vegan",
- "description": "Layer 'Restaurants and fast food' shows diet:vegan=no with a fixed text, namely 'Geen veganistische opties beschikbaar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "no"
- },
- {
- "key": "diet:vegan",
- "description": "Layer 'Restaurants and fast food' shows diet:vegan=limited with a fixed text, namely 'Beperkte veganistische opties zijn beschikbaar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "limited"
- },
- {
- "key": "diet:vegan",
- "description": "Layer 'Restaurants and fast food' shows diet:vegan=yes with a fixed text, namely 'Veganistische opties zijn beschikbaar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "diet:vegan",
- "description": "Layer 'Restaurants and fast food' shows diet:vegan=only with a fixed text, namely 'Enkel veganistische opties zijn beschikbaar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "only"
- },
- {
- "key": "diet:halal",
- "description": "Layer 'Restaurants and fast food' shows diet:halal=no with a fixed text, namely 'There are no halal options available' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "no"
- },
- {
- "key": "diet:halal",
- "description": "Layer 'Restaurants and fast food' shows diet:halal=limited with a fixed text, namely 'There is a small halal menu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "limited"
- },
- {
- "key": "diet:halal",
- "description": "Layer 'Restaurants and fast food' shows diet:halal=yes with a fixed text, namely 'There is a halal menu' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "diet:halal",
- "description": "Layer 'Restaurants and fast food' shows diet:halal=only with a fixed text, namely 'Only halal options are available' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "only"
- },
- {
- "key": "diet:vegetarian",
- "description": "Layer 'Restaurants and fast food' shows diet:vegetarian=yes with a fixed text, namely 'Er zijn vegetarische snacks aanwezig' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "diet:vegetarian",
- "description": "Layer 'Restaurants and fast food' shows diet:vegetarian=limited with a fixed text, namely 'Slechts enkele vegetarische snacks' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "limited"
- },
- {
- "key": "diet:vegetarian",
- "description": "Layer 'Restaurants and fast food' shows diet:vegetarian=no with a fixed text, namely 'Geen vegetarische snacks beschikbaar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "no"
- },
- {
- "key": "diet:vegan",
- "description": "Layer 'Restaurants and fast food' shows diet:vegan=yes with a fixed text, namely 'Er zijn veganistische snacks aanwezig' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "diet:vegan",
- "description": "Layer 'Restaurants and fast food' shows diet:vegan=limited with a fixed text, namely 'Slechts enkele veganistische snacks' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "limited"
- },
- {
- "key": "diet:vegan",
- "description": "Layer 'Restaurants and fast food' shows diet:vegan=no with a fixed text, namely 'Geen veganistische snacks beschikbaar' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "no"
- },
- {
- "key": "friture:oil",
- "description": "Layer 'Restaurants and fast food' shows friture:oil=vegetable with a fixed text, namely 'Plantaardige olie' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "vegetable"
- },
- {
- "key": "friture:oil",
- "description": "Layer 'Restaurants and fast food' shows friture:oil=animal with a fixed text, namely 'Dierlijk vet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "animal"
- },
- {
- "key": "reusable_packaging:accept",
- "description": "Layer 'Restaurants and fast food' shows reusable_packaging:accept=yes with a fixed text, namely 'You can bring your own containers to get your order, saving on single-use packaging material and thus waste' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "reusable_packaging:accept",
- "description": "Layer 'Restaurants and fast food' shows reusable_packaging:accept=no with a fixed text, namely 'Bringing your own container is not allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "no"
- },
- {
- "key": "reusable_packaging:accept",
- "description": "Layer 'Restaurants and fast food' shows reusable_packaging:accept=only with a fixed text, namely 'You must bring your own container to order here.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "only"
- },
- {
- "key": "service:electricity",
- "description": "Layer 'Restaurants and fast food' shows service:electricity=yes with a fixed text, namely 'There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "service:electricity",
- "description": "Layer 'Restaurants and fast food' shows service:electricity=limited with a fixed text, namely 'There are a few domestic sockets available to customers seated indoors, where they can charge their electronics' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "limited"
- },
- {
- "key": "service:electricity",
- "description": "Layer 'Restaurants and fast food' shows service:electricity=ask with a fixed text, namely 'There are no sockets available indoors to customers, but charging might be possible if the staff is asked' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "ask"
- },
- {
- "key": "service:electricity",
- "description": "Layer 'Restaurants and fast food' shows service:electricity=no with a fixed text, namely 'There are a no domestic sockets available to customers seated indoors' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "no"
- },
- {
- "key": "dog",
- "description": "Layer 'Restaurants and fast food' shows dog=yes with a fixed text, namely 'Dogs are allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "yes"
- },
- {
- "key": "dog",
- "description": "Layer 'Restaurants and fast food' shows dog=no with a fixed text, namely 'Dogs are not allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "no"
- },
- {
- "key": "dog",
- "description": "Layer 'Restaurants and fast food' shows dog=leashed with a fixed text, namely 'Dogs are allowed, but they have to be leashed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "leashed"
- },
- {
- "key": "dog",
- "description": "Layer 'Restaurants and fast food' shows dog=unleashed with a fixed text, namely 'Dogs are allowed and can run around freely' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')",
- "value": "unleashed"
- },
{
"key": "id",
"description": "The MapComplete theme Friturenkaart has a layer Your travelled track showing features with this tag",
diff --git a/Docs/TagInfo/mapcomplete_nature.json b/Docs/TagInfo/mapcomplete_nature.json
index 6372eeee2..7a32c2783 100644
--- a/Docs/TagInfo/mapcomplete_nature.json
+++ b/Docs/TagInfo/mapcomplete_nature.json
@@ -782,6 +782,11 @@
"description": "Layer 'Toilets' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')",
"value": "1"
},
+ {
+ "key": "level",
+ "description": "Layer 'Toilets' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Into nature')",
+ "value": "-1"
+ },
{
"key": "description",
"description": "Layer 'Toilets' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'Into nature')"
diff --git a/Docs/TagInfo/mapcomplete_notes.json b/Docs/TagInfo/mapcomplete_notes.json
index 90384e827..194c65c34 100644
--- a/Docs/TagInfo/mapcomplete_notes.json
+++ b/Docs/TagInfo/mapcomplete_notes.json
@@ -5,7 +5,7 @@
"description": "A note is a pin on the map with some text to indicate something wrong",
"project_url": "https://mapcomplete.osm.be/notes",
"doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
- "icon_url": "https://mapcomplete.osm.be/assets/svg/resolved.svg",
+ "icon_url": "https://mapcomplete.osm.be/assets/themes/notes/logo.svg",
"contact_name": "Pieter Vander Vennet, MapComplete",
"contact_email": "pietervdvn@posteo.net"
},
diff --git a/Docs/TagInfo/mapcomplete_observation_towers.json b/Docs/TagInfo/mapcomplete_observation_towers.json
index 9ed76fc9e..1e8766dd5 100644
--- a/Docs/TagInfo/mapcomplete_observation_towers.json
+++ b/Docs/TagInfo/mapcomplete_observation_towers.json
@@ -45,16 +45,14 @@
"description": "Layer 'Observation towers' shows and asks freeform values for key 'height' (in the MapComplete.osm.be theme 'Observation towers')"
},
{
- "key": "operator",
- "description": "Layer 'Observation towers' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Observation towers')"
+ "key": "access",
+ "description": "Layer 'Observation towers' shows access=yes with a fixed text, namely 'This tower is publicly accessible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers')",
+ "value": "yes"
},
{
- "key": "website",
- "description": "Layer 'Observation towers' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Observation towers')"
- },
- {
- "key": "contact:website",
- "description": "Layer 'Observation towers' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Observation towers')"
+ "key": "access",
+ "description": "Layer 'Observation towers' shows access=guided with a fixed text, namely 'This tower can only be visited with a guide' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers')",
+ "value": "guided"
},
{
"key": "charge",
@@ -80,6 +78,14 @@
"description": "Layer 'Observation towers' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers')",
"value": "yes"
},
+ {
+ "key": "website",
+ "description": "Layer 'Observation towers' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Observation towers')"
+ },
+ {
+ "key": "contact:website",
+ "description": "Layer 'Observation towers' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Observation towers')"
+ },
{
"key": "step_count",
"description": "Layer 'Observation towers' shows and asks freeform values for key 'step_count' (in the MapComplete.osm.be theme 'Observation towers')"
@@ -94,6 +100,10 @@
"description": "Layer 'Observation towers' shows elevator=no with a fixed text, namely 'This tower does not have an elevator' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers')",
"value": "no"
},
+ {
+ "key": "operator",
+ "description": "Layer 'Observation towers' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Observation towers')"
+ },
{
"key": "wheelchair",
"description": "Layer 'Observation towers' 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 'Observation towers')",
diff --git a/Docs/TagInfo/mapcomplete_openwindpowermap.json b/Docs/TagInfo/mapcomplete_openwindpowermap.json
index 5d4725afb..83ecc311a 100644
--- a/Docs/TagInfo/mapcomplete_openwindpowermap.json
+++ b/Docs/TagInfo/mapcomplete_openwindpowermap.json
@@ -5,7 +5,7 @@
"description": "A map for showing and editing wind turbines",
"project_url": "https://mapcomplete.osm.be/openwindpowermap",
"doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/",
- "icon_url": "https://mapcomplete.osm.be/assets/themes/openwindpowermap/wind_turbine.svg",
+ "icon_url": "https://mapcomplete.osm.be/assets/themes/openwindpowermap/logo.svg",
"contact_name": "Pieter Vander Vennet, Seppe Santens",
"contact_email": "pietervdvn@posteo.net"
},
diff --git a/Docs/TagInfo/mapcomplete_personal.json b/Docs/TagInfo/mapcomplete_personal.json
index c2edeb9cd..d80185cd3 100644
--- a/Docs/TagInfo/mapcomplete_personal.json
+++ b/Docs/TagInfo/mapcomplete_personal.json
@@ -2186,6 +2186,11 @@
"description": "Layer 'Charging stations' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "1"
},
+ {
+ "key": "level",
+ "description": "Layer 'Charging stations' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "-1"
+ },
{
"key": "ref",
"description": "Layer 'Charging stations' shows and asks freeform values for key 'ref' (in the MapComplete.osm.be theme 'Personal theme')"
@@ -3379,184 +3384,204 @@
},
{
"key": "amenity",
- "description": "The MapComplete theme Personal theme has a layer Bike stations (repair, pump or both) showing features with this tag",
+ "description": "The MapComplete theme Personal theme has a layer Bicycle pump and repair showing features with this tag",
"value": "bicycle_repair_station"
},
{
"key": "image",
- "description": "The layer 'Bike stations (repair, pump or both) allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ "description": "The layer 'Bicycle pump and repair 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 stations (repair, pump or both) allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ "description": "The layer 'Bicycle pump and repair 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 stations (repair, pump or both) allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ "description": "The layer 'Bicycle pump and repair 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 stations (repair, pump or both) allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
+ "description": "The layer 'Bicycle pump and repair 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": "service:bicycle:tools",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=no&service:bicycle:pump=yes with a fixed text, namely 'There is only a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=no&service:bicycle:pump=yes with a fixed text, namely 'There is only a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "no"
},
{
"key": "service:bicycle:pump",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=no&service:bicycle:pump=yes with a fixed text, namely 'There is only a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=no&service:bicycle:pump=yes with a fixed text, namely 'There is only a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "yes"
},
{
"key": "service:bicycle:tools",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=yes&service:bicycle:pump=no with a fixed text, namely 'There are only tools (screwdrivers, pliers...) present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=yes&service:bicycle:pump=no with a fixed text, namely 'There are only tools (screwdrivers, pliers...) present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "yes"
},
{
"key": "service:bicycle:pump",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=yes&service:bicycle:pump=no with a fixed text, namely 'There are only tools (screwdrivers, pliers...) present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=yes&service:bicycle:pump=no with a fixed text, namely 'There are only tools (screwdrivers, pliers...) present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "no"
},
{
"key": "service:bicycle:tools",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=yes&service:bicycle:pump=yes with a fixed text, namely 'There are both tools and a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=yes&service:bicycle:pump=yes with a fixed text, namely 'There are both tools and a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "yes"
},
{
"key": "service:bicycle:pump",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:tools=yes&service:bicycle:pump=yes with a fixed text, namely 'There are both tools and a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:tools=yes&service:bicycle:pump=yes with a fixed text, namely 'There are both tools and a pump present' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "yes"
},
- {
- "key": "operator",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Personal theme')"
- },
- {
- "key": "operator",
- "description": "Layer 'Bike stations (repair, pump or both)' shows operator=De Fietsambassade Gent with a fixed text, namely 'De Fietsambassade Gent' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
- "value": "De Fietsambassade Gent"
- },
- {
- "key": "email",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Personal theme')"
- },
- {
- "key": "phone",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')"
- },
- {
- "key": "opening_hours",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Personal theme')"
- },
- {
- "key": "opening_hours",
- "description": "Layer 'Bike stations (repair, pump or both)' shows opening_hours=24/7 with a fixed text, namely 'Always open' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
- "value": "24/7"
- },
- {
- "key": "opening_hours",
- "description": "Layer 'Bike stations (repair, pump or both)' shows with a fixed text, namely 'Always open' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key opening_hours.",
- "value": ""
- },
- {
- "key": "service:bicycle:chain_tool",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:chain_tool=yes with a fixed text, namely 'There is a chain tool' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
- "value": "yes"
- },
- {
- "key": "service:bicycle:chain_tool",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:chain_tool=no with a fixed text, namely 'There is no chain tool' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
- "value": "no"
- },
- {
- "key": "service:bicycle:stand",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:stand=yes with a fixed text, namely 'There is a hook or stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
- "value": "yes"
- },
- {
- "key": "service:bicycle:stand",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:stand=no with a fixed text, namely 'There is no hook or stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
- "value": "no"
- },
{
"key": "service:bicycle:pump:operational_status",
- "description": "Layer 'Bike stations (repair, pump or both)' shows service:bicycle:pump:operational_status=broken with a fixed text, namely 'The bike pump is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:pump:operational_status=broken with a fixed text, namely 'The bike pump is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "broken"
},
{
"key": "service:bicycle:pump:operational_status",
- "description": "Layer 'Bike stations (repair, pump or both)' shows with a fixed text, namely 'The bike pump is operational' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key service:bicycle:pump:operational_status.",
- "value": ""
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:pump:operational_status=operational with a fixed text, namely 'The bike pump is operational' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "operational"
+ },
+ {
+ "key": "opening_hours",
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Personal theme')"
+ },
+ {
+ "key": "opening_hours",
+ "description": "Layer 'Bicycle pump and repair' shows opening_hours=24/7 with a fixed text, namely 'Always open' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "24/7"
+ },
+ {
+ "key": "access",
+ "description": "Layer 'Bicycle pump and repair' 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 'Personal theme')",
+ "value": "yes"
+ },
+ {
+ "key": "access",
+ "description": "Layer 'Bicycle pump and repair' shows access=public with a fixed text, namely 'Publicly accessible' (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "public"
+ },
+ {
+ "key": "access",
+ "description": "Layer 'Bicycle pump and repair' shows access=customers with a fixed text, namely 'Only for customers' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "customers"
+ },
+ {
+ "key": "access",
+ "description": "Layer 'Bicycle pump and repair' shows access=private with a fixed text, namely 'Not accessible to the general public' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "private"
+ },
+ {
+ "key": "access",
+ "description": "Layer 'Bicycle pump and repair' shows access=no with a fixed text, namely 'Not accessible to the general public' (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "no"
+ },
+ {
+ "key": "operator",
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Personal theme')"
+ },
+ {
+ "key": "email",
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Personal theme')"
+ },
+ {
+ "key": "phone",
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')"
+ },
+ {
+ "key": "service:bicycle:chain_tool",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:chain_tool=yes with a fixed text, namely 'There is a chain tool' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "yes"
+ },
+ {
+ "key": "service:bicycle:chain_tool",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:chain_tool=no with a fixed text, namely 'There is no chain tool' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "no"
+ },
+ {
+ "key": "service:bicycle:stand",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:stand=yes with a fixed text, namely 'There is a hook or stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "yes"
+ },
+ {
+ "key": "service:bicycle:stand",
+ "description": "Layer 'Bicycle pump and repair' shows service:bicycle:stand=no with a fixed text, namely 'There is no hook or stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "no"
},
{
"key": "valves",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'valves' (in the MapComplete.osm.be theme 'Personal theme')"
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'valves' (in the MapComplete.osm.be theme 'Personal theme')"
},
{
"key": "valves",
- "description": "Layer 'Bike stations (repair, pump or both)' shows valves=sclaverand with a fixed text, namely 'Sclaverand (also known as Presta)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows valves=sclaverand with a fixed text, namely 'Sclaverand (also known as Presta)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "sclaverand"
},
{
"key": "valves",
- "description": "Layer 'Bike stations (repair, pump or both)' shows valves=dunlop with a fixed text, namely 'Dunlop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows valves=dunlop with a fixed text, namely 'Dunlop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "dunlop"
},
{
"key": "valves",
- "description": "Layer 'Bike stations (repair, pump or both)' shows valves=schrader with a fixed text, namely 'Schrader (cars)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows valves=schrader with a fixed text, namely 'Schrader (cars)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "schrader"
},
{
"key": "manual",
- "description": "Layer 'Bike stations (repair, pump or both)' shows manual=yes with a fixed text, namely 'Manual pump' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows manual=yes with a fixed text, namely 'Manual pump' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "yes"
},
{
"key": "manual",
- "description": "Layer 'Bike stations (repair, pump or both)' shows manual=no with a fixed text, namely 'Electrical pump' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows manual=no with a fixed text, namely 'Electrical pump' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "no"
},
{
"key": "manometer",
- "description": "Layer 'Bike stations (repair, pump or both)' shows manometer=yes with a fixed text, namely 'There is a manometer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows manometer=yes with a fixed text, namely 'There is a manometer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "yes"
},
{
"key": "manometer",
- "description": "Layer 'Bike stations (repair, pump or both)' shows manometer=no with a fixed text, namely 'There is no manometer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows manometer=no with a fixed text, namely 'There is no manometer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "no"
},
{
"key": "manometer",
- "description": "Layer 'Bike stations (repair, pump or both)' shows manometer=broken with a fixed text, namely 'There is manometer but it is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows manometer=broken with a fixed text, namely 'There is manometer but it is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "broken"
},
{
"key": "level",
- "description": "Layer 'Bike stations (repair, pump or both)' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')"
+ "description": "Layer 'Bicycle pump and repair' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Personal theme')"
},
{
"key": "location",
- "description": "Layer 'Bike stations (repair, pump or both)' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Personal theme')",
"value": "underground"
},
{
"key": "level",
- "description": "Layer 'Bike stations (repair, pump or both)' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "0"
},
{
"key": "level",
- "description": "Layer 'Bike stations (repair, pump or both)' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.",
+ "description": "Layer 'Bicycle pump and repair' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key level.",
"value": ""
},
{
"key": "level",
- "description": "Layer 'Bike stations (repair, pump or both)' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Bicycle pump and repair' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "1"
},
+ {
+ "key": "level",
+ "description": "Layer 'Bicycle pump and repair' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "-1"
+ },
{
"key": "amenity",
"description": "The MapComplete theme Personal theme has a layer Bicycle tube vending machine showing features with this tag",
@@ -5505,6 +5530,11 @@
"description": "Layer 'Toilets' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "1"
},
+ {
+ "key": "level",
+ "description": "Layer 'Toilets' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "-1"
+ },
{
"key": "description",
"description": "Layer 'Toilets' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'Personal theme')"
@@ -5548,16 +5578,14 @@
"description": "Layer 'Observation towers' shows and asks freeform values for key 'height' (in the MapComplete.osm.be theme 'Personal theme')"
},
{
- "key": "operator",
- "description": "Layer 'Observation towers' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Personal theme')"
+ "key": "access",
+ "description": "Layer 'Observation towers' shows access=yes with a fixed text, namely 'This tower is publicly accessible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "yes"
},
{
- "key": "website",
- "description": "Layer 'Observation towers' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Personal theme')"
- },
- {
- "key": "contact:website",
- "description": "Layer 'Observation towers' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Personal theme')"
+ "key": "access",
+ "description": "Layer 'Observation towers' shows access=guided with a fixed text, namely 'This tower can only be visited with a guide' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "value": "guided"
},
{
"key": "charge",
@@ -5583,6 +5611,14 @@
"description": "Layer 'Observation towers' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "yes"
},
+ {
+ "key": "website",
+ "description": "Layer 'Observation towers' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Personal theme')"
+ },
+ {
+ "key": "contact:website",
+ "description": "Layer 'Observation towers' shows contact:website~^..*$ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Personal theme')"
+ },
{
"key": "step_count",
"description": "Layer 'Observation towers' shows and asks freeform values for key 'step_count' (in the MapComplete.osm.be theme 'Personal theme')"
@@ -5597,6 +5633,10 @@
"description": "Layer 'Observation towers' shows elevator=no with a fixed text, namely 'This tower does not have an elevator' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "no"
},
+ {
+ "key": "operator",
+ "description": "Layer 'Observation towers' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Personal theme')"
+ },
{
"key": "wheelchair",
"description": "Layer 'Observation towers' 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 'Personal theme')",
@@ -5734,11 +5774,6 @@
"key": "operator",
"description": "Layer 'Playgrounds' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Personal theme')"
},
- {
- "key": "access",
- "description": "Layer 'Playgrounds' shows with a fixed text, namely 'Accessible to the general public' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key access.",
- "value": ""
- },
{
"key": "access",
"description": "Layer 'Playgrounds' shows access=yes with a fixed text, namely 'Accessible to the general public' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
@@ -5751,7 +5786,7 @@
},
{
"key": "access",
- "description": "Layer 'Playgrounds' shows access=students with a fixed text, namely 'Only accessible to students of the school' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
+ "description": "Layer 'Playgrounds' shows access=students with a fixed text, namely 'Only accessible to students of the school' (in the MapComplete.osm.be theme 'Personal theme')",
"value": "students"
},
{
@@ -5796,11 +5831,6 @@
"description": "Layer 'Playgrounds' shows opening_hours=24/7 with a fixed text, namely 'Always accessible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')",
"value": "24/7"
},
- {
- "key": "opening_hours",
- "description": "Layer 'Playgrounds' shows with a fixed text, namely 'Always accessible' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key opening_hours.",
- "value": ""
- },
{
"key": "shop",
"description": "The MapComplete theme Personal theme has a layer Shop showing features with this tag"
@@ -6585,11 +6615,6 @@
"key": "vending",
"description": "Layer 'Waste Basket' shows with a fixed text, namely 'This waste basket does not have a dispenser for (dog) excrement bags' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key vending.",
"value": ""
- },
- {
- "key": "id",
- "description": "The MapComplete theme Personal theme has a layer Your travelled track showing features with this tag",
- "value": "location_track"
}
]
}
\ No newline at end of file
diff --git a/Docs/TagInfo/mapcomplete_playgrounds.json b/Docs/TagInfo/mapcomplete_playgrounds.json
index 54ce6d367..7571ff96b 100644
--- a/Docs/TagInfo/mapcomplete_playgrounds.json
+++ b/Docs/TagInfo/mapcomplete_playgrounds.json
@@ -97,11 +97,6 @@
"key": "operator",
"description": "Layer 'Playgrounds' shows and asks freeform values for key 'operator' (in the MapComplete.osm.be theme 'Playgrounds')"
},
- {
- "key": "access",
- "description": "Layer 'Playgrounds' shows with a fixed text, namely 'Accessible to the general public' (in the MapComplete.osm.be theme 'Playgrounds') Picking this answer will delete the key access.",
- "value": ""
- },
{
"key": "access",
"description": "Layer 'Playgrounds' shows access=yes with a fixed text, namely 'Accessible to the general public' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Playgrounds')",
@@ -114,7 +109,7 @@
},
{
"key": "access",
- "description": "Layer 'Playgrounds' shows access=students with a fixed text, namely 'Only accessible to students of the school' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Playgrounds')",
+ "description": "Layer 'Playgrounds' shows access=students with a fixed text, namely 'Only accessible to students of the school' (in the MapComplete.osm.be theme 'Playgrounds')",
"value": "students"
},
{
@@ -159,11 +154,6 @@
"description": "Layer 'Playgrounds' shows opening_hours=24/7 with a fixed text, namely 'Always accessible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Playgrounds')",
"value": "24/7"
},
- {
- "key": "opening_hours",
- "description": "Layer 'Playgrounds' shows with a fixed text, namely 'Always accessible' (in the MapComplete.osm.be theme 'Playgrounds') Picking this answer will delete the key opening_hours.",
- "value": ""
- },
{
"key": "id",
"description": "The MapComplete theme Playgrounds has a layer Your travelled track showing features with this tag",
diff --git a/Docs/TagInfo/mapcomplete_toilets.json b/Docs/TagInfo/mapcomplete_toilets.json
index c3f89e8fe..f58006c2c 100644
--- a/Docs/TagInfo/mapcomplete_toilets.json
+++ b/Docs/TagInfo/mapcomplete_toilets.json
@@ -201,6 +201,11 @@
"description": "Layer 'Toilets' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
"value": "1"
},
+ {
+ "key": "level",
+ "description": "Layer 'Toilets' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')",
+ "value": "-1"
+ },
{
"key": "description",
"description": "Layer 'Toilets' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'Open Toilet Map')"
diff --git a/Docs/Tools/GenerateSeries.ts b/Docs/Tools/GenerateSeries.ts
index 633a632b2..109c939f8 100644
--- a/Docs/Tools/GenerateSeries.ts
+++ b/Docs/Tools/GenerateSeries.ts
@@ -4,6 +4,8 @@ import {Utils} from "../../Utils";
import {exec} from "child_process"
import {GeoOperations} from "../../Logic/GeoOperations";
+ScriptUtils.fixUtils()
+
class StatsDownloader {
private readonly startYear = 2020
@@ -75,7 +77,7 @@ class StatsDownloader {
while (url) {
ScriptUtils.erasableLog(`Downloading stats for ${year}-${month}, page ${page} ${url}`)
- const result = await ScriptUtils.DownloadJSON(url, headers)
+ const result = await Utils.downloadJson(url, headers)
page++;
allFeatures.push(...result.features)
if (result.features === undefined) {
diff --git a/Docs/URL_Parameters.md b/Docs/URL_Parameters.md
index 76e792809..ff1866de7 100644
--- a/Docs/URL_Parameters.md
+++ b/Docs/URL_Parameters.md
@@ -1,221 +1,222 @@
-URL-parameters and URL-hash
+
+
+ URL-parameters and URL-hash
=============================
+
+
## Table of contents
1. [URL-parameters and URL-hash](#url-parameters-and-url-hash)
+ - [What is a URL parameter?](#what-is-a-url-parameter)
+ - [fs-userbadge](#fs-userbadge)
+ - [fs-search](#fs-search)
+ - [fs-background](#fs-background)
+ - [fs-filter](#fs-filter)
+ - [fs-add-new](#fs-add-new)
+ - [fs-welcome-message](#fs-welcome-message)
+ - [fs-iframe-popout](#fs-iframe-popout)
+ - [fs-more-quests](#fs-more-quests)
+ - [fs-share-screen](#fs-share-screen)
+ - [fs-geolocation](#fs-geolocation)
+ - [fs-all-questions](#fs-all-questions)
+ - [fs-export](#fs-export)
+ - [fs-pdf](#fs-pdf)
+ - [backend](#backend)
+ - [test](#test)
+ - [debug](#debug)
+ - [fake-user](#fake-user)
+ - [overpassUrl](#overpassurl)
+ - [overpassTimeout](#overpasstimeout)
+ - [overpassMaxZoom](#overpassmaxzoom)
+ - [osmApiTileSize](#osmapitilesize)
+ - [background](#background)
+ - [layer-<layer-id>](#layer-<layer-id>)
+
-- [What is a URL parameter?](#what-is-a-url-parameter)
-- [fs-userbadge](#fs-userbadge)
-- [fs-search](#fs-search)
-- [fs-background](#fs-background)
-- [fs-filter](#fs-filter)
-- [fs-add-new](#fs-add-new)
-- [fs-welcome-message](#fs-welcome-message)
-- [fs-iframe-popout](#fs-iframe-popout)
-- [fs-more-quests](#fs-more-quests)
-- [fs-share-screen](#fs-share-screen)
-- [fs-geolocation](#fs-geolocation)
-- [fs-all-questions](#fs-all-questions)
-- [fs-export](#fs-export)
-- [fs-pdf](#fs-pdf)
-- [backend](#backend)
-- [test](#test)
-- [debug](#debug)
-- [fake-user](#fake-user)
-- [overpassUrl](#overpassurl)
-- [overpassTimeout](#overpasstimeout)
-- [overpassMaxZoom](#overpassmaxzoom)
-- [osmApiTileSize](#osmapitilesize)
-- [background](#background)
-- [layer-<layer-id>](#layer-<layer-id>)
This document gives an overview of which URL-parameters can be used to influence MapComplete.
-What is a URL parameter?
+ What is a URL parameter?
--------------------------
"URL-parameters are extra parts of the URL used to set the state.
-For example, if the url is `https://mapcomplete.osm.be/cyclofix?lat=51.0&lon=4.3&z=5&test=true#node/1234`, the
-URL-parameters are stated in the part between the `?` and the `#`. There are multiple, all separated by `&`, namely:
+For example, if the url is `https://mapcomplete.osm.be/cyclofix?lat=51.0&lon=4.3&z=5&test=true#node/1234`, the URL-parameters are stated in the part between the `?` and the `#`. There are multiple, all separated by `&`, namely:
+
+
+
+ - The url-parameter `lat` is `51.0` in this instance
+ - The url-parameter `lon` is `4.3` in this instance
+ - The url-parameter `z` is `5` in this instance
+ - The url-parameter `test` is `true` in this instance
-- The url-parameter `lat` is `51.0` in this instance
-- The url-parameter `lon` is `4.3` in this instance
-- The url-parameter `z` is `5` in this instance
-- The url-parameter `test` is `true` in this instance
Finally, the URL-hash is the part after the `#`. It is `node/1234` in this case.
-fs-userbadge
+ fs-userbadge
--------------
-Disables/Enables the user information pill (userbadge) at the top left. Disabling this disables logging in and thus
-disables editing all together, effectively putting MapComplete into read-only mode. The default value is _true_
+ Disables/Enables the user information pill (userbadge) at the top left. Disabling this disables logging in and thus disables editing all together, effectively putting MapComplete into read-only mode. The default value is _true_
-fs-search
+ fs-search
-----------
-Disables/Enables the search bar The default value is _true_
+ Disables/Enables the search bar The default value is _true_
-fs-background
+ fs-background
---------------
-Disables/Enables the background layer control The default value is _true_
+ Disables/Enables the background layer control The default value is _true_
-fs-filter
+ fs-filter
-----------
-Disables/Enables the filter The default value is _true_
+ Disables/Enables the filter view The default value is _true_
-fs-add-new
+ fs-add-new
------------
-Disables/Enables the 'add new feature'-popup. (A theme without presets might not have it in the first place) The default
-value is _true_
+ Disables/Enables the 'add new feature'-popup. (A theme without presets might not have it in the first place) The default value is _true_
-fs-welcome-message
+ fs-welcome-message
--------------------
-Disables/enables the help menu or welcome message The default value is _true_
+ Disables/enables the help menu or welcome message The default value is _true_
-fs-iframe-popout
+ fs-iframe-popout
------------------
-Disables/Enables the iframe-popout button. If in iframe mode and the welcome message is hidden, a popout button to the
-full mapcomplete instance is shown instead (unless disabled with this switch) The default value is _true_
+ Disables/Enables the extraLink button. By default, if in iframe mode and the welcome message is hidden, a popout button to the full mapcomplete instance is shown instead (unless disabled with this switch or another extraLink button is enabled) The default value is _true_
-fs-more-quests
+ fs-more-quests
----------------
-Disables/Enables the 'More Quests'-tab in the welcome message The default value is _true_
+ Disables/Enables the 'More Quests'-tab in the welcome message The default value is _true_
-fs-share-screen
+ fs-share-screen
-----------------
-Disables/Enables the 'Share-screen'-tab in the welcome message The default value is _true_
+ Disables/Enables the 'Share-screen'-tab in the welcome message The default value is _true_
-fs-geolocation
+ fs-geolocation
----------------
-Disables/Enables the geolocation button The default value is _true_
+ Disables/Enables the geolocation button The default value is _true_
-fs-all-questions
+ fs-all-questions
------------------
-Always show all questions The default value is _false_
+ Always show all questions The default value is _false_
-fs-export
+ fs-export
-----------
-Enable the export as GeoJSON and CSV button The default value is _false_
+ Enable the export as GeoJSON and CSV button The default value is _false_
-fs-pdf
+ fs-pdf
--------
-Enable the PDF download button The default value is _false_
+ Enable the PDF download button The default value is _false_
-backend
+ backend
---------
-The OSM backend to use - can be used to redirect mapcomplete to the testing backend when using 'osm-test' The default
-value is _osm_
+ The OSM backend to use - can be used to redirect mapcomplete to the testing backend when using 'osm-test' The default value is _osm_
-test
+ test
------
-If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the
-console instead of actually uploaded to osm.org The default value is _false_
+ If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org The default value is _false_
-debug
+ debug
-------
-If true, shows some extra debugging help such as all the available tags on every object The default value is _false_
+ If true, shows some extra debugging help such as all the available tags on every object The default value is _false_
-fake-user
+ fake-user
-----------
-If true, 'dryrun' mode is activated and a fake user account is loaded The default value is _false_
+ If true, 'dryrun' mode is activated and a fake user account is loaded The default value is _false_
-overpassUrl
+ overpassUrl
-------------
-Point mapcomplete to a different overpass-instance. Example: https://overpass-api.de/api/interpreter The default value
-is _https://overpass-api.de/api/interpreter,https://overpass.kumi.systems/api/interpreter,https://overpass.openstreetmap.ru/cgi/interpreter_
+ Point mapcomplete to a different overpass-instance. Example: https://overpass-api.de/api/interpreter The default value is _https://overpass-api.de/api/interpreter,https://overpass.kumi.systems/api/interpreter,https://overpass.openstreetmap.ru/cgi/interpreter_
-overpassTimeout
+ overpassTimeout
-----------------
-Set a different timeout (in seconds) for queries in overpass The default value is _30_
+ Set a different timeout (in seconds) for queries in overpass The default value is _30_
-overpassMaxZoom
+ overpassMaxZoom
-----------------
-point to switch between OSM-api and overpass The default value is _16_
+ point to switch between OSM-api and overpass The default value is _16_
-osmApiTileSize
+ osmApiTileSize
----------------
-Tilesize when the OSM-API is used to fetch data within a BBOX The default value is _17_
+ Tilesize when the OSM-API is used to fetch data within a BBOX The default value is _17_
-background
+ background
------------
-The id of the background layer to start with The default value is _osm_
+ The id of the background layer to start with The default value is _osm_
-layer-<layer-id>
+ layer-<layer-id>
------------------------
-Wether or not the layer with id is shown The default value is _true_
+ Wether or not the layer with id is shown The default value is _true_
This document is autogenerated from QueryParameters
\ No newline at end of file
diff --git a/Logic/Actors/AvailableBaseLayersImplementation.ts b/Logic/Actors/AvailableBaseLayersImplementation.ts
index 4cea4539c..2ac7aa8d4 100644
--- a/Logic/Actors/AvailableBaseLayersImplementation.ts
+++ b/Logic/Actors/AvailableBaseLayersImplementation.ts
@@ -8,6 +8,7 @@ import {TileLayer} from "leaflet";
import * as X from "leaflet-providers";
import {Utils} from "../../Utils";
import {AvailableBaseLayersObj} from "./AvailableBaseLayers";
+import {BBox} from "../BBox";
export default class AvailableBaseLayersImplementation implements AvailableBaseLayersObj {
@@ -26,7 +27,9 @@ export default class AvailableBaseLayersImplementation implements AvailableBaseL
category: "osmbasedmap"
}
- public layerOverview = AvailableBaseLayersImplementation.LoadRasterIndex().concat(AvailableBaseLayersImplementation.LoadProviderIndex());
+ public readonly layerOverview = AvailableBaseLayersImplementation.LoadRasterIndex().concat(AvailableBaseLayersImplementation.LoadProviderIndex());
+ public readonly globalLayers = this.layerOverview.filter(layer => layer.feature?.geometry === undefined || layer.feature?.geometry === null)
+ public readonly localLayers = this.layerOverview.filter(layer => layer.feature?.geometry !== undefined && layer.featuer?.geometry !== null)
private static LoadRasterIndex(): BaseLayer[] {
const layers: BaseLayer[] = []
@@ -258,24 +261,23 @@ export default class AvailableBaseLayersImplementation implements AvailableBaseL
private CalculateAvailableLayersAt(lon: number, lat: number): BaseLayer[] {
const availableLayers = [this.osmCarto]
- const globalLayers = [];
- for (const layerOverviewItem of this.layerOverview) {
+ if (lon === undefined || lat === undefined) {
+ return availableLayers.concat(this.globalLayers);
+ }
+ const lonlat = [lon, lat];
+ for (const layerOverviewItem of this.localLayers) {
const layer = layerOverviewItem;
-
- if (layer.feature?.geometry === undefined || layer.feature?.geometry === null) {
- globalLayers.push(layer);
- continue;
+ const bbox = BBox.get(layer.feature)
+
+ if(!bbox.contains(lonlat)){
+ continue
}
- if (lon === undefined || lat === undefined) {
- continue;
- }
-
- if (GeoOperations.inside([lon, lat], layer.feature)) {
+ if (GeoOperations.inside(lonlat, layer.feature)) {
availableLayers.push(layer);
}
}
- return availableLayers.concat(globalLayers);
+ return availableLayers.concat(this.globalLayers);
}
}
\ No newline at end of file
diff --git a/Logic/DetermineLayout.ts b/Logic/DetermineLayout.ts
index 744198296..734988583 100644
--- a/Logic/DetermineLayout.ts
+++ b/Logic/DetermineLayout.ts
@@ -19,6 +19,7 @@ import {PrepareTheme} from "../Models/ThemeConfig/Conversion/PrepareTheme";
import * as licenses from "../assets/generated/license_info.json"
import TagRenderingConfig from "../Models/ThemeConfig/TagRenderingConfig";
import {FixImages} from "../Models/ThemeConfig/Conversion/FixImages";
+import Svg from "../Svg";
export default class DetermineLayout {
@@ -71,8 +72,10 @@ export default class DetermineLayout {
public static LoadLayoutFromHash(
userLayoutParam: UIEventSource
- ): LayoutConfig | null {
+ ): (LayoutConfig & {definition: LayoutConfigJson}) | null {
let hash = location.hash.substr(1);
+ let json: any;
+
try {
// layoutFromBase64 contains the name of the theme. This is partly to do tracking with goat counter
const dedicatedHashFromLocalStorage = LocalStorageSource.Get(
@@ -95,7 +98,6 @@ export default class DetermineLayout {
dedicatedHashFromLocalStorage.setData(hash);
}
- let json: any;
try {
json = JSON.parse(atob(hash));
} catch (e) {
@@ -111,27 +113,32 @@ export default class DetermineLayout {
const layoutToUse = DetermineLayout.prepCustomTheme(json)
userLayoutParam.setData(layoutToUse.id);
- return new LayoutConfig(layoutToUse, false);
+ const config = new LayoutConfig(layoutToUse, false);
+ config["definition"] = json
+ return config
} catch (e) {
console.error(e)
if (hash === undefined || hash.length < 10) {
- DetermineLayout.ShowErrorOnCustomTheme("Could not load a theme from the hash", new FixedUiElement("Hash does not contain data"))
+ DetermineLayout.ShowErrorOnCustomTheme("Could not load a theme from the hash", new FixedUiElement("Hash does not contain data"), json)
}
- this.ShowErrorOnCustomTheme("Could not parse the hash", new FixedUiElement(e))
+ this.ShowErrorOnCustomTheme("Could not parse the hash", new FixedUiElement(e), json)
return null;
}
}
public static ShowErrorOnCustomTheme(
intro: string = "Error: could not parse the custom layout:",
- error: BaseUIElement) {
+ error: BaseUIElement,
+ json?: any) {
new Combine([
intro,
error.SetClass("alert"),
- new SubtleButton("./assets/svg/mapcomplete_logo.svg",
+ new SubtleButton(Svg.back_svg(),
"Go back to the theme overview",
- {url: window.location.protocol + "//" + window.location.hostname + "/index.html", newTab: false})
-
+ {url: window.location.protocol + "//" + window.location.hostname + "/index.html", newTab: false}),
+ json !== undefined ? new SubtleButton(Svg.download_svg(),"Download the JSON file").onClick(() => {
+ Utils.offerContentsAsDownloadableFile(JSON.stringify(json, null, " "), "theme_definition.json")
+ }) : undefined
])
.SetClass("flex flex-col clickable")
.AttachTo("centermessage");
@@ -189,7 +196,8 @@ export default class DetermineLayout {
console.error(e)
DetermineLayout.ShowErrorOnCustomTheme(
`${link} is invalid:`,
- new FixedUiElement(e)
+ new FixedUiElement(e),
+ parsed
)
return null;
}
diff --git a/Logic/ExtraFunctions.ts b/Logic/ExtraFunctions.ts
index 242e323e8..9a97ff39e 100644
--- a/Logic/ExtraFunctions.ts
+++ b/Logic/ExtraFunctions.ts
@@ -413,7 +413,6 @@ export class ExtraFunctions {
const elems = []
for (const func of ExtraFunctions.allFuncs) {
- console.log("Generating ", func.constructor.name)
elems.push(new Title(func._name, 3),
func._doc,
new List(func._args ?? [], true))
diff --git a/Logic/FeatureSource/Sources/GeoJsonSource.ts b/Logic/FeatureSource/Sources/GeoJsonSource.ts
index 9763e089f..df7270255 100644
--- a/Logic/FeatureSource/Sources/GeoJsonSource.ts
+++ b/Logic/FeatureSource/Sources/GeoJsonSource.ts
@@ -95,6 +95,11 @@ export default class GeoJsonSource implements FeatureSourceForLayer, Tiled {
for (const feature of json.features) {
const props = feature.properties
for (const key in props) {
+
+ if(props[key] === null){
+ delete props[key]
+ }
+
if (typeof props[key] !== "string") {
// Make sure all the values are string, it crashes stuff otherwise
props[key] = JSON.stringify(props[key])
diff --git a/Logic/GeoOperations.ts b/Logic/GeoOperations.ts
index a6f17c773..9c0bad52c 100644
--- a/Logic/GeoOperations.ts
+++ b/Logic/GeoOperations.ts
@@ -124,6 +124,20 @@ export class GeoOperations {
return result;
}
+ public static pointInPolygonCoordinates(x: number, y: number, coordinates: [number, number][][]) {
+ const inside = GeoOperations.pointWithinRing(x, y, /*This is the outer ring of the polygon */coordinates[0])
+ if (!inside) {
+ return false;
+ }
+ for (let i = 1; i < coordinates.length; i++) {
+ const inHole = GeoOperations.pointWithinRing(x, y, coordinates[i] /* These are inner rings, aka holes*/)
+ if (inHole) {
+ return false;
+ }
+ }
+ return true;
+ }
+
public static inside(pointCoordinate, feature): boolean {
// ray-casting algorithm based on
// http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
@@ -136,62 +150,31 @@ export class GeoOperations {
pointCoordinate = pointCoordinate.geometry.coordinates
}
- if (feature.geometry.type === "MultiPolygon") {
- const coordinates = feature.geometry.coordinates[0];
- const outerPolygon = coordinates[0];
- const inside = GeoOperations.inside(pointCoordinate, {
- geometry: {
- type: 'Polygon',
- coordinates: [outerPolygon]
- }
- })
- if (!inside) {
- return false;
- }
- for (let i = 1; i < coordinates.length; i++) {
- const inHole = GeoOperations.inside(pointCoordinate, {
- geometry: {
- type: 'Polygon',
- coordinates: [coordinates[i]]
- }
- })
- if (inHole) {
- return false;
- }
- }
- return true;
- }
-
-
const x: number = pointCoordinate[0];
const y: number = pointCoordinate[1];
- for (let i = 0; i < feature.geometry.coordinates.length; i++) {
- let poly = feature.geometry.coordinates[i];
- let inside = false;
- for (let i = 0, j = poly.length - 1; i < poly.length; j = i++) {
- const coori = poly[i];
- const coorj = poly[j];
-
- const xi = coori[0];
- const yi = coori[1];
- const xj = coorj[0];
- const yj = coorj[1];
-
- const intersect = ((yi > y) != (yj > y))
- && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
- if (intersect) {
- inside = !inside;
+ if (feature.geometry.type === "MultiPolygon") {
+ const coordinatess = feature.geometry.coordinates;
+ for (const coordinates of coordinatess) {
+ const inThisPolygon = GeoOperations.pointInPolygonCoordinates(x, y, coordinates)
+ if (inThisPolygon) {
+ return true;
}
+
}
- if (inside) {
- return true;
- }
+ return false;
}
- return false;
- };
+
+ if (feature.geometry.type === "Polygon") {
+ return GeoOperations.pointInPolygonCoordinates(x, y, feature.geometry.coordinates)
+ }
+
+ throw "GeoOperations.inside: unsupported geometry type "+feature.geometry.type
+
+
+ }
static lengthInMeters(feature: any) {
return turf.length(feature) * 1000
@@ -587,6 +570,26 @@ export class GeoOperations {
}
+ private static pointWithinRing(x: number, y: number, ring: [number, number][]) {
+ let inside = false;
+ for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {
+ const coori = ring[i];
+ const coorj = ring[j];
+
+ const xi = coori[0];
+ const yi = coori[1];
+ const xj = coorj[0];
+ const yj = coorj[1];
+
+ const intersect = ((yi > y) != (yj > y))
+ && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
+ if (intersect) {
+ inside = !inside;
+ }
+ }
+ return inside;
+ }
+
/**
* Calculates the intersection between two features.
* Returns the length if intersecting a linestring and a (multi)polygon (in meters), returns a surface area (in m²) if intersecting two (multi)polygons
diff --git a/Logic/ImageProviders/ImageProvider.ts b/Logic/ImageProviders/ImageProvider.ts
index c1d90578e..dded72a0b 100644
--- a/Logic/ImageProviders/ImageProvider.ts
+++ b/Logic/ImageProviders/ImageProvider.ts
@@ -35,7 +35,7 @@ export default abstract class ImageProvider {
}): UIEventSource {
const prefixes = options?.prefixes ?? this.defaultKeyPrefixes
if (prefixes === undefined) {
- throw "The image provider" + this.constructor.name + " doesn't define `defaultKeyPrefixes`"
+ throw "No `defaultKeyPrefixes` defined by this image provider"
}
const relevantUrls = new UIEventSource<{ url: string; key: string; provider: ImageProvider }[]>([])
const seenValues = new Set()
diff --git a/Logic/Osm/Actions/OsmChangeAction.ts b/Logic/Osm/Actions/OsmChangeAction.ts
index 120870f73..1754a91bc 100644
--- a/Logic/Osm/Actions/OsmChangeAction.ts
+++ b/Logic/Osm/Actions/OsmChangeAction.ts
@@ -23,7 +23,7 @@ export default abstract class OsmChangeAction {
public Perform(changes: Changes) {
if (this.isUsed) {
- throw "This ChangeAction is already used: " + this.constructor.name
+ throw "This ChangeAction is already used"
}
this.isUsed = true;
return this.CreateChangeDescriptions(changes)
diff --git a/Logic/Osm/Changes.ts b/Logic/Osm/Changes.ts
index f928cc9fd..c4a24ab3f 100644
--- a/Logic/Osm/Changes.ts
+++ b/Logic/Osm/Changes.ts
@@ -104,7 +104,7 @@ export class Changes {
* Uploads all the pending changes in one go.
* Triggered by the 'PendingChangeUploader'-actor in Actors
*/
- public async flushChanges(flushreason: string = undefined, openChangeset?: UIEventSource): Promise {
+ public async flushChanges(flushreason: string = undefined): Promise {
if (this.pendingChanges.data.length === 0) {
return;
}
@@ -117,7 +117,7 @@ export class Changes {
console.log("Uploading changes due to: ", flushreason)
this.isUploading.setData(true)
try {
- const csNumber = await this.flushChangesAsync(openChangeset)
+ const csNumber = await this.flushChangesAsync()
this.isUploading.setData(false)
console.log("Changes flushed. Your changeset is " + csNumber);
} catch (e) {
@@ -213,7 +213,7 @@ export class Changes {
const osmObjects = Utils.NoNull(await Promise.all(neededIds.map(async id =>
OsmObject.DownloadObjectAsync(id).catch(e => {
- console.error("Could not download OSM-object", id, " dropping it from the changes")
+ console.error("Could not download OSM-object", id, " dropping it from the changes ("+e+")")
pending = pending.filter(ch => ch.type + "/" + ch.id !== id)
return undefined;
}))));
@@ -309,7 +309,7 @@ export class Changes {
return true;
}
- private async flushChangesAsync(openChangeset?: UIEventSource): Promise {
+ private async flushChangesAsync(): Promise {
const self = this;
try {
// At last, we build the changeset and upload
@@ -327,18 +327,16 @@ export class Changes {
const successes = await Promise.all(Array.from(pendingPerTheme,
async ([theme, pendingChanges]) => {
try {
- if (openChangeset === undefined) {
- openChangeset = this.state.osmConnection.GetPreference("current-open-changeset-" + theme).map(
- str => {
- const n = Number(str);
- if (isNaN(n)) {
- return undefined
- }
- return n
- }, [], n => "" + n
- );
- console.log("Using current-open-changeset-" + theme + " from the preferences, got " + openChangeset.data)
- }
+ const openChangeset = this.state.osmConnection.GetPreference("current-open-changeset-" + theme).map(
+ str => {
+ const n = Number(str);
+ if (isNaN(n)) {
+ return undefined
+ }
+ return n
+ }, [], n => "" + n
+ );
+ console.log("Using current-open-changeset-" + theme + " from the preferences, got " + openChangeset.data)
return await self.flushSelectChanges(pendingChanges, openChangeset);
} catch (e) {
diff --git a/Logic/Osm/ChangesetHandler.ts b/Logic/Osm/ChangesetHandler.ts
index 8ae97632b..40e2d5757 100644
--- a/Logic/Osm/ChangesetHandler.ts
+++ b/Logic/Osm/ChangesetHandler.ts
@@ -23,8 +23,7 @@ export class ChangesetHandler {
private readonly auth: any;
private readonly backend: string;
- constructor(layoutName: string,
- dryRun: UIEventSource,
+ constructor(dryRun: UIEventSource,
osmConnection: OsmConnection,
allElements: ElementStorage,
changes: Changes,
diff --git a/Logic/Osm/OsmConnection.ts b/Logic/Osm/OsmConnection.ts
index 57b16890c..ef5bb5b5e 100644
--- a/Logic/Osm/OsmConnection.ts
+++ b/Logic/Osm/OsmConnection.ts
@@ -67,7 +67,6 @@ export class OsmConnection {
changes: Changes,
oauth_token?: UIEventSource,
// Used to keep multiple changesets open and to write to the correct changeset
- layoutName: string,
singlePage?: boolean,
osmConfiguration?: "osm" | "osm-test",
attemptLogin?: true | boolean
@@ -103,7 +102,7 @@ export class OsmConnection {
this.preferencesHandler = new OsmPreferences(this.auth, this);
- this.changesetHandler = new ChangesetHandler(options.layoutName, this._dryRun, this, options.allElements, options.changes, this.auth);
+ this.changesetHandler = new ChangesetHandler(this._dryRun, this, options.allElements, options.changes, this.auth);
if (options.oauth_token?.data !== undefined) {
console.log(options.oauth_token.data)
const self = this;
diff --git a/Logic/Osm/OsmPreferences.ts b/Logic/Osm/OsmPreferences.ts
index 14880f329..7e06bdfc6 100644
--- a/Logic/Osm/OsmPreferences.ts
+++ b/Logic/Osm/OsmPreferences.ts
@@ -138,7 +138,6 @@ export class OsmPreferences {
const prefixes = ["mapcomplete-installed-theme", "mapcomplete-installed-themes-", "mapcomplete-current-open-changeset", "mapcomplete-personal-theme-layer"]
for (const key in prefs) {
for (const prefix of prefixes) {
- // console.log(key)
if (key.startsWith(prefix)) {
console.log("Clearing ", key)
self.GetPreference(key, "").setData("")
@@ -173,8 +172,9 @@ export class OsmPreferences {
// We merge all the preferences: new keys are uploaded
// For differing values, the server overrides local changes
self.preferenceSources.forEach((preference, key) => {
- const osmValue = self.preferences[key]
- if(osmValue === undefined){
+ const osmValue = self.preferences.data[key]
+ console.log("Sending value to osm:", key," osm has: ", osmValue, " local has: ", preference.data)
+ if(osmValue === undefined && preference.data !== undefined){
// OSM doesn't know this value yet
self.UploadPreference(key, preference.data)
} else {
diff --git a/Logic/State/FeatureSwitchState.ts b/Logic/State/FeatureSwitchState.ts
index 6dc25429b..787d6a4ee 100644
--- a/Logic/State/FeatureSwitchState.ts
+++ b/Logic/State/FeatureSwitchState.ts
@@ -19,7 +19,7 @@ export default class FeatureSwitchState {
public readonly featureSwitchBackgroundSelection: UIEventSource;
public readonly featureSwitchAddNew: UIEventSource;
public readonly featureSwitchWelcomeMessage: UIEventSource;
- public readonly featureSwitchIframePopoutEnabled: UIEventSource;
+ public readonly featureSwitchExtraLinkEnabled: UIEventSource;
public readonly featureSwitchMoreQuests: UIEventSource;
public readonly featureSwitchShareScreen: UIEventSource;
public readonly featureSwitchGeolocation: UIEventSource;
@@ -81,7 +81,7 @@ export default class FeatureSwitchState {
this.featureSwitchFilter = featSw(
"fs-filter",
(layoutToUse) => layoutToUse?.enableLayers ?? true,
- "Disables/Enables the filter"
+ "Disables/Enables the filter view"
);
this.featureSwitchAddNew = featSw(
"fs-add-new",
@@ -93,10 +93,10 @@ export default class FeatureSwitchState {
() => true,
"Disables/enables the help menu or welcome message"
);
- this.featureSwitchIframePopoutEnabled = featSw(
+ this.featureSwitchExtraLinkEnabled = featSw(
"fs-iframe-popout",
- (layoutToUse) => layoutToUse?.enableIframePopout,
- "Disables/Enables the iframe-popout button. If in iframe mode and the welcome message is hidden, a popout button to the full mapcomplete instance is shown instead (unless disabled with this switch)"
+ _ => true,
+ "Disables/Enables the extraLink button. By default, if in iframe mode and the welcome message is hidden, a popout button to the full mapcomplete instance is shown instead (unless disabled with this switch or another extraLink button is enabled)"
);
this.featureSwitchMoreQuests = featSw(
"fs-more-quests",
@@ -146,17 +146,17 @@ export default class FeatureSwitchState {
this.featureSwitchIsTesting = QueryParameters.GetBooleanQueryParameter(
"test",
- "" + testingDefaultValue,
+ testingDefaultValue,
"If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org"
)
this.featureSwitchIsDebugging = QueryParameters.GetBooleanQueryParameter(
"debug",
- "false",
+ false,
"If true, shows some extra debugging help such as all the available tags on every object"
)
- this.featureSwitchFakeUser = QueryParameters.GetBooleanQueryParameter("fake-user", "false",
+ this.featureSwitchFakeUser = QueryParameters.GetBooleanQueryParameter("fake-user", false,
"If true, 'dryrun' mode is activated and a fake user account is loaded")
diff --git a/Logic/State/MapState.ts b/Logic/State/MapState.ts
index 07e45a0e4..16c457660 100644
--- a/Logic/State/MapState.ts
+++ b/Logic/State/MapState.ts
@@ -10,7 +10,6 @@ import BaseUIElement from "../../UI/BaseUIElement";
import FilteredLayer, {FilterState} from "../../Models/FilteredLayer";
import TilesourceConfig from "../../Models/ThemeConfig/TilesourceConfig";
import {QueryParameters} from "../Web/QueryParameters";
-import * as personal from "../../assets/themes/personal/personal.json";
import ShowOverlayLayer from "../../UI/ShowDataLayer/ShowOverlayLayer";
import {FeatureSourceForLayer, Tiled} from "../FeatureSource/FeatureSource";
import SimpleFeatureSource from "../FeatureSource/Sources/SimpleFeatureSource";
@@ -18,7 +17,7 @@ import {LocalStorageSource} from "../Web/LocalStorageSource";
import {GeoOperations} from "../GeoOperations";
import TitleHandler from "../Actors/TitleHandler";
import {BBox} from "../BBox";
-import MetaTagging from "../MetaTagging";
+import LayerConfig from "../../Models/ThemeConfig/LayerConfig";
/**
* Contains all the leaflet-map related state
@@ -120,7 +119,7 @@ export default class MapState extends UserRelatedState {
this.overlayToggles = this.layoutToUse.tileLayerSources.filter(c => c.name !== undefined).map(c => ({
config: c,
- isDisplayed: QueryParameters.GetBooleanQueryParameter("overlay-" + c.id, "" + c.defaultState, "Wether or not the overlay " + c.id + " is shown")
+ isDisplayed: QueryParameters.GetBooleanQueryParameter("overlay-" + c.id, c.defaultState, "Wether or not the overlay " + c.id + " is shown")
}))
this.filteredLayers = this.InitializeFilteredLayers()
@@ -345,24 +344,41 @@ export default class MapState extends UserRelatedState {
}
+ private getPref(key: string, layer: LayerConfig): UIEventSource {
+ const pref = this.osmConnection
+ .GetPreference(key)
+ .map(v => {
+ if(v === undefined){
+ return undefined
+ }
+ return v === "true";
+ }, [], b => {
+ if(b === undefined){
+ return undefined
+ }
+ return "" + b;
+ })
+ pref.setData(layer.shownByDefault)
+ return pref
+ }
+
private InitializeFilteredLayers() {
const layoutToUse = this.layoutToUse;
const flayers: FilteredLayer[] = [];
for (const layer of layoutToUse.layers) {
let isDisplayed: UIEventSource
- if (layoutToUse.id === personal.id) {
- isDisplayed = this.osmConnection.GetPreference("personal-theme-layer-" + layer.id + "-enabled")
- .map(value => value === "yes", [], enabled => {
- return enabled ? "yes" : "";
- })
+ if (layer.syncSelection === "local") {
+ isDisplayed = LocalStorageSource.GetParsed(layoutToUse.id + "-layer-" + layer.id + "-enabled", layer.shownByDefault)
+ } else if (layer.syncSelection === "theme-only") {
+ isDisplayed = this.getPref(layoutToUse.id+ "-layer-" + layer.id + "-enabled", layer)
+ } else if (layer.syncSelection === "global") {
+ isDisplayed = this.getPref("layer-" + layer.id + "-enabled", layer)
} else {
- isDisplayed = QueryParameters.GetBooleanQueryParameter(
- "layer-" + layer.id,
- "" + layer.shownByDefault,
- "Wether or not layer " + layer.id + " is shown"
- )
+ isDisplayed = QueryParameters.GetBooleanQueryParameter("layer-" + layer.id + "-enabled",layer.shownByDefault, "Wether or not layer "+layer.id+" is shown")
}
+
+
const flayer: FilteredLayer = {
isDisplayed: isDisplayed,
layerDef: layer,
@@ -380,14 +396,14 @@ export default class MapState extends UserRelatedState {
}
for (const layer of layoutToUse.layers) {
- if(layer.filterIsSameAs === undefined){
+ if (layer.filterIsSameAs === undefined) {
continue
}
const toReuse = flayers.find(l => l.layerDef.id === layer.filterIsSameAs)
- if(toReuse === undefined){
- throw "Error in layer "+layer.id+": it defines that it should be use the filters of "+layer.filterIsSameAs+", but this layer was not loaded"
+ if (toReuse === undefined) {
+ throw "Error in layer " + layer.id + ": it defines that it should be use the filters of " + layer.filterIsSameAs + ", but this layer was not loaded"
}
- console.warn("Linking filter and isDisplayed-states of "+layer.id+" and "+layer.filterIsSameAs)
+ console.warn("Linking filter and isDisplayed-states of " + layer.id + " and " + layer.filterIsSameAs)
const selfLayer = flayers.findIndex(l => l.layerDef.id === layer.id)
flayers[selfLayer] = {
isDisplayed: toReuse.isDisplayed,
@@ -395,7 +411,7 @@ export default class MapState extends UserRelatedState {
appliedFilters: toReuse.appliedFilters
};
}
-
+
return new UIEventSource(flayers);
}
diff --git a/Logic/State/UserRelatedState.ts b/Logic/State/UserRelatedState.ts
index f46eb90d9..ceee5c9d6 100644
--- a/Logic/State/UserRelatedState.ts
+++ b/Logic/State/UserRelatedState.ts
@@ -42,7 +42,6 @@ export default class UserRelatedState extends ElementsState {
undefined,
"Used to complete the login"
),
- layoutName: layoutToUse?.id,
osmConfiguration: <'osm' | 'osm-test'>this.featureSwitchApiURL.data,
attemptLogin: options?.attemptLogin
})
@@ -69,7 +68,8 @@ export default class UserRelatedState extends ElementsState {
id: this.layoutToUse.id,
icon: this.layoutToUse.icon,
title: this.layoutToUse.title.translations,
- shortDescription: this.layoutToUse.shortDescription.translations
+ shortDescription: this.layoutToUse.shortDescription.translations,
+ definition: this.layoutToUse["definition"]
}))
}
diff --git a/Logic/UIEventSource.ts b/Logic/UIEventSource.ts
index b0646b117..fad6e0737 100644
--- a/Logic/UIEventSource.ts
+++ b/Logic/UIEventSource.ts
@@ -326,8 +326,10 @@ export class UIEventSource {
this.addCallback((latest) => otherSource.setData(latest));
const self = this;
otherSource.addCallback((latest) => self.setData(latest));
- if (reverseOverride && otherSource.data !== undefined) {
- this.setData(otherSource.data);
+ if (reverseOverride) {
+ if(otherSource.data !== undefined){
+ this.setData(otherSource.data);
+ }
} else if (this.data === undefined) {
this.setData(otherSource.data);
} else {
diff --git a/Logic/Web/QueryParameters.ts b/Logic/Web/QueryParameters.ts
index 489b14cb3..6dc084305 100644
--- a/Logic/Web/QueryParameters.ts
+++ b/Logic/Web/QueryParameters.ts
@@ -32,8 +32,8 @@ export class QueryParameters {
return source;
}
- public static GetBooleanQueryParameter(key: string, deflt: string, documentation?: string): UIEventSource {
- return QueryParameters.GetQueryParameter(key, deflt, documentation).map(str => str === "true", [], b => "" + b)
+ public static GetBooleanQueryParameter(key: string, deflt: boolean, documentation?: string): UIEventSource {
+ return QueryParameters.GetQueryParameter(key, ""+ deflt, documentation).map(str => str === "true", [], b => "" + b)
}
@@ -71,7 +71,7 @@ export class QueryParameters {
QueryParameters.knownSources[key] = source;
}
}
-
+
}
private static Serialize() {
diff --git a/Models/Constants.ts b/Models/Constants.ts
index f35436292..e3203ef92 100644
--- a/Models/Constants.ts
+++ b/Models/Constants.ts
@@ -2,7 +2,7 @@ import {Utils} from "../Utils";
export default class Constants {
- public static vNumber = "0.15.7";
+ public static vNumber = "0.15.8";
public static ImgurApiKey = '7070e7167f0a25a'
public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85"
diff --git a/Models/ThemeConfig/Conversion/Conversion.ts b/Models/ThemeConfig/Conversion/Conversion.ts
index d90bfca0b..2926fb3de 100644
--- a/Models/ThemeConfig/Conversion/Conversion.ts
+++ b/Models/ThemeConfig/Conversion/Conversion.ts
@@ -12,10 +12,10 @@ export abstract class Conversion {
protected readonly doc: string;
public readonly name: string
- constructor(doc: string, modifiedAttributes: string[] = [], name?: string) {
+ constructor(doc: string, modifiedAttributes: string[] = [], name: string) {
this.modifiedAttributes = modifiedAttributes;
this.doc = doc + "\n\nModified attributes are\n" + modifiedAttributes.join(", ");
- this.name = name ?? this.constructor.name
+ this.name = name
}
public static strict(fixed: { errors?: string[], warnings?: string[], information?: string[], result?: T }): T {
@@ -94,8 +94,8 @@ export class OnEveryConcat extends DesugaringStep {
private readonly step: Conversion;
constructor(key: string, step: Conversion) {
- super(`Applies ${step.constructor.name} onto every object of the list \`${key}\`. The results are concatenated and used as new list`, [key],
- "OnEveryConcat("+step.name+")");
+ super(`Applies ${step.name} onto every object of the list \`${key}\`. The results are concatenated and used as new list`, [key],
+ "OnEvery("+key+").Concat("+step.name+")");
this.step = step;
this.key = key;
}
@@ -126,8 +126,9 @@ export class Fuse extends DesugaringStep {
private readonly steps: DesugaringStep[];
constructor(doc: string, ...steps: DesugaringStep[]) {
- super((doc ?? "") + "This fused pipeline of the following steps: " + steps.map(s => s.constructor.name).join(", "),
- Utils.Dedup([].concat(...steps.map(step => step.modifiedAttributes)))
+ super((doc ?? "") + "This fused pipeline of the following steps: " + steps.map(s => s.name).join(", "),
+ Utils.Dedup([].concat(...steps.map(step => step.modifiedAttributes))),
+ "Fuse of "+steps.map(s => s.name).join(", ")
);
this.steps = steps;
}
@@ -163,7 +164,7 @@ export class SetDefault extends DesugaringStep {
private readonly _overrideEmptyString: boolean;
constructor(key: string, value: any, overrideEmptyString = false) {
- super("Sets " + key + " to a default value if undefined");
+ super("Sets " + key + " to a default value if undefined", [], "SetDefault of "+key);
this.key = key;
this.value = value;
this._overrideEmptyString = overrideEmptyString;
diff --git a/Models/ThemeConfig/Conversion/CreateNoteImportLayer.ts b/Models/ThemeConfig/Conversion/CreateNoteImportLayer.ts
index c51437d7f..49d7af5b9 100644
--- a/Models/ThemeConfig/Conversion/CreateNoteImportLayer.ts
+++ b/Models/ThemeConfig/Conversion/CreateNoteImportLayer.ts
@@ -16,7 +16,7 @@ export default class CreateNoteImportLayer extends Conversion {
constructor() {
- super("Extract all images from a layoutConfig using the meta paths");
+ super("Extract all images from a layoutConfig using the meta paths",[],"ExctractImages");
}
- convert(json: LayoutConfigJson, context: string): { result: string[] } {
+ convert(json: LayoutConfigJson, context: string): { result: string[], errors: string[] } {
const paths = metapaths["default"] ?? metapaths
const trpaths = tagrenderingmetapaths["default"] ?? tagrenderingmetapaths
const allFoundImages = []
+ const errors = []
for (const metapath of paths) {
if (metapath.typeHint === undefined) {
continue
@@ -34,7 +35,13 @@ export class ExtractImages extends Conversion {
if (trpath.typeHint !== "rendered") {
continue
}
- Utils.CollectPath(trpath.path, foundImage, allFoundImages)
+ const fromPath = Utils.CollectPath(trpath.path, foundImage)
+ for (const img of fromPath) {
+ if (typeof img !== "string") {
+ errors.push("Found an image path that is not a path at " + context + "." + metapath.path.join(".") + ": " + JSON.stringify(img))
+ }
+ }
+ allFoundImages.push(...fromPath.filter(i => typeof i === "string"))
}
}
@@ -44,9 +51,9 @@ export class ExtractImages extends Conversion {
}
}
- const splitParts = [].concat(...allFoundImages.map(img => img.split(";")))
+ const splitParts = [].concat(...Utils.NoNull(allFoundImages).map(img => img.split(";")))
.map(img => img.split(":")[0])
- return {result: Utils.Dedup(splitParts)};
+ return {result: Utils.Dedup(splitParts), errors};
}
}
@@ -55,7 +62,7 @@ export class FixImages extends DesugaringStep {
private readonly _knownImages: Set;
constructor(knownImages: Set) {
- super("Walks over the entire theme and replaces images to the relative URL. Only works if the ID of the theme is an URL");
+ super("Walks over the entire theme and replaces images to the relative URL. Only works if the ID of the theme is an URL",[],"fixImages");
this._knownImages = knownImages;
}
diff --git a/Models/ThemeConfig/Conversion/LegacyJsonConvert.ts b/Models/ThemeConfig/Conversion/LegacyJsonConvert.ts
index cf89a5172..f5a5294fb 100644
--- a/Models/ThemeConfig/Conversion/LegacyJsonConvert.ts
+++ b/Models/ThemeConfig/Conversion/LegacyJsonConvert.ts
@@ -8,7 +8,8 @@ export class UpdateLegacyLayer extends DesugaringStep {
constructor() {
- super("Small fixes in the theme config", ["roamingRenderings"]);
+ super("Small fixes in the theme config", ["roamingRenderings"],"UpdateLegacyTheme");
}
convert(json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors: string[]; warnings: string[] } {
diff --git a/Models/ThemeConfig/Conversion/PrepareLayer.ts b/Models/ThemeConfig/Conversion/PrepareLayer.ts
index 94b664df0..70b9815d7 100644
--- a/Models/ThemeConfig/Conversion/PrepareLayer.ts
+++ b/Models/ThemeConfig/Conversion/PrepareLayer.ts
@@ -8,7 +8,7 @@ import {Translation} from "../../../UI/i18n/Translation";
class ExpandTagRendering extends Conversion {
private readonly _state: DesugaringContext;
constructor(state: DesugaringContext) {
- super("Converts a tagRenderingSpec into the full tagRendering", []);
+ super("Converts a tagRenderingSpec into the full tagRendering", [],"ExpandTagRendering");
this._state = state;
}
@@ -147,7 +147,8 @@ class ExpandGroupRewrite extends Conversion<{
constructor(state: DesugaringContext) {
super(
- "Converts a rewrite config for tagRenderings into the expanded form"
+ "Converts a rewrite config for tagRenderings into the expanded form",[],
+ "ExpandGroupRewrite"
);
this._expandSubTagRenderings = new ExpandTagRendering(state)
}
@@ -156,7 +157,7 @@ class ExpandGroupRewrite extends Conversion<{
{
rewrite:
{ sourceString: string; into: string[] }[]; renderings: (string | { builtin: string; override: any } | TagRenderingConfigJson)[]
- } | TagRenderingConfigJson, context: string): { result: TagRenderingConfigJson[]; errors: string[]; warnings: string[] } {
+ } | TagRenderingConfigJson, context: string): { result: TagRenderingConfigJson[]; errors: string[]; warnings?: string[] } {
if (json["rewrite"] === undefined) {
return {result: [json], errors: [], warnings: []}
@@ -166,20 +167,33 @@ class ExpandGroupRewrite extends Conversion<{
{ sourceString: string[]; into: (string | any)[][] };
renderings: (string | { builtin: string; override: any } | TagRenderingConfigJson)[]
}>json;
+
{
const errors = []
-
+
+ if(!Array.isArray(config.rewrite.sourceString)){
+ let extra = "";
+ if(typeof config.rewrite.sourceString === "string"){
+ extra=` Try "sourceString": [ "${config.rewrite.sourceString}" ] instead (note the [ and ])`
+ }
+ const msg = context+" Invalid format: a rewrite block is defined, but the 'sourceString' should be an array of strings, but it is a "+typeof config.rewrite.sourceString + extra
+ errors.push(msg)
+ }
+
+
const expectedLength = config.rewrite.sourceString.length
for (let i = 0; i < config.rewrite.into.length; i++){
const targets = config.rewrite.into[i];
- if(targets.length !== expectedLength){
- errors.push(context+".rewrite.into["+i+"]: expected "+expectedLength+" values, but got "+targets.length)
- }
+ if(!Array.isArray(targets)){
+ errors.push(`${context}.rewrite.into[${i}] should be an array of values, but it is a `+typeof targets)
+ } else if(targets.length !== expectedLength){
+ errors.push(`${context}.rewrite.into[${i}]: The rewrite specified ${config.rewrite.sourceString} as sourcestring, which consists of ${expectedLength} values. The target ${JSON.stringify(targets)} has ${targets.length} items`)
if(typeof targets[0] !== "string"){
errors.push(context+".rewrite.into["+i+"]: expected a string as first rewrite value values, but got "+targets[0])
}
+ }
}
if (errors.length > 0) {
diff --git a/Models/ThemeConfig/Conversion/PrepareTheme.ts b/Models/ThemeConfig/Conversion/PrepareTheme.ts
index f2270c014..57831d6ab 100644
--- a/Models/ThemeConfig/Conversion/PrepareTheme.ts
+++ b/Models/ThemeConfig/Conversion/PrepareTheme.ts
@@ -16,7 +16,7 @@ class SubstituteLayer extends Conversion<(string | LayerConfigJson), LayerConfig
constructor(
state: DesugaringContext,
) {
- super("Converts the identifier of a builtin layer into the actual layer, or converts a 'builtin' syntax with override in the fully expanded form", []);
+ super("Converts the identifier of a builtin layer into the actual layer, or converts a 'builtin' syntax with override in the fully expanded form", [],"SubstuteLayers");
this._state = state;
}
@@ -130,7 +130,7 @@ class AddDefaultLayers extends DesugaringStep {
private _state: DesugaringContext;
constructor(state: DesugaringContext) {
- super("Adds the default layers, namely: " + Constants.added_by_default.join(", "), ["layers"]);
+ super("Adds the default layers, namely: " + Constants.added_by_default.join(", "), ["layers"],"AddDefaultLayers");
this._state = state;
}
@@ -182,7 +182,7 @@ class AddDefaultLayers extends DesugaringStep {
class AddImportLayers extends DesugaringStep {
constructor() {
- super("For every layer in the 'layers'-list, create a new layer which'll import notes. (Note that priviliged layers and layers which have a geojson-source set are ignored)", ["layers"]);
+ super("For every layer in the 'layers'-list, create a new layer which'll import notes. (Note that priviliged layers and layers which have a geojson-source set are ignored)", ["layers"],"AddImportLayers");
}
convert(json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors: string[] } {
@@ -240,7 +240,7 @@ class AddImportLayers extends DesugaringStep {
export class AddMiniMap extends DesugaringStep {
private readonly _state: DesugaringContext;
constructor(state: DesugaringContext, ) {
- super("Adds a default 'minimap'-element to the tagrenderings if none of the elements define such a minimap", ["tagRenderings"]);
+ super("Adds a default 'minimap'-element to the tagrenderings if none of the elements define such a minimap", ["tagRenderings"],"AddMiniMap");
this._state = state;
}
@@ -291,7 +291,7 @@ export class AddMiniMap extends DesugaringStep {
class ApplyOverrideAll extends DesugaringStep {
constructor() {
- super("Applies 'overrideAll' onto every 'layer'. The 'overrideAll'-field is removed afterwards", ["overrideAll", "layers"]);
+ super("Applies 'overrideAll' onto every 'layer'. The 'overrideAll'-field is removed afterwards", ["overrideAll", "layers"],"ApplyOverrideAll");
}
convert(json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors: string[]; warnings: string[] } {
@@ -321,7 +321,7 @@ class ApplyOverrideAll extends DesugaringStep {
class AddDependencyLayersToTheme extends DesugaringStep {
private readonly _state: DesugaringContext;
constructor(state: DesugaringContext, ) {
- super("If a layer has a dependency on another layer, these layers are added automatically on the theme. (For example: defibrillator depends on 'walls_and_buildings' to snap onto. This layer is added automatically)", ["layers"]);
+ super("If a layer has a dependency on another layer, these layers are added automatically on the theme. (For example: defibrillator depends on 'walls_and_buildings' to snap onto. This layer is added automatically)", ["layers"],"AddDependencyLayersToTheme");
this._state = state;
}
@@ -406,12 +406,31 @@ class AddDependencyLayersToTheme extends DesugaringStep {
}
}
+class PreparePersonalTheme extends DesugaringStep {
+ private readonly _state: DesugaringContext;
+ constructor(state: DesugaringContext) {
+ super("Adds every public layer to the personal theme",["layers"],"PreparePersonalTheme");
+ this._state = state;
+ }
+
+ convert(json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors?: string[]; warnings?: string[]; information?: string[] } {
+ if(json.id !== "personal"){
+ return {result: json}
+ }
+
+ json.layers = Array.from(this._state.sharedLayers.keys())
+
+
+ return {result: json};
+ }
+
+}
export class PrepareTheme extends Fuse {
constructor(state: DesugaringContext) {
super(
"Fully prepares and expands a theme",
-
+ new PreparePersonalTheme(state),
new OnEveryConcat("layers", new SubstituteLayer(state)),
new SetDefault("socialImage", "assets/SocialImage.png", true),
new OnEvery("layers", new PrepareLayer(state)),
diff --git a/Models/ThemeConfig/Conversion/Validation.ts b/Models/ThemeConfig/Conversion/Validation.ts
index 777e9c614..9b5f25989 100644
--- a/Models/ThemeConfig/Conversion/Validation.ts
+++ b/Models/ThemeConfig/Conversion/Validation.ts
@@ -10,13 +10,14 @@ import {TagRenderingConfigJson} from "../Json/TagRenderingConfigJson";
import {TagUtils} from "../../../Logic/Tags/TagUtils";
import {ExtractImages} from "./FixImages";
import ScriptUtils from "../../../scripts/ScriptUtils";
+import {And} from "../../../Logic/Tags/And";
class ValidateLanguageCompleteness extends DesugaringStep {
private readonly _languages: string[];
constructor(...languages: string[]) {
- super("Checks that the given object is fully translated in the specified languages", []);
+ super("Checks that the given object is fully translated in the specified languages", [], "ValidateLanguageCompleteness");
this._languages = languages;
}
@@ -25,7 +26,7 @@ class ValidateLanguageCompleteness extends DesugaringStep {
const translations = Translation.ExtractAllTranslationsFrom(
obj
)
- for (const neededLanguage of this._languages) {
+ for (const neededLanguage of this._languages ?? ["en"]) {
translations
.filter(t => t.tr.translations[neededLanguage] === undefined && t.tr.translations["*"] === undefined)
.forEach(missing => {
@@ -50,7 +51,7 @@ class ValidateTheme extends DesugaringStep {
private readonly _isBuiltin: boolean;
constructor(knownImagePaths: Set, path: string, isBuiltin: boolean) {
- super("Doesn't change anything, but emits warnings and errors", []);
+ super("Doesn't change anything, but emits warnings and errors", [],"ValidateTheme");
this.knownImagePaths = knownImagePaths;
this._path = path;
this._isBuiltin = isBuiltin;
@@ -164,7 +165,7 @@ export class ValidateThemeAndLayers extends Fuse {
class OverrideShadowingCheck extends DesugaringStep {
constructor() {
- super("Checks that an 'overrideAll' does not override a single override");
+ super("Checks that an 'overrideAll' does not override a single override",[],"OverrideShadowingCheck");
}
convert(json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors?: string[]; warnings?: string[] } {
@@ -204,7 +205,7 @@ export class PrevalidateTheme extends Fuse {
export class DetectShadowedMappings extends DesugaringStep {
constructor() {
- super("Checks that the mappings don't shadow each other");
+ super("Checks that the mappings don't shadow each other",[],"DetectShadowedMappings");
}
convert(json: TagRenderingConfigJson, context: string): { result: TagRenderingConfigJson; errors?: string[]; warnings?: string[] } {
@@ -254,7 +255,7 @@ export class ValidateLayer extends DesugaringStep {
private readonly _isBuiltin: boolean;
constructor(knownImagePaths: Set, path: string, isBuiltin: boolean) {
- super("Doesn't change anything, but emits warnings and errors", []);
+ super("Doesn't change anything, but emits warnings and errors", [],"ValidateLayer");
this.knownImagePaths = knownImagePaths;
this._path = path;
this._isBuiltin = isBuiltin;
@@ -339,6 +340,24 @@ export class ValidateLayer extends DesugaringStep {
new DetectShadowedMappings().convertAll(json.tagRenderings, context + ".tagRenderings")
}
+ if(json.presets !== undefined){
+
+ // Check that a preset will be picked up by the layer itself
+ const baseTags = TagUtils.Tag( json.source.osmTags)
+ for (let i = 0; i < json.presets.length; i++){
+ const preset = json.presets[i];
+ const tags : {k: string,v: string}[]= new And(preset.tags.map(t => TagUtils.Tag(t))).asChange({id:"node/-1"})
+ const properties = {}
+ for (const tag of tags) {
+ properties[tag.k] = tag.v
+ }
+ const doMatch = baseTags.matchesProperties(properties)
+ if(!doMatch){
+ errors.push(context+".presets["+i+"]: This preset does not match the required tags of this layer. This implies that a newly added point will not show up.\n A newly created point will have properties: "+JSON.stringify(properties)+"\n The required tags are: "+baseTags.asHumanString(false, false, {}))
+ }
+ }
+ }
+
} catch (e) {
errors.push(e)
}
diff --git a/Models/ThemeConfig/ExtraLinkConfig.ts b/Models/ThemeConfig/ExtraLinkConfig.ts
new file mode 100644
index 000000000..641029f6f
--- /dev/null
+++ b/Models/ThemeConfig/ExtraLinkConfig.ts
@@ -0,0 +1,31 @@
+import ExtraLinkConfigJson from "./Json/ExtraLinkConfigJson";
+import {Translation} from "../../UI/i18n/Translation";
+import Translations from "../../UI/i18n/Translations";
+
+export default class ExtraLinkConfig {
+ public readonly icon?: string
+ public readonly text?: Translation
+ public readonly href: string
+ public readonly newTab?: false | boolean
+ public readonly requirements?: Set<("iframe" | "no-iframe" | "welcome-message" | "no-welcome-message")>
+
+ constructor(configJson: ExtraLinkConfigJson, context) {
+ this.icon = configJson.icon
+ this.text = Translations.T(configJson.text)
+ this.href = configJson.href
+ this.newTab = configJson.newTab
+ this.requirements = new Set(configJson.requirements)
+
+ for (let requirement of configJson.requirements) {
+
+ if (this.requirements.has(("no-" + requirement))) {
+ throw "Conflicting requirements found for " + context + ".extraLink: both '" + requirement + "' and 'no-" + requirement + "' found"
+ }
+ }
+
+ if (this.icon === undefined && this.text === undefined) {
+ throw "At " + context + ".extraLink: define at least an icon or a text to show. Both are undefined, this is not allowed"
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Models/ThemeConfig/FilterConfig.ts b/Models/ThemeConfig/FilterConfig.ts
index acba35184..b9060b3cd 100644
--- a/Models/ThemeConfig/FilterConfig.ts
+++ b/Models/ThemeConfig/FilterConfig.ts
@@ -18,7 +18,7 @@ export default class FilterConfig {
originalTagsSpec: string | AndOrTagConfigJson
fields: { name: string, type: string }[]
}[];
- public readonly defaultSelection : number
+ public readonly defaultSelection? : number
constructor(json: FilterConfigJson, context: string) {
if (json.options === undefined) {
@@ -79,7 +79,7 @@ export default class FilterConfig {
return {question: question, osmTags: osmTags, fields, originalTagsSpec: option.osmTags};
});
- this.defaultSelection = defaultSelection ?? 0
+ this.defaultSelection = defaultSelection
if (this.options.some(o => o.fields.length > 0) && this.options.length > 1) {
throw `Invalid filter at ${context}: a filter with textfields should only offer a single option.`
@@ -103,10 +103,11 @@ export default class FilterConfig {
let defaultValue = ""
if(this.options.length > 1){
- defaultValue = ""+this.defaultSelection
+ defaultValue = ""+(this.defaultSelection ?? 0)
}else{
- if(this.defaultSelection > 0){
- defaultValue = ""+this.defaultSelection
+ // Only a single option
+ if(this.defaultSelection === 0){
+ defaultValue = "true"
}
}
const qp = QueryParameters.GetQueryParameter("filter-" + this.id, defaultValue, "State of filter " + this.id)
diff --git a/Models/ThemeConfig/Json/ExtraLinkConfigJson.ts b/Models/ThemeConfig/Json/ExtraLinkConfigJson.ts
new file mode 100644
index 000000000..c48455aeb
--- /dev/null
+++ b/Models/ThemeConfig/Json/ExtraLinkConfigJson.ts
@@ -0,0 +1,7 @@
+export default interface ExtraLinkConfigJson {
+ icon?: string,
+ text?: string | any,
+ href: string,
+ newTab?: false | boolean,
+ requirements?: ("iframe" | "no-iframe" | "welcome-message" | "no-welcome-message")[]
+}
\ No newline at end of file
diff --git a/Models/ThemeConfig/Json/LayerConfigJson.ts b/Models/ThemeConfig/Json/LayerConfigJson.ts
index 8f15b9a7a..5c32c1986 100644
--- a/Models/ThemeConfig/Json/LayerConfigJson.ts
+++ b/Models/ThemeConfig/Json/LayerConfigJson.ts
@@ -399,4 +399,13 @@ export interface LayerConfigJson {
*/
units?: UnitConfigJson[]
+ /**
+ * If set, synchronizes wether or not this layer is selected.
+ *
+ * no: Do not sync at all, always revert to default
+ * local: keep selection on local storage
+ * theme-only: sync via OSM, but this layer will only be toggled in this theme
+ * global: all layers with this ID will be synced accross all themes
+ */
+ syncSelection?: "no" | "local" | "theme-only" | "global"
}
\ No newline at end of file
diff --git a/Models/ThemeConfig/Json/LayoutConfigJson.ts b/Models/ThemeConfig/Json/LayoutConfigJson.ts
index bd0b7df5a..2128499db 100644
--- a/Models/ThemeConfig/Json/LayoutConfigJson.ts
+++ b/Models/ThemeConfig/Json/LayoutConfigJson.ts
@@ -1,5 +1,6 @@
import {LayerConfigJson} from "./LayerConfigJson";
import TilesourceConfigJson from "./TilesourceConfigJson";
+import ExtraLinkConfigJson from "./ExtraLinkConfigJson";
/**
* Defines the entire theme.
@@ -244,18 +245,70 @@ export interface LayoutConfigJson {
*/
lockLocation?: [[number, number], [number, number]] | number[][];
- enableUserBadge?: boolean;
- enableShareScreen?: boolean;
- enableMoreQuests?: boolean;
- enableLayers?: boolean;
- enableSearch?: boolean;
- enableAddNewPoints?: boolean;
- enableGeolocation?: boolean;
- enableBackgroundLayerSelection?: boolean;
- enableShowAllQuestions?: boolean;
- enableDownload?: boolean;
- enablePdfDownload?: boolean;
- enableIframePopout?: true | boolean;
+ /**
+ * Adds an additional button on the top-left of the application.
+ * This can link to an arbitrary location.
+ *
+ * Note that {lat},{lon},{zoom}, {language} and {theme} will be replaced
+ *
+ * Default: {icon: "./assets/svg/pop-out.svg", href: 'https://mapcomplete.osm.be/{theme}.html?lat={lat}&lon={lon}&z={zoom}, requirements: ["iframe","no-welcome-message]},
+ *
+ */
+ extraLink?: ExtraLinkConfigJson
+
+ /**
+ * If set to false, disables logging in.
+ * The userbadge will be hidden, all login-buttons will be hidden and editing will be disabled
+ */
+ enableUserBadge?: true | boolean;
+ /**
+ * If false, hides the tab 'share'-tab in the welcomeMessage
+ */
+ enableShareScreen?: true | boolean;
+ /**
+ * Hides the tab with more themes in the welcomeMessage
+ */
+ enableMoreQuests?: true | boolean;
+ /**
+ * If false, the layer selection/filter view will be hidden
+ * The corresponding URL-parameter is 'fs-filters' instead of 'fs-layers'
+ */
+ enableLayers?: true | boolean;
+ /**
+ * If set to false, hides the search bar
+ */
+ enableSearch?: true | boolean;
+ /**
+ * If set to false, the ability to add new points or nodes will be disabled.
+ * Editing already existing features will still be possible
+ */
+ enableAddNewPoints?: true | boolean;
+ /**
+ * If set to false, the 'geolocation'-button will be hidden.
+ */
+ enableGeolocation?: true | boolean;
+ /**
+ * Enable switching the backgroundlayer.
+ * If false, the quickswitch-buttons are removed (bottom left) and the dropdown in the layer selection is removed as well
+ */
+ enableBackgroundLayerSelection?: true | boolean;
+ /**
+ * If set to true, will show _all_ unanswered questions in a popup instead of just the next one
+ */
+ enableShowAllQuestions?: false | boolean;
+ /**
+ * If set to true, download button for the data will be shown (offers downloading as geojson and csv)
+ */
+ enableDownload?: false | boolean;
+ /**
+ * If set to true, exporting a pdf is enabled
+ */
+ enablePdfDownload?: false | boolean;
+
+ /**
+ * If true, notes will be loaded and parsed. If a note is an import (as created by the import_helper.html-tool from mapcomplete),
+ * these notes will be shown if a relevant layer is present.
+ */
enableNoteImports?: true | boolean;
/**
diff --git a/Models/ThemeConfig/LayerConfig.ts b/Models/ThemeConfig/LayerConfig.ts
index 0cb63a072..f650aef5d 100644
--- a/Models/ThemeConfig/LayerConfig.ts
+++ b/Models/ThemeConfig/LayerConfig.ts
@@ -61,6 +61,8 @@ export default class LayerConfig extends WithContextLoader {
public readonly filterIsSameAs: string;
public readonly forceLoad: boolean;
+ public readonly syncSelection: "no" | "local" | "theme-only" | "global"
+
constructor(
json: LayerConfigJson,
context?: string,
@@ -90,7 +92,7 @@ export default class LayerConfig extends WithContextLoader {
}
this.maxAgeOfCache = json.source.maxCacheAge ?? 24 * 60 * 60 * 30
-
+ this.syncSelection = json.syncSelection;
const osmTags = TagUtils.Tag(
json.source.osmTags,
context + "source.osmTags"
@@ -402,7 +404,7 @@ export default class LayerConfig extends WithContextLoader {
const icon = this.mapRendering
.filter(mr => mr.location.has("point"))
- .map(mr => mr.icon.render.txt)
+ .map(mr => mr.icon?.render?.txt)
.find(i => i !== undefined)
let iconImg = ""
if (icon !== undefined) {
diff --git a/Models/ThemeConfig/LayoutConfig.ts b/Models/ThemeConfig/LayoutConfig.ts
index b1f505268..04c3b8022 100644
--- a/Models/ThemeConfig/LayoutConfig.ts
+++ b/Models/ThemeConfig/LayoutConfig.ts
@@ -5,6 +5,7 @@ import {LayerConfigJson} from "./Json/LayerConfigJson";
import Constants from "../Constants";
import TilesourceConfig from "./TilesourceConfig";
import {ExtractImages} from "./Conversion/FixImages";
+import ExtraLinkConfig from "./ExtraLinkConfig";
export default class LayoutConfig {
public readonly id: string;
@@ -42,7 +43,6 @@ export default class LayoutConfig {
public readonly enableShowAllQuestions: boolean;
public readonly enableExportButton: boolean;
public readonly enablePdfDownload: boolean;
- public readonly enableIframePopout: boolean;
public readonly customCss?: string;
@@ -51,8 +51,9 @@ export default class LayoutConfig {
public readonly overpassMaxZoom: number
public readonly osmApiTileSize: number
public readonly official: boolean;
-
- public readonly usedImages : string[]
+
+ public readonly usedImages: string[]
+ public readonly extraLink?: ExtraLinkConfig
constructor(json: LayoutConfigJson, official = true, context?: string) {
this.official = official;
@@ -70,7 +71,7 @@ export default class LayoutConfig {
this.credits = json.credits;
this.version = json.version;
this.language = json.mustHaveLanguage ?? Array.from(Object.keys(json.title));
- this.usedImages =Array.from( new ExtractImages().convertStrict(json, "while extracting the images")).sort()
+ this.usedImages = Array.from(new ExtractImages().convertStrict(json, "while extracting the images of " + json.id + " " + context ?? "")).sort()
{
if (typeof json.title === "string") {
throw `The title of a theme should always be a translation, as it sets the corresponding languages (${context}.title). The themenID is ${this.id}; the offending object is ${JSON.stringify(json.title)} which is a ${typeof json.title})`
@@ -118,6 +119,13 @@ export default class LayoutConfig {
// At this point, layers should be expanded and validated either by the generateScript or the LegacyJsonConvert
this.layers = json.layers.map(lyrJson => new LayerConfig(lyrJson, json.id + ".layers." + lyrJson["id"], official));
+ this.extraLink = new ExtraLinkConfig(json.extraLink ?? {
+ icon: "./assets/svg/pop-out.svg",
+ href: "https://mapcomplete.osm.be/{theme}.html?lat={lat}&lon={lon}&z={zoom}&language={language}",
+ newTab: true,
+ requirements: ["iframe","no-welcome-message"]
+ }, context)
+
this.clustering = {
maxZoom: 16,
@@ -148,7 +156,6 @@ export default class LayoutConfig {
this.enableShowAllQuestions = json.enableShowAllQuestions ?? false;
this.enableExportButton = json.enableDownload ?? false;
this.enablePdfDownload = json.enablePdfDownload ?? false;
- this.enableIframePopout = json.enableIframePopout ?? true
this.customCss = json.customCss;
this.overpassUrl = Constants.defaultOverpassUrls
if (json.overpassUrl !== undefined) {
diff --git a/Models/ThemeConfig/PointRenderingConfig.ts b/Models/ThemeConfig/PointRenderingConfig.ts
index caab1507f..9bffc3d26 100644
--- a/Models/ThemeConfig/PointRenderingConfig.ts
+++ b/Models/ThemeConfig/PointRenderingConfig.ts
@@ -96,6 +96,14 @@ export default class PointRenderingConfig extends WithContextLoader {
img.SetClass("badge")
}
return img
+ } else if (Svg.All[htmlSpec + ".svg"] !== undefined) {
+ const svg = (Svg.All[htmlSpec + ".svg"] as string)
+ const img = new Img(svg, true)
+ .SetStyle(style)
+ if (isBadge) {
+ img.SetClass("badge")
+ }
+ return img
} else {
return new FixedUiElement(``);
}
@@ -126,7 +134,7 @@ export default class PointRenderingConfig extends WithContextLoader {
}
return PointRenderingConfig.FromHtmlMulti(htmlDefs, rotation, false, defaultPin)
}
-
+
public GetSimpleIcon(tags: UIEventSource): BaseUIElement {
const self = this;
if (this.icon === undefined) {
@@ -192,10 +200,10 @@ export default class PointRenderingConfig extends WithContextLoader {
const icon = this.GetSimpleIcon(tags)
let badges = undefined;
- if( options?.includeBadges ?? true){
+ if (options?.includeBadges ?? true) {
badges = this.GetBadges(tags)
}
- const iconAndBadges = new Combine([icon,badges ])
+ const iconAndBadges = new Combine([icon, badges])
.SetClass("block relative")
if (!options?.noSize) {
diff --git a/UI/AutomatonGui.ts b/UI/AutomatonGui.ts
index 4e9e0faeb..de73204cb 100644
--- a/UI/AutomatonGui.ts
+++ b/UI/AutomatonGui.ts
@@ -226,7 +226,6 @@ class AutomatonGui {
const osmConnection = new OsmConnection({
allElements: undefined,
changes: undefined,
- layoutName: "automaton",
singlePage: false,
oauth_token: QueryParameters.GetQueryParameter("oauth_token", "OAuth token")
});
diff --git a/UI/BaseUIElement.ts b/UI/BaseUIElement.ts
index 61d55c251..2157fb2f1 100644
--- a/UI/BaseUIElement.ts
+++ b/UI/BaseUIElement.ts
@@ -102,11 +102,6 @@ export default abstract class BaseUIElement {
return this._constructedHtmlElement
}
- if (this.InnerConstructElement === undefined) {
- throw "ERROR! This is not a correct baseUIElement: " + this.constructor.name
- }
-
-
try {
const el = this.InnerConstructElement();
@@ -152,7 +147,7 @@ export default abstract class BaseUIElement {
}
public AsMarkdown(): string {
- throw "AsMarkdown is not implemented by " + this.constructor.name + "; implement it in the subclass"
+ throw "AsMarkdown is not implemented; implement it in the subclass"
}
public Destroy() {
diff --git a/UI/BigComponents/CopyrightPanel.ts b/UI/BigComponents/CopyrightPanel.ts
index fd8bf6b50..f717f13dd 100644
--- a/UI/BigComponents/CopyrightPanel.ts
+++ b/UI/BigComponents/CopyrightPanel.ts
@@ -20,7 +20,6 @@ import Toggle from "../Input/Toggle";
import {OsmConnection} from "../../Logic/Osm/OsmConnection";
import Constants from "../../Models/Constants";
import ContributorCount from "../../Logic/ContributorCount";
-import {icon} from "leaflet";
import Img from "../Base/Img";
export class OpenIdEditor extends VariableUiElement {
@@ -211,7 +210,11 @@ export default class CopyrightPanel extends Combine {
private static IconAttribution(iconPath: string): BaseUIElement {
if (iconPath.startsWith("http")) {
+ try{
iconPath = "." + new URL(iconPath).pathname;
+ }catch(e){
+ console.error(e)
+ }
}
const license: SmallLicense = CopyrightPanel.LicenseObject[iconPath]
diff --git a/UI/BigComponents/ExtraLinkButton.ts b/UI/BigComponents/ExtraLinkButton.ts
new file mode 100644
index 000000000..4d7c6e06c
--- /dev/null
+++ b/UI/BigComponents/ExtraLinkButton.ts
@@ -0,0 +1,81 @@
+import {UIElement} from "../UIElement";
+import BaseUIElement from "../BaseUIElement";
+import {UIEventSource} from "../../Logic/UIEventSource";
+import ExtraLinkConfig from "../../Models/ThemeConfig/ExtraLinkConfig";
+import MapControlButton from "../MapControlButton";
+import Link from "../Base/Link";
+import Img from "../Base/Img";
+import {SubtleButton} from "../Base/SubtleButton";
+import Toggle from "../Input/Toggle";
+import Loc from "../../Models/Loc";
+import Locale from "../i18n/Locale";
+import {Utils} from "../../Utils";
+
+export default class ExtraLinkButton extends UIElement{
+ private readonly _config: ExtraLinkConfig;
+ private readonly state: {
+ layoutToUse: {id: string};
+ featureSwitchWelcomeMessage: UIEventSource, locationControl: UIEventSource};
+
+ constructor(state: {featureSwitchWelcomeMessage: UIEventSource, locationControl: UIEventSource, layoutToUse: {id: string}},
+ config: ExtraLinkConfig) {
+ super();
+ this.state = state;
+ this._config = config;
+ }
+
+ protected InnerRender(): BaseUIElement {
+ if(this._config === undefined){
+ return undefined;
+ }
+
+ const c = this._config;
+
+ const isIframe = window !== window.top
+
+ if(c.requirements.has("iframe") && !isIframe){
+ return undefined
+ }
+
+ if(c.requirements.has("no-iframe") && isIframe){
+ return undefined
+ }
+
+ let link : BaseUIElement
+ const theme = this.state.layoutToUse?.id ?? ""
+ const href = this.state.locationControl.map(loc => {
+ const subs = {
+ ...loc,
+ theme: theme,
+ language: Locale.language.data
+ }
+ return Utils.SubstituteKeys(c.href, subs)
+ })
+
+ if(c.text === undefined){
+ link = new MapControlButton(
+ new Link(new Img(c.icon), href, c.newTab).SetClass("block w-full h-full p-1.5")
+ )
+ }else {
+ let img : BaseUIElement = undefined
+ if(c.icon !== undefined){
+ img = new Img(c.icon).SetClass("h-6")
+ }
+
+ link = new SubtleButton(img,c.text, {url:
+ href,
+ newTab: c.newTab})
+ }
+
+ if(c.requirements.has("no-welcome-message")){
+ link = new Toggle(undefined, link, this.state.featureSwitchWelcomeMessage)
+ }
+
+ if(c.requirements.has("welcome-message")){
+ link = new Toggle(link, undefined, this.state.featureSwitchWelcomeMessage)
+ }
+
+ return link;
+ }
+
+}
\ No newline at end of file
diff --git a/UI/BigComponents/MoreScreen.ts b/UI/BigComponents/MoreScreen.ts
index 22674db52..1d3820cbe 100644
--- a/UI/BigComponents/MoreScreen.ts
+++ b/UI/BigComponents/MoreScreen.ts
@@ -9,7 +9,7 @@ import BaseUIElement from "../BaseUIElement";
import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig";
import {UIEventSource} from "../../Logic/UIEventSource";
import Loc from "../../Models/Loc";
-import {OsmConnection} from "../../Logic/Osm/OsmConnection";
+import UserDetails, {OsmConnection} from "../../Logic/Osm/OsmConnection";
import UserRelatedState from "../../Logic/State/UserRelatedState";
import Toggle from "../Input/Toggle";
import {Utils} from "../../Utils";
@@ -52,7 +52,8 @@ export default class MoreScreen extends Combine {
id: string,
icon: string,
title: any,
- shortDescription: any
+ shortDescription: any,
+ definition?: any
}, isCustom: boolean = false
):
BaseUIElement {
@@ -87,6 +88,11 @@ export default class MoreScreen extends Combine {
linkPrefix = `${path}/theme.html?userlayout=${layout.id}&`
}
+ let hash = ""
+ if(layout.definition !== undefined){
+ hash = "#"+btoa(JSON.stringify(layout.definition))
+ }
+
const linkText = currentLocation?.map(currentLocation => {
const params = [
["z", currentLocation?.zoom],
@@ -95,10 +101,11 @@ export default class MoreScreen extends Combine {
].filter(part => part[1] !== undefined)
.map(part => part[0] + "=" + part[1])
.join("&")
- return `${linkPrefix}${params}`;
+ return `${linkPrefix}${params}${hash}`;
}) ?? new UIEventSource(`${linkPrefix}`)
+
return new SubtleButton(layout.icon,
new Combine([
`
`,
@@ -134,7 +141,8 @@ export default class MoreScreen extends Combine {
id: string
icon: string,
title: any,
- shortDescription: any
+ shortDescription: any,
+ definition?: any
} = JSON.parse(str)
return MoreScreen.createLinkButton(state, value, true)
diff --git a/UI/DefaultGUI.ts b/UI/DefaultGUI.ts
index df31db8a2..7a9786787 100644
--- a/UI/DefaultGUI.ts
+++ b/UI/DefaultGUI.ts
@@ -8,9 +8,7 @@ import Svg from "../Svg";
import Toggle from "./Input/Toggle";
import UserBadge from "./BigComponents/UserBadge";
import SearchAndGo from "./BigComponents/SearchAndGo";
-import Link from "./Base/Link";
import BaseUIElement from "./BaseUIElement";
-import {VariableUiElement} from "./Base/VariableUIElement";
import LeftControls from "./BigComponents/LeftControls";
import RightControls from "./BigComponents/RightControls";
import CenterMessageBox from "./CenterMessageBox";
@@ -19,7 +17,6 @@ import ScrollableFullScreen from "./Base/ScrollableFullScreen";
import Translations from "./i18n/Translations";
import SimpleAddUI from "./BigComponents/SimpleAddUI";
import StrayClickHandler from "../Logic/Actors/StrayClickHandler";
-import Lazy from "./Base/Lazy";
import {DefaultGuiState} from "./DefaultGuiState";
import LayerConfig from "../Models/ThemeConfig/LayerConfig";
import * as home_location_json from "../assets/layers/home_location/home_location.json";
@@ -27,6 +24,7 @@ import NewNoteUi from "./Popup/NewNoteUi";
import Combine from "./Base/Combine";
import AddNewMarker from "./BigComponents/AddNewMarker";
import FilteredLayer from "../Models/FilteredLayer";
+import ExtraLinkButton from "./BigComponents/ExtraLinkButton";
/**
@@ -161,31 +159,26 @@ export default class DefaultGUI {
const guiState = this._guiState;
const self = this
- Toggle.If(state.featureSwitchUserbadge,
- () => new UserBadge(state)
- ).AttachTo("userbadge")
+ new Combine([
+ Toggle.If(state.featureSwitchUserbadge,
+ () => new UserBadge(state)
+ ),
+ Toggle.If(state.featureSwitchExtraLinkEnabled,
+ () => new ExtraLinkButton(state, state.layoutToUse.extraLink)
+ )
+ ]).SetClass("flex flex-col")
+ .AttachTo("userbadge")
Toggle.If(state.featureSwitchSearch,
() => new SearchAndGo(state))
.AttachTo("searchbox");
- let iframePopout: () => BaseUIElement = undefined;
-
- if (window !== window.top) {
- // MapComplete is running in an iframe
- iframePopout = () => new VariableUiElement(state.locationControl.map(loc => {
- const url = `${window.location.origin}${window.location.pathname}?z=${loc.zoom ?? 0}&lat=${loc.lat ?? 0}&lon=${loc.lon ?? 0}`;
- const link = new Link(Svg.pop_out_img, url, true).SetClass("block w-full h-full p-1.5")
- return new MapControlButton(link)
- }))
-
- }
-
- new Toggle(new Lazy(() => self.InitWelcomeMessage()),
- Toggle.If(state.featureSwitchIframePopoutEnabled, iframePopout),
- state.featureSwitchWelcomeMessage
- ).AttachTo("messagesbox");
+ Toggle.If(
+ state.featureSwitchWelcomeMessage,
+ () => self.InitWelcomeMessage()
+ )
+ .AttachTo("messagesbox");
new LeftControls(state, guiState).AttachTo("bottom-left");
diff --git a/UI/DefaultGuiState.ts b/UI/DefaultGuiState.ts
index 21d471474..b67723c10 100644
--- a/UI/DefaultGuiState.ts
+++ b/UI/DefaultGuiState.ts
@@ -22,27 +22,27 @@ export class DefaultGuiState {
));
this.welcomeMessageIsOpened = QueryParameters.GetBooleanQueryParameter(
"welcome-control-toggle",
- "false",
+ false,
"Whether or not the welcome panel is shown"
)
this.downloadControlIsOpened = QueryParameters.GetBooleanQueryParameter(
"download-control-toggle",
- "false",
+ false,
"Whether or not the download panel is shown"
)
this.filterViewIsOpened = QueryParameters.GetBooleanQueryParameter(
"filter-toggle",
- "false",
+ false,
"Whether or not the filter view is shown"
)
this.copyrightViewIsOpened = QueryParameters.GetBooleanQueryParameter(
"copyright-toggle",
- "false",
+ false,
"Whether or not the copyright view is shown"
)
this.currentViewControlIsOpened = QueryParameters.GetBooleanQueryParameter(
"currentview-toggle",
- "false",
+ false,
"Whether or not the current view box is shown"
)
const states = {
diff --git a/assets/layers/address/address.json b/assets/layers/address/address.json
index a0c6ef274..0d4a4c1c8 100644
--- a/assets/layers/address/address.json
+++ b/assets/layers/address/address.json
@@ -8,7 +8,8 @@
"nl": "Bekende adressen in OSM",
"fr": "Adresses connues d’OpenStreetMap",
"ru": "Известные адреса в OSM",
- "id": "Alamat yang dikenal di OSM"
+ "id": "Alamat yang dikenal di OSM",
+ "es": "Direcciones conocidas en OSM"
},
"minzoom": 18,
"source": {
@@ -33,7 +34,8 @@
"nl": "Bekend adres",
"fr": "Adresse connue",
"pl": "Znany adres",
- "ru": "Известный адрес"
+ "ru": "Известный адрес",
+ "es": "Domicilio conocido"
}
},
"description": {
@@ -45,7 +47,8 @@
"hu": "Címek",
"fr": "Adresses",
"pl": "Adresy",
- "id": "Alamat"
+ "id": "Alamat",
+ "es": "Direcciones"
},
"tagRenderings": [
{
@@ -66,7 +69,8 @@
"nl": "Wat is het huisnummer van dit huis?",
"fr": "Quel est le numéro de ce bâtiment ?",
"pl": "Jaki jest numer tego domu?",
- "ru": "Какой номер у этого дома?"
+ "ru": "Какой номер у этого дома?",
+ "es": "¿Cuál es el número de esta casa?"
},
"freeform": {
"key": "addr:housenumber",
@@ -89,7 +93,8 @@
"fr": "Ce bâtiment n’a pas de numéro",
"pl": "Ten budynek nie ma numeru",
"ru": "У этого здания нет номера",
- "id": "Bangunan ini tidak memiliki nomor rumah"
+ "id": "Bangunan ini tidak memiliki nomor rumah",
+ "es": "Esta edificación no tiene número"
}
}
]
@@ -111,7 +116,8 @@
"nl": "In welke straat bevindt dit adres zich?",
"fr": "Dans quelle rue est située l’adresse ?",
"pl": "Na jakiej ulicy znajduje się ten adres?",
- "ru": "Какая эта улица?"
+ "ru": "Какая эта улица?",
+ "es": "¿En qué calle se encuentra esta dirección?"
},
"freeform": {
"key": "addr:street"
@@ -149,7 +155,9 @@
"hu": "Mit kellene itt kijavítani? Légy szíves, magyarázd el",
"fr": "Précisez ce qui devrait être corrigé ici",
"pl": "Co wymaga naprawy? Proszę wytłumaczyć",
- "id": "Apa yang harus diperbaiki di sini? Tolong jelaskan"
+ "id": "Apa yang harus diperbaiki di sini? Tolong jelaskan",
+ "es": "¿Qué debe corregirse aquí? Expóngalo",
+ "nl": "Wat moet hier gecorrigeerd worden? Leg het uit"
},
"freeform": {
"key": "fixme"
diff --git a/assets/layers/ambulancestation/ambulancestation.json b/assets/layers/ambulancestation/ambulancestation.json
index 79ffd401e..19fdae859 100644
--- a/assets/layers/ambulancestation/ambulancestation.json
+++ b/assets/layers/ambulancestation/ambulancestation.json
@@ -7,7 +7,8 @@
"fr": "Couche des ambulances",
"de": "Karte der Rettungswachen",
"it": "Carta delle stazioni delle ambulanze",
- "hu": "Mentőállomás-térkép"
+ "hu": "Mentőállomás-térkép",
+ "nl": "Kaart van ambulancestations"
},
"minzoom": 12,
"source": {
@@ -25,7 +26,8 @@
"fr": "Station d’ambulances",
"de": "Rettungswache",
"it": "Stazione delle ambulanze",
- "hu": "Mentőállomás"
+ "hu": "Mentőállomás",
+ "nl": "Ambulancestation"
}
},
"description": {
@@ -35,7 +37,8 @@
"de": "Eine Rettungswache ist ein Ort, an dem Rettungsfahrzeuge, medizinische Ausrüstung, persönliche Schutzausrüstung und anderes medizinisches Material untergebracht sind.",
"it": "La stazione delle ambulanze è un’area per lo stoccaggio delle ambulanze, dell’equipaggiamento medico, dei dispositivi di protezione individuale e di altre forniture medicali.",
"hu": "A mentőállomás olyan terület, ahol mentőautókat, orvosi felszereléseket, egyéni védőfelszereléseket és egyéb orvosi felszereléseket tárolnak.",
- "ru": "Станция скорой помощи это полигон для хранения транспорта, медицинского оборудования, средств индивидуальной защиты и других медицинских принадлежностей."
+ "ru": "Станция скорой помощи это полигон для хранения транспорта, медицинского оборудования, средств индивидуальной защиты и других медицинских принадлежностей.",
+ "nl": "Een ambulancestation is een plaats waar ambulances, medisch materiaal, persoonlijk beschermingsmateriaal en aanverwanten worden bewaard."
},
"tagRenderings": [
{
@@ -50,7 +53,8 @@
"fr": "Quel est le nom de cette station ?",
"it": "Qual è il nome di questa stazione delle ambulanze?",
"de": "Wie heißt diese Rettungswache?",
- "hu": "Mi a neve ennek a menőtállomásnak?"
+ "hu": "Mi a neve ennek a menőtállomásnak?",
+ "nl": "Hoe heet dit ambulancestation?"
},
"render": {
"en": "This station is called {name}.",
@@ -59,7 +63,8 @@
"fr": "Cette station s’appelle {name}.",
"it": "Questa stazione è chiamata {name}.",
"de": "Diese Rettungswache heißt {name}.",
- "hu": "A mentőállomás neve: {name}."
+ "hu": "A mentőállomás neve: {name}.",
+ "nl": "Dit station heet {name}."
}
},
{
@@ -74,7 +79,8 @@
"fr": " Quel est le nom de la rue où la station se situe ?",
"it": " Come si chiama la strada in cui si trova questa stazione?",
"de": " Wie lautet der Name der Straße, in der sich die Rettungswache befindet?",
- "hu": " Mi a neve annak az utcának, amelyben az állomás található?"
+ "hu": " Mi a neve annak az utcának, amelyben az állomás található?",
+ "nl": " In welke straat ligt dit station?"
},
"render": {
"en": "This station is along a highway called {addr:street}.",
@@ -83,7 +89,8 @@
"fr": "La station fait partie de {addr:street}.",
"it": "Questa stazione si trova in {addr:street}.",
"de": "Dieser Bahnhof liegt an der Straße {addr:street}.",
- "hu": "Ez az állomás a következő utcában van: {addr:street}."
+ "hu": "Ez az állomás a következő utcában van: {addr:street}.",
+ "nl": "Straat waar dit station ligt: {addr:street}"
}
},
{
@@ -95,7 +102,8 @@
"fr": "Dans quelle localité la station est-elle située ?",
"it": "Dove si trova la stazione? (ad es. quartiere, paese o città)",
"de": "Wo befindet sich die Rettungswache? (z. B. Name von Stadtviertel, Dorf oder Stadt)",
- "hu": "Hol található az állomás? (Pl. a falu, kisváros vagy városrész neve.)"
+ "hu": "Hol található az állomás? (Pl. a falu, kisváros vagy városrész neve.)",
+ "nl": "Waar ligt het station? (v.b. naam van de buurt, dorp of stad)"
},
"freeform": {
"key": "addr:place"
@@ -106,7 +114,8 @@
"fr": "La station fait partie de {addr:place}.",
"it": "La stazione si trova a {addr:place}.",
"de": "Diese Rettungswache befindet sich in {addr:place}.",
- "hu": "Ez az állomás itt található: {addr:place}."
+ "hu": "Ez az állomás itt található: {addr:place}.",
+ "nl": "Dit station ligt in {addr:place}."
}
},
{
@@ -118,7 +127,8 @@
"it": "Quale agenzia gestisce questa stazione?",
"de": "Welches Unternehmen betreibt diese Rettungswache?",
"hu": "Milyen szervezet működteti ezt az állomást?",
- "ru": "Какая организация управляет этой станцией?"
+ "ru": "Какая организация управляет этой станцией?",
+ "nl": "Welke organisatie beheert dit station?"
},
"render": {
"en": "This station is operated by {operator}.",
@@ -127,7 +137,8 @@
"it": "Questa stazione è gestita da {operator}.",
"de": "Diese Rettungswache wird betrieben von {operator}.",
"hu": "Az állomás üzemeltetője: {operator}.",
- "ru": "Эта станция управляется {operator}."
+ "ru": "Эта станция управляется {operator}.",
+ "nl": "Dit station wordt beheerd door {operator}."
},
"freeform": {
"key": "operator"
@@ -142,7 +153,8 @@
"fr": "Quel est le type d’exploitant ?",
"it": "Com’è classificato il gestore della stazione?",
"de": "Wie kann der Betreiber der Rettungswache eingestuft werden?",
- "hu": "Hogyan sorolható be az állomás üzemeltetője?"
+ "hu": "Hogyan sorolható be az állomás üzemeltetője?",
+ "nl": "Wat voor een organisatie is de beheerder van dit station?"
},
"render": {
"en": "The operator is a(n) {operator:type} entity.",
@@ -150,7 +162,8 @@
"fr": "L’exploitant est de type {operator:type}.",
"it": "L’operatore è un ente {operator:type}.",
"de": "Der Betreiber ist eine {operator:type}.",
- "hu": "Az üzemeltető egy {operator:type} jellegű szervezet."
+ "hu": "Az üzemeltető egy {operator:type} jellegű szervezet.",
+ "nl": "De beheerder is van het type {operator:type}."
},
"freeform": {
"key": "operator:type"
@@ -169,7 +182,8 @@
"it": "La stazione è gestita dal governo.",
"de": "Die Rettungswache wird von einer Behörde betrieben.",
"hu": "A mentőállomást a kormány üzemelteti.",
- "ru": "Станция управляется правительством."
+ "ru": "Станция управляется правительством.",
+ "nl": "Dit station wordt beheerd door de overheid."
}
},
{
@@ -185,7 +199,8 @@
"it": "La stazione è gestita dalla comunità o un’organizzazione non ufficiale.",
"de": "Die Rettungswache wird von einer gemeindenahen oder informellen Organisation betrieben.",
"hu": "Mentőállomást egy közösségi vagy nem hivatalos szervezet működteti.",
- "ru": "Станция управляется волонтёрами или частной организацией."
+ "ru": "Станция управляется волонтёрами или частной организацией.",
+ "nl": "Dit station wordt beheerd door een informele of community organisatie."
}
},
{
@@ -200,7 +215,8 @@
"fr": "La station est opérée par un groupe officiel de bénévoles.",
"it": "La stazione è gestita da un gruppo ufficiale di volontari.",
"de": "Die Rettungswache wird von einer Freiwilligenorganisation betrieben.",
- "hu": "A mentőállomást egy önkéntesekből álló hivatalos csoport működteti."
+ "hu": "A mentőállomást egy önkéntesekből álló hivatalos csoport működteti.",
+ "nl": "Dit station wordt beheerd door een formele groep vrijwilligers."
}
},
{
@@ -215,7 +231,8 @@
"fr": "La station est opérée par un groupe privé.",
"it": "La stazione è gestita da un privato.",
"de": "Die Rettungswache wird von einer privaten Organisation betrieben.",
- "hu": "Az állomást egy magánkézben lévő szervezet működteti."
+ "hu": "Az állomást egy magánkézben lévő szervezet működteti.",
+ "nl": "Dit station wordt beheerd door een privé-organisatie."
}
}
]
@@ -234,7 +251,8 @@
"fr": "Station d’ambulances",
"de": "Rettungswache",
"it": "Stazione delle ambulanze",
- "hu": "Mentőállomás"
+ "hu": "Mentőállomás",
+ "nl": "Ambulancestation"
},
"description": {
"en": "Add an ambulance station to the map",
@@ -243,7 +261,8 @@
"fr": "Ajouter une station d’ambulances à la carte",
"de": "Eine Rettungsstation der Karte hinzufügen",
"it": "Aggiungi una stazione delle ambulanza alla mappa",
- "hu": "Mentőállomás hozzáadása a térképhez"
+ "hu": "Mentőállomás hozzáadása a térképhez",
+ "nl": "Voeg een ambulancestation toe aan de kaart"
}
}
],
diff --git a/assets/layers/artwork/artwork.json b/assets/layers/artwork/artwork.json
index ae391d1a2..08db8f4a9 100644
--- a/assets/layers/artwork/artwork.json
+++ b/assets/layers/artwork/artwork.json
@@ -134,7 +134,7 @@
"de": "Was ist die Art dieses Kunstwerks?",
"it": "Che tipo di opera d’arte è questo?",
"ru": "К какому типу относится эта работа?",
- "es": "Cuál es el tipo de esta obra de arte?",
+ "es": "¿Qué tipo de obra es esta pieza?",
"ja": "この作品の種類は何ですか?",
"zh_Hant": "這是什麼類型的藝術品?",
"nb_NO": "Hvilken type kunstverk er dette?",
@@ -165,7 +165,8 @@
"id": "Arsitektur",
"pt": "Arquitetura",
"hu": "Építészet",
- "pl": "Architektura"
+ "pl": "Architektura",
+ "es": "Arquitectura"
}
},
{
@@ -183,7 +184,8 @@
"id": "Mural",
"pt": "Mural",
"hu": "Falfestmény",
- "pl": "Mural"
+ "pl": "Mural",
+ "es": "Mural"
}
},
{
@@ -201,7 +203,8 @@
"id": "Lukisan",
"pt": "Pintura",
"hu": "Festmény",
- "pl": "Obraz"
+ "pl": "Obraz",
+ "es": "Pintura"
}
},
{
@@ -219,7 +222,8 @@
"id": "Patung",
"pt": "Escultura",
"hu": "Absztrakt szobor",
- "pl": "Rzeźba"
+ "pl": "Rzeźba",
+ "es": "Escultura"
}
},
{
@@ -236,7 +240,8 @@
"nb_NO": "Statue",
"pt": "Estátua",
"hu": "Szobor",
- "pl": "Posąg"
+ "pl": "Posąg",
+ "es": "Estatua"
}
},
{
@@ -253,7 +258,8 @@
"nb_NO": "Byste",
"pt": "Busto",
"hu": "Mellszobor",
- "pl": "Popiersie"
+ "pl": "Popiersie",
+ "es": "Busto"
}
},
{
@@ -289,7 +295,8 @@
"id": "Instalasi",
"pt": "Instalação",
"hu": "Installáció",
- "pl": "Instalacja artystyczna"
+ "pl": "Instalacja artystyczna",
+ "es": "Instalación"
}
},
{
@@ -307,7 +314,8 @@
"id": "Graffiti",
"pt": "Graffiti",
"hu": "Graffiti",
- "pl": "Graffiti"
+ "pl": "Graffiti",
+ "es": "Grafiti"
}
},
{
diff --git a/assets/layers/barrier/barrier.json b/assets/layers/barrier/barrier.json
index 6fa4a0cc8..499a2157f 100644
--- a/assets/layers/barrier/barrier.json
+++ b/assets/layers/barrier/barrier.json
@@ -6,7 +6,8 @@
"de": "Hindernisse",
"ru": "Препятствия",
"hu": "Akadályok",
- "fr": "Barrières"
+ "fr": "Barrières",
+ "es": "Barreras"
},
"description": {
"en": "Obstacles while cycling, such as bollards and cycle barriers",
@@ -30,7 +31,8 @@
"nl": "Barrière",
"de": "Hindernis",
"ru": "Препятствие",
- "fr": "Barrière"
+ "fr": "Barrière",
+ "es": "Barrera"
},
"mappings": [
{
@@ -40,7 +42,8 @@
"nl": "Paaltje",
"de": "Poller",
"ru": "Прикол",
- "fr": "Bollard"
+ "fr": "Bollard",
+ "es": "Bolardo"
}
},
{
@@ -62,7 +65,8 @@
"de": "Poller",
"ru": "Прикол",
"fr": "Bollard",
- "hu": "Terelőoszlop"
+ "hu": "Terelőoszlop",
+ "es": "Bolardo"
},
"tags": [
"barrier=bollard"
@@ -168,7 +172,8 @@
"nl": "Wat voor soort paal is dit?",
"de": "Um was für einen Poller handelt es sich?",
"fr": "Quel est le type de bollard (borne) ?",
- "hu": "Milyen fajta terelőoszlop ez?"
+ "hu": "Milyen fajta terelőoszlop ez?",
+ "es": "¿Qué tipo de bolardo es este?"
},
"condition": "barrier=bollard",
"mappings": [
@@ -189,7 +194,8 @@
"nl": "Vaste paal",
"de": "Feststehender Poller",
"fr": "Bollard fixe",
- "hu": "Rögzített terelőoszlop"
+ "hu": "Rögzített terelőoszlop",
+ "es": "Bolardo fijo"
}
},
{
@@ -209,7 +215,8 @@
"nl": "Flexibele paal, meestal plastic",
"de": "Flexibler Poller, meist aus Kunststoff",
"fr": "Bollard flexible, généralement en plastique",
- "hu": "Rugalmas (általában műanyag) terelőoszlop"
+ "hu": "Rugalmas (általában műanyag) terelőoszlop",
+ "es": "Bolardo flexible, normalmente plástico"
}
},
{
@@ -219,7 +226,8 @@
"nl": "Verzonken poller",
"de": "Ausfahrender Poller",
"fr": "Bollard rétractable",
- "hu": "Felemelkedő terelőoszlop"
+ "hu": "Felemelkedő terelőoszlop",
+ "es": "Bolardo levadizo"
}
}
],
@@ -375,7 +383,8 @@
"en": "Overlap: {overlap} m",
"de": "Überschneidung: {overlap} m",
"hu": "Átfedés: {overlap} m",
- "fr": "Chevauchement : {overlap} m"
+ "fr": "Chevauchement : {overlap} m",
+ "nl": "Overlap: {overlap} m"
},
"question": {
"en": "How much overlap do the barriers have?",
diff --git a/assets/layers/bench/bench.json b/assets/layers/bench/bench.json
index 0d88a0f89..c96a91085 100644
--- a/assets/layers/bench/bench.json
+++ b/assets/layers/bench/bench.json
@@ -53,7 +53,7 @@
"de": "Rückenlehne: Ja",
"fr": "Dossier : Oui",
"nl": "Heeft een rugleuning",
- "es": "Respaldo: Si",
+ "es": "Respaldo: sí",
"hu": "Háttámla van",
"id": "Sandaran: Ya",
"it": "Schienale: Sì",
@@ -74,7 +74,7 @@
"de": "Rückenlehne: Nein",
"fr": "Dossier : Non",
"nl": "Rugleuning ontbreekt",
- "es": "Respaldo: No",
+ "es": "Respaldo: no",
"hu": "Háttámla nincs",
"id": "Sandaran: Tidak",
"it": "Schienale: No",
@@ -94,7 +94,7 @@
"de": "Hat diese Bank eine Rückenlehne?",
"fr": "Ce banc dispose-t-il d'un dossier ?",
"nl": "Heeft deze zitbank een rugleuning?",
- "es": "¿Este banco tiene un respaldo?",
+ "es": "¿Este banco tiene respaldo?",
"hu": "Van-e háttámlája ennek a padnak?",
"id": "Apakah bangku ini memiliki sandaran?",
"it": "Questa panchina ha lo schienale?",
@@ -327,7 +327,8 @@
"zh_Hant": "坐在長椅時是面對那個方向?",
"pt_BR": "Em que direção você olha quando está sentado no banco?",
"pl": "W jakim kierunku patrzysz siedząc na ławce?",
- "pt": "Em que direção olha quando está sentado no banco?"
+ "pt": "Em que direção olha quando está sentado no banco?",
+ "es": "¿En qué dirección se mira al sentarse en el banco?"
},
"render": {
"en": "When sitting on the bench, one looks towards {direction}°.",
@@ -366,7 +367,8 @@
"fi": "Väri: {colour}",
"pl": "Kolor: {colour}",
"pt": "Cor: {colour}",
- "eo": "Koloro: {colour}"
+ "eo": "Koloro: {colour}",
+ "es": "Color: {colour}"
},
"question": {
"en": "Which colour does this bench have?",
@@ -380,7 +382,8 @@
"zh_Hant": "這個長椅是什麼顏色的?",
"pt_BR": "Qual a cor dessa bancada?",
"pl": "Jaki kolor ma ta ławka?",
- "pt": "Qual a cor dessa bancada?"
+ "pt": "Qual a cor dessa bancada?",
+ "es": "¿De qué color es este banco?"
},
"freeform": {
"key": "colour",
@@ -424,7 +427,8 @@
"fi": "Väri: vihreä",
"pl": "Kolor: zielony",
"pt": "Cor: verde",
- "eo": "Koloro: verda"
+ "eo": "Koloro: verda",
+ "es": "Color: verde"
}
},
{
@@ -444,7 +448,8 @@
"fi": "Väri: harmaa",
"pl": "Kolor: szary",
"pt": "Cor: cinzento",
- "eo": "Koloro: griza"
+ "eo": "Koloro: griza",
+ "es": "Color: gris"
}
},
{
@@ -464,7 +469,8 @@
"fi": "Väri: valkoinen",
"pl": "Kolor: biały",
"pt": "Cor: branco",
- "eo": "Koloro: blanka"
+ "eo": "Koloro: blanka",
+ "es": "Color: blanco"
}
},
{
@@ -484,7 +490,8 @@
"fi": "Väri: punainen",
"pl": "Kolor: czerwony",
"pt": "Cor: vermelho",
- "eo": "Koloro: ruĝa"
+ "eo": "Koloro: ruĝa",
+ "es": "Color: rojo"
}
},
{
@@ -504,7 +511,8 @@
"fi": "Väri: musta",
"pl": "Kolor: czarny",
"pt": "Cor: preto",
- "eo": "Koloro: nigra"
+ "eo": "Koloro: nigra",
+ "es": "Color: negro"
}
},
{
@@ -524,7 +532,8 @@
"fi": "Väri: sininen",
"pl": "Kolor: niebieski",
"pt": "Cor: azul",
- "eo": "Koloro: blua"
+ "eo": "Koloro: blua",
+ "es": "Color: azul"
}
},
{
@@ -544,7 +553,8 @@
"fi": "Väri: keltainen",
"pl": "Kolor: żółty",
"pt": "Cor: amarelo",
- "eo": "Koloro: flava"
+ "eo": "Koloro: flava",
+ "es": "Color: amarillo"
}
}
],
diff --git a/assets/layers/bench_at_pt/bench_at_pt.json b/assets/layers/bench_at_pt/bench_at_pt.json
index 2131cbe0b..e2525223e 100644
--- a/assets/layers/bench_at_pt/bench_at_pt.json
+++ b/assets/layers/bench_at_pt/bench_at_pt.json
@@ -108,7 +108,8 @@
"fi": "{name}",
"pl": "{name}",
"pt": "{name}",
- "eo": "{name}"
+ "eo": "{name}",
+ "es": "{name}"
},
"freeform": {
"key": "name"
@@ -120,7 +121,8 @@
"question": {
"en": "What kind of bench is this?",
"nl": "Wat voor soort bank is dit?",
- "de": "Was ist das für eine Bank?"
+ "de": "Was ist das für eine Bank?",
+ "es": "¿Qué tipo de banco es este?"
},
"mappings": [
{
@@ -179,6 +181,8 @@
}
],
"description": {
- "en": "A layer showing all public-transport-stops which do have a bench"
+ "en": "A layer showing all public-transport-stops which do have a bench",
+ "es": "Una capa que muestra todas las paradas de transporte público que tienen bancos",
+ "nl": "Een laag die stopplaatsen van openbaar vervoer toont waar er een zitbank is"
}
}
\ No newline at end of file
diff --git a/assets/layers/bicycle_rental/bicycle_rental.json b/assets/layers/bicycle_rental/bicycle_rental.json
index ee71ab9b7..57eee94cc 100644
--- a/assets/layers/bicycle_rental/bicycle_rental.json
+++ b/assets/layers/bicycle_rental/bicycle_rental.json
@@ -18,7 +18,8 @@
"title": {
"render": {
"en": "Bicycle rental",
- "nl": "Fietsverhuur"
+ "nl": "Fietsverhuur",
+ "es": "Alquiler de bicicletas"
},
"mappings": [
{
@@ -256,7 +257,31 @@
]
}
],
- "presets": [],
+ "presets": [
+ {
+ "title": {
+ "en": "bicycle rental shop",
+ "nl": "fietsverhuurzaak"
+ },
+ "tags": [
+ "amenity=bicycle_rental",
+ "bicycle_rental=shop"
+ ],
+ "description": {
+ "en": "A manned shop which focuses on bicycle rental",
+ "nl": "Een bemande winkel die focust op fietsverhuur"
+ }
+ },
+ {
+ "title": {
+ "en": "bicycle rental",
+ "nl": "fietsverhuur"
+ },
+ "tags": [
+ "amenity=bicycle_rental"
+ ]
+ }
+ ],
"mapRendering": [
{
"icon": "./assets/themes/bicycle_rental/logo.svg",
diff --git a/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json b/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json
index f5e743672..6558cc5d2 100644
--- a/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json
+++ b/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json
@@ -286,6 +286,7 @@
}
],
"description": {
- "en": "A layer showing vending machines for bicycle tubes (either purpose-built bicycle tube vending machines or classical vending machines with bicycle tubes and optionally additional bicycle related objects such as lights, gloves, locks, ...)"
+ "en": "A layer showing vending machines for bicycle tubes (either purpose-built bicycle tube vending machines or classical vending machines with bicycle tubes and optionally additional bicycle related objects such as lights, gloves, locks, ...)",
+ "nl": "Een laag met verkoopsautomaten met binnenbanden voor fietsen (dit kan een automaat zijn met énkel fietsbanden, of een gewone automaat met fietsbanden en andere fietsaccessoires zoals lichten, handschoenen, sloten,...)"
}
}
\ No newline at end of file
diff --git a/assets/layers/bike_cafe/bike_cafe.json b/assets/layers/bike_cafe/bike_cafe.json
index 334f5dd9b..becb7d407 100644
--- a/assets/layers/bike_cafe/bike_cafe.json
+++ b/assets/layers/bike_cafe/bike_cafe.json
@@ -162,7 +162,8 @@
"zh_Hant": "這裡是否有工具修理你的單車嗎?",
"ru": "Есть ли здесь инструменты для починки вашего велосипеда?",
"pt_BR": "Há ferramentas aqui para consertar sua bicicleta?",
- "pt": "Há ferramentas aqui para consertar a sua própria bicicleta?"
+ "pt": "Há ferramentas aqui para consertar a sua própria bicicleta?",
+ "es": "¿Hay herramientas para reparar su propia bicicleta?"
},
"mappings": [
{
@@ -376,6 +377,7 @@
}
],
"description": {
- "en": "A bike café is a café geared towards cyclists, for example with services such as a pump, with lots of bicycle-related decoration, ..."
+ "en": "A bike café is a café geared towards cyclists, for example with services such as a pump, with lots of bicycle-related decoration, ...",
+ "nl": "Een fietscafé is een café dat gericht is op fietsers, bijvoorbeeld omdat het een fietspomp heeft, fietsgerelateerde decoratie heeft enzovoorts."
}
}
\ No newline at end of file
diff --git a/assets/layers/bike_cleaning/bike_cleaning.json b/assets/layers/bike_cleaning/bike_cleaning.json
index f3f21746b..ace20b610 100644
--- a/assets/layers/bike_cleaning/bike_cleaning.json
+++ b/assets/layers/bike_cleaning/bike_cleaning.json
@@ -70,11 +70,13 @@
{
"question": {
"en": "How much does it cost to use the cleaning service?",
- "de": "Wie viel kostet die Nutzung des Reinigungsdienstes?"
+ "de": "Wie viel kostet die Nutzung des Reinigungsdienstes?",
+ "nl": "Hoeveel kost het gebruik van het fietsschoonmaakpunt?"
},
"render": {
"en": "Using the cleaning service costs {service:bicycle:cleaning:charge}",
- "de": "Nutzung des Reinigungsservice kostet {service:bicycle:cleaning:charge}"
+ "de": "Nutzung des Reinigungsservice kostet {service:bicycle:cleaning:charge}",
+ "nl": "Het gebruik van het fietsschoonmaakpunt kost {service:bicycle:cleaning:charge}"
},
"condition": {
"and": [
@@ -94,14 +96,16 @@
"if": "service:bicycle:cleaning:fee=no&service:bicycle:cleaning:charge=",
"then": {
"en": "The cleaning service is free to use",
- "de": "Der Reinigungsservice ist kostenlos"
+ "de": "Der Reinigungsservice ist kostenlos",
+ "nl": "Het fietsschoonmaakpunt is gratis"
}
},
{
"if": "service:bicycle:cleaning:fee=no",
"then": {
"en": "Free to use",
- "de": "Kostenlose Nutzung"
+ "de": "Kostenlose Nutzung",
+ "nl": "Gratis te gebruiken"
},
"hideInAnswer": true
},
@@ -109,7 +113,8 @@
"if": "service:bicycle:cleaning:fee=yes&service:bicycle:cleaning:charge=",
"then": {
"en": "The cleaning service has a fee, but the amount is not known",
- "de": "Der Reinigungsdienst ist kostenpflichtig, aber der Betrag ist nicht bekannt"
+ "de": "Der Reinigungsdienst ist kostenpflichtig, aber der Betrag ist nicht bekannt",
+ "nl": "Het fietsschoonmaakpunt is betalend, maar de prijs is onbekend"
},
"hideInAnswer": true
}
@@ -119,11 +124,13 @@
{
"question": {
"en": "How much does it cost to use the cleaning service?",
- "de": "Wie viel kostet die Nutzung des Reinigungsdienstes?"
+ "de": "Wie viel kostet die Nutzung des Reinigungsdienstes?",
+ "nl": "Hoeveel kost het gebruik van het fietsschoonmaakpunt?"
},
"render": {
"en": "Using the cleaning service costs {charge}",
- "de": "Die Nutzung des Reinigungsdienstes kostet {charge}"
+ "de": "Die Nutzung des Reinigungsdienstes kostet {charge}",
+ "nl": "Het gebruik van het fietsschoonmaakpunt kost {charge}"
},
"condition": {
"or": [
@@ -142,14 +149,16 @@
"if": "fee=no&charge=",
"then": {
"en": "Free to use cleaning service",
- "de": "Kostenloser Reinigungsservice"
+ "de": "Kostenloser Reinigungsservice",
+ "nl": "Gratis fietsschoonmaakpunt"
}
},
{
"if": "fee=no",
"then": {
"en": "Free to use",
- "de": "Kostenlose Nutzung"
+ "de": "Kostenlose Nutzung",
+ "nl": "Gratis te gebruiken"
},
"hideInAnswer": true
},
@@ -157,7 +166,8 @@
"if": "fee=yes",
"then": {
"en": "The cleaning service has a fee",
- "de": "Der Reinigungsservice ist kostenpflichtig"
+ "de": "Der Reinigungsservice ist kostenpflichtig",
+ "nl": "Je moet betalen voor het fietsschoonmaakpunt"
}
}
],
@@ -205,6 +215,7 @@
}
],
"description": {
- "en": "A layer showing facilities where one can clean their bike"
+ "en": "A layer showing facilities where one can clean their bike",
+ "nl": "Een laag die plaatsen toont waar je je fiets kunt wassen"
}
}
\ No newline at end of file
diff --git a/assets/layers/bike_parking/bike_parking.json b/assets/layers/bike_parking/bike_parking.json
index bcf04387a..07ebe7f37 100644
--- a/assets/layers/bike_parking/bike_parking.json
+++ b/assets/layers/bike_parking/bike_parking.json
@@ -480,7 +480,7 @@
"if": "cargo_bike=designated",
"then": {
"en": "This parking has designated (official) spots for cargo bikes.",
- "nl": "Er zijn speciale plaatsen voorzien voor bakfietsen",
+ "nl": "Er zijn speciale plaatsen voorzien voor bakfietsen.",
"gl": "Este aparcadoiro ten espazos designados (oficiais) para bicicletas de carga.",
"de": "Dieser Parkplatz verfügt über ausgewiesene (offizielle) Plätze für Lastenfahrräder.",
"fr": "Ce parking a des emplacements (officiellement) destinés aux vélos cargo.",
@@ -519,7 +519,7 @@
},
"render": {
"en": "This parking fits {capacity:cargo_bike} cargo bikes",
- "nl": "Deze parking heeft plaats voor {capacity:cargo_bike} fietsen",
+ "nl": "Deze parking heeft plaats voor {capacity:cargo_bike} bakfietsen",
"fr": "Ce parking a de la place pour {capacity:cargo_bike} vélos de transport",
"gl": "Neste aparcadoiro caben {capacity:cargo_bike} bicicletas de carga",
"de": "Auf diesen Parkplatz passen {capacity:cargo_bike} Lastenfahrräder",
@@ -565,6 +565,7 @@
}
],
"description": {
- "en": "A layer showing where you can park your bike"
+ "en": "A layer showing where you can park your bike",
+ "nl": "Een laag die toont waar je je fiets kunt parkeren"
}
}
\ No newline at end of file
diff --git a/assets/layers/bike_repair_station/bike_repair_station.json b/assets/layers/bike_repair_station/bike_repair_station.json
index 762ee69a1..9dfe80c03 100644
--- a/assets/layers/bike_repair_station/bike_repair_station.json
+++ b/assets/layers/bike_repair_station/bike_repair_station.json
@@ -277,6 +277,54 @@
],
"id": "bike_repair_station-opening_hours"
},
+ {
+ "id": "access",
+ "question": {
+ "en": "Who is allowed to use this repair station?",
+ "nl": "Wie kan dit herstelpunt gebruiken?"
+ },
+ "mappings": [
+ {
+ "if": "access=yes",
+ "then": {
+ "en": "Publicly accessible",
+ "nl": "Publiek toegankelijk"
+ }
+ },
+ {
+ "if": "access=public",
+ "then": {
+ "en": "Publicly accessible",
+ "nl": "Publiek toegankelijk"
+ },
+ "hideInAnswer": true
+ },
+ {
+ "if": "access=customers",
+ "then": {
+ "en": "Only for customers",
+ "nl": "Enkel voor klanten van de bijhorende zaak"
+ }
+ },
+ {
+ "if": "access=private",
+ "then": {
+ "en": "Not accessible to the general public",
+ "nl": "Niet publiek toegankelijk"
+ },
+ "icon": "./assets/svg/invalid.svg"
+ },
+ {
+ "if": "access=no",
+ "then": {
+ "en": "Not accessible to the general public",
+ "nl": "Niet publiek toegankelijk"
+ },
+ "icon": "./assets/svg/invalid.svg",
+ "hideInAnswer": true
+ }
+ ]
+ },
{
"labels": [
"operator-info"
@@ -709,11 +757,12 @@
{
"if": {
"and": [
- "service:bicycle:pump=no",
+ "service:bicycle:pump=yes",
+ "service:bicycle:tools=yes",
"service:bicycle:pump:operational_status=broken"
]
},
- "then": "pin:#88d32c;./assets/layers/bike_repair_station/repair_station.svg"
+ "then": "pin:#88d32c;./assets/layers/bike_repair_station/repair_station_broken_pump.svg"
},
{
"if": {
@@ -753,6 +802,15 @@
{
"if": "operator=De Fietsambassade Gent",
"then": "./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg"
+ },
+ {
+ "if": {
+ "or": [
+ "access=no",
+ "access=private"
+ ]
+ },
+ "then": "invalid"
}
],
"iconSize": {
diff --git a/assets/layers/bike_repair_station/repair_station_broken_pump.svg b/assets/layers/bike_repair_station/repair_station_broken_pump.svg
new file mode 100644
index 000000000..e456c1271
--- /dev/null
+++ b/assets/layers/bike_repair_station/repair_station_broken_pump.svg
@@ -0,0 +1,103 @@
+
+
diff --git a/assets/layers/bike_repair_station/repair_station_pump.svg b/assets/layers/bike_repair_station/repair_station_pump.svg
index 086661f1f..0e650d0ef 100644
--- a/assets/layers/bike_repair_station/repair_station_pump.svg
+++ b/assets/layers/bike_repair_station/repair_station_pump.svg
@@ -9,9 +9,10 @@
inkscape:version="1.1.1 (1:1.1+202109281949+c3084ef5ed)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
+
+ transform="matrix(0.73612812,0,0,0.73612812,-7.5123741,22.302095)">
+ transform="matrix(0.60143782,0,0,0.60039443,97.037882,63.253387)">
{network}",
"nl": "Maakt deel uit van het {network}-netwerk",
- "de": "Teil des Netzwerks {network}"
+ "de": "Teil des Netzwerks {network}",
+ "es": "Parte de la red {network}"
},
"question": {
"en": "Is this charging station part of a network?",
"nl": "Is dit oplaadpunt deel van een groter netwerk?",
- "de": "Ist diese Ladestation Teil eines Netzwerks?"
+ "de": "Ist diese Ladestation Teil eines Netzwerks?",
+ "es": "¿Esta estación de carga forma parte de una red?"
},
"freeform": {
"key": "network"
@@ -3204,7 +3216,8 @@
"then": {
"en": "Not part of a bigger network",
"nl": "Maakt geen deel uit van een groter netwerk",
- "de": "Nicht Teil eines größeren Netzwerks"
+ "de": "Nicht Teil eines größeren Netzwerks",
+ "es": "No forma parte de una red mayor"
},
"hideInAnswer": true
},
diff --git a/assets/layers/cycleways_and_roads/cycleways_and_roads.json b/assets/layers/cycleways_and_roads/cycleways_and_roads.json
index e0812d68f..61093a5a4 100644
--- a/assets/layers/cycleways_and_roads/cycleways_and_roads.json
+++ b/assets/layers/cycleways_and_roads/cycleways_and_roads.json
@@ -692,7 +692,8 @@
"then": {
"en": "Usable for thin rollers: rollerblade, skateboard",
"de": "Geeignet für dünne Rollen: Rollerblades, Skateboard",
- "id": "Dapat digunakan untuk roller tipis: rollerblade, skateboard"
+ "id": "Dapat digunakan untuk roller tipis: rollerblade, skateboard",
+ "nl": "Bruikbaar voor kleine, harde wielen: rollerblade, skateboard"
}
},
{
@@ -700,7 +701,8 @@
"then": {
"en": "Usable for thin wheels: racing bike",
"de": "Geeignet für dünne Reifen: Rennrad",
- "id": "Dapat digunakan untuk roda tipis: sepeda balap"
+ "id": "Dapat digunakan untuk roda tipis: sepeda balap",
+ "nl": "Bruikbaar voor smalle wielen: racefiets"
}
},
{
@@ -708,7 +710,8 @@
"then": {
"en": "Usable for normal wheels: city bike, wheelchair, scooter",
"de": "Geeignet für normale Reifen: Fahrrad, Rollstuhl, Scooter",
- "id": "Dapat digunakan untuk roda normal: sepeda kota, kursi roda, skuter"
+ "id": "Dapat digunakan untuk roda normal: sepeda kota, kursi roda, skuter",
+ "nl": "Bruikbaar voor normale wielen: stadsfiets, rolwagen, step"
}
},
{
@@ -716,14 +719,16 @@
"then": {
"en": "Usable for robust wheels: trekking bike, car, rickshaw",
"de": "Geeignet für breite Reifen: Trekkingfahrrad, Auto, Rikscha",
- "id": "Dapat digunakan untuk roda yang kuat: sepeda trekking, mobil, becak"
+ "id": "Dapat digunakan untuk roda yang kuat: sepeda trekking, mobil, becak",
+ "nl": "Bruikbaar voor robuuste wielen: trekking fiets, auto, rickshaw"
}
},
{
"if": "smoothness=very_bad",
"then": {
"en": "Usable for vehicles with high clearance: light duty off-road vehicle",
- "de": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen"
+ "de": "Geeignet für Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen",
+ "nl": "Bruikbaar voor terreinvoertuigen: 4x4 personenwagens"
}
},
{
@@ -731,7 +736,8 @@
"then": {
"en": "Usable for off-road vehicles: heavy duty off-road vehicle",
"de": "Geeignet für Geländefahrzeuge: schwerer Geländewagen",
- "id": "Dapat digunakan untuk kendaraan off-road: kendaraan off-road berat"
+ "id": "Dapat digunakan untuk kendaraan off-road: kendaraan off-road berat",
+ "nl": "Bruikbaar voor terreinvoertuigen: zware 4x4 voertuigen"
}
},
{
@@ -739,14 +745,16 @@
"then": {
"en": "Usable for specialized off-road vehicles: tractor, ATV",
"de": "Geeignet für spezielle Geländewagen: Traktor, ATV",
- "id": "Dapat digunakan untuk kendaraan off-road khusus: traktor, ATV"
+ "id": "Dapat digunakan untuk kendaraan off-road khusus: traktor, ATV",
+ "nl": "Bruikbaar voor uitzonderlijke terreinvoertuigen: tractor, ATV"
}
},
{
"if": "smoothness=impassable",
"then": {
"en": "Impassable / No wheeled vehicle",
- "de": "Unpassierbar / Keine bereiften Fahrzeuge"
+ "de": "Unpassierbar / Keine bereiften Fahrzeuge",
+ "nl": "Onmogelijk om met een voertuig met wielen te passeren"
}
}
],
@@ -1339,6 +1347,7 @@
}
],
"description": {
- "en": "All infrastructure that someone can cycle over, accompanied with questions about this infrastructure\""
+ "en": "All infrastructure that someone can cycle over, accompanied with questions about this infrastructure\"",
+ "nl": "Alle infrastructuur waar je over kunt fietsen, met vragen over die infrastructuur"
}
}
\ No newline at end of file
diff --git a/assets/layers/defibrillator/defibrillator.json b/assets/layers/defibrillator/defibrillator.json
index 19e95d3ff..fa984a091 100644
--- a/assets/layers/defibrillator/defibrillator.json
+++ b/assets/layers/defibrillator/defibrillator.json
@@ -241,7 +241,8 @@
{
"if": "defibrillator~*",
"then": {
- "en": "This is a special type of defibrillator: {defibrillator}"
+ "en": "This is a special type of defibrillator: {defibrillator}",
+ "nl": "Dit is een speciaal type defibrillator: {defibrillator}"
},
"hideInAnswer": true
}
@@ -581,6 +582,7 @@
}
],
"description": {
- "en": "A layer showing defibrillators which can be used in case of emergency. This contains public defibrillators, but also defibrillators which might need staff to fetch the actual device"
+ "en": "A layer showing defibrillators which can be used in case of emergency. This contains public defibrillators, but also defibrillators which might need staff to fetch the actual device",
+ "nl": "Een laag die defibrillatoren toont die je kan gebruiken bij noodgevallen. Dit omvat zowel publiek beschikbare toestellen als defibrillatoren waarvoor het toestel enkel door personeel aangeboden kan worden"
}
}
\ No newline at end of file
diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json
index aaf36e0d1..c13737de1 100644
--- a/assets/layers/entrance/entrance.json
+++ b/assets/layers/entrance/entrance.json
@@ -1,10 +1,12 @@
{
"id": "entrance",
"name": {
- "en": "Entrance"
+ "en": "Entrance",
+ "nl": "Toegang"
},
"description": {
- "en": "A layer showing entrances and offering capabilities to survey some advanced data which is important for e.g. wheelchair users (but also bicycle users, people who want to deliver, ...)"
+ "en": "A layer showing entrances and offering capabilities to survey some advanced data which is important for e.g. wheelchair users (but also bicycle users, people who want to deliver, ...)",
+ "nl": "Een laag met ingangen (van gebouwen etc.) waarmee je details kunt aanvullen die belangrijk zijn voor bijvoorbeeld rolstoelgebruikers (en fietsers, leveranciers, ...)"
},
"source": {
"osmTags": {
@@ -31,7 +33,8 @@
{
"if": "entrance=yes",
"then": {
- "en": "No specific entrance type is known"
+ "en": "No specific entrance type is known",
+ "nl": "Het specifieke type ingang is onbekend"
},
"hideInAnswer": true
},
@@ -128,13 +131,15 @@
{
"id": "Door_type",
"question": {
- "en": "What is the type of this door? Wether or not the door is automated is asked in the next question"
+ "en": "What is the type of this door? Wether or not the door is automated is asked in the next question",
+ "nl": "Om wat voor deur gaat het? Of de deur al of niet automatisch werkt, vragen we hierna "
},
"mappings": [
{
"if": "door=yes",
"then": {
- "en": "The door type is not known"
+ "en": "The door type is not known",
+ "nl": "Het type deur is onbekend"
},
"hideInAnswer": true
},
@@ -169,7 +174,8 @@
{
"if": "door=no",
"then": {
- "en": "This is an entrance without a physical door"
+ "en": "This is an entrance without a physical door",
+ "nl": "Er is een toegang zonder een deur"
},
"hideInAnswer": "entrance="
}
diff --git a/assets/layers/gps_track/gps_track.json b/assets/layers/gps_track/gps_track.json
index ff7a9f4c2..596c6ca80 100644
--- a/assets/layers/gps_track/gps_track.json
+++ b/assets/layers/gps_track/gps_track.json
@@ -34,5 +34,6 @@
"width": 3,
"color": "#bb000077"
}
- ]
+ ],
+ "syncSelection": "global"
}
\ No newline at end of file
diff --git a/assets/layers/observation_tower/observation_tower.json b/assets/layers/observation_tower/observation_tower.json
index 5d70946de..662fd09ee 100644
--- a/assets/layers/observation_tower/observation_tower.json
+++ b/assets/layers/observation_tower/observation_tower.json
@@ -80,7 +80,8 @@
"id": "access",
"question": {
"en": "Can this tower be visited?",
- "nl": "Is deze toren publiek toegankelijk?"
+ "nl": "Is deze toren publiek toegankelijk?",
+ "es": "¿Se puede visitar esta torre?"
},
"mappings": [
{
diff --git a/assets/layers/picnic_table/picnic_table.json b/assets/layers/picnic_table/picnic_table.json
index bc29b1eae..03082ea33 100644
--- a/assets/layers/picnic_table/picnic_table.json
+++ b/assets/layers/picnic_table/picnic_table.json
@@ -2,7 +2,7 @@
"id": "picnic_table",
"name": {
"en": "Picnic tables",
- "nl": "Picnictafels",
+ "nl": "Picknicktafels",
"it": "Tavoli da picnic",
"ru": "Столы для пикника",
"fr": "Tables de pique-nique",
@@ -15,7 +15,7 @@
"title": {
"render": {
"en": "Picnic table",
- "nl": "Picnictafel",
+ "nl": "Picknicktafel",
"it": "Tavolo da picnic",
"ru": "Стол для пикника",
"fr": "Table de pique-nique",
@@ -24,7 +24,7 @@
},
"description": {
"en": "The layer showing picnic tables",
- "nl": "Deze laag toont picnictafels",
+ "nl": "Deze laag toont picknicktafels",
"it": "Il livello che mostra i tavoli da picnic",
"fr": "La couche montrant les tables de pique-nique",
"ru": "Слой, отображающий столы для пикника",
@@ -35,7 +35,7 @@
{
"question": {
"en": "What material is this picnic table made of?",
- "nl": "Van welk materiaal is deze picnictafel gemaakt?",
+ "nl": "Van welk materiaal is deze picknicktafel gemaakt?",
"it": "Di che materiale è fatto questo tavolo da picnic?",
"de": "Aus welchem Material besteht dieser Picknicktisch?",
"ru": "Из чего изготовлен этот стол для пикника?",
@@ -43,7 +43,7 @@
},
"render": {
"en": "This picnic table is made of {material}",
- "nl": "Deze picnictafel is gemaakt van {material}",
+ "nl": "Deze picknicktafel is gemaakt van {material}",
"it": "Questo tavolo da picnic è fatto di {material}",
"de": "Dieser Picknicktisch besteht aus {material}",
"ru": "Этот стол для пикника сделан из {material}",
@@ -57,7 +57,7 @@
"if": "material=wood",
"then": {
"en": "This is a wooden picnic table",
- "nl": "Deze picnictafel is gemaakt uit hout",
+ "nl": "Deze picknicktafel is gemaakt uit hout",
"it": "È un tavolo da picnic in legno",
"ru": "Это деревянный стол для пикника",
"de": "Dies ist ein Picknicktisch aus Holz",
@@ -68,7 +68,7 @@
"if": "material=concrete",
"then": {
"en": "This is a concrete picnic table",
- "nl": "Deze picnictafel is gemaakt uit beton",
+ "nl": "Deze picknicktafel is gemaakt uit beton",
"it": "È un tavolo da picnic in cemento",
"ru": "Это бетонный стол для пикника",
"de": "Dies ist ein Picknicktisch aus Beton",
diff --git a/assets/layoutconfigmeta.json b/assets/layoutconfigmeta.json
index 1e255a857..40abedbc8 100644
--- a/assets/layoutconfigmeta.json
+++ b/assets/layoutconfigmeta.json
@@ -205,6 +205,7 @@
"type": "object",
"properties": {
"osmTags": {
+ "description": "Every source must set which tags have to be present in order to load the given layer.",
"anyOf": [
{
"$ref": "#/definitions/AndOrTagConfigJson"
@@ -214,8 +215,9 @@
}
]
},
- "overpassScript": {
- "type": "string"
+ "maxCacheAge": {
+ "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
+ "type": "number"
}
},
"required": [
@@ -225,9 +227,8 @@
{
"type": "object",
"properties": {
- "maxCacheAge": {
- "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
- "type": "number"
+ "overpassScript": {
+ "type": "string"
}
}
}
@@ -239,6 +240,7 @@
"type": "object",
"properties": {
"osmTags": {
+ "description": "Every source must set which tags have to be present in order to load the given layer.",
"anyOf": [
{
"$ref": "#/definitions/AndOrTagConfigJson"
@@ -248,32 +250,42 @@
}
]
},
- "geoJson": {
- "type": "string"
- },
- "geoJsonZoomLevel": {
+ "maxCacheAge": {
+ "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
"type": "number"
- },
- "isOsmCache": {
- "type": "boolean"
- },
- "mercatorCrs": {
- "type": "boolean"
}
},
"required": [
- "geoJson",
"osmTags"
]
},
{
"type": "object",
"properties": {
- "maxCacheAge": {
- "description": "The maximum amount of seconds that a tile is allowed to linger in the cache",
+ "geoJson": {
+ "description": "The actual source of the data to load, if loaded via geojson.\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}",
+ "type": "string"
+ },
+ "geoJsonZoomLevel": {
+ "description": "To load a tiled geojson layer, set the zoomlevel of the tiles",
"type": "number"
+ },
+ "isOsmCache": {
+ "description": "Indicates that the upstream geojson data is OSM-derived.\nUseful for e.g. merging or for scripts generating this cache",
+ "type": "boolean"
+ },
+ "mercatorCrs": {
+ "description": "Some API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this",
+ "type": "boolean"
+ },
+ "idKey": {
+ "description": "Some API's have an id-field, but give it a different name.\nSetting this key will rename this field into 'id'",
+ "type": "string"
}
- }
+ },
+ "required": [
+ "geoJson"
+ ]
}
]
}
@@ -328,10 +340,17 @@
"path": [
"layers",
"isShown",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "isShown",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -589,10 +608,17 @@
"path": [
"layers",
"title",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "title",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -843,10 +869,17 @@
"path": [
"layers",
"titleIcons",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "titleIcons",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -1098,10 +1131,18 @@
"layers",
"mapRendering",
"icon",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "icon",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -1369,10 +1410,19 @@
"mapRendering",
"iconBadges",
"then",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "iconBadges",
+ "then",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -1642,10 +1692,18 @@
"layers",
"mapRendering",
"iconSize",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "iconSize",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -1898,10 +1956,18 @@
"layers",
"mapRendering",
"rotation",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "rotation",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -2154,10 +2220,18 @@
"layers",
"mapRendering",
"label",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "label",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -2417,10 +2491,18 @@
"layers",
"mapRendering",
"color",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "color",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -2676,10 +2758,18 @@
"layers",
"mapRendering",
"width",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "width",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -2932,10 +3022,18 @@
"layers",
"mapRendering",
"dashArray",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "dashArray",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -3188,10 +3286,18 @@
"layers",
"mapRendering",
"lineCap",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "lineCap",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -3448,10 +3554,18 @@
"layers",
"mapRendering",
"fill",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "fill",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -3704,10 +3818,18 @@
"layers",
"mapRendering",
"fillColor",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "fillColor",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -3960,10 +4082,18 @@
"layers",
"mapRendering",
"offset",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "mapRendering",
+ "offset",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -4350,10 +4480,17 @@
"path": [
"layers",
"tagRenderings",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "tagRenderings",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -4574,10 +4711,18 @@
"layers",
"tagRenderings",
"renderings",
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "layers",
+ "tagRenderings",
+ "renderings",
+ "question"
+ ]
+ },
{
"path": [
"layers",
@@ -4784,7 +4929,7 @@
{
"type": "array",
"items": {
- "$ref": "#/definitions/default"
+ "$ref": "#/definitions/default_1"
}
},
{
@@ -4893,7 +5038,7 @@
],
"type": [
{
- "$ref": "#/definitions/default_2"
+ "$ref": "#/definitions/default_3"
},
{
"type": "boolean"
@@ -5120,12 +5265,81 @@
"type": "number"
}
}
- },
- {
- "type": "boolean"
}
]
},
+ {
+ "path": [
+ "enableUserBadge"
+ ],
+ "type": "boolean"
+ },
+ {
+ "path": [
+ "enableShareScreen"
+ ],
+ "type": "boolean"
+ },
+ {
+ "path": [
+ "enableMoreQuests"
+ ],
+ "type": "boolean"
+ },
+ {
+ "path": [
+ "enableLayers"
+ ],
+ "type": "boolean"
+ },
+ {
+ "path": [
+ "enableSearch"
+ ],
+ "type": "boolean"
+ },
+ {
+ "path": [
+ "enableAddNewPoints"
+ ],
+ "type": "boolean"
+ },
+ {
+ "path": [
+ "enableGeolocation"
+ ],
+ "type": "boolean"
+ },
+ {
+ "path": [
+ "enableBackgroundLayerSelection"
+ ],
+ "type": "boolean"
+ },
+ {
+ "path": [
+ "enableShowAllQuestions"
+ ],
+ "type": "boolean"
+ },
+ {
+ "path": [
+ "enableDownload"
+ ],
+ "type": "boolean"
+ },
+ {
+ "path": [
+ "enablePdfDownload"
+ ],
+ "type": "boolean"
+ },
+ {
+ "path": [
+ "enableNoteImports"
+ ],
+ "type": "boolean"
+ },
{
"path": [
"overpassUrl"
diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json
index 1628a6b94..47eda4678 100644
--- a/assets/svg/license_info.json
+++ b/assets/svg/license_info.json
@@ -1230,9 +1230,7 @@
{
"path": "teardrop_with_hole_green.svg",
"license": "CC0",
- "authors": [
- "Pieter Vander Vennet"
- ],
+ "authors": [],
"sources": []
},
{
diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json
index 4b11be1a3..18eff119c 100644
--- a/assets/tagRenderings/questions.json
+++ b/assets/tagRenderings/questions.json
@@ -370,7 +370,8 @@
"zh_Hant": "允許犬隻",
"id": "Anjing diperbolehkan",
"pl": "Psy dozwolone",
- "ja": "ペット同伴可能"
+ "ja": "ペット同伴可能",
+ "es": "Se permiten perros"
}
},
{
@@ -391,7 +392,8 @@
"pl": "Psy nie dozwolone",
"ru": "С собаками не впускают",
"id": "Anjing tidak diperbolehkan",
- "ja": "ペット同伴不可"
+ "ja": "ペット同伴不可",
+ "es": "No se permiten perros"
}
},
{
@@ -452,7 +454,8 @@
"ca": "Hi ha quelcom rellevant que no t'hem preguntat? Afegeix-ho aquí. No repeteixis informació que ja hi és",
"sv": "Finns det fortfarande någonting relevant som du inte kunde ge i de föregående frågorna? Lägg till det här. Repetera inte redan angivna fakta",
"id": "Apakah masih ada sesuatu yang relevan yang tidak dapat Anda berikan dalam pertanyaan sebelumnya? Tambahkan di sini. Jangan ulangi fakta yang sudah dinyatakan ",
- "ja": "前の質問で伝えきれなかった関連事項がまだありますか?ここに追加してください。 今後表示しない"
+ "ja": "前の質問で伝えきれなかった関連事項がまだありますか?ここに追加してください。 今後表示しない",
+ "es": "¿Aún hay algo relevante que no ha encajado en las preguntas anteriores? Compártalo aquí. No repita datos ya expresados"
},
"render": "{description}",
"freeform": {
@@ -662,7 +665,8 @@
"then": {
"en": "Payment is done using a dedicated app",
"nl": "Betalen via een app van het netwerk",
- "hu": "Fizetés erre a célra szolgáló alkalmazással"
+ "hu": "Fizetés erre a célra szolgáló alkalmazással",
+ "zh_Hant": "使用專用應用程式付款"
}
},
{
@@ -672,7 +676,8 @@
"then": {
"en": "Payment is done using a membership card",
"nl": "Betalen via een lidkaart van het netwerk",
- "hu": "Fizetési tagsági kártyával"
+ "hu": "Fizetési tagsági kártyával",
+ "zh_Hant": "使用會員卡付款"
}
}
]
@@ -817,7 +822,8 @@
"if": "level=-1",
"then": {
"en": "Located on the first basement level",
- "nl": "Bevindt zich in de eerste kelderverdieping"
+ "nl": "Bevindt zich in de eerste kelderverdieping",
+ "zh_Hant": "位於地下一樓"
}
}
]
diff --git a/assets/tagrenderingconfigmeta.json b/assets/tagrenderingconfigmeta.json
index df0942ef0..fd9483b82 100644
--- a/assets/tagrenderingconfigmeta.json
+++ b/assets/tagrenderingconfigmeta.json
@@ -23,10 +23,15 @@
},
{
"path": [
- "question"
+ "render"
],
"typeHint": "rendered"
},
+ {
+ "path": [
+ "question"
+ ]
+ },
{
"path": [
"condition"
diff --git a/assets/themes/climbing/climbing.json b/assets/themes/climbing/climbing.json
index 6aa1105fb..fc948705d 100644
--- a/assets/themes/climbing/climbing.json
+++ b/assets/themes/climbing/climbing.json
@@ -107,7 +107,7 @@
"description": {
"de": "Ein Kletterverein oder eine Organisation",
"nl": "Een klimclub of organisatie",
- "en": "A climbing club or organisations",
+ "en": "A climbing club or organisation",
"ja": "クライミングクラブや団体",
"zh_Hant": "攀岩社團或組織",
"nb_NO": "En klatreklubb eller organisasjoner",
@@ -199,7 +199,7 @@
"description": {
"de": "Eine Organisation, welche sich mit dem Klettern beschäftigt",
"nl": "Een VZW die werkt rond klimmen",
- "en": "A NGO working around climbing",
+ "en": "An NGO working around climbing",
"ja": "登山に関わるNGO",
"fr": "Une association d’escalade",
"it": "Un’associazione che ha a che fare con l’arrampicata",
@@ -459,7 +459,7 @@
},
{
"question": {
- "en": "What is the difficulty of this climbing route according to the french/belgian system?",
+ "en": "What is the grade of this climbing route according to the french/belgian system?",
"nl": "Hoe moeilijk is deze klimroute volgens het Franse/Belgische systeem?",
"it": "Qual è la difficoltà di questa via di arrampicata nel sistema francese/belga?",
"fr": "Quelle est la difficulté de cette voie selon le système franco-belge ?",
@@ -467,7 +467,7 @@
},
"render": {
"de": "Die Schwierigkeit ist {climbing:grade:french} entsprechend des französisch/belgischen Systems",
- "en": "The difficulty is {climbing:grade:french} according to the french/belgian system",
+ "en": "The grade is {climbing:grade:french} according to the french/belgian system",
"nl": "De klimmoeilijkheid is {climbing:grade:french} volgens het Franse/Belgische systeem",
"ja": "フランス/ベルギーのランク評価システムによると、{climbing:grade:french}の困難度です",
"it": "Il grado di difficoltà è {climbing:grade:french} nel sistema francese/belga",
@@ -480,7 +480,7 @@
},
{
"question": {
- "en": "How much bolts does this route have before reaching the moulinette?",
+ "en": "How many bolts does this route have before reaching the anchor?",
"fr": "Combien de prises cette voie possède avant d’atteindre la moulinette ?",
"de": "Wie viele Haken gibt es auf dieser Kletterroute bevor der Umlenker bzw. Standhaken erreicht ist?",
"it": "Quanti bulloni sono presenti in questo percorso prima di arrivare alla moulinette?"
@@ -698,7 +698,7 @@
},
{
"render": {
- "en": "
Difficulties overview
{histogram(_difficulty_hist)}",
+ "en": "
Grades overview
{histogram(_difficulty_hist)}",
"fr": "
Résumé des difficultés
{histogram(_difficulty_hist)}",
"de": "
Schwierigkeitsübersicht
{histogram(_difficulty_hist)}",
"it": "
Riassunto delle difficoltà
{histogram(_difficulty_hist)}"
@@ -1300,7 +1300,7 @@
"id": "Difficulty-min",
"question": {
"de": "Welche Schwierigkeit hat hier die leichteste Route (französisch/belgisches System)?",
- "en": "What is the level of the easiest route here, accoring to the french classification system?",
+ "en": "What is the grade of the easiest route here, according to the french classification system?",
"nl": "Wat is het niveau van de makkelijkste route, volgens het Franse classificatiesysteem?",
"ja": "ここで一番簡単なルートのレベルは、フランスのランク評価システムで何ですか?",
"fr": "Quel est le niveau de la voie la plus simple selon la classification franco-belge ?",
@@ -1308,7 +1308,7 @@
},
"render": {
"de": "Die leichteste Route hat hier die Schwierigkeit {climbing:grade:french:min} (französisch/belgisches System)",
- "en": "The minimal difficulty is {climbing:grade:french:min} according to the french/belgian system",
+ "en": "The lowest grade is {climbing:grade:french:min} according to the french/belgian system",
"nl": "De minimale klimmoeilijkheid is {climbing:grade:french:min} volgens het Franse/Belgische systeem",
"ja": "フランス/ベルギーのランク評価システムでは、最小の難易度は{climbing:grade:french:min}です",
"fr": "La difficulté minimale est {climbing:grade:french:min} selon la classification franco-belge",
@@ -1335,7 +1335,7 @@
"id": "Difficulty-max",
"question": {
"de": "Welche Schwierigkeit hat hier die schwerste Route (französisch/belgisches System)?",
- "en": "What is the level of the most difficult route here, accoring to the french classification system?",
+ "en": "What is the highest grade route here, according to the french classification system?",
"nl": "Wat is het niveau van de moeilijkste route, volgens het Franse classificatiesysteem?",
"ja": "フランスのランク評価によると、ここで一番難しいルートのレベルはどれくらいですか?",
"fr": "Quel est le niveau de la voie la plus difficile selon la classification franco-belge ?",
@@ -1343,7 +1343,7 @@
},
"render": {
"de": "Die schwerste Route hat hier die Schwierigkeit {climbing:grade:french:max} (französisch/belgisches System)",
- "en": "The maximal difficulty is {climbing:grade:french:max} according to the french/belgian system",
+ "en": "The highest grade is {climbing:grade:french:max} according to the french/belgian system",
"nl": "De maximale klimmoeilijkheid is {climbing:grade:french:max} volgens het Franse/Belgische systeem",
"ja": "フランス/ベルギーのランク評価システムでは、最大の難易度は{climbing:grade:french:max}です",
"fr": "La difficulté maximale est {climbing:grade:french:max} selon la classification franco-belge",
diff --git a/assets/themes/cyclenodes/cyclenodes.json b/assets/themes/cyclenodes/cyclenodes.json
index c3980cd8b..1d82601d2 100644
--- a/assets/themes/cyclenodes/cyclenodes.json
+++ b/assets/themes/cyclenodes/cyclenodes.json
@@ -127,25 +127,6 @@
"de": "Knotenpunkt {rcn_ref}"
}
},
- "presets": [
- {
- "title": {
- "de": "Knotenpunkt"
- },
- "tags": [
- "network:type=node_network"
- ]
- },
- {
- "title": {
- "de": "Knotenpunkt im Netzwerk Spree-Neiße"
- },
- "tags": [
- "network:type=node_network",
- "cycle_network=Knotenpunktwegweisung Spree-Neiße"
- ]
- }
- ],
"tagRenderings": [
{
"question": {
diff --git a/assets/themes/etymology.json b/assets/themes/etymology.json
index ceff10d4a..bd76bf8a3 100644
--- a/assets/themes/etymology.json
+++ b/assets/themes/etymology.json
@@ -43,7 +43,7 @@
"builtin": "etymology",
"override": {
"id": "streets_without_etymology",
- "name": {
+ "=name": {
"en": "Streets without etymology information",
"nl": "Straten zonder etymologische informatie",
"de": "Straßen ohne Informationen zur Namensherkunft",
@@ -67,7 +67,7 @@
"builtin": "etymology",
"override": {
"id": "parks_and_forests_without_etymology",
- "name": {
+ "=name": {
"en": "Parks and forests without etymology information",
"nl": "Parken en bossen zonder etymologische informatie",
"de": "Parks und Waldflächen ohne Informationen zur Namensherkunft",
@@ -90,6 +90,31 @@
}
}
}
+ },
+ {
+ "builtin": "etymology",
+ "override": {
+ "id": "education_institutions_without_etymology",
+ "=name": {
+ "en": "Education institutions without etymology information"
+ },
+ "minzoom": 18,
+ "source": {
+ "osmTags": {
+ "and": [
+ "name~*",
+ {
+ "or": [
+ "amenity=school",
+ "amenity=kindergarten",
+ "amenity=university",
+ "amenity=college"
+ ]
+ }
+ ]
+ }
+ }
+ }
}
],
"hideFromOverview": false
diff --git a/assets/themes/fritures/fritures.json b/assets/themes/fritures/fritures.json
index ce93ccc89..403422bf7 100644
--- a/assets/themes/fritures/fritures.json
+++ b/assets/themes/fritures/fritures.json
@@ -28,6 +28,7 @@
"it": "Friggitoria",
"hu": "Sültkrumplievő-hely"
},
+ "=presets": [],
"source": {
"=osmTags": {
"and": [
@@ -47,7 +48,8 @@
"builtin": "food",
"override": {
"minzoom": 19,
- "filter": null
+ "filter": null,
+ "name": null
}
}
]
diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
index c75bb9d46..d0108bdbf 100644
--- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json
+++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
@@ -285,7 +285,7 @@
},
{
"if": "theme=toerisme_vlaanderen",
- "then": "./assets/svg/teardrop_with_hole_green.svg"
+ "then": "./assets/themes/toerisme_vlaanderen/logo.svg"
},
{
"if": "theme=toilets",
diff --git a/assets/themes/natuurpunt/natuurpunt.json b/assets/themes/natuurpunt/natuurpunt.json
index 28663c6f8..c66a67d92 100644
--- a/assets/themes/natuurpunt/natuurpunt.json
+++ b/assets/themes/natuurpunt/natuurpunt.json
@@ -77,7 +77,8 @@
],
"=filter": {
"sameAs": "nature_reserve_centerpoints"
- }
+ },
+ "=presets": []
}
},
{
@@ -103,6 +104,11 @@
},
"presets": []
}
+ ],
+ "presets": [
+ {
+ "tags+": "operator=Natuurpunt"
+ }
]
}
},
@@ -193,6 +199,14 @@
"builtin": "birdhide",
"override": {
"minzoom": 14,
+ "presets": [
+ {
+ "tags+": "operator=Natuurpunt"
+ },
+ {
+ "tags+": "operator=Natuurpunt"
+ }
+ ],
"source": {
"geoJson": "https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/natuurpunt_cache/natuurpunt_{layer}_{z}_{x}_{y}.geojson",
"geoJsonZoomLevel": 12,
diff --git a/assets/themes/personal/personal.json b/assets/themes/personal/personal.json
index a795c88f8..c9e7d8d57 100644
--- a/assets/themes/personal/personal.json
+++ b/assets/themes/personal/personal.json
@@ -40,7 +40,9 @@
"#note": "The 'overpassMaxZoom' should be exactly the same as or less then the overrideAll",
"overpassMaxZoom": 15,
"overrideAll": {
- "minZoom": 16
+ "minZoom": 16,
+ "syncSelection": "theme",
+ "shownByDefault": false
},
"layers": []
}
\ No newline at end of file
diff --git a/assets/themes/toerisme_vlaanderen/license_info.json b/assets/themes/toerisme_vlaanderen/license_info.json
index 61362aaeb..0013ceba5 100644
--- a/assets/themes/toerisme_vlaanderen/license_info.json
+++ b/assets/themes/toerisme_vlaanderen/license_info.json
@@ -105,6 +105,12 @@
"https://www.toerismevlaanderen.be/"
]
},
+ {
+ "path": "logo.svg",
+ "license": "CC0",
+ "authors": [],
+ "sources": []
+ },
{
"path": "observation_platform.svg",
"license": "CC0",
diff --git a/assets/themes/toerisme_vlaanderen/logo.svg b/assets/themes/toerisme_vlaanderen/logo.svg
new file mode 100644
index 000000000..de59026a4
--- /dev/null
+++ b/assets/themes/toerisme_vlaanderen/logo.svg
@@ -0,0 +1,63 @@
+
+
diff --git a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json
index d9858479e..1040cfac4 100644
--- a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json
+++ b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json
@@ -19,7 +19,18 @@
"descriptionTail": {
"nl": "
Een initiatief van de 5 provinciale toeristische organisaties en Toerisme Vlaanderen
"
},
- "icon": "./assets/svg/teardrop_with_hole_green.svg",
+ "extraLink": {
+ "icon": "./assets/svg/pop-out.svg",
+ "href": "https://mapcomplete.osm.be/{theme}.html?lat={lat}&lon={lon}&z={zoom}&language={language}",
+ "newTab": true,
+ "requirements": [
+ "iframe"
+ ],
+ "text": {
+ "nl": "Open in volledig scherm"
+ }
+ },
+ "icon": "./assets/themes/toerisme_vlaanderen/logo.svg",
"startZoom": 8,
"startLat": 50.8536,
"startLon": 4.433,
@@ -169,10 +180,19 @@
}
]
},
- "badges": [
+ "iconBadges": [
{
"if": "service:bicycle:pump:operational_status=broken",
"then": "close:red"
+ },
+ {
+ "if": {
+ "or": [
+ "access=no",
+ "access=private"
+ ]
+ },
+ "then": "invalid"
}
]
}
diff --git a/assets/themes/uk_addresses/uk_addresses.json b/assets/themes/uk_addresses/uk_addresses.json
index c7ec66fd8..febb712fe 100644
--- a/assets/themes/uk_addresses/uk_addresses.json
+++ b/assets/themes/uk_addresses/uk_addresses.json
@@ -90,7 +90,7 @@
"isOsmCache": false
},
"name": "Addresses to check",
- "minzoom": 14,
+ "minzoom": 18,
"title": {
"render": {
"en": "This address needs adding"
@@ -139,6 +139,7 @@
"id": "to_handle",
"options": [
{
+ "default": true,
"question": "Only show non-matched objects",
"osmTags": {
"and": [
diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css
index 69d5dd456..c82407285 100644
--- a/css/index-tailwind-output.css
+++ b/css/index-tailwind-output.css
@@ -1052,6 +1052,10 @@ video {
height: 2.75rem;
}
+.h-6 {
+ height: 1.5rem;
+}
+
.h-32 {
height: 8rem;
}
@@ -1060,10 +1064,6 @@ video {
height: 4rem;
}
-.h-6 {
- height: 1.5rem;
-}
-
.h-4 {
height: 1rem;
}
@@ -1148,6 +1148,10 @@ video {
width: 2.75rem;
}
+.w-64 {
+ width: 16rem;
+}
+
.w-4 {
width: 1rem;
}
@@ -1505,10 +1509,6 @@ video {
padding: 1rem;
}
-.p-1\.5 {
- padding: 0.375rem;
-}
-
.p-1 {
padding: 0.25rem;
}
@@ -1521,6 +1521,10 @@ video {
padding: 0px;
}
+.p-1\.5 {
+ padding: 0.375rem;
+}
+
.p-0\.5 {
padding: 0.125rem;
}
@@ -2322,7 +2326,6 @@ li::marker {
max-width: calc(100vw - 5em);
width: 40em;
max-height: calc(100vh - 15em);
- overflow-y: auto;
background-color: var(--background-color);
color: var(--foreground-color);
}
diff --git a/index.css b/index.css
index ae59d013c..7a87c449d 100644
--- a/index.css
+++ b/index.css
@@ -497,7 +497,6 @@ li::marker {
max-width: calc(100vw - 5em);
width: 40em;
max-height: calc(100vh - 15em);
- overflow-y: auto;
background-color: var(--background-color);
color: var(--foreground-color);
}
diff --git a/langs/cs.json b/langs/cs.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/langs/cs.json
@@ -0,0 +1 @@
+{}
diff --git a/langs/en.json b/langs/en.json
index 9c6b98671..d9a239e90 100644
--- a/langs/en.json
+++ b/langs/en.json
@@ -355,7 +355,7 @@
"aboutOsm": {
"title": "What is OpenStreetMap?",
"intro": "OpenStreetMap is a shared, global database, built by volunteers. All geodata can be contributed to OpenStreetMap, as long as it can be verified on the ground. OpenStreetMap has grown to be a very broad and deep dataset as it contains data over thousands of categories of objects.An individual object might also have a ton of attributes, bringing a lot of nuance, e.g.:",
- "li0": "Streets have geometry, but might also have information about the maxspeed, surface, wether they are lit, their name, a link to Wikipedia, a link to what they are named after, which hiking-, cycle- and busroutes run over theme",
+ "li0": "Streets have geometry, but might also have information about the maxspeed, surface, wether they are lit, their name, a link to Wikipedia, a link to what they are named after, which hiking-, cycle- and busroutes run there, …",
"li1": "Shops and other amenities might have opening hours, a phone number, a link to the website, which payment methods are supported, what they sell, which services they offer, …",
"li2": "Toilets might have information about wheelchair accessibility, a changing table, if payment is needed, …",
"li3": "and much, much more…"
@@ -395,7 +395,7 @@
},
"survey": {
"title": "Survey possibilities",
- "intro": "
MapComplete is an easy to use survey tool. It is ideal to collect the necessary in a few clicks, both on desktop and on mobile. This data is contributed directly into OpenStreetMap.
We can setup a custom survey tool, asking precisely the data you need in a future-proof way.
Do you have a dataset that has to be (re)surveyed? This is the perfect moment to make the switch to OpenStreetMap.MapComplete can show your dataset and OpenStreetMap at the same time, making it easier to visit all the locations and to see what the community already contributed.
\n"
+ "intro": "
MapComplete is an easy to use survey tool. It is ideal to collect the necessary in a few clicks, both on desktop and on mobile. This data is contributed directly into OpenStreetMap.
We can setup a custom survey tool, asking precisely the data you need in a future-proof way.
Do you have a dataset that has to be (re)surveyed? This is the perfect moment to make the switch to OpenStreetMap. MapComplete can show your dataset and OpenStreetMap at the same time, making it easier to visit all the locations and to see what the community already contributed.
\n"
},
"internalUse": {
"title": "Using the data in internal processes",
@@ -432,13 +432,13 @@
"usecaseMapDifferentSources": {
"title": "Creating a map from different sources",
"intro": "
For example, one could make a map with all benches in some city, based on the benches known by OpenStreetMap. This printed map needs a clear statement that the map data is based on OpenStreetMap. Selling these maps is permitted.If the mapmaker notices that the benches are missing in some area and adds them on the printed map, the data on the missing benches are automatically open data too. This means that an OpenStreetMap-contributor is allowed to take the paper map and use it to add the missing benches back into OpenStreetMap.
This contributor also has the right to ask for the dataset of the missing benches, which should be provided too.
If the mapmaker notices that the benches are missing in some area and adds them on the printed map, the data on the missing benches are automatically open data too. This means that an OpenStreetMap-contributor is allowed to take the paper map and use it to add the missing benches back into OpenStreetMap. This contributor also has the right to ask for the dataset of the missing benches, which should be provided too.
Of course, a map with only benches can be boring. The mapmaker might also decide to add in a layer with shops, possibly sourced from another geodata provider under another license. This is permitted to, if the map clearly states that the benches are sourced from OSM (under ODBL) and the shops have a different source (eventually with an all rights reserved).
However, mixing two datasets into one undistinguishible layer might not be permitted. For example, the mapmaker migth find that OSM has excellent data on benches in one part of the city and the closed-source provider might have excellent data on benches in another part of the city, merging these datasets into one could be problematic:
",
- "li0": "the open license would require the modifications to be openly republished...",
- "li1": "...whereas the all-rights-reserved license would prohibit this.",
+ "li0": "the open license would require the modifications to be openly republished…",
+ "li1": "…whereas the all-rights-reserved license would prohibit this.",
"outro": "As a result, this kind of mixing is not allowed"
},
"usecaseGatheringOpenData": {
"title": "Gathering open data",
- "intro": "MapComplete is an excellent way to create Open Data, also for governments. By default, this data will be freely redistributable under the ODbL. However, if there is a requirement to publish the gathered data under a public domain-license (where all rights are granted to the public and no attribution is required), the ODbL is too restrictive. In this case, one can ask the contributors to add data as Public Domain (e.g. by informing them in the mapcomplete theme). "
+ "intro": "MapComplete is an excellent way to create Open Data, also for governments. By default, this data will be freely redistributable under the ODbL. However, if there is a requirement to publish the gathered data under a public domain-license (where all rights are granted to the public and no attribution is required), the ODbL is too restrictive. In this case, one can ask the contributors to add data as Public Domain (e.g. by informing them in the mapcomplete theme)."
}
}
}
diff --git a/langs/es.json b/langs/es.json
index 0b1b46dd8..aca5e1e66 100644
--- a/langs/es.json
+++ b/langs/es.json
@@ -1,167 +1,182 @@
{
- "image": {
- "addPicture": "Añadir foto",
- "uploadingPicture": "Subiendo tu imagen…",
- "uploadingMultiple": "Subiendo {count} de tus fotos…",
- "pleaseLogin": "Entra para subir una foto",
- "willBePublished": "Tu foto será publicada: ",
- "cco": "en dominio público",
- "ccbs": "bajo licencia CC-BY-SA",
- "ccb": "bajo licencia CC-BY",
- "uploadFailed": "No se pudo cargar la imagen. ¿Tienes Internet y se permiten API de terceros? El navegador Brave o UMatrix podría bloquearlas.",
- "respectPrivacy": "No fotografíes personas o matrículas. No subas datos de Google Maps, Google Streetview u otras fuentes protegidas por derechos de autor.",
- "uploadDone": "Tu imagen ha sido añadida. Gracias por ayudar.",
- "dontDelete": "Cancelar",
- "doDelete": "Borrar imagen",
- "isDeleted": "Borrada"
- },
- "centerMessage": {
- "loadingData": "Cargando datos…",
- "zoomIn": "Amplía para ver o editar los datos",
- "ready": "Hecho.",
- "retrying": "La carga de datos ha fallado. Volviéndolo a probar en {count} segundos…"
- },
- "index": {
- "#": "Estos textos son mostrados sobre los botones del tema cuando no hay un tema cargado",
- "pickTheme": "Elige un tema de abajo para empezar.",
- "intro": "MapComplete a un visor y editor de OpenStreetMap, que te muestra información sobre un tema específico.",
- "title": "Bienvenido a MapComplete"
- },
- "general": {
- "loginWithOpenStreetMap": "Entra en OpenStreetMap",
- "welcomeBack": "Has entrado, bienvenido.",
- "loginToStart": "Entra para contestar esta pregunta",
- "search": {
- "search": "Busca una ubicación",
- "searching": "Buscando…",
- "nothing": "Nada encontrado.",
- "error": "Alguna cosa no ha ido bien..."
+ "image": {
+ "addPicture": "Añadir foto",
+ "uploadingPicture": "Cargando la imagen…",
+ "uploadingMultiple": "Cargando {count} imágenes…",
+ "pleaseLogin": "Acceda para cargar una imagen",
+ "willBePublished": "La imagen se publicará ",
+ "cco": "en dominio público",
+ "ccbs": "bajo licencia CC-BY-SA",
+ "ccb": "bajo licencia CC-BY",
+ "uploadFailed": "No se pudo cargar la imagen. ¿Tiene Internet y se permiten las API de terceros? El navegador Brave o uMatrix podría bloquearlas.",
+ "respectPrivacy": "No fotografíe personas ni matrículas. No cargue datos de Google Maps, Google StreetView u otras fuentes protegidas por derechos de autor.",
+ "uploadDone": "Se ha añadido la imagen. Gracias por ayudar.",
+ "dontDelete": "Cancelar",
+ "doDelete": "Borrar imagen",
+ "isDeleted": "Borrada",
+ "uploadMultipleDone": "Se han añadido {count} imágenes. Gracias por ayudar."
},
- "returnToTheMap": "Volver al mapa",
- "save": "Guardar",
- "cancel": "Cancelar",
- "skip": "Saltar esta pregunta",
- "oneSkippedQuestion": "Has ignorado una pregunta",
- "skippedQuestions": "Has ignorado algunas preguntas",
- "number": "número",
- "osmLinkTooltip": "Mira este objeto en OpenStreetMap para ver historial y otras opciones de edición",
- "add": {
- "addNew": "Añadir {category} aquí",
- "title": "Quieres añadir un punto?",
- "intro": "Has marcado un lugar del que no conocemos los datos. ",
- "pleaseLogin": "`Por favor inicia sesión para añadir un nuevo punto",
- "zoomInFurther": "Acerca para añadir un punto.",
- "stillLoading": "Los datos se siguen cargando. Espera un poco antes de añadir ningún punto.",
- "confirmIntro": "
Añadir {title} aquí?
El punto que estás creando lo verá todo el mundo. Sólo añade cosas que realmente existan. Muchas aplicaciones usan estos datos.",
- "confirmButton": "Añadir una {category} aquí.
Tu contribución es visible para todos
",
- "openLayerControl": "Abrir el control de capas",
- "layerNotEnabled": "La capa {layer} no está habilitada. Hazlo para poder añadir un punto en esta capa"
+ "centerMessage": {
+ "loadingData": "Cargando datos…",
+ "zoomIn": "Amplía para ver o editar los datos",
+ "ready": "Hecho.",
+ "retrying": "La carga de datos ha fallado. Volviéndolo a probar en {count} segundos…"
},
- "pickLanguage": "Escoge idioma: ",
- "about": "Edita facilmente y añade puntos en OpenStreetMap de un tema concreto",
- "nameInlineQuestion": "{category}: Su nombre es $$$",
- "noNameCategory": "{category} sin nombre",
- "questions": {
- "phoneNumberOf": "Qué teléfono tiene {category}?",
- "phoneNumberIs": "El número de teléfono de {category} es {phone}",
- "websiteOf": "Cual es la página web de {category}?",
- "websiteIs": "Página web: {website}",
- "emailOf": "¿Qué dirección de correu tiene {category}?",
- "emailIs": "La dirección de correo de {category} es {email}"
+ "index": {
+ "#": "Estos textos son mostrados sobre los botones del tema cuando no hay un tema cargado",
+ "pickTheme": "Elige un tema de abajo para empezar.",
+ "intro": "MapComplete a un visor y editor de OpenStreetMap, que te muestra información sobre un tema específico.",
+ "title": "Le damos la bienvenida a MapComplete",
+ "featuredThemeTitle": "Esta semana destacamos"
},
- "openStreetMapIntro": "
Un mapa abierto
¿No sería genial si hubiera un solo mapa, que todos pudieran usar y editar libremente?¿Un solo lugar para almacenar toda la información geográfica? Entonces, todos esos sitios web con mapas diferentes, pequeños e incompatibles (que siempre están desactualizados) ya no serían necesarios.
OpenStreetMap es ese mapa. Los datos del mapa se pueden utilizar de forma gratuita (con atribución y publicación de cambios en esos datos). Además de eso, todos pueden agregar libremente nuevos datos y corregir errores. Este sitio web también usa OpenStreetMap. Todos los datos provienen de allí, y tus respuestas y correcciones también se añadirán allí.
Muchas personas y aplicaciones ya usan OpenStreetMap: Maps.me, OsmAnd, pero también los mapas de Facebook, Instagram, Apple y Bing son (en parte) impulsados por OpenStreetMap. Si cambias algo aquí, también se reflejará en esas aplicaciones, en su próxima actualización
",
- "sharescreen": {
- "intro": "
Comparte este mapa
Comparte este mapa copiando el enlace de debajo y enviándolo a amigos y familia:",
- "addToHomeScreen": "
Añadir a la pantalla de inicio
Puedes añadir esta web en la pantalla de inicio de tu smartphone para que se vea más nativo. Aprieta el botón 'añadir a inicio' en la barra de direcciones URL para hacerlo.",
- "embedIntro": "
Inclúyelo en tu página web
Incluye este mapa en tu página web. Te animamos a que lo hagas, no hace falta que pidas permiso. Es gratis, y siempre lo será. A más gente que lo use más valioso será.",
- "copiedToClipboard": "Enlace copiado en el portapapeles",
- "thanksForSharing": "Gracias por compartir",
- "editThisTheme": "Editar este reto",
- "editThemeDescription": "Añadir o cambiar preguntas de este reto",
- "fsUserbadge": "Activar el botón de entrada",
- "fsSearch": "Activar la barra de búsqueda",
- "fsWelcomeMessage": "Muestra el mensaje emergente de bienvenida y pestañas asociadas",
- "fsLayers": "Activar el control de capas",
- "fsLayerControlToggle": "Iniciar el control de capas avanzado",
- "fsAddNew": "Activar el botón de añadir nuevo PDI'",
- "fsGeolocation": "Activar el botón de 'geolocalízame' (només mòbil)",
- "fsIncludeCurrentBackgroundMap": "Incluir la opción de fondo actual {name}",
- "fsIncludeCurrentLayers": "Incluir las opciones de capa actual",
- "fsIncludeCurrentLocation": "Incluir localización actual"
+ "general": {
+ "loginWithOpenStreetMap": "Acceder con OpenStreetMap",
+ "welcomeBack": "Has entrado, bienvenido.",
+ "loginToStart": "Entra para contestar esta pregunta",
+ "search": {
+ "search": "Busca una ubicación",
+ "searching": "Buscando…",
+ "nothing": "Nada encontrado.",
+ "error": "Alguna cosa no ha ido bien..."
+ },
+ "returnToTheMap": "Volver al mapa",
+ "save": "Guardar",
+ "cancel": "Cancelar",
+ "skip": "Saltar esta pregunta",
+ "oneSkippedQuestion": "Has ignorado una pregunta",
+ "skippedQuestions": "Has ignorado algunas preguntas",
+ "number": "número",
+ "osmLinkTooltip": "Mira este objeto en OpenStreetMap para ver historial y otras opciones de edición",
+ "add": {
+ "addNew": "Añadir {category} aquí",
+ "title": "Quieres añadir un punto?",
+ "intro": "Has marcado un lugar del que no conocemos los datos. ",
+ "pleaseLogin": "`Por favor inicia sesión para añadir un nuevo punto",
+ "zoomInFurther": "Acerca para añadir un punto.",
+ "stillLoading": "Los datos se siguen cargando. Espera un poco antes de añadir ningún punto.",
+ "confirmIntro": "
Añadir {title} aquí?
El punto que estás creando lo verá todo el mundo. Sólo añade cosas que realmente existan. Muchas aplicaciones usan estos datos.",
+ "confirmButton": "Añadir una {category} aquí.
Tu contribución es visible para todos
",
+ "openLayerControl": "Abrir el control de capas",
+ "layerNotEnabled": "La capa {layer} no está habilitada. Hazlo para poder añadir un punto en esta capa"
+ },
+ "pickLanguage": "Escoge idioma: ",
+ "about": "Edita facilmente y añade puntos en OpenStreetMap de un tema concreto",
+ "nameInlineQuestion": "{category}: Su nombre es $$$",
+ "noNameCategory": "{category} sin nombre",
+ "questions": {
+ "phoneNumberOf": "Qué teléfono tiene {category}?",
+ "phoneNumberIs": "El número de teléfono de {category} es {phone}",
+ "websiteOf": "Cual es la página web de {category}?",
+ "websiteIs": "Página web: {website}",
+ "emailOf": "¿Qué dirección de correu tiene {category}?",
+ "emailIs": "La dirección de correo de {category} es {email}"
+ },
+ "openStreetMapIntro": "
Un mapa abierto
¿No sería genial si hubiera un solo mapa, que todos pudieran usar y editar libremente?¿Un solo lugar para almacenar toda la información geográfica? Entonces, todos esos sitios web con mapas diferentes, pequeños e incompatibles (que siempre están desactualizados) ya no serían necesarios.
OpenStreetMap es ese mapa. Los datos del mapa se pueden utilizar de forma gratuita (con atribución y publicación de cambios en esos datos). Además de eso, todos pueden agregar libremente nuevos datos y corregir errores. Este sitio web también usa OpenStreetMap. Todos los datos provienen de allí, y tus respuestas y correcciones también se añadirán allí.
Muchas personas y aplicaciones ya usan OpenStreetMap: Maps.me, OsmAnd, pero también los mapas de Facebook, Instagram, Apple y Bing son (en parte) impulsados por OpenStreetMap. Si cambias algo aquí, también se reflejará en esas aplicaciones, en su próxima actualización
",
+ "sharescreen": {
+ "intro": "
Comparte este mapa
Comparte este mapa copiando el enlace de debajo y enviándolo a amigos y familia:",
+ "addToHomeScreen": "
Añadir a la pantalla de inicio
Puedes añadir esta web en la pantalla de inicio de tu smartphone para que se vea más nativo. Aprieta el botón 'añadir a inicio' en la barra de direcciones URL para hacerlo.",
+ "embedIntro": "
Inclúyelo en tu página web
Incluye este mapa en tu página web. Te animamos a que lo hagas, no hace falta que pidas permiso. Es gratis, y siempre lo será. A más gente que lo use más valioso será.",
+ "copiedToClipboard": "Enlace copiado en el portapapeles",
+ "thanksForSharing": "Gracias por compartir",
+ "editThisTheme": "Editar este reto",
+ "editThemeDescription": "Añadir o cambiar preguntas de este reto",
+ "fsUserbadge": "Activar el botón de entrada",
+ "fsSearch": "Activar la barra de búsqueda",
+ "fsWelcomeMessage": "Muestra el mensaje emergente de bienvenida y pestañas asociadas",
+ "fsLayers": "Activar el control de capas",
+ "fsLayerControlToggle": "Iniciar el control de capas avanzado",
+ "fsAddNew": "Activar el botón de añadir nuevo PDI'",
+ "fsGeolocation": "Activar el botón de 'geolocalízame' (només mòbil)",
+ "fsIncludeCurrentBackgroundMap": "Incluir la opción de fondo actual {name}",
+ "fsIncludeCurrentLayers": "Incluir las opciones de capa actual",
+ "fsIncludeCurrentLocation": "Incluir localización actual"
+ },
+ "morescreen": {
+ "intro": "
Más peticiones
Te gusta captar datos? Hay más capas disponibles.",
+ "requestATheme": "Si quieres que te hagamos una petición propia , pídela aquí.",
+ "streetcomplete": "Otra aplicación similar es StreetComplete.",
+ "createYourOwnTheme": "Crea tu propia petición completa de MapComplete desde cero."
+ },
+ "readYourMessages": "Lee todos tus mensajes de OpenStreetMap antes de añadir nuevos puntos.",
+ "fewChangesBefore": "Contesta unas cuantas preguntas sobre puntos existentes antes de añadir nuevos.",
+ "goToInbox": "Abrir mensajes",
+ "getStartedLogin": "Entra en OpenStreetMap para empezar",
+ "getStartedNewAccount": " o crea una nueva cuenta",
+ "noTagsSelected": "No se han seleccionado etiquetas",
+ "backgroundMap": "Mapa de fondo",
+ "layerSelection": {
+ "zoomInToSeeThisLayer": "Amplía para ver esta capa",
+ "title": "Seleccionar capas"
+ },
+ "weekdays": {
+ "abbreviations": {
+ "monday": "Lun",
+ "tuesday": "Mar",
+ "wednesday": "Mie",
+ "thursday": "Jue",
+ "friday": "Vie",
+ "saturday": "Sab",
+ "sunday": "Dom"
+ },
+ "monday": "Lunes",
+ "tuesday": "Martes",
+ "wednesday": "Miércoles",
+ "thursday": "Jueves",
+ "friday": "Viernes",
+ "saturday": "Sábado",
+ "sunday": "Domingo"
+ },
+ "opening_hours": {
+ "open_during_ph": "Durante fiestas este servicio está",
+ "opensAt": "desde",
+ "openTill": "hasta",
+ "not_all_rules_parsed": "El horario de esta tienda es complejo. Las normas siguientes serán ignoradas en la entrada:",
+ "closed_until": "Cerrado hasta {date}",
+ "closed_permanently": "Cerrado - sin día de apertura conocido",
+ "ph_not_known": " ",
+ "ph_closed": "cerrado",
+ "ph_open": "abierto",
+ "open_24_7": "Abierto las 24 horas del día",
+ "error_loading": "Error: no se han podido visualizar esos horarios de apertura."
+ },
+ "attribution": {
+ "mapContributionsBy": "La información visible actual tiene ediciones hechas por {contributors}",
+ "iconAttribution": {
+ "title": "Iconos usados"
+ },
+ "themeBy": "Tema mantenido por {author}",
+ "attributionContent": "
Te gusta captar datos? Hay más capas disponibles.",
- "requestATheme": "Si quieres que te hagamos una petición propia , pídela aquí.",
- "streetcomplete": "Otra aplicación similar es StreetComplete.",
- "createYourOwnTheme": "Crea tu propia petición completa de MapComplete desde cero."
+ "favourite": {
+ "panelIntro": "
Tu interficie personal
Activa tus capas favoritas de todas las interficies oficiales",
+ "loginNeeded": "
Entrar
El diseño personalizado sólo está disponible para los usuarios de OpenstreetMap",
+ "reload": "Recargar datos"
},
- "readYourMessages": "Lee todos tus mensajes de OpenStreetMap antes de añadir nuevos puntos.",
- "fewChangesBefore": "Contesta unas cuantas preguntas sobre puntos existentes antes de añadir nuevos.",
- "goToInbox": "Abrir mensajes",
- "getStartedLogin": "Entra en OpenStreetMap para empezar",
- "getStartedNewAccount": " o crea una nueva cuenta",
- "noTagsSelected": "No se han seleccionado etiquetas",
- "backgroundMap": "Mapa de fondo",
- "layerSelection": {
- "zoomInToSeeThisLayer": "Amplía para ver esta capa",
- "title": "Seleccionar capas"
+ "reviews": {
+ "title": "{count} comentarios",
+ "title_singular": "Un comentario",
+ "name_required": "Se requiere un nombre para mostrar y crear comentarios",
+ "saved": "Reseña guardada. ¡Gracias por compartir!",
+ "saving_review": "Guardando…",
+ "no_rating": "Sin calificación dada",
+ "write_a_comment": "Deja una reseña…",
+ "no_reviews_yet": "Aún no hay reseñas. ¡Sé el primero en escribir una y ayuda a los datos abiertos y a los negocios!",
+ "plz_login": "Inicia sesión para dejar una reseña"
},
- "weekdays": {
- "abbreviations": {
- "monday": "Lun",
- "tuesday": "Mar",
- "wednesday": "Mie",
- "thursday": "Jue",
- "friday": "Vie",
- "saturday": "Sab",
- "sunday": "Dom"
- },
- "monday": "Lunes",
- "tuesday": "Martes",
- "wednesday": "Miércoles",
- "thursday": "Jueves",
- "friday": "Viernes",
- "saturday": "Sábado",
- "sunday": "Domingo"
+ "delete": {
+ "delete": "Eliminar",
+ "cancel": "Cancelar"
},
- "opening_hours": {
- "open_during_ph": "Durante fiestas este servicio está",
- "opensAt": "desde",
- "openTill": "hasta",
- "not_all_rules_parsed": "El horario de esta tienda es complejo. Las normas siguientes serán ignoradas en la entrada:",
- "closed_until": "Cerrado hasta {date}",
- "closed_permanently": "Cerrado - sin día de apertura conocido",
- "ph_not_known": " ",
- "ph_closed": "cerrado",
- "ph_open": "abierto",
- "open_24_7": "Abierto las 24 horas del día",
- "error_loading": "Error: no se han podido visualizar esos horarios de apertura."
- },
- "attribution": {
- "mapContributionsBy": "La información visible actual tiene ediciones hechas por {contributors}",
- "iconAttribution": {
- "title": "Iconos usados"
- },
- "themeBy": "Tema mantenido por {author}",
- "attributionContent": "
Estos son los temas generados por los usuarios que han sido visitados previamente."
- },
- "favourite": {
- "panelIntro": "
Tu interficie personal
Activa tus capas favoritas de todas las interficies oficiales",
- "loginNeeded": "
Entrar
El diseño personalizado sólo está disponible para los usuarios de OpenstreetMap",
- "reload": "Recargar datos"
- },
- "reviews": {
- "title": "{count} comentarios",
- "title_singular": "Un comentario",
- "name_required": "Se requiere un nombre para mostrar y crear comentarios",
- "saved": "Reseña guardada. ¡Gracias por compartir!",
- "saving_review": "Guardando…",
- "no_rating": "Sin calificación dada",
- "write_a_comment": "Deja una reseña…",
- "no_reviews_yet": "Aún no hay reseñas. ¡Sé el primero en escribir una y ayuda a los datos abiertos y a los negocios!",
- "plz_login": "Inicia sesión para dejar una reseña"
- }
+ "split": {
+ "cancel": "Cancelar",
+ "split": "Dividir"
+ }
}
diff --git a/langs/layers/cs.json b/langs/layers/cs.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/langs/layers/cs.json
@@ -0,0 +1 @@
+{}
diff --git a/langs/layers/en.json b/langs/layers/en.json
index 44e81bb2e..a86b57bf4 100644
--- a/langs/layers/en.json
+++ b/langs/layers/en.json
@@ -420,6 +420,15 @@
"bicycle_rental": {
"description": "Bicycle rental stations",
"name": "Bicycle rental",
+ "presets": {
+ "0": {
+ "description": "A manned shop which focuses on bicycle rental",
+ "title": "bicycle rental shop"
+ },
+ "1": {
+ "title": "bicycle rental"
+ }
+ },
"tagRenderings": {
"8": {
"renderings": {
@@ -795,6 +804,26 @@
},
"question": "Is the bike pump still operational?"
},
+ "access": {
+ "mappings": {
+ "0": {
+ "then": "Publicly accessible"
+ },
+ "1": {
+ "then": "Publicly accessible"
+ },
+ "2": {
+ "then": "Only for customers"
+ },
+ "3": {
+ "then": "Not accessible to the general public"
+ },
+ "4": {
+ "then": "Not accessible to the general public"
+ }
+ },
+ "question": "Who is allowed to use this repair station?"
+ },
"bike_repair_station-available-services": {
"mappings": {
"0": {
diff --git a/langs/layers/es.json b/langs/layers/es.json
index 52519c942..36050980e 100644
--- a/langs/layers/es.json
+++ b/langs/layers/es.json
@@ -1,4 +1,27 @@
{
+ "address": {
+ "description": "Direcciones",
+ "name": "Direcciones conocidas en OSM",
+ "tagRenderings": {
+ "fixme": {
+ "question": "¿Qué debe corregirse aquí? Expóngalo"
+ },
+ "housenumber": {
+ "mappings": {
+ "0": {
+ "then": "Esta edificación no tiene número"
+ }
+ },
+ "question": "¿Cuál es el número de esta casa?"
+ },
+ "street": {
+ "question": "¿En qué calle se encuentra esta dirección?"
+ }
+ },
+ "title": {
+ "render": "Domicilio conocido"
+ }
+ },
"artwork": {
"description": "Diversas piezas de obras de arte",
"name": "Obras de arte",
@@ -9,7 +32,33 @@
},
"tagRenderings": {
"artwork-artwork_type": {
- "question": "Cuál es el tipo de esta obra de arte?",
+ "mappings": {
+ "0": {
+ "then": "Arquitectura"
+ },
+ "1": {
+ "then": "Mural"
+ },
+ "2": {
+ "then": "Pintura"
+ },
+ "3": {
+ "then": "Escultura"
+ },
+ "4": {
+ "then": "Estatua"
+ },
+ "5": {
+ "then": "Busto"
+ },
+ "7": {
+ "then": "Instalación"
+ },
+ "8": {
+ "then": "Grafiti"
+ }
+ },
+ "question": "¿Qué tipo de obra es esta pieza?",
"render": "Esta es un {artwork_type}"
}
},
@@ -22,6 +71,38 @@
"render": "Obra de arte"
}
},
+ "barrier": {
+ "name": "Barreras",
+ "presets": {
+ "0": {
+ "title": "Bolardo"
+ }
+ },
+ "tagRenderings": {
+ "Bollard type": {
+ "mappings": {
+ "1": {
+ "then": "Bolardo fijo"
+ },
+ "3": {
+ "then": "Bolardo flexible, normalmente plástico"
+ },
+ "4": {
+ "then": "Bolardo levadizo"
+ }
+ },
+ "question": "¿Qué tipo de bolardo es este?"
+ }
+ },
+ "title": {
+ "mappings": {
+ "0": {
+ "then": "Bolardo"
+ }
+ },
+ "render": "Barrera"
+ }
+ },
"bench": {
"name": "Bancos",
"presets": {
@@ -33,13 +114,43 @@
"bench-backrest": {
"mappings": {
"0": {
- "then": "Respaldo: Si"
+ "then": "Respaldo: sí"
},
"1": {
- "then": "Respaldo: No"
+ "then": "Respaldo: no"
}
},
- "question": "¿Este banco tiene un respaldo?"
+ "question": "¿Este banco tiene respaldo?"
+ },
+ "bench-colour": {
+ "mappings": {
+ "1": {
+ "then": "Color: verde"
+ },
+ "2": {
+ "then": "Color: gris"
+ },
+ "3": {
+ "then": "Color: blanco"
+ },
+ "4": {
+ "then": "Color: rojo"
+ },
+ "5": {
+ "then": "Color: negro"
+ },
+ "6": {
+ "then": "Color: azul"
+ },
+ "7": {
+ "then": "Color: amarillo"
+ }
+ },
+ "question": "¿De qué color es este banco?",
+ "render": "Color: {colour}"
+ },
+ "bench-direction": {
+ "question": "¿En qué dirección se mira al sentarse en el banco?"
},
"bench-material": {
"mappings": {
@@ -74,11 +185,81 @@
}
},
"bench_at_pt": {
+ "description": "Una capa que muestra todas las paradas de transporte público que tienen bancos",
"name": "Bancos en una parada de transporte público",
+ "tagRenderings": {
+ "bench_at_pt-bench_type": {
+ "question": "¿Qué tipo de banco es este?"
+ },
+ "bench_at_pt-name": {
+ "render": "{name}"
+ }
+ },
"title": {
"render": "Banco"
}
},
+ "bicycle_rental": {
+ "title": {
+ "render": "Alquiler de bicicletas"
+ }
+ },
+ "bike_cafe": {
+ "tagRenderings": {
+ "bike_cafe-repair-tools": {
+ "question": "¿Hay herramientas para reparar su propia bicicleta?"
+ }
+ }
+ },
+ "charging_station": {
+ "tagRenderings": {
+ "Authentication": {
+ "mappings": {
+ "0": {
+ "then": "Autenticación mediante tarjeta de membresía"
+ },
+ "1": {
+ "then": "Autenticación mediante aplicación"
+ },
+ "2": {
+ "then": "Autenticación mediante llamada telefónica disponible"
+ },
+ "3": {
+ "then": "Autenticación mediante SMS disponible"
+ },
+ "4": {
+ "then": "Autenticación mediante NFC disponible"
+ },
+ "5": {
+ "then": "Autenticación mediante Money Card disponible"
+ },
+ "6": {
+ "then": "Autenticación mediante tarjeta de débito disponible"
+ }
+ }
+ },
+ "Network": {
+ "mappings": {
+ "1": {
+ "then": "No forma parte de una red mayor"
+ }
+ },
+ "question": "¿Esta estación de carga forma parte de una red?",
+ "render": "Parte de la red {network}"
+ },
+ "OH": {
+ "mappings": {
+ "0": {
+ "then": "Abre 24/7 (incluidos días festivos)"
+ }
+ },
+ "question": "¿Cuándo abre esta estación de carga?"
+ },
+ "Type": {
+ "question": "¿A qué vehículos se permite la carga aquí?"
+ }
+ }
+ },
"defibrillator": {
"name": "Desfibriladores",
"presets": {
@@ -144,5 +325,12 @@
"title": {
"render": "Bicicleta blanca"
}
+ },
+ "observation_tower": {
+ "tagRenderings": {
+ "access": {
+ "question": "¿Se puede visitar esta torre?"
+ }
+ }
}
}
\ No newline at end of file
diff --git a/langs/layers/nl.json b/langs/layers/nl.json
index 4f175b3f5..7c0e87851 100644
--- a/langs/layers/nl.json
+++ b/langs/layers/nl.json
@@ -3,6 +3,9 @@
"description": "Adressen",
"name": "Bekende adressen in OSM",
"tagRenderings": {
+ "fixme": {
+ "question": "Wat moet hier gecorrigeerd worden? Leg het uit"
+ },
"housenumber": {
"mappings": {
"0": {
@@ -21,6 +24,55 @@
"render": "Bekend adres"
}
},
+ "ambulancestation": {
+ "description": "Een ambulancestation is een plaats waar ambulances, medisch materiaal, persoonlijk beschermingsmateriaal en aanverwanten worden bewaard.",
+ "name": "Kaart van ambulancestations",
+ "presets": {
+ "0": {
+ "description": "Voeg een ambulancestation toe aan de kaart",
+ "title": "Ambulancestation"
+ }
+ },
+ "tagRenderings": {
+ "ambulance-agency": {
+ "question": "Welke organisatie beheert dit station?",
+ "render": "Dit station wordt beheerd door {operator}."
+ },
+ "ambulance-name": {
+ "question": "Hoe heet dit ambulancestation?",
+ "render": "Dit station heet {name}."
+ },
+ "ambulance-operator-type": {
+ "mappings": {
+ "0": {
+ "then": "Dit station wordt beheerd door de overheid."
+ },
+ "1": {
+ "then": "Dit station wordt beheerd door een informele of community organisatie."
+ },
+ "2": {
+ "then": "Dit station wordt beheerd door een formele groep vrijwilligers."
+ },
+ "3": {
+ "then": "Dit station wordt beheerd door een privé-organisatie."
+ }
+ },
+ "question": "Wat voor een organisatie is de beheerder van dit station?",
+ "render": "De beheerder is van het type {operator:type}."
+ },
+ "ambulance-place": {
+ "question": "Waar ligt het station? (v.b. naam van de buurt, dorp of stad)",
+ "render": "Dit station ligt in {addr:place}."
+ },
+ "ambulance-street": {
+ "question": " In welke straat ligt dit station?",
+ "render": "Straat waar dit station ligt: {addr:street}"
+ }
+ },
+ "title": {
+ "render": "Ambulancestation"
+ }
+ },
"artwork": {
"description": "Verschillende soorten kunstwerken",
"name": "Kunstwerken",
@@ -150,7 +202,8 @@
"render": "Maximumbreedte: {maxwidth:physical} m"
},
"Overlap (cyclebarrier)": {
- "question": "Hoeveel overlappen de barrières?"
+ "question": "Hoeveel overlappen de barrières?",
+ "render": "Overlap: {overlap} m"
},
"Space between barrier (cyclebarrier)": {
"question": "Hoeveel ruimte is er tussen de barrières (langs de lengte van de weg)?",
@@ -286,6 +339,7 @@
}
},
"bench_at_pt": {
+ "description": "Een laag die stopplaatsen van openbaar vervoer toont waar er een zitbank is",
"name": "Zitbanken aan bushaltes",
"tagRenderings": {
"bench_at_pt-bench_type": {
@@ -366,6 +420,15 @@
"bicycle_rental": {
"description": "Fietsverhuustations",
"name": "Fietsverhuur",
+ "presets": {
+ "0": {
+ "description": "Een bemande winkel die focust op fietsverhuur",
+ "title": "fietsverhuurzaak"
+ },
+ "1": {
+ "title": "fietsverhuur"
+ }
+ },
"tagRenderings": {
"8": {
"renderings": {
@@ -452,6 +515,7 @@
}
},
"bicycle_tube_vending_machine": {
+ "description": "Een laag met verkoopsautomaten met binnenbanden voor fietsen (dit kan een automaat zijn met énkel fietsbanden, of een gewone automaat met fietsbanden en andere fietsaccessoires zoals lichten, handschoenen, sloten,...)",
"name": "Fietsbanden-verkoopsautomaat",
"presets": {
"0": {
@@ -480,6 +544,7 @@
}
},
"bike_cafe": {
+ "description": "Een fietscafé is een café dat gericht is op fietsers, bijvoorbeeld omdat het een fietspomp heeft, fietsgerelateerde decoratie heeft enzovoorts.",
"name": "Fietscafé",
"presets": {
"0": {
@@ -547,12 +612,45 @@
}
},
"bike_cleaning": {
+ "description": "Een laag die plaatsen toont waar je je fiets kunt wassen",
"name": "Fietsschoonmaakpunt",
"presets": {
"0": {
"title": "Fietsschoonmaakpunt"
}
},
+ "tagRenderings": {
+ "bike_cleaning-charge": {
+ "mappings": {
+ "0": {
+ "then": "Gratis fietsschoonmaakpunt"
+ },
+ "1": {
+ "then": "Gratis te gebruiken"
+ },
+ "2": {
+ "then": "Je moet betalen voor het fietsschoonmaakpunt"
+ }
+ },
+ "question": "Hoeveel kost het gebruik van het fietsschoonmaakpunt?",
+ "render": "Het gebruik van het fietsschoonmaakpunt kost {charge}"
+ },
+ "bike_cleaning-service:bicycle:cleaning:charge": {
+ "mappings": {
+ "0": {
+ "then": "Het fietsschoonmaakpunt is gratis"
+ },
+ "1": {
+ "then": "Gratis te gebruiken"
+ },
+ "2": {
+ "then": "Het fietsschoonmaakpunt is betalend, maar de prijs is onbekend"
+ }
+ },
+ "question": "Hoeveel kost het gebruik van het fietsschoonmaakpunt?",
+ "render": "Het gebruik van het fietsschoonmaakpunt kost {service:bicycle:cleaning:charge}"
+ }
+ },
"title": {
"mappings": {
"0": {
@@ -563,6 +661,7 @@
}
},
"bike_parking": {
+ "description": "Een laag die toont waar je je fiets kunt parkeren",
"name": "Fietsparking",
"presets": {
"0": {
@@ -621,7 +720,7 @@
},
"Cargo bike capacity?": {
"question": "Voor hoeveel bakfietsen heeft deze fietsparking plaats?",
- "render": "Deze parking heeft plaats voor {capacity:cargo_bike} fietsen"
+ "render": "Deze parking heeft plaats voor {capacity:cargo_bike} bakfietsen"
},
"Cargo bike spaces?": {
"mappings": {
@@ -629,7 +728,7 @@
"then": "Deze parking heeft plaats voor bakfietsen"
},
"1": {
- "then": "Er zijn speciale plaatsen voorzien voor bakfietsen"
+ "then": "Er zijn speciale plaatsen voorzien voor bakfietsen."
},
"2": {
"then": "Je mag hier geen bakfietsen parkeren"
@@ -705,6 +804,26 @@
},
"question": "Werkt de fietspomp nog?"
},
+ "access": {
+ "mappings": {
+ "0": {
+ "then": "Publiek toegankelijk"
+ },
+ "1": {
+ "then": "Publiek toegankelijk"
+ },
+ "2": {
+ "then": "Enkel voor klanten van de bijhorende zaak"
+ },
+ "3": {
+ "then": "Niet publiek toegankelijk"
+ },
+ "4": {
+ "then": "Niet publiek toegankelijk"
+ }
+ },
+ "question": "Wie kan dit herstelpunt gebruiken?"
+ },
"bike_repair_station-available-services": {
"mappings": {
"0": {
@@ -964,6 +1083,7 @@
}
},
"bike_themed_object": {
+ "description": "Een laag met fietsgerelateerde diensten, die in geen enkele andere laag konden ondergebracht worden",
"name": "Fietsgerelateerd object",
"title": {
"mappings": {
@@ -1020,13 +1140,6 @@
}
}
},
- "mapRendering": {
- "0": {
- "icon": {
- "render": "./assets/layers/birdhide/birdhide.svg"
- }
- }
- },
"name": "Vogelkijkhutten",
"presets": {
"0": {
@@ -1108,6 +1221,7 @@
}
},
"cafe_pub": {
+ "description": "Een laag die kroegen en koffiehuizen toont waar je iets kunt drinken. De laag zal je enkele vragen stellen",
"filter": {
"0": {
"options": {
@@ -2302,6 +2416,7 @@
}
},
"cycleways_and_roads": {
+ "description": "Alle infrastructuur waar je over kunt fietsen, met vragen over die infrastructuur",
"name": "Fietspaden, straten en wegen",
"tagRenderings": {
"Cycleway type for a road": {
@@ -2482,6 +2597,32 @@
"render": "Deze weg is gemaakt van {surface}"
},
"Surface of the street": {
+ "mappings": {
+ "0": {
+ "then": "Bruikbaar voor kleine, harde wielen: rollerblade, skateboard"
+ },
+ "1": {
+ "then": "Bruikbaar voor smalle wielen: racefiets"
+ },
+ "2": {
+ "then": "Bruikbaar voor normale wielen: stadsfiets, rolwagen, step"
+ },
+ "3": {
+ "then": "Bruikbaar voor robuuste wielen: trekking fiets, auto, rickshaw"
+ },
+ "4": {
+ "then": "Bruikbaar voor terreinvoertuigen: 4x4 personenwagens"
+ },
+ "5": {
+ "then": "Bruikbaar voor terreinvoertuigen: zware 4x4 voertuigen"
+ },
+ "6": {
+ "then": "Bruikbaar voor uitzonderlijke terreinvoertuigen: tractor, ATV"
+ },
+ "7": {
+ "then": "Onmogelijk om met een voertuig met wielen te passeren"
+ }
+ },
"question": "Wat is de kwaliteit van deze straat?"
},
"cyclelan-segregation": {
@@ -2658,6 +2799,7 @@
}
},
"defibrillator": {
+ "description": "Een laag die defibrillatoren toont die je kan gebruiken bij noodgevallen. Dit omvat zowel publiek beschikbare toestellen als defibrillatoren waarvoor het toestel enkel door personeel aangeboden kan worden",
"name": "Defibrillatoren",
"presets": {
"0": {
@@ -2699,6 +2841,9 @@
},
"2": {
"then": "Dit is een gewone automatische defibrillator"
+ },
+ "3": {
+ "then": "Dit is een speciaal type defibrillator: {defibrillator}"
}
},
"question": "Is dit een gewone automatische defibrillator of een manueel toestel enkel voor professionals?"
@@ -2829,9 +2974,14 @@
}
},
"entrance": {
+ "description": "Een laag met ingangen (van gebouwen etc.) waarmee je details kunt aanvullen die belangrijk zijn voor bijvoorbeeld rolstoelgebruikers (en fietsers, leveranciers, ...)",
+ "name": "Toegang",
"tagRenderings": {
"Door_type": {
"mappings": {
+ "0": {
+ "then": "Het type deur is onbekend"
+ },
"1": {
"then": "Een gewone deur die aan scharnieren ophangt en openzwaait"
},
@@ -2843,6 +2993,17 @@
},
"4": {
"then": "Een poort die langs boven dichtrolt, typisch voor garages"
+ },
+ "5": {
+ "then": "Er is een toegang zonder een deur"
+ }
+ },
+ "question": "Om wat voor deur gaat het? Of de deur al of niet automatisch werkt, vragen we hierna "
+ },
+ "Entrance type": {
+ "mappings": {
+ "0": {
+ "then": "Het specifieke type ingang is onbekend"
}
}
}
@@ -3457,8 +3618,8 @@
}
},
"picnic_table": {
- "description": "Deze laag toont picnictafels",
- "name": "Picnictafels",
+ "description": "Deze laag toont picknicktafels",
+ "name": "Picknicktafels",
"presets": {
"0": {
"title": "picnic-tafel"
@@ -3468,18 +3629,18 @@
"picnic_table-material": {
"mappings": {
"0": {
- "then": "Deze picnictafel is gemaakt uit hout"
+ "then": "Deze picknicktafel is gemaakt uit hout"
},
"1": {
- "then": "Deze picnictafel is gemaakt uit beton"
+ "then": "Deze picknicktafel is gemaakt uit beton"
}
},
- "question": "Van welk materiaal is deze picnictafel gemaakt?",
- "render": "Deze picnictafel is gemaakt van {material}"
+ "question": "Van welk materiaal is deze picknicktafel gemaakt?",
+ "render": "Deze picknicktafel is gemaakt van {material}"
}
},
"title": {
- "render": "Picnictafel"
+ "render": "Picknicktafel"
}
},
"play_forest": {
diff --git a/langs/nl.json b/langs/nl.json
index ed5a39fe4..5026a787a 100644
--- a/langs/nl.json
+++ b/langs/nl.json
@@ -50,13 +50,13 @@
},
"add": {
"addNewMapLabel": "Klik hier om een item toe te voegen",
- "addNew": "Voeg hier een {category} toe",
+ "addNew": "Voeg een {category} toe",
"title": "Nieuw punt toevoegen?",
"intro": "Kies hieronder welk punt je wilt toevoegen ",
"pleaseLogin": "Gelieve je aan te melden om een punt to te voegen",
"zoomInFurther": "Gelieve verder in te zoomen om een punt toe te voegen.",
"stillLoading": "De data worden nog geladen. Nog even geduld en dan kan je een punt toevoegen.",
- "confirmIntro": "
Voeg een {title} toe?
Het punt dat je hier toevoegt, is zichtbaar voor iedereen. Veel applicaties gebruiken deze data, voeg dus enkel punten toe die echt bestaan.",
+ "confirmIntro": "
Voeg een {title} toe?
Het punt dat je toevoegt, is zichtbaar voor iedereen. Veel applicaties gebruiken deze data, voeg dus enkel punten toe die echt bestaan.",
"confirmButton": "Voeg een {category} toe
Je toevoeging is voor iedereen zichtbaar
",
"openLayerControl": "Open de laag-instellingen",
"layerNotEnabled": "De laag {layer} is gedeactiveerd. Activeer deze om een punt toe te voegen",
@@ -72,7 +72,8 @@
"officialThemesOnly": "In onofficiële thema's is de importeerknop uitgeschakeld om ongelukjes te vermijden",
"zoomInMore": "Zoom verder in om dit kaart-object te kunnen importeren",
"wrongType": "Dit object is geen punt of lijn, en kan daarom niet geïmporteerd worden",
- "importTags": "Het element zal deze tags krijgen: {tags}"
+ "importTags": "Het element zal deze tags krijgen: {tags}",
+ "howToTest": "Voor testmode, voeg test=true of backend=osm-test to aan de URL. De wijzigingenset zal in de console geprint worden. Gelieve een PR te openen om dit thema als officieel thema toe te voegen en zo de import-knop te activeren."
},
"wrongType": "Dit element is geen punt of lijn en kan daarom niet geïmporteerd worden"
},
@@ -262,7 +263,12 @@
"apply_button": {
"appliedOnAnotherObject": "Object {id} zal deze tags ontvangen: {tags}",
"isApplied": "De wijzigingen zijn doorgevoerd"
- }
+ },
+ "logout": "Afmelden",
+ "confirm": "Bevestigen",
+ "back": "Vorige",
+ "next": "Volgende",
+ "backToMapcomplete": "Terug naar het themaoverzicht"
},
"reviews": {
"title": "{count} beoordelingen",
@@ -361,16 +367,63 @@
"title": "Professionele ondersteuning voor MapComplete",
"indexPage": {
"button": "Ontdek onze services",
- "hookMore": "We kunnen helpen bij het opzetten van terreinwerk, integreren van datasets en algemene OpenStreetMap-consultancy"
+ "hookMore": "We kunnen helpen bij het opzetten van terreinwerk, integreren van datasets en algemene OpenStreetMap-consultancy",
+ "hook": "Professionele ondersteuning nodig?"
},
"text1": "
MapComplete is de editor die het gemakkelijk maakt om bij te dragen aan OpenStreetMap.
",
"aboutOsm": {
"aboutOsm": {
- "title": "Wat is OpenStreetMap?"
+ "title": "Wat is OpenStreetMap?",
+ "li1": "Sommige winkels hebben attibuten met openingsuren, telefoonnumer, een website, welke betaalmiddelen er geaccepteerd worden, wat ze verkopen, welke diensten ze aanbieden, …",
+ "li3": "en nog veel meer…",
+ "li2": "Toiletten hebben mogelijks informatie over rolstoeltoegankelijkheid, luiertafel, hoeveel een toiletbezoek kost, …",
+ "intro": "OpenStreetMap is een gedeelde, globale databank; gebouwd door vrijwilligers. Alle geodata is er welkom, als deze ter plaatse geverifieerd kan worden. OpenStreetMap is zo uitgegroeid tot een uitgebreide databank: het bevat gegevens over miljoenen objecten binnen duizenden categorieën. Elk individueel object kan ook weer verschillende attributen hebben, waardoor veel nuance ontstaat:",
+ "li0": "Straten hebben een geometrie, maar kunnen ook informatie bevatten over de maximale toegestane snelheid, de wegbedekking, ofdat ze 's nachts verlicht zijn, een link naar Wikipedia, een link naar wat ze vernoemd zijn, welke wandel-, fiets- en busroutes er lopen, …"
+ },
+ "benefits": {
+ "li1": "Je data heeft een groter bereik dan ooit tevoren door de vele hergebruikers zoals Bing Maps, Apple Maps, Facebook, Instagram, Pokemon Go, OsmAnd, Organic Maps, Maps.me, Mapbox, Komoot, de meeste fietsrouteplanners, …",
+ "intro": "Het kan erg moeilijk zijn om een eigen dataset achter te laten, want het opbouwen ervan kostte vaak veel tijd en moeite. Echter, de voordelen om over te schakelen naar OpenStreetMap zijn enorm:",
+ "title": "Voordelen van het OpenStreetMap-ecosysteem",
+ "li0": "Je bent niet langer alleen om deze data te verzamelen en te onderhouden - een hele community helpt je",
+ "li2": "Veel overheidsorganisaties en gemeentes gebruiken OpenStreetMap op hun website"
+ },
+ "vandalism": {
+ "li1": "een kleine, foutieve wijziging heeft weinig impact en brengt dus weinig op voor een vandaal",
+ "intro": "Omdat iedereen de data kan aanpassen, is het inderdaad mogelijk dat iemand opzettelijk een foute aanpassing maakt. Dit gebeurt in de praktijk echter nooit, want:",
+ "li0": "de technische drempel om een wijziging te maken is hoog",
+ "li2": "een wijziging met een grote impact wordt snel opgemerkt omdat er zoveel datagebruikers zijn",
+ "title": "Is vandalisme een probleem?",
+ "li3": "alle wijzigingen worden bijgehouden en gelinkt aan de bijdrager die ze maakt. Een gebruiker die veelvuldig en opzettelijk de data kapot maakt, wordt verbannen",
+ "li4": "In België en verschillende andere landen wordt elke eerste wijziging van een nieuwe bijdrager systematisch gecontroleerd en gecorrigeerd."
+ },
+ "license": {
+ "title": "De licentie",
+ "li0": "Een product dat OpenStreetMap gebruikt moet de OpenStreetMap vermelden.",
+ "outro": "De licentie heeft enkele gevolgen - deze worden hieronder toegelicht.",
+ "intro": "OpenStreetMap wordt gepubliceerd onder de Open Database License. De volledige licentie kan als volgt worden samengevat:",
+ "li1": "OpenStreetMap-data moet open blijven. Dit betekent dat een kaart met OpenStreetMap-data opnieuw gekopieerd mag worden."
}
},
"osmTitle": "Wat kunnen OpenStreetMap en MapComplete doen voor jouw organisatie?",
- "intro": "De ontwikkelaar van MapComplete bied professionele ondersteuning aan. Dit document toont enkele mogelijkheden, frequente vragen en de grenzen van wat MapComplete kan."
+ "intro": "De ontwikkelaar van MapComplete bied professionele ondersteuning aan. Dit document toont enkele mogelijkheden, frequente vragen en de grenzen van wat MapComplete kan.",
+ "text0": "
Het onderhouden en updaten van geodata is moeilijk en duur. Bovendien verzamelen veel organisaties dezelfde data, onafhankelijk van elkaar - waardoor hetzelfde werk verschillende keren wordt gedaan, de data in niet-standaard formaten wordt bijgehouden en ieder een onvolledige, niet onderhouden dataset heeft
Parallel hiermee is er ook een grote community die geodata verzameld in een globale, gestandaardiseerde databank: OpenStreetMap.org.
",
+ "aboutMc": {
+ "title": "MapComplete gebruiken in je eigen organisatie",
+ "text0": "Als je een bestaand MapComplete-thema wilt gebruiken of in je website wilt embedden, dan mag je dit gratis doen. Dit is gratis en zal dat altijd zijn.",
+ "survey": {
+ "title": "Mogelijkheden om data te verzamelen",
+ "intro": "
MapComplete is een makkelijk te gebruiken hulpmiddel om ter plaatste met een smartphone of vanop afstand met een PC data te verzamelen. Met enkele klikken kan de nodige data toegevoegd worden aan OpenStreetMap.
\n
Wij kunnen voor jou een op maat gemaakte verzameltool maken die precies de data vraagt die nodig is.
\n
Heb je een dataset die (opnieuw) opgemeten moet worden? Dat is het perfecte moment om de stap naar OpenStreetMap te maken. MapComplete kan je eigen dataset en OpenStreetMap samen tonen, wat het makkelijk maakt om zowel de eigen locaties als de bijdragen van de community na te kijken.
\n"
+ },
+ "internalUse": {
+ "title": "Data hergebruiken"
+ },
+ "text2": "Twijfel je nog? We sommen de mogelijkheden hieronder op en beantwoorden enkele veelvoorkomende vragen",
+ "text1": "Wil je andere data visualiseren, maar bestaat er nog geen geschikte kaart voor? De MapComplete-ontwikkelaars kunnen dit op maat bouwen voor een schappelijk budget. Stuur je vraag via email, github of een bericht op osm.org",
+ "layers": {
+ "intro": "
MapComplete heeft een krachtig templatesysteem om snel een kaart op te zetten die precies toont wat je nodig hebt
\n
Deze data kan opgehaald van OpenStreetMap of van externe datasets komen - bijvoorbeeld om datasets met elkaar te vergelijken of om data te tonen die niet in OpenStreetMap thuishoort (bijvoorbeeld evenementen, statistieken, ...)
",
+ "title": "Welke data kan getoond worden met MapComplete?"
+ }
+ }
},
"privacy": {
"geodata": "Op het moment dat MapComplete je locatie krijgt, blijft deze informatie en de geschiedenis ervan lokaal op je toestel. Je locatiedata wordt nooit automatisch doorgestuurd naar waar dan ook - behalve wanneer een bepaalde functionaliteit daar expliciet om vraagt.",
@@ -378,6 +431,12 @@
"title": "Privacyverklaring",
"geodataTitle": "Jouw locatie",
"trackingTitle": "Statistische informatie",
- "intro": "We vinden privacy belangrijk, zowel for het individu als voor de samenleving. MapComplete probeert zo veel mogelijk te vermijden dat private gegevens worden verzameld. Daarom is er zelfs geen cookie banner nodig. Maar we geven graag informatie over welke data verzameld en gedeeld worden, onder welke omstandigheden, en waarom deze afwegingen gemaakt worden."
+ "intro": "We vinden privacy belangrijk, zowel for het individu als voor de samenleving. MapComplete probeert zo veel mogelijk te vermijden dat private gegevens worden verzameld. Daarom is er zelfs geen cookie banner nodig. Maar we geven graag informatie over welke data verzameld en gedeeld worden, onder welke omstandigheden, en waarom deze afwegingen gemaakt worden.",
+ "editingTitle": "Wanneer je wijzigingen maakt",
+ "miscCookiesTitle": "Andere cookies",
+ "miscCookies": "MapComplete integreert met verschillende andere services, in het bijzonder om afbeeldingen van kaart-objecten te tonen. Deze afbeeldingen zijn opgeslaan bij diverse websites, die elk cookies kunnen instellen.",
+ "whileYoureHere": "Vind je privacy belangrijk?",
+ "surveillance": "Gezien je de privacy-policy leest, vind je privacy waarschijnlijk belangrijk - wij ook! We hebben zelfs een kaart met bewakingcamera's gemaakt. Voeg er zeker toe!",
+ "editing": "Wanneer je een wijziging maakt, wordt deze wijziging opgeslaan op OpenStreetMap. Dit is zichtbaar voor iedereen. Een wijzigingenset gemaakt met MapComplete bevat de volgende data:\n
De aanpassingen aan de data
Je gebruikersnaam
Wanneer deze wijziging werd gemaakt
Het thema dat je gebruikt om de wijziging te maken
De taal van de gebruikersinterface
Een indicatie hoe ver jij je van de gewijzigde objecten bevindt. Andere bijdragers kunnen deze informatie gebruiken om af te leiden of de wijziging gemaakt door lokaal te gaan kijken of door onderzoek vanop afstand
Bekijk ook de privacy-policy op OpenStreetMap.org voor gedetailleerde info. We herinneren je eraan dat je een pseudoniem of fictieve naam kan gebruiken wanneer je je registreert."
}
}
diff --git a/langs/shared-questions/cs.json b/langs/shared-questions/cs.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/langs/shared-questions/cs.json
@@ -0,0 +1 @@
+{}
diff --git a/langs/shared-questions/es.json b/langs/shared-questions/es.json
index 0967ef424..e513f074e 100644
--- a/langs/shared-questions/es.json
+++ b/langs/shared-questions/es.json
@@ -1 +1,17 @@
-{}
+{
+ "shared_questions": {
+ "description": {
+ "question": "¿Aún hay algo relevante que no ha encajado en las preguntas anteriores? Compártalo aquí. No repita datos ya expresados"
+ },
+ "dog-access": {
+ "mappings": {
+ "0": {
+ "then": "Se permiten perros"
+ },
+ "1": {
+ "then": "No se permiten perros"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/langs/shared-questions/zh_Hant.json b/langs/shared-questions/zh_Hant.json
index 217e5c6a0..a1c2ff898 100644
--- a/langs/shared-questions/zh_Hant.json
+++ b/langs/shared-questions/zh_Hant.json
@@ -36,6 +36,9 @@
},
"3": {
"then": "位於 2 樓"
+ },
+ "4": {
+ "then": "位於地下一樓"
}
},
"question": "此圖徽位於哪個樓層/層級?",
@@ -56,6 +59,18 @@
},
"question": "這邊接受那種付款方式?"
},
+ "payment-options-advanced": {
+ "override": {
+ "mappings+": {
+ "0": {
+ "then": "使用專用應用程式付款"
+ },
+ "1": {
+ "then": "使用會員卡付款"
+ }
+ }
+ }
+ },
"phone": {
"question": "{name} 的電話號碼是什麼?"
},
diff --git a/langs/themes/cs.json b/langs/themes/cs.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/langs/themes/cs.json
@@ -0,0 +1 @@
+{}
diff --git a/langs/themes/de.json b/langs/themes/de.json
index 0a7307a71..74c7d7896 100644
--- a/langs/themes/de.json
+++ b/langs/themes/de.json
@@ -631,14 +631,6 @@
},
"1": {
"name": "Knotenpunkte",
- "presets": {
- "0": {
- "title": "Knotenpunkt"
- },
- "1": {
- "title": "Knotenpunkt im Netzwerk Spree-Neiße"
- }
- },
"tagRenderings": {
"node-expected_rcn_route_relations": {
"question": "Mit wie vielen anderen Knoten des Fahrradknotenpunktnetzwerkes ist dieser Knoten verbunden?",
@@ -724,12 +716,12 @@
"layers": {
"1": {
"override": {
- "name": "Straßen ohne Informationen zur Namensherkunft"
+ "=name": "Straßen ohne Informationen zur Namensherkunft"
}
},
"2": {
"override": {
- "name": "Parks und Waldflächen ohne Informationen zur Namensherkunft"
+ "=name": "Parks und Waldflächen ohne Informationen zur Namensherkunft"
}
}
},
diff --git a/langs/themes/en.json b/langs/themes/en.json
index 7fc9fb3d1..e758ec227 100644
--- a/langs/themes/en.json
+++ b/langs/themes/en.json
@@ -270,7 +270,7 @@
"descriptionTail": "The climbing map was originally made by Christian Neumann. Please get in touch if you have feedback or questions.
",
"layers": {
"0": {
- "description": "A climbing club or organisations",
+ "description": "A climbing club or organisation",
"name": "Climbing club",
"presets": {
"0": {
@@ -278,7 +278,7 @@
"title": "Climbing club"
},
"1": {
- "description": "A NGO working around climbing",
+ "description": "An NGO working around climbing",
"title": "Climbing NGO"
}
},
@@ -332,12 +332,12 @@
"then": "This route is not bolted"
}
},
- "question": "How much bolts does this route have before reaching the moulinette?",
+ "question": "How many bolts does this route have before reaching the anchor?",
"render": "This route has {climbing:bolts} bolts"
},
"Difficulty": {
- "question": "What is the difficulty of this climbing route according to the french/belgian system?",
- "render": "The difficulty is {climbing:grade:french} according to the french/belgian system"
+ "question": "What is the grade of this climbing route according to the french/belgian system?",
+ "render": "The grade is {climbing:grade:french} according to the french/belgian system"
},
"Length": {
"question": "How long is this climbing route (in meters)?",
@@ -376,7 +376,7 @@
},
"tagRenderings": {
"Contained routes hist": {
- "render": "