Merge branch 'develop' of source.mapcomplete.org:MapComplete/MapComplete into develop

This commit is contained in:
Pieter Vander Vennet 2025-07-25 19:20:59 +02:00
commit a440a3042e
51 changed files with 1844 additions and 972 deletions

View file

@ -1,20 +0,0 @@
tasks:
- init: npm run init
command: npm run start
name: Initialize and start MapComplete
- name: Generate Layeroverview
command: npm run generate:layeroverview
ports:
- name: MapComplete Website
port: 1234
onOpen: open-browser
vscode:
extensions:
- "esbenp.prettier-vscode"
- "eamodio.gitlens"
- "github.vscode-pull-request-github"
- "svelte.svelte-vscode"
- "bradlc.vscode-tailwindcss"
- "editorconfig.editorconfig"

View file

@ -31,17 +31,17 @@ You need at least 3GB RAM available to run MapComplete, but you'll preferably ha
To develop and build MapComplete, you
0. Make a fork and clone the repository. (We recommend a shallow clone with `git clone --filter=blob:none <repo>`)
1. Install `python3` if you do not have it already - On Linux: `sudo apt install python3`
1. Install `python3` if you do not have it already - On Linux: `sudo apt install python3` or `sudo dnf install python3`
2. Install `nvm` to easily install node:
- `wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash`
- Restart your terminal
- Run `nvm install` and `nvm use` to install and use the correct version of node. (_Note: nvm might complain that the relevant version is not yet installed. It'll have it installed only for the current user account but not system-wide - which is fine)
4. Run `npm run init` (including **run**, not ~~`npm init`~~)which …
3. Run `npm run init` (including **run**, not ~~`npm init`~~)which …
- runs `npm ci` for you
- generates some additional dependencies and files
- does various housekeeping and setup. This can take a few minutes the first time as some PNGs need to be created
5. Run `npm run start` to host a local testversion at http://localhost:1234/
6. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename`
4. Run `npm run start` to host a local testversion at http://127.0.0.1:1234/
5. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename`
or `userlayout=true#<layout configuration>` as [Query parameter](URL_Parameters.md). Note that the shorter URLs
(e.g. `bookcases.html`, `aed.html`, ...) _don't_ exist on the development version.
@ -52,31 +52,18 @@ Development using Windows
You need at least 3GB RAM available to run MapComplete, but you'll preferably have 8GB of free RAM available.
For Windows you can use the devcontainer, or the WSL subsystem.
To use the devcontainer in Visual Studio Code:
0. Make sure you have installed
the [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
extension and it's dependencies.
1. Make a fork and clone the repository.
2. After cloning, Visual Studio Code will ask you if you want to use the devcontainer.
3. Then you can either clone it again in a volume (for better performance), or open the current folder in a container.
4. By now, you should be able to run `npm run start` to host a local testversion at http://localhost:1234/index.html
5. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename`
or `userlayout=true#<layout configuration>` as [Query parameter](URL_Parameters.md). Note that the shorter URLs (
e.g. `bookcases.html`, `aed.html`, ...) _don't_ exist on the development version.
For Windows you can use the WSL subsystem.
To use the WSL in Visual Studio Code:
0. Make sure you have installed the [Remote - WSL]() extension and it's dependencies.
1. Open a remote WSL window using the button in the bottom left.
2. Make a fork and clone the repository.
3. Install `npm` using `sudo apt install npm`.
4. Run `npm run init` and generate some additional dependencies and generated files. Note that it'll install the
1. Make sure you have installed the [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) extension and it's dependencies.
2. Open a remote WSL window using the button in the bottom left.
3. Make a fork and clone the repository.
4. Install `npm` using `sudo apt install npm`.
5. Run `npm run init` and generate some additional dependencies and generated files. Note that it'll install the
dependencies too
5. Run `npm run start` to host a local testversion at http://localhost:1234/index.html
6. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename`
6. Run `npm run start` to host a local testversion at http://127.0.0.1:1234/index.html
7. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename`
or `userlayout=true#<layout configuration>` as [Query parameter](URL_Parameters.md). Note that the shorter URLs (
e.g. `bookcases.html`, `aed.html`, ...) _don't_ exist on the development version.
@ -95,10 +82,12 @@ Note that `npm run start` is equivalent to `npm run generate:layeroverview && np
Automatic deployment
--------------------
Currently, the master branch is automatically deployed to https://mapcomplete.org/ by a Forgejo action.
MapComplete is automatically deployed to various locations, depending on the branch you are working on.
Every branch is automatically built (upon push) to `https://pietervdvn.github.io/mc/<branchname>` by a GitHub action.
The master branch is automatically deployed to https://mapcomplete.org/, and the development branch is available at
https://dev.mapcomplete.org/. Both are automatically deployed by a Forgejo action.
Other branches are automatically deployed to https://builds.mapcomplete.org/<branchname>.
Deploying a fork
----------------
@ -113,9 +102,9 @@ This script can be invoked with `npm run prepare-deploy`
If you want to deploy your fork:
0. `npm run prepare-deploy`
1. `npm run build`
2. Copy the entire `dist` folder to where you host your website. Visiting `index.html` gives you the landing page,
1. `npm run prepare-deploy`
2. `npm run build`
3. Copy the entire `dist` folder to where you host your website. Visiting `index.html` gives you the landing page,
visiting `yourwebsite/<theme>` should bring you to the appropriate theme.
### Getting your own API-keys

View file

@ -192,58 +192,41 @@
}
},
{
"id": "operator",
"question": {
"en": "What company operates this ATM?",
"de": "Welches Unternehmen betreibt den Geldautomaten?",
"fr": "Quelle société exploite ce DAB ?",
"nl": "Welk bedrijf beheert deze geldautomaat?",
"nb_NO": "Hvilket selskap driver denne minibanken?",
"ca": "Quina companyia opera aquest caixer?",
"cs": "Která společnost provozuje tento bankomat?",
"he": "איזו חברה מפעילה את הכספומט הזה?",
"pl": "Jaka firma obsługuje ten bankomat?",
"pt_BR": "Qual companhia opera esse caixa eletrônico?",
"es": "¿Qué empresa opera este cajero automático?",
"pt": "Qual companhia opera este multibanco?",
"it": "Quale azienda gestisce questo sportello bancomat?"
},
"render": {
"en": "The ATM is operated by {operator}",
"de": "Der Geldautomat wird betrieben von {operator}",
"fr": "Ce DAB est exploité par {operator}",
"nl": "Deze geldautomaat wordt beheerd door {operator}",
"nb_NO": "Minibanken drives av {operator}",
"ca": "{operator} opera aquest caixer",
"cs": "Bankomat provozuje {operator}",
"he": "הכספומט מופעל על ידי {operator}",
"pl": "Ten bankomat jest obsługiwany przez {operator}",
"pt_BR": "O caixa eletrônico é operado por {operator}",
"es": "El cajero automático es operado por {operator}",
"pt": "O multibanco é operado por {operator}",
"sl": "Ta bankomat upravlja {operator}",
"it": "Lo sportello bancomat è gestito da {operator}"
},
"freeform": {
"key": "operator",
"type": "string",
"placeholder": {
"en": "Operator",
"de": "Betreiber",
"fr": "Opérateur",
"nl": "Beheerder",
"ca": "Operador",
"cs": "Operátor",
"he": "מפעיל",
"eu": "Operadorea",
"pt_BR": "Operador",
"es": "Operador",
"pt": "Operador",
"it": "Operatore",
"cy": "Gweithredwr"
"builtin": "operator",
"override": {
"condition": "amenity!=bank",
"question": {
"en": "What company operates this ATM?",
"de": "Welches Unternehmen betreibt den Geldautomaten?",
"fr": "Quelle société exploite ce DAB ?",
"nl": "Welk bedrijf beheert deze geldautomaat?",
"nb_NO": "Hvilket selskap driver denne minibanken?",
"ca": "Quina companyia opera aquest caixer?",
"cs": "Která společnost provozuje tento bankomat?",
"he": "איזו חברה מפעילה את הכספומט הזה?",
"pl": "Jaka firma obsługuje ten bankomat?",
"pt_BR": "Qual companhia opera esse caixa eletrônico?",
"es": "¿Qué empresa opera este cajero automático?",
"pt": "Qual companhia opera este multibanco?",
"it": "Quale azienda gestisce questo sportello bancomat?"
},
"render": {
"en": "The ATM is operated by {operator}",
"de": "Der Geldautomat wird betrieben von {operator}",
"fr": "Ce DAB est exploité par {operator}",
"nl": "Deze geldautomaat wordt beheerd door {operator}",
"nb_NO": "Minibanken drives av {operator}",
"ca": "{operator} opera aquest caixer",
"cs": "Bankomat provozuje {operator}",
"he": "הכספומט מופעל על ידי {operator}",
"pl": "Ten bankomat jest obsługiwany przez {operator}",
"pt_BR": "O caixa eletrônico é operado por {operator}",
"es": "El cajero automático es operado por {operator}",
"pt": "O multibanco é operado por {operator}",
"sl": "Ta bankomat upravlja {operator}",
"it": "Lo sportello bancomat è gestito da {operator}"
}
},
"condition": "amenity!=bank"
}
},
"opening_hours_24_7",
{
@ -416,6 +399,41 @@
}
]
},
{
"id": "cash_in-types",
"question": {
"en": "In what ways can you deposit cash at this ATM?",
"nl": "Op welke manieren kan je geld storten bij deze geldautomaat?"
},
"mappings": [
{
"if": "cash_in:coins=yes",
"ifnot": "cash_in:coins=no",
"then": {
"en": "You can deposit coins at this ATM",
"nl": "Je kan munten storten bij deze geldautomaat"
}
},
{
"if": "cash_in:notes=yes",
"ifnot": "cash_in:notes=no",
"then": {
"en": "You can deposit notes at this ATM",
"nl": "Je kan biljetten storten bij deze geldautomaat"
}
},
{
"if": "cash_in:sealbags=yes",
"ifnot": "cash_in:sealbags=no",
"then": {
"en": "You can deposit sealed bags at this ATM",
"nl": "Je kan sealbags storten bij deze geldautomaat"
}
}
],
"condition": "cash_in=yes",
"multiAnswer": true
},
{
"id": "cash_out-denominations-notes",
"question": {
@ -692,4 +710,4 @@
"enableImproveAccuracy": true,
"enableRelocation": false
}
}
}

View file

@ -535,37 +535,37 @@
"multiAnswer": true
},
{
"id": "operator",
"question": {
"en": "Who maintains this fitness station?",
"de": "Wer betreibt die Fitness-Station?",
"nl": "Wie beheert dit fitness-toestel?",
"ca": "Qui manté l'estació de fitness?",
"cs": "Kdo spravuje tuto fitness stanici?",
"es": "¿Quién mantiene esta estación de fitness?",
"it": "Chi mantiene questa stazione fitness?"
},
"render": {
"en": "The fitness station is maintained by {operator}.",
"de": "Die Fitness-Station wird betrieben von {operator}.",
"nl": "Dit fitness-toestel wordt beheerd door {operator}",
"ca": "{operator} manté l'estació de fitness.",
"cs": "Fitness stanici spravuje {operator}.",
"es": "La estación de fitness es mantenida por {operator}.",
"it": "La stazione fitness è mantenuta da {operator}."
},
"freeform": {
"key": "operator",
"placeholder": {
"en": "Operator of the fitness station",
"de": "Betreiber der Fitness-Station",
"nl": "Beheerder van het fitness-toestel",
"cs": "Provozovatel fitness stanice",
"es": "Operador de la estación de fitness",
"ca": "Operador de l'estació de fitness",
"it": "Gestore della stazione fitness"
"builtin": "operator",
"override": {
"question": {
"en": "Who maintains this fitness station?",
"de": "Wer betreibt die Fitness-Station?",
"nl": "Wie beheert dit fitness-toestel?",
"ca": "Qui manté l'estació de fitness?",
"cs": "Kdo spravuje tuto fitness stanici?",
"es": "¿Quién mantiene esta estación de fitness?",
"it": "Chi mantiene questa stazione fitness?"
},
"type": "string"
"render": {
"en": "The fitness station is maintained by {operator}.",
"de": "Die Fitness-Station wird betrieben von {operator}.",
"nl": "Dit fitness-toestel wordt beheerd door {operator}",
"ca": "{operator} manté l'estació de fitness.",
"cs": "Fitness stanici spravuje {operator}.",
"es": "La estación de fitness es mantenida por {operator}.",
"it": "La stazione fitness è mantenuta da {operator}."
},
"freeform": {
"placeholder": {
"en": "Operator of the fitness station",
"de": "Betreiber der Fitness-Station",
"nl": "Beheerder van het fitness-toestel",
"cs": "Provozovatel fitness stanice",
"es": "Operador de la estación de fitness",
"ca": "Operador de l'estació de fitness",
"it": "Gestore della stazione fitness"
}
}
}
},
"opening_hours_24_7"
@ -578,4 +578,4 @@
"enableImproveAccuracy": true
},
"allowCopy": true
}
}

View file

@ -8,7 +8,7 @@
height="500"
viewBox="0 0 500 500"
sodipodi:docname="logo-hub.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
@ -25,10 +25,10 @@
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="0.68921927"
inkscape:cx="263.34145"
inkscape:cy="171.93367"
inkscape:window-width="1704"
inkscape:window-height="996"
inkscape:cx="264.06691"
inkscape:cy="172.65913"
inkscape:window-width="2560"
inkscape:window-height="1371"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
@ -45,17 +45,11 @@
d="m 436.5236,681.36291 c -6.74741,-2.13918 -14.9843,-7.26966 -34.32508,-21.37991 -68.5756,-50.02998 -120.91693,-107.10242 -149.04086,-162.51261 -17.0909,-33.67273 -25.59741,-65.40593 -26.628,-99.33465 -1.15068,-37.88281 6.06308,-71.70048 22.46148,-105.29805 30.02816,-61.52265 86.3781,-106.04268 152.70885,-120.6497 17.43029,-3.83841 28.50629,-4.98052 48.30017,-4.98052 19.79387,0 30.86987,1.14211 48.30016,4.98052 94.21933,20.7485 164.51505,100.20844 174.54536,197.3003 1.58552,15.34767 0.64021,42.86331 -1.97525,57.4944 -13.20508,73.87025 -65.11208,147.83867 -152.43593,217.22396 -13.05291,10.37151 -39.96705,29.70314 -46.65434,33.51044 -10.2471,5.83402 -23.90103,7.24594 -35.25656,3.64582 z"
id="path1"
sodipodi:nodetypes="sssssssssssss" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:177.423px;font-family:MnSymbol;-inkscape-font-specification:MnSymbol;text-align:start;letter-spacing:1px;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:5.41727;stroke-dasharray:none;paint-order:fill markers stroke"
x="295.55676"
y="457.04883"
id="text1"><tspan
sodipodi:role="line"
id="tspan1"
x="295.55676"
y="457.04883"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:177.423px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:1px;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:5.41727;stroke-dasharray:none">hub</tspan></text>
<path
style="font-size:177.423px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:1px;fill:#ffffff;stroke:#ffffff;stroke-width:5.41727;paint-order:fill markers stroke"
d="M 309.7506,457.04883 V 322.20734 l 16.50034,-2.83876 v 47.19452 q 4.613,-1.77423 9.75827,-2.66135 5.32269,-1.06454 10.46795,-1.06454 11.00023,0 18.27457,3.19362 7.27435,3.01619 11.5325,8.69372 4.43557,5.50012 6.2098,13.30673 1.77423,7.80661 1.77423,17.21003 v 51.80752 h -16.50033 v -48.25906 q 0,-8.5163 -1.24197,-14.54869 -1.06453,-6.03238 -3.72588,-9.75826 -2.66134,-3.72588 -7.09692,-5.32269 -4.43557,-1.77423 -11.00023,-1.77423 -2.66134,0 -5.50011,0.35485 -2.83877,0.35484 -5.50011,0.88711 -2.48392,0.35485 -4.613,0.88712 -1.95165,0.53226 -2.83877,0.88711 v 76.64674 z m 175.76151,-2.66135 q -5.67754,1.41939 -15.08096,3.01619 -9.22599,1.59681 -21.46818,1.59681 -10.64538,0 -17.91973,-3.01619 -7.27434,-3.19361 -11.70991,-8.87115 -4.43558,-5.67754 -6.38723,-13.30673 -1.95165,-7.80661 -1.95165,-17.21003 v -51.80751 h 16.50033 v 48.25905 q 0,16.85519 5.32269,24.12953 5.32269,7.27434 17.91973,7.27434 2.66134,0 5.50011,-0.17742 2.83877,-0.17742 5.32269,-0.35484 2.48392,-0.35485 4.43558,-0.53227 2.12907,-0.35485 3.01619,-0.7097 v -77.88869 h 16.50034 z m 45.88791,-85.51788 q 3.01619,-1.95166 9.04857,-4.08073 6.20981,-2.12908 14.19384,-2.12908 9.93569,0 17.56488,3.54846 7.80661,3.54846 13.1293,9.93569 5.32269,6.38723 7.98404,15.25838 2.83877,8.87115 2.83877,19.51653 0,11.17765 -3.37104,20.22622 -3.19361,8.87115 -9.226,15.08095 -6.03238,6.20981 -14.54868,9.58085 -8.51631,3.37103 -19.16169,3.37103 -11.53249,0 -20.40364,-1.5968 -8.87115,-1.59681 -14.54869,-3.19362 V 322.20734 l 16.50034,-2.83876 z m 0,73.80796 q 2.48392,0.7097 6.9195,1.41939 4.613,0.53227 11.35507,0.53227 13.30673,0 21.29076,-8.69373 7.98404,-8.87115 7.98404,-25.01664 0,-7.09692 -1.41939,-13.30673 -1.41938,-6.2098 -4.613,-10.64538 -3.19361,-4.613 -8.33888,-7.09692 -4.96784,-2.66134 -12.06476,-2.66134 -6.74208,0 -12.41961,2.3065 -5.67754,2.30649 -8.69373,4.79042 z"
id="text1"
aria-label="hub" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Before After
Before After

View file

@ -146,44 +146,30 @@
}
},
{
"id": "operator",
"question": {
"en": "What is the operator of the parcel locker?",
"de": "Was ist der Betreiber des Paketschließfachs?",
"nl": "Wie is de beheerder van deze pakketautomaat?",
"ca": "Qui gestiona aquesta bústia intel·ligent?",
"fr": "Quel est l'exploitant de ce casier à colis ?",
"cs": "Kdo je provozovatelem schránky na balíky?",
"es": "¿Cuál es el operador de la taquilla de paquetes?",
"it": "Chi è l'operatore dell'armadietto per pacchi?",
"uk": "Який оператор поштомату?"
},
"render": {
"en": "This parcel locker is operated by {operator}",
"de": "Dieses Paketschließfach wird von {operator} betrieben",
"nl": "Deze pakketautomaat wordt beheerd door {operator}",
"ca": "Aquesta bústia intel·ligent la gestiona {operator}",
"fr": "Ce casier à colis est exploité par {operator}",
"pl": "Ten paczkomat jest obsługiwany przez {operator}",
"cs": "Tuto schránku na balíky provozuje {operator}",
"es": "Esta taquilla de paquetes es operada por {operator}",
"it": "Questo armadietto per pacchi è gestito da {operator}",
"uk": "Цей посилкова шафка обслуговується компанією {operator}"
},
"freeform": {
"key": "operator",
"type": "string",
"placeholder": {
"en": "Operator",
"de": "Betreiber",
"nl": "Beheerder",
"ca": "Gestor",
"fr": "Exploitant",
"pl": "Operator",
"cs": "Operátor",
"es": "Operador",
"cy": "Gweithredwr",
"it": "Operatore"
"builtin": "operator",
"override": {
"question": {
"en": "What is the operator of the parcel locker?",
"de": "Was ist der Betreiber des Paketschließfachs?",
"nl": "Wie is de beheerder van deze pakketautomaat?",
"ca": "Qui gestiona aquesta bústia intel·ligent?",
"fr": "Quel est l'exploitant de ce casier à colis ?",
"cs": "Kdo je provozovatelem schránky na balíky?",
"es": "¿Cuál es el operador de la taquilla de paquetes?",
"it": "Chi è l'operatore dell'armadietto per pacchi?",
"uk": "Який оператор поштомату?"
},
"render": {
"en": "This parcel locker is operated by {operator}",
"de": "Dieses Paketschließfach wird von {operator} betrieben",
"nl": "Deze pakketautomaat wordt beheerd door {operator}",
"ca": "Aquesta bústia intel·ligent la gestiona {operator}",
"fr": "Ce casier à colis est exploité par {operator}",
"pl": "Ten paczkomat jest obsługiwany przez {operator}",
"cs": "Tuto schránku na balíky provozuje {operator}",
"es": "Esta taquilla de paquetes es operada por {operator}",
"it": "Questo armadietto per pacchi è gestito da {operator}",
"uk": "Цей посилкова шафка обслуговується компанією {operator}"
}
}
},
@ -339,4 +325,4 @@
"enableImproveAccuracy": true
},
"allowCopy": true
}
}

View file

@ -145,25 +145,24 @@
"render": "{minimap(18): height: 5rem; overflow: hidden; border-radius:3rem; }"
},
{
"id": "operator",
"question": {
"en": "Who operates this postbox?",
"de": "Wer betreibt diesen Briefkasten?",
"es": "¿Quién gestiona este buzón?",
"ca": "Qui opera aquesta bústia?",
"cs": "Kdo provozuje tuto poštovní schránku?",
"it": "Chi gestisce questa cassetta postale?"
},
"render": {
"en": "This postbox is operated by <b>{operator}</b>",
"de": "Dieser Briefkasten wird von <b>{operator}</b> betrieben",
"es": "Este buzón es operado por <b>{operator}</b>.",
"ca": "Aquesta bústia està operada per <b>{operator}</b>",
"cs": "Tuto poštovní schránku provozuje <b>{operator}</b>",
"it": "Questa cassetta postale è gestita da <b>{operator}</b>"
},
"freeform": {
"key": "operator"
"builtin": "operator",
"override": {
"question": {
"en": "Who operates this postbox?",
"de": "Wer betreibt diesen Briefkasten?",
"es": "¿Quién gestiona este buzón?",
"ca": "Qui opera aquesta bústia?",
"cs": "Kdo provozuje tuto poštovní schránku?",
"it": "Chi gestisce questa cassetta postale?"
},
"render": {
"en": "This postbox is operated by <b>{operator}</b>",
"de": "Dieser Briefkasten wird von <b>{operator}</b> betrieben",
"es": "Este buzón es operado por <b>{operator}</b>.",
"ca": "Aquesta bústia està operada per <b>{operator}</b>",
"cs": "Tuto poštovní schránku provozuje <b>{operator}</b>",
"it": "Questa cassetta postale è gestita da <b>{operator}</b>"
}
}
}
],
@ -194,4 +193,4 @@
"pakjes"
]
}
}
}

View file

@ -410,34 +410,32 @@
"condition": "indoor=yes"
},
{
"id": "public_bookcase-operator",
"question": {
"en": "Who maintains this public bookcase?",
"nl": "Wie is verantwoordelijk voor dit boekenruilkastje?",
"de": "Wer betreibt den Bücherschrank?",
"fr": "Qui entretien cette microbibliothèque ?",
"it": "Chi mantiene questa libreria pubblica?",
"hu": "Ki tartja fenn ezt a nyilvános könyvespolcot?",
"ca": "Qui gestiona aquesta prestatgeria pública?",
"cs": "Kdo tuto veřejnou knihobudku spravuje?",
"es": "¿Quién mantiene este librero público?",
"da": "Hvem står for at vedligeholde dette bogbytteskab?"
},
"render": {
"en": "Operated by {operator}",
"nl": "Onderhouden door {operator}",
"de": "Betrieben von {operator}",
"fr": "Entretenue par {operator}",
"it": "Gestita da {operator}",
"hu": "Üzemeltető: {operator}",
"ca": "Gestionant per {operator}",
"cs": "Provozuje {operator}",
"es": "Operado por {operator}",
"da": "Drevet af {operator}"
},
"freeform": {
"type": "string",
"key": "operator"
"builtin": "operator",
"override": {
"question": {
"en": "Who maintains this public bookcase?",
"nl": "Wie is verantwoordelijk voor dit boekenruilkastje?",
"de": "Wer betreibt den Bücherschrank?",
"fr": "Qui entretien cette microbibliothèque ?",
"it": "Chi mantiene questa libreria pubblica?",
"hu": "Ki tartja fenn ezt a nyilvános könyvespolcot?",
"ca": "Qui gestiona aquesta prestatgeria pública?",
"cs": "Kdo tuto veřejnou knihobudku spravuje?",
"es": "¿Quién mantiene este librero público?",
"da": "Hvem står for at vedligeholde dette bogbytteskab?"
},
"render": {
"en": "This public bookcase is operated by {operator}",
"nl": "Onderhouden door {operator}",
"de": "Betrieben von {operator}",
"fr": "Entretenue par {operator}",
"it": "Gestita da {operator}",
"hu": "Üzemeltető: {operator}",
"ca": "Gestionant per {operator}",
"cs": "Provozuje {operator}",
"es": "Operado por {operator}",
"da": "Drevet af {operator}"
}
}
},
{
@ -735,4 +733,4 @@
"neededChangesets": 5
},
"allowMove": true
}
}

View file

@ -3390,6 +3390,35 @@
"key": "ref"
}
},
{
"id": "operator",
"question": {
"en": "What company operates this place?"
},
"render": {
"en": "This place is operated by <b>{operator}</b>"
},
"freeform": {
"key": "operator",
"type": "string",
"placeholder": {
"en": "Operator",
"de": "Betreiber",
"fr": "Opérateur",
"nl": "Beheerder",
"ca": "Operador",
"cs": "Operátor",
"he": "מפעיל",
"eu": "Operadorea",
"pt_BR": "Operador",
"pl": "Operator",
"es": "Operador",
"pt": "Operador",
"it": "Operatore",
"cy": "Gweithredwr"
}
}
},
{
"id": "child_highchair",
"question": {
@ -3529,4 +3558,4 @@
}
}
]
}
}

View file

@ -1328,30 +1328,28 @@
"multiAnswer": true
},
{
"id": "operator",
"question": {
"en": "What company operates this recycling facility?",
"nl": "Wat is de beheerder van deze recyclingfaciliteit?",
"de": "Welches Unternehmen betreibt diese Recyclinganlage?",
"es": "¿Qué empresa opera esta instalación de reciclaje?",
"it": "Quale azienda gestisce questa struttura di riciclaggio?",
"ca": "Quina empresa opera aquesta infraestructura de reciclatge?",
"fr": "Quelle entreprise gère ce point de recyclage ?",
"cs": "Jaká společnost provozuje toto recyklační zařízení?"
},
"render": {
"en": "This recycling facility is operated by {operator}",
"nl": "Deze recyclingfaciliteit wordt beheerd door {operator}",
"de": "Die Recyclingeinrichtung wird betrieben von {operator}",
"es": "Esta instalación de reciclaje está operada por {operator}",
"it": "Questa struttura di riciclaggio è gestita da {operator}",
"ca": "Aquesta infraestuctura de reciclatge està operada per {operator}",
"fr": "Ce point de recyclage est géré par {operator}",
"cs": "Toto recyklační zařízení provozuje {operator}"
},
"freeform": {
"key": "operator",
"type": "string"
"builtin": "operator",
"override": {
"question": {
"en": "What company operates this recycling facility?",
"nl": "Wat is de beheerder van deze recyclingfaciliteit?",
"de": "Welches Unternehmen betreibt diese Recyclinganlage?",
"es": "¿Qué empresa opera esta instalación de reciclaje?",
"it": "Quale azienda gestisce questa struttura di riciclaggio?",
"ca": "Quina empresa opera aquesta infraestructura de reciclatge?",
"fr": "Quelle entreprise gère ce point de recyclage ?",
"cs": "Jaká společnost provozuje toto recyklační zařízení?"
},
"render": {
"en": "This recycling facility is operated by {operator}",
"nl": "Deze recyclingfaciliteit wordt beheerd door {operator}",
"de": "Die Recyclingeinrichtung wird betrieben von {operator}",
"es": "Esta instalación de reciclaje está operada por {operator}",
"it": "Questa struttura di riciclaggio è gestita da {operator}",
"ca": "Aquesta infraestuctura de reciclatge està operada per {operator}",
"fr": "Ce point de recyclage est géré par {operator}",
"cs": "Toto recyklační zařízení provozuje {operator}"
}
}
},
{
@ -1906,4 +1904,4 @@
"enableRelocation": true,
"enableImproveAccuracy": true
}
}
}

View file

@ -270,7 +270,8 @@
"ca": "Aquest fanal es troba al final d'un pal recte",
"cs": "Tato lampa je umístěna na vrcholu rovného stožáru",
"it": "Questo lampione si trova in cima a un palo dritto"
}
},
"icon": "./assets/layers/street_lamps/straight_pole.svg"
},
{
"if": "lamp_mount=bent_mast",
@ -282,7 +283,8 @@
"ca": "Aquest fanal es troba al final d'un pal doblegat",
"cs": "Tato lampa je umístěna na konci ohnutého stožáru",
"it": "Questo lampione si trova all'estremità di un palo curvo"
}
},
"icon": "./assets/layers/street_lamps/bent_pole_1.svg"
}
],
"condition": {
@ -675,4 +677,4 @@
"enableImproveAccuracy": true,
"enableRelocation": false
}
}
}

View file

@ -27,7 +27,12 @@
"source": {
"osmTags": {
"and": [
"man_made=surveillance",
{
"or": [
"man_made=surveillance",
"disused:man_made=surveillance"
]
},
{
"or": [
"surveillance:type=camera",
@ -52,7 +57,15 @@
"es": "Cámara de vigilancia",
"cs": "Bezpečnostní kamera",
"sl": "Nadzorna kamera"
}
},
"mappings": [
{
"if": "disused:man_made=surveillance",
"then": {
"en": "Disused surveillance camera"
}
}
]
},
"pointRendering": [
{
@ -122,7 +135,13 @@
"then": "calc({_direction:numerical}deg - 90deg)"
}
]
}
},
"iconBadges": [
{
"if": "disused:man_made=surveillance",
"then": "close:red"
}
]
}
],
"lineRendering": [
@ -237,6 +256,35 @@
],
"tagRenderings": [
"images",
{
"id": "active",
"question": {
"en": "Is this camera currently in use?",
"nl": "Is deze camera momenteel in gebruik?"
},
"mappings": [
{
"if": "man_made=surveillance",
"then": {
"en": "This camera is currently in use.",
"nl": "Deze camera is momenteel in gebruik."
},
"addExtraTags": [
"disused:man_made="
]
},
{
"if": "disused:man_made=surveillance",
"then": {
"en": "This camera is not used anymore",
"nl": "Deze camera is niet meer in gebruik"
},
"addExtraTags": [
"man_made="
]
}
]
},
{
"id": "has_alpr",
"question": {
@ -910,4 +958,4 @@
"enableRelocation": false
},
"enableMorePrivacy": true
}
}

View file

@ -79,56 +79,45 @@
"images",
"level",
{
"id": "operator",
"question": {
"en": "Who is the operator of this ticket machine?",
"de": "Wer ist der Betreiber dieses Fahrkartenautomaten?",
"nl": "Wie is de beheerder van deze kaartautomaat?",
"ca": "Qui és l'operador d'aquesta màquina de venda de bitllets?",
"cs": "Kdo je provozovatelem tohoto automatu na jízdenky?",
"es": "¿Quién es el operador de esta máquina expendedora de billetes?",
"it": "Chi è l'operatore di questa biglietteria automatica?"
},
"render": {
"en": "This ticket machine is operated by {operator}",
"de": "Dieser Fahrkartenautomat wird betrieben von {operator}",
"nl": "Deze kaartautomaat wordt beheerd door {operator}",
"ca": "{operator} opera aquesta màquina de bitllets",
"cs": "Tento automat na jízdenky provozuje {operator}",
"es": "Esta máquina expendedora de billetes está operada por {operator}",
"it": "Questa biglietteria automatica è gestita da {operator}"
},
"freeform": {
"key": "operator",
"type": "string",
"placeholder": {
"en": "Name of the operator",
"de": "Name des Betreibers",
"nl": "Naam van de beheerder",
"ca": "Nom de l'operador",
"cs": "Jméno operátora",
"es": "Nombre del operador",
"it": "Nome dell'operatore"
}
},
"mappings": [
{
"if": "operator=Nederlandse Spoorwegen",
"then": {
"en": "Dutch Railways (NS)",
"nl": "Nederlandse Spoorwegen (NS)",
"de": "Niederländische Eisenbahn (NS)",
"ca": "Ferrocarrils holandesos (NS)",
"cs": "Nizozemské dráhy (NS)",
"es": "Ferrocarriles Holandeses (NS)",
"it": "Ferrovie Olandesi (NS)"
},
"addExtraTags": [
"operator:wikidata=Q23076"
],
"hideInAnswer": "_country!=nl"
}
]
"builtin": "operator",
"override": {
"question": {
"en": "Who is the operator of this ticket machine?",
"de": "Wer ist der Betreiber dieses Fahrkartenautomaten?",
"nl": "Wie is de beheerder van deze kaartautomaat?",
"ca": "Qui és l'operador d'aquesta màquina de venda de bitllets?",
"cs": "Kdo je provozovatelem tohoto automatu na jízdenky?",
"es": "¿Quién es el operador de esta máquina expendedora de billetes?",
"it": "Chi è l'operatore di questa biglietteria automatica?"
},
"render": {
"en": "This ticket machine is operated by {operator}",
"de": "Dieser Fahrkartenautomat wird betrieben von {operator}",
"nl": "Deze kaartautomaat wordt beheerd door {operator}",
"ca": "{operator} opera aquesta màquina de bitllets",
"cs": "Tento automat na jízdenky provozuje {operator}",
"es": "Esta máquina expendedora de billetes está operada por {operator}",
"it": "Questa biglietteria automatica è gestita da {operator}"
},
"mappings+": [
{
"if": "operator=Nederlandse Spoorwegen",
"then": {
"en": "Dutch Railways (NS)",
"nl": "Nederlandse Spoorwegen (NS)",
"de": "Niederländische Eisenbahn (NS)",
"ca": "Ferrocarrils holandesos (NS)",
"cs": "Nizozemské dráhy (NS)",
"es": "Ferrocarriles Holandeses (NS)",
"it": "Ferrovie Olandesi (NS)"
},
"addExtraTags": [
"operator:wikidata=Q23076"
],
"hideInAnswer": "_country!=nl"
}
]
}
},
"payment-options-split",
"denominations-coins",
@ -136,4 +125,4 @@
],
"deletion": true,
"allowMove": true
}
}

View file

@ -104,54 +104,25 @@
"condition": "barrier~*"
},
{
"id": "validator-operator",
"question": {
"en": "Who is the operator of this ticket validator?",
"de": "Wer ist der Betreiber dieses Fahrkartenentwerters?",
"ca": "Qui és l'operador d'aquest validador de bitllets?",
"cs": "Kdo je provozovatelem tohoto validátoru jízdenek?",
"es": "¿Quién es el operador de este validador de billetes?",
"it": "Chi è l'operatore di questo validatore di biglietti?"
},
"render": {
"en": "This ticket validator is operated by {operator}",
"de": "Dieser Fahrkartenentwerter wird betrieben von {operator}",
"ca": "{operator} opera aquest validador de bitllets",
"cs": "Tento validátor jízdenek provozuje {operator}",
"es": "Este validador de billetes está operado por {operator}",
"it": "Questo validatore di biglietti è gestito da {operator}"
},
"freeform": {
"key": "operator",
"type": "string",
"placeholder": {
"en": "Name of the operator",
"de": "Name des Betreibers",
"nl": "Naam van de beheerder",
"ca": "Nom de l'operador",
"cs": "Jméno operátora",
"es": "Nombre del operador",
"it": "Nome dell'operatore"
"builtin": "operator",
"override": {
"question": {
"en": "Who is the operator of this ticket validator?",
"de": "Wer ist der Betreiber dieses Fahrkartenentwerters?",
"ca": "Qui és l'operador d'aquest validador de bitllets?",
"cs": "Kdo je provozovatelem tohoto validátoru jízdenek?",
"es": "¿Quién es el operador de este validador de billetes?",
"it": "Chi è l'operatore di questo validatore di biglietti?"
},
"render": {
"en": "This ticket validator is operated by {operator}",
"de": "Dieser Fahrkartenentwerter wird betrieben von {operator}",
"ca": "{operator} opera aquest validador de bitllets",
"cs": "Tento validátor jízdenek provozuje {operator}",
"es": "Este validador de billetes está operado por {operator}",
"it": "Questo validatore di biglietti è gestito da {operator}"
}
},
"mappings": [
{
"if": "operator=Nederlandse Spoorwegen",
"then": {
"en": "Dutch Railways (NS)",
"nl": "Nederlandse Spoorwegen (NS)",
"de": "Niederländische Eisenbahn (NS)",
"ca": "Ferrocarrils holandesos (NS)",
"cs": "Nizozemské dráhy (NS)",
"es": "Ferrocarriles Holandeses (NS)",
"it": "Ferrovie Olandesi (NS)"
},
"addExtraTags": [
"operator:wikidata=Q23076"
],
"hideInAnswer": "_country!=nl"
}
]
}
},
{
"builtin": "payment-options",
@ -189,4 +160,4 @@
],
"deletion": true,
"allowMove": true
}
}

View file

@ -1,9 +1,9 @@
{
"id": "transit_routes",
"name": {
"en": "Bus lines",
"en": "Transit Routes",
"de": "Buslinien",
"nl": "Buslijnen",
"nl": "OV-lijnen",
"da": "Buslinjer",
"ca": "Línies de bus",
"cs": "Autobusové linky",
@ -11,9 +11,9 @@
"it": "Linee degli autobus"
},
"description": {
"en": "Layer showing bus lines",
"en": "Layer showing transit routes",
"de": "Ebene mit Buslinien",
"nl": "Laag met buslijnen",
"nl": "Laag met OV-lijnen",
"da": "Lag, der viser buslinjer",
"ca": "Capa que mostra les línies d'autobús",
"cs": "Vrstva zobrazující autobusové linky",
@ -22,9 +22,14 @@
},
"source": {
"osmTags": {
"and": [
"type=route",
"route=bus"
"or": [
"route=bus",
"route=tram",
"route=trolleybus",
"route=light_rail",
"route=subway",
"route=train",
"route=ferry"
]
}
},
@ -34,9 +39,9 @@
"minzoom": 15,
"title": {
"render": {
"en": "Bus line",
"en": "Transit route",
"de": "Buslinie",
"nl": "Buslijn",
"nl": "OV-lijn",
"da": "Buslinje",
"ca": "Línia de bus",
"cs": "Autobusová linka",
@ -65,7 +70,14 @@
"condition": {
"and": [
"id~relation/[0-9]+",
"_numeric_id~*"
"_numeric_id~*",
{
"or": [
"route=bus",
"route=tram",
"route=trolleybus"
]
}
]
},
"render": "<a href=' https://relatify.monicz.dev/?relation={_numeric_id}&load=1' target='_blank' rel='noopener'><img alt='on relatify' textmode='🗺️' src='./assets/layers/transit_routes/relatify.png'/></a>"
@ -90,9 +102,9 @@
{
"id": "name",
"question": {
"en": "What is the name for this bus line? (i.e. Bus XX: From => Via => To)",
"en": "What is the name for this transit route? (i.e. Bus XX: From => Via => To)",
"de": "Wie lautet der Name der Buslinie? (z.B. Bus XX: Von => Über => Nach)",
"nl": "Wat is de naam van deze buslijn (bv. Bus XX: Van => Via => Naar)",
"nl": "Wat is de naam van deze OV-lijn (bv. Bus XX: Van => Via => Naar)",
"cs": "Jak se jmenuje tato autobusová linka? (tj. Autobus XX: Od => Přes => Do)",
"es": "¿Cuál es el nombre de esta línea de autobús? (es decir, Autobús XX: Desde => Vía => Hasta)",
"ca": "Quin és el nom d'aquesta línia d'autobús? (és a dir, Bus XX: De : Via ) A)",
@ -108,9 +120,9 @@
{
"id": "from",
"question": {
"en": "What is the starting point for this bus line?",
"en": "What is the starting point for this transit route?",
"de": "Wo ist der Startpunkt dieser Buslinie?",
"nl": "Wat is het beginpunt van deze buslijn?",
"nl": "Wat is het beginpunt van deze OV-lijn?",
"da": "Hvad er udgangspunktet for denne buslinje?",
"ca": "Quin és el punt inicial d'aquesta línea d'autobús?",
"cs": "Jaký je výchozí bod této autobusové linky?",
@ -118,9 +130,9 @@
"it": "Qual è il punto di partenza di questa linea di autobus?"
},
"render": {
"en": "This bus line begins at {from}",
"en": "This transit route begins at {from}",
"de": "Die Buslinie startet von {from}",
"nl": "Deze buslijn begint bij {from}",
"nl": "Deze OV-lijn begint bij {from}",
"da": "Denne buslinje starter kl. {from}",
"fr": "Cette ligne de bus commence à {from}",
"ca": "Aquesta línia d'autobús comença a {from}",
@ -138,9 +150,9 @@
{
"id": "via",
"question": {
"en": "What is the via point for this bus line?",
"en": "What is the via point for this transit route?",
"de": "Über welchen Zwischenhalt fährt die Buslinie?",
"nl": "Via welk punt gaat deze buslijn?",
"nl": "Via welk punt gaat deze OV-lijn?",
"cs": "Jaký je průjezdní bod této autobusové linky?",
"ru": "Где находится конечный пункт этого автобусного маршрута?",
"es": "¿Cuál es el punto intermedio de esta línea de autobús?",
@ -149,9 +161,9 @@
"uk": "Яка кінцева зупинка цієї автобусної лінії?"
},
"render": {
"en": "This bus line goes via {via}",
"en": "This transit route goes via {via}",
"de": "Die Buslinie fährt über {via}",
"nl": "Deze buslijn gaat via {via}",
"nl": "Deze OV-lijn gaat via {via}",
"da": "Denne buslinje går via {via}",
"fr": "Cette ligne de bus passe par {via}",
"ca": "Aquesta línia d'autobús passa per {via}",
@ -168,9 +180,9 @@
{
"id": "to",
"question": {
"en": "What is the ending point for this bus line?",
"en": "What is the ending point for this transit route?",
"de": "Wo ist der Endpunkt der Buslinie?",
"nl": "Wat is het eindpunt van deze buslijn?",
"nl": "Wat is het eindpunt van deze OV-lijn?",
"da": "Hvad er endestationen for denne buslinje?",
"ca": "Quin és el punt final d'aquesta línea d'autobús?",
"cs": "Jaký je konečný bod této autobusové linky?",
@ -178,9 +190,9 @@
"it": "Qual è il punto di arrivo di questa linea di autobus?"
},
"render": {
"en": "This bus line ends at {to}",
"en": "This transit route ends at {to}",
"de": "Der Endpunkt der Buslinie ist {to}",
"nl": "Deze buslijn eindigt bij {to}",
"nl": "Deze OV-lijn eindigt bij {to}",
"da": "Denne buslinje slutter ved {to}",
"fr": "Cette ligne de bus termine à {to}",
"ca": "Aquesta línia d'autobús acaba a {to}",
@ -198,9 +210,9 @@
{
"id": "colour",
"question": {
"en": "What is the colour for this bus line?",
"en": "What is the colour for this transit route?",
"de": "Welche Farbe hat diese Buslinie?",
"nl": "Wat is de kleur van deze buslijn?",
"nl": "Wat is de kleur van deze OV-lijn?",
"da": "Hvad er farven på denne buslinje?",
"ca": "Quin és el color d'aquest línia d'autobús?",
"cs": "Jakou barvu má tato autobusová linka?",
@ -208,9 +220,9 @@
"it": "Qual è il colore di questa linea di autobus?"
},
"render": {
"en": "This bus line has the color {colour}",
"en": "This transit route has the color {colour}",
"de": "Die Buslinie hat die Farbe {colour}",
"nl": "Deze buslijn heeft de kleur {colour}",
"nl": "Deze OV-lijn heeft de kleur {colour}",
"da": "Denne buslinje har farven {colour}",
"ca": "Aquesta línea d'autobús té el color {colour}",
"cs": "Tato autobusová linka má barvu {colour}",
@ -225,9 +237,9 @@
{
"id": "network",
"question": {
"en": "What network does this bus line belong to?",
"en": "What network does this transit route belong to?",
"de": "Zu welchem Verkehrsverbund gehört die Buslinie?",
"nl": "Bij welk netwerk hoort deze buslijn?",
"nl": "Bij welk netwerk hoort deze OV-lijn?",
"da": "Hvilket netværk tilhører denne buslinje?",
"ca": "A quina xarxa pertany aquesta línea d'autobús?",
"cs": "Do jaké sítě tato autobusová linka patří?",
@ -235,9 +247,9 @@
"it": "A quale rete appartiene questa linea di autobus?"
},
"render": {
"en": "This bus line is part of the {network} network",
"en": "This transit route is part of the {network} network",
"de": "Die Buslinie gehört zum Verkehrsverbund {network}",
"nl": "Deze buslijn is onderdeel van het {network} netwerk",
"nl": "Deze OV-lijn is onderdeel van het {network} netwerk",
"ca": "Aquesta línea d'autobús és part de la xarxa {network}",
"fr": "Cette ligne de bus fait partie du réseau {network}",
"cs": "Tato autobusová linka je součástí sítě {network}",
@ -251,32 +263,30 @@
}
},
{
"id": "operator",
"question": {
"en": "What company operates this bus line?",
"de": "Welches Unternehmen betreibt die Buslinie?",
"nl": "Welk bedrijf exploiteert deze buslijn?",
"da": "Hvilket selskab driver denne buslinje?",
"ca": "Quina companyia opera aquesta línia d'autobús?",
"cs": "Jaká společnost provozuje tuto autobusovou linku?",
"es": "¿Qué compañía opera esta línea de autobús?",
"it": "Quale azienda gestisce questa linea di autobus?"
},
"render": {
"en": "This bus line is operated by {operator}",
"de": "Die Buslinie wird betrieben von {operator}",
"nl": "Deze buslijn wordt geëxploiteerd door {operator}",
"da": "Denne buslinje drives af {operator}",
"ca": "{operator} opera aquesta línea d'autobús",
"fr": "Cette ligne de bus est gérée par {operator}",
"cs": "Tuto autobusovou linku provozuje {operator}",
"es": "Esta línea de autobús es operada por {operator}",
"it": "Questa linea di autobus è gestita da {operator}",
"uk": "Ця автобусна лінія обслуговується {operator}"
},
"freeform": {
"key": "operator",
"type": "string"
"builtin": "operator",
"override": {
"question": {
"en": "What company operates this transit route?",
"de": "Welches Unternehmen betreibt die Buslinie?",
"nl": "Welk bedrijf exploiteert deze OV-lijn?",
"da": "Hvilket selskab driver denne buslinje?",
"ca": "Quina companyia opera aquesta línia d'autobús?",
"cs": "Jaká společnost provozuje tuto autobusovou linku?",
"es": "¿Qué compañía opera esta línea de autobús?",
"it": "Quale azienda gestisce questa linea di autobus?"
},
"render": {
"en": "This transit route is operated by {operator}",
"de": "Die Buslinie wird betrieben von {operator}",
"nl": "Deze OV-lijn wordt geëxploiteerd door {operator}",
"da": "Denne buslinje drives af {operator}",
"ca": "{operator} opera aquesta línea d'autobús",
"fr": "Cette ligne de bus est gérée par {operator}",
"cs": "Tuto autobusovou linku provozuje {operator}",
"es": "Esta línea de autobús es operada por {operator}",
"it": "Questa linea di autobus è gestita da {operator}",
"uk": "Ця автобусна лінія обслуговується {operator}"
}
}
}
],
@ -288,4 +298,4 @@
}
}
}
}
}

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500">
<title>ANCHOR</title>
<g stroke="black" fill="none">
<circle cx="250" cy="80" r="40" stroke-width="20"/>
<path d="M 250,125 V 440 M 150,185 H 350 M 100,347 C 130,460 370,460 400,347" stroke-width="30"/>
</g>
<g fill="black">
<circle cx="250" cy="115" r="20"/>
<path d="M 55,365 L 75,260 150,330 Z M 225,440 L 250,470 275,440 Z M 445,365 L 425,260 350,330 Z"/>
</g>
<div xmlns="" id="divScriptsUsed" style="display: none"/><script xmlns="" id="globalVarsDetection" src="moz-extension://85428172-fe12-427b-ac2a-46cc4f37cea0/js/wrs_env.js"/></svg>

After

Width:  |  Height:  |  Size: 653 B

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: DePiep
SPDX-License-Identifier: CC0-1.0

View file

@ -11,5 +11,35 @@
"sources": [
"https://github.com/gravitystorm/openstreetmap-carto/blob/master/symbols/highway/bus_stop.svg"
]
},
{
"path": "ferry.svg",
"license": "CC0-1.0",
"authors": [
"DePiep"
],
"sources": [
"https://commons.wikimedia.org/wiki/File:BSicon_ANCHOR.svg"
]
},
{
"path": "subway.svg",
"license": "CC0-1.0",
"authors": [
"Siyuwj"
],
"sources": [
"https://commons.wikimedia.org/wiki/File:BSicon_SUBWAY-CHN.svg"
]
},
{
"path": "tram.svg",
"license": "CC0-1.0",
"authors": [
"BjørnN"
],
"sources": [
"https://commons.wikimedia.org/wiki/File:BSicon_TRAM1.svg"
]
}
]

View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="图层_2"
x="0px"
y="0px"
width="1100"
height="1100"
viewBox="0 0 1100 1100"
enable-background="new 0 0 500 500"
xml:space="preserve"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="BSicon_SUBWAY-CHN.svg"><metadata
id="metadata17"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs15" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1009"
id="namedview13"
showgrid="false"
inkscape:zoom="0.70710678"
inkscape:cx="931.55143"
inkscape:cy="600.05849"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="图层_2"
inkscape:document-rotation="0" /><path
id="rect893"
style="opacity:1;fill:#000000;stroke:none;stroke-width:5.35389;stroke-miterlimit:10;stroke-dasharray:none"
d="M 427.9668 280 C 372.03142 280 327 325.03142 327 380.9668 L 327 729.0332 C 327 777.76822 361.18609 818.21983 406.98242 827.82812 L 291 1000 L 351 1000 L 432.50977 879 L 661.49023 879 L 743 1000 L 803 1000 L 687.01758 827.82812 C 732.81391 818.21983 767 777.76822 767 729.0332 L 767 380.9668 C 767 325.03142 721.96858 280 666.0332 280 L 427.9668 280 z M 493.17188 298 L 600.82812 298 C 609.23298 298 616 304.76702 616 313.17188 L 616 347.42969 C 616 355.83454 609.23299 362.59961 600.82812 362.59961 L 493.17188 362.59961 C 484.76702 362.59961 478 355.83454 478 347.42969 L 478 313.17188 C 478 304.76702 484.76701 298 493.17188 298 z M 420.40039 378.5 L 670.40039 378.5 C 698.10039 378.5 720.40039 400.8 720.40039 428.5 L 720.40039 498.5 C 720.40039 526.2 698.10039 548.5 670.40039 548.5 L 420.40039 548.5 C 392.70039 548.5 370.40039 526.2 370.40039 498.5 L 370.40039 428.5 C 370.40039 400.8 392.70039 378.5 420.40039 378.5 z M 421.96289 686.87891 L 422 686.87891 C 447.95738 686.87891 469 707.92153 469 733.87891 C 469 759.83629 447.95738 780.87891 422 780.87891 C 396.04262 780.87891 375 759.83629 375 733.87891 C 374.99999 707.93601 396.02 686.89939 421.96289 686.87891 z M 671.96289 686.87891 L 672 686.87891 C 697.95738 686.87891 719 707.92153 719 733.87891 C 719 759.83629 697.95738 780.87891 672 780.87891 C 646.04262 780.87891 625 759.83629 625 733.87891 C 624.99999 707.93601 646.02 686.89939 671.96289 686.87891 z " /><path
id="path852"
style="fill:#000000;stroke:none;stroke-width:5.30544"
d="m 125.54793,964.142 c -0.4394,-165.32487 -1.0063,-331.8464 2.5075,-497.09678 15.3487,-160.29688 130.2979,-304.99034 282.9433,-356.36484 153.4477,-54.967807 336.3503,-9.11239 445.2166,112.36708 76.1891,80.74759 118.3471,193.0285 112.2182,304.20579 0.6161,145.2861 0.2421,291.60186 0.1978,436.88875 H 901.874 c -1.1193,-164.46202 0.57953,-329.00793 -3.19737,-493.40251 -14.4252,-143.60363 -125.8634,-270.68771 -266.3193,-303.96588 -123.1472,-31.48846 -261.1871,10.39271 -345.4035,105.90361 -62.9281,67.77457 -96.4043,161.10936 -90.8869,253.39078 -1.062,146.02217 -1.1439,292.0493 -1.6739,438.074 z"
sodipodi:nodetypes="ccccccccccccc" /></svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Siyuwj
SPDX-License-Identifier: CC0-1.0

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500">
<g fill="none" stroke="#000">
<path stroke-width="5" d="m102 174 54-37 54 37-54 37Z"/>
<path stroke-width="14" d="M30 220h440"/>
</g>
<path d="m40 227-30 60v34a13 13 0 0 0 13 13h454a13 13 0 0 0 13-13v-34l-30-60Zm68-14 5-5h84l5 5ZM52 343a14 14 0 0 0 44 0Zm52 0a24 24 0 0 1-4 12h38a24 24 0 0 1-4-12Zm38 0a14 14 0 0 0 44 0Zm172 0a14 14 0 0 0 44 0Zm52 0a24 24 0 0 1-4 12h38a24 24 0 0 1-4-12Zm38 0a14 14 0 0 0 44 0Z"/>
<g fill="#fff">
<path d="M67 287H47c-30 0-30 0 0-60h20Zm366 0h20c30 0 30 0 0-60h-20ZM74 227h34v99H74z"/>
<rect width="77" height="60" x="117" y="227" rx="10"/>
<rect width="77" height="60" x="203" y="227" rx="10"/>
<rect width="77" height="60" x="289" y="227" rx="10"/>
<path d="M374 227h52v99h-52z"/>
</g>
<div xmlns="" id="divScriptsUsed" style="display: none"/><script xmlns="" id="globalVarsDetection" src="moz-extension://85428172-fe12-427b-ac2a-46cc4f37cea0/js/wrs_env.js"/></svg>

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: BjørnN
SPDX-License-Identifier: CC0-1.0

View file

@ -22,7 +22,9 @@
"source": {
"osmTags": {
"or": [
"highway=bus_stop"
"highway=bus_stop",
"railway=platform",
"amenity=ferry_terminal"
]
}
},
@ -32,7 +34,7 @@
"en": "Transit Stop",
"de": "Haltestelle",
"da": "Stoppested",
"nl": "Bushalte",
"nl": "OV-halte",
"ca": "Parada de transport públic",
"cs": "Tranzitní zastávka",
"es": "Parada de transporte",
@ -65,13 +67,39 @@
{
"icon": {
"render": "./assets/layers/transit_stops/bus_stop.svg",
"mappings": []
"mappings": [
{
"if": "train=yes",
"then": "./assets/svg/train.svg"
},
{
"if": "subway=yes",
"then": "./assets/layers/transit_stops/subway.svg"
},
{
"if": "tram=yes",
"then": "./assets/layers/transit_stops/tram.svg"
},
{
"if": "light_rail=yes",
"then": "./assets/svg/train.svg"
},
{
"if": "ferry=yes",
"then": "./assets/layers/transit_stops/ferry.svg"
}
]
}
}
]
}
],
"lineRendering": [],
"lineRendering": [
{
"color": "#74717190",
"fillColor": "#74717190"
}
],
"tagRenderings": [
{
"id": "stop_name",
@ -134,6 +162,30 @@
}
]
},
{
"id": "ref",
"question": {
"en": "What is the platform reference of this stop?"
},
"render": {
"en": "The platform reference of this stop is <b>{ref}</b>."
},
"freeform": {
"key": "ref",
"type": "string",
"placeholder": {
"en": "e.g. A1 or 1"
}
},
"mappings": [
{
"if": "ref=",
"then": {
"en": "This stop has no platform reference"
}
}
]
},
"images",
{
"id": "shelter",
@ -561,4 +613,4 @@
"tactile_paving"
],
"allowMove": false
}
}

View file

@ -908,40 +908,29 @@
"denominations-coins",
"denominations-notes",
{
"id": "operator",
"question": {
"en": "Who operates this vending machine?",
"nl": "Wie beheert deze verkoopautomaat?",
"de": "Wer betreibt diesen Verkaufsautomaten?",
"fr": "Qui exploite ce distributeur ?",
"ca": "Qui opera aquesta màquina expenedora?",
"cs": "Kdo provozuje tento automat?",
"es": "¿Quién opera esta máquina expendedora?",
"uk": "Хто керує цим автоматом?",
"it": "Chi gestisce questo distributore automatico?"
},
"render": {
"en": "This vending machine is operated by {operator}",
"nl": "Deze verkoopautomaat wordt beheerd door {operator}",
"de": "Dieser Verkaufsautomat wird betrieben von {operator}",
"fr": "Ce distributeur est exploité par {operator}",
"ca": "{operator} gestiona aquesta màquina expenedora",
"cs": "Tento prodejní automat provozuje {operator}",
"es": "Esta máquina expendedora es operada por {operator}",
"uk": "Цим торговим автоматом керує {operator}",
"it": "Questo distributore automatico è gestito da {operator}"
},
"freeform": {
"key": "operator",
"placeholder": {
"en": "Name of operator",
"nl": "Naam van beheerder",
"de": "Name des Betreibers",
"fr": "Nom de l'exploitant",
"ca": "Nom de l'operadora",
"cs": "Jméno provozovatele",
"es": "Nombre del operador",
"it": "Nome dell'operatore"
"builtin": "operator",
"override": {
"question": {
"en": "Who operates this vending machine?",
"nl": "Wie beheert deze verkoopautomaat?",
"de": "Wer betreibt diesen Verkaufsautomaten?",
"fr": "Qui exploite ce distributeur ?",
"ca": "Qui opera aquesta màquina expenedora?",
"cs": "Kdo provozuje tento automat?",
"es": "¿Quién opera esta máquina expendedora?",
"uk": "Хто керує цим автоматом?",
"it": "Chi gestisce questo distributore automatico?"
},
"render": {
"en": "This vending machine is operated by {operator}",
"nl": "Deze verkoopautomaat wordt beheerd door {operator}",
"de": "Dieser Verkaufsautomat wird betrieben von {operator}",
"fr": "Ce distributeur est exploité par {operator}",
"ca": "{operator} gestiona aquesta màquina expenedora",
"cs": "Tento prodejní automat provozuje {operator}",
"es": "Esta máquina expendedora es operada por {operator}",
"uk": "Цим торговим автоматом керує {operator}",
"it": "Questo distributore automatico è gestito da {operator}"
}
}
},
@ -1598,4 +1587,4 @@
"enableRelocation": true
},
"allowCopy": true
}
}

View file

@ -1,14 +1,14 @@
{
"id": "transit",
"title": {
"en": "Bus routes",
"en": "Transit routes",
"de": "Buslinien",
"fr": "Lignes de bus",
"da": "Busruter",
"nb_NO": "Bussruter",
"ca": "Rutes de bus",
"pa_PK": "بس روٹ",
"nl": "Busroutes",
"nl": "OV-lijnen",
"es": "Rutas de autobús",
"cs": "Autobusové linky",
"zh_Hant": "公車路線",

View file

@ -26,17 +26,67 @@
"name": "Dataset Afvalbakken Assen",
"description": "Laag op basis van externe data",
"source": {
"osmTags": "OBJECTID~*",
"osmTags": "Historisch_~*",
"geoJson": "https://opendata.arcgis.com/datasets/5b6953ac5a9d4616a7dc75ab0beeac2f_0.geojson"
},
"calculatedTags": [
"_closest_osm_waste_basket=closest(feat)('waste_basket')?.properties?.id",
"_closest_osm_waste_basket_distance=distanceTo(feat)(feat.properties._closest_osm_waste_basket)",
"_has_closeby_feature=Number(feat.properties._closest_osm_waste_basket_distance) < 10 ? 'yes' : 'no'"
"_has_closeby_feature=Number(feat.properties._closest_osm_waste_basket_distance) < 10 ? 'yes' : 'no'",
"_waste=(feat.properties.Type_ === 'Capitol 60L' || feat.properties.Type_ === 'Restafval') ? 'trash' : (feat.properties.Type_ === 'Hondenpoep' ? 'dog_excrement' : '')",
"_tags='amenity=waste_basket' + (feat.properties._waste ? ';waste=' + feat.properties._waste : '') + ';operator=Gemeente Assen;operator:wikidata=Q798'"
],
"title": "Afvalbak in dataset",
"tagRenderings": [
"all_tags"
{
"id": "import",
"render": {
"special": {
"type": "import_button",
"targetLayer": "waste_basket",
"tags": "_tags",
"text": "Voeg deze afvalbak toe"
}
},
"condition": "_has_closeby_feature=no"
},
{
"id": "tag-hint",
"render": "Deze afvalbak krijgt de volgende tags: <b>{_tags}</b>",
"condition": "_has_closeby_feature=no"
},
{
"id": "imported",
"render": "Deze afvalbak is (waarschijnlijk) al toegevoegd. <a href=#{_closest_osm_waste_basket}>Bekijk het punt</a>.",
"condition": "_has_closeby_feature=yes"
},
{
"id": "tag-apply",
"condition": "_has_closeby_feature=yes",
"render": {
"special": {
"type": "tag_apply",
"tags_to_apply": "$_tags",
"id_of_object_to_apply_this_one": "_closest_osm_waste_basket",
"message": "Voeg alle tags toe aan de bestaande afvalbak",
"image": "./assets/svg/addSmall.svg"
}
}
},
{
"id": "type",
"render": "<b>Type:</b> {Type_}",
"condition": "Type_~*"
},
{
"id": "colour",
"render": "<b>Kleur:</b> {Kleur_}",
"condition": "Kleur_~*"
},
{
"id": "minimap_with_poi",
"render": "{minimap(18, id, _closest_osm_waste_basket)}"
}
],
"pointRendering": [
{
@ -46,12 +96,13 @@
],
"marker": [
{
"icon": {
"render": "circle:red",
"icon": "circle",
"color": {
"render": "red",
"mappings": [
{
"if": "_has_closeby_feature=yes",
"then": "circle:#008000aa"
"then": "green"
}
]
}
@ -61,7 +112,27 @@
"anchor": "center"
}
],
"lineRendering": []
"lineRendering": [],
"filter": [
{
"id": "closeby",
"options": [
{
"default": true,
"question": "Alle vuilnisbakken"
},
{
"osmTags": "_has_closeby_feature=yes",
"question": "Met nabijgelegen vuilnisbak"
},
{
"osmTags": "_has_closeby_feature=no",
"question": "Zonder nabijgelegen vuilnisbak"
}
],
"#": "ignore-possible-duplicate"
}
]
},
"recycling",
{
@ -69,20 +140,73 @@
"name": "Dataset Recyclingcontainers Assen",
"description": "Laag op basis van externe data",
"source": {
"osmTags": "OBJECTID~*",
"geoJson": "https://opendata.arcgis.com/datasets/edb893998e27461b8ed82aad9854d27d_0.geojson"
"osmTags": "Subtype_~*",
"geoJson": "https://services1.arcgis.com/p5QhXC0i0sZjprM1/arcgis/rest/services/Dataset_ondergrondse_containers_2022_Assen_(view)/FeatureServer/0/query?outFields=*&where=1%3D1&f=geojson"
},
"calculatedTags": [
"_closest_osm_recycling=closest(feat)('recycling')?.properties?.id",
"_closest_osm_waste_disposal=closest(feat)('waste_disposal')?.properties?.id",
"_closest_osm_recycling_distance=distanceTo(feat)(feat.properties._closest_osm_recycling)",
"_closest_osm_waste_disposal_distance=distanceTo(feat)(feat.properties._closest_osm_waste_disposal)",
"_closest_feature=(Number(feat.properties._closest_osm_recycling_distance) <= Number(feat.properties._closest_osm_waste_disposal_distance) ? feat.properties._closest_osm_recycling : feat.properties._closest_osm_waste_disposal)",
"_has_closeby_recycling=Number(feat.properties._closest_osm_recycling_distance) < 10 ? 'yes' : 'no'",
"_has_closeby_waste_disposal=Number(feat.properties._closest_osm_waste_disposal_distance) < 10 ? 'yes' : 'no'"
"_has_closeby_waste_disposal=Number(feat.properties._closest_osm_waste_disposal_distance) < 10 ? 'yes' : 'no'",
"_has_closeby_feature=feat.properties._has_closeby_recycling === 'yes' || feat.properties._has_closeby_waste_disposal === 'yes' ? 'yes' : 'no'",
"_amenity=feat.properties.Type__ === 'Restafval' ? 'amenity=waste_disposal;access=residents' : 'amenity=recycling;recycling_type=container'",
"_recycling_tags=feat.properties.Type__ === 'Glas' ? 'recycling:glass_bottles=yes' : (feat.properties.Type__ === 'Kleding' ? 'recycling:clothes=yes;recyling:shoes=yes' : (feat.properties.Type__ === 'Papier' ? 'recycling:paper=yes' : (feat.properties.Type__ === 'PMD' ? 'recycling:pmd=yes' : (feat.properties.Type__ === 'BIO' ? 'recycling:green_waste=yes' : ''))))",
"_tags=feat.properties._amenity + (feat.properties._recycling_tags ? ';' + feat.properties._recycling_tags : '') + ';operator=Gemeente Assen;operator:wikidata=Q798'"
],
"title": "Recyclingcontainer in dataset",
"tagRenderings": [
"all_tags"
{
"id": "import",
"render": {
"special": {
"type": "import_button",
"targetLayer": "recycling",
"tags": "_tags",
"text": "Voeg deze recyclingcontainer toe"
}
},
"condition": "_has_closeby_feature=no"
},
{
"id": "tag-hint",
"render": "Deze recyclingcontainer krijgt de volgende tags: <b>{_tags}</b>",
"condition": "_has_closeby_feature=no"
},
{
"id": "imported",
"render": "Deze recyclingcontainer is (waarschijnlijk) al toegevoegd. <a href=#{_closest_osm_waste_basket}>Bekijk het punt</a>.",
"condition": "_has_closeby_feature=yes"
},
{
"id": "tag-apply",
"condition": "_has_closeby_feature=yes",
"render": {
"special": {
"type": "tag_apply",
"tags_to_apply": "$_tags",
"id_of_object_to_apply_this_one": "_closest_feature",
"message": "Voeg alle tags toe aan de bestaande recyclingcontainer",
"image": "./assets/svg/addSmall.svg"
}
}
},
{
"id": "type",
"render": "<b>Type:</b> {Type_}",
"condition": "Type_~*"
},
{
"id": "colour",
"render": "<b>Kleur:</b> {Kleur_}",
"condition": "Kleur_~*"
},
{
"id": "minimap_with_poi",
"render": "{minimap(18, id, _closest_feature)}"
}
],
"pointRendering": [
{
@ -92,16 +216,18 @@
],
"marker": [
{
"icon": {
"render": "circle:red",
"icon": "circle",
"color": {
"render": "red",
"mappings": [
{
"if": "_has_closeby_recycling=yes",
"then": "circle:#008000aa"
},
{
"if": "_has_closeby_waste_disposal=yes",
"then": "circle:#008000aa"
"if": {
"or": [
"_has_closeby_recycling=yes",
"_has_closeby_waste_disposal=yes"
]
},
"then": "green"
}
]
}
@ -111,8 +237,45 @@
"anchor": "center"
}
],
"lineRendering": []
"lineRendering": [],
"filter": [
{
"id": "closeby",
"options": [
{
"default": true,
"question": "Alle recyclingcontainers"
},
{
"osmTags": "_has_closeby_feature=yes",
"question": "Met nabijgelegen recyclingcontainer"
},
{
"osmTags": "_has_closeby_feature=no",
"question": "Zonder nabijgelegen recyclingcontainer"
}
],
"#": "ignore-possible-duplicate"
}
]
},
"waste_disposal"
],
"tileLayerSources": [
{
"id": "assen_lufo",
"name": "Assen Luchtfoto",
"best": true,
"attribution": {
"text": "Gemeente Assen"
},
"category": "photo",
"type": "wms",
"url": "https://map.rlin.eu/service?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=assen&CRS={proj}&STYLES=&WIDTH={width}&HEIGHT={height}&BBOX={bbox}",
"defaultState": false,
"isOverlay": false,
"min_zoom": 0,
"max_zoom": 22
}
]
}
}

263
assets/themes/zhv/zhv.json Normal file
View file

@ -0,0 +1,263 @@
{
"id": "zhv",
"title": {
"en": "ZHV Import Tool"
},
"description": {
"en": "Small theme allowing import of bus stops from the Zentrales Haltestellenverzeichnis in Germany."
},
"icon": "./assets/layers/transit_stops/bus_stop.svg",
"hideFromOverview": true,
"layers": [
{
"id": "zhv",
"name": {
"en": "Public transport stops in ZHV"
},
"title": {
"render": {
"en": "Public transport stop in ZHV"
}
},
"minzoom": 15,
"source": {
"geoJson": "https://robinlinde.github.io/tiles/zhv_haltestellen/{z}/{x}/{y}.json",
"geoJsonZoomLevel": 15,
"osmTags": "Type~Q"
},
"tagRenderings": [
{
"id": "name",
"render": {
"en": "This stop is called {Name}"
}
},
{
"id": "id",
"render": {
"en": "The ID of this stop is {_ifopt}"
}
},
{
"id": "closest_stop",
"render": {
"en": "The closest stop in OSM is <a href=#{_closest_osm_stop}>{_closest_osm_stop_name}</a>."
}
},
{
"id": "import",
"render": {
"special": {
"type": "import_button",
"targetLayer": "transit_stops",
"tags": "_tags",
"text": {
"en": "Add this stop"
}
}
},
"condition": {
"or": [
"_has_closeby_feature=no",
"_has_closeby_feature=maybe"
]
}
},
{
"id": "tag-hint",
"render": {
"en": "This stop will get the following tags: <b>{_tags}</b>"
},
"condition": {
"or": [
"_has_closeby_feature=no",
"_has_closeby_feature=maybe"
]
}
},
{
"id": "imported",
"render": {
"en": "This stop is (probably) already added. <a href=#{_closest_osm_stop_id}>View the point</a>."
},
"condition": {
"or": [
"_has_closeby_feature=yes",
"_has_closeby_feature=maybe"
]
}
},
{
"id": "minimap_with_poi",
"render": "{minimap(18, id, _closest_osm_stop_id):height:10rem}"
}
],
"pointRendering": [
{
"marker": [
{
"icon": "circle",
"color": {
"render": "red",
"mappings": [
{
"if": "_has_closeby_feature=yes",
"then": "green"
},
{
"if": "_has_closeby_feature=maybe",
"then": "orange"
}
]
}
}
],
"location": [
"point",
"centroid"
],
"iconSize": "20,20"
}
],
"calculatedTags": [
"_closest_osm_stop_id=closest(feat)('all_transit_stops')?.properties?.id",
"_closest_osm_stop_distance=distanceTo(feat)(feat.properties._closest_osm_stop_id)",
"_closest_osm_stop_name=closest(feat)('all_transit_stops')?.properties?.name",
"_closest_osm_stop_ifopt=closest(feat)('all_transit_stops')?.properties?.['ref:IFOPT']",
"_has_closeby_feature=(feat.properties._closest_osm_stop_ifopt === feat.properties._ifopt) ? 'yes' : (feat.properties._closest_osm_stop_distance < 15 ? 'yes' : (feat.properties._closest_osm_stop_distance > 25 ? 'no' : 'maybe'))",
"_ifopt=feat.properties.DHID",
"_tags='public_transport=platform;ref:IFOPT='+feat.properties._ifopt+';name='+feat.properties.Name"
]
},
{
"builtin": "transit_stops",
"override": {
"#": "We're getting all public_transport=platforms since when importing ZHV stops, we don't add the type-specific tags.",
"source": {
"osmTags": "public_transport=platform"
},
"id": "all_transit_stops",
"name": {
"en": "Public transport stops in OSM"
},
"tagRenderings+": [
{
"id": "type",
"question": {
"en": "What kind of transit types is this stop used for?"
},
"condition": "_geometry:type=Point",
"multiAnswer": true,
"mappings": [
{
"if": "bus=yes",
"ifnot": {
"and": [
"bus=",
"highway="
]
},
"then": {
"en": "This stop is used for bus transit."
},
"addExtraTags": [
"highway=bus_stop"
]
},
{
"if": "train=yes",
"ifnot": "train=",
"then": {
"en": "This stop is used for train transit."
}
},
{
"if": "light_rail=yes",
"ifnot": "light_rail=",
"then": {
"en": "This stop is used for light rail transit."
}
},
{
"if": "subway=yes",
"ifnot": "subway=",
"then": {
"en": "This stop is used for subway transit."
}
},
{
"if": "tram=yes",
"ifnot": "tram=",
"then": {
"en": "This stop is used for tram transit."
}
},
{
"if": "ferry=yes",
"ifnot": "ferry=",
"then": {
"en": "This stop is used for ferry transit."
}
}
]
},
{
"id": "ifopt",
"question": {
"en": "What is the IFOPT reference of this stop?"
},
"render": {
"en": "The IFOPT reference of this stop is {ref:IFOPT}."
},
"freeform": {
"key": "ref:IFOPT",
"type": "string",
"placeholder": {
"en": "e.g. NL:Q:15003950 or de:03457:15801::2"
}
}
},
{
"id": "zhv_stop",
"condition": "_has_closeby_feature=yes",
"render": {
"en": "There is a ZHV stop nearby: <a href=#{_closest_zhv_stop_id}>{_closest_zhv_stop_name}</a>."
}
},
{
"id": "zhv_apply",
"condition": {
"and": [
"_has_closeby_feature=yes",
"ref:IFOPT!~*"
]
},
"render": {
"special": {
"type": "tag_apply",
"tags_to_apply": "ref:IFOPT=$_ifopt",
"id_of_object_to_apply_this_one": "_closest_osm_stop_id",
"message": {
"en": "Add IFOPT to this stop"
},
"image": "./assets/svg/addSmall.svg"
}
}
},
{
"id": "minimap_with_poi",
"condition": "_has_closeby_feature=yes",
"render": "{minimap(18, id, _closest_zhv_stop_id):height:10rem}"
}
],
"calculatedTags": [
"_closest_zhv_stop_id=closest(feat)('zhv')?.properties?.id",
"_closest_zhv_stop_distance=distanceTo(feat)(feat.properties._closest_zhv_stop_id)",
"_closest_zhv_stop_name=closest(feat)('zhv')?.properties?.Name",
"_has_closeby_feature=feat.properties._closest_zhv_stop_distance < 25",
"_ifopt=closest(feat)('zhv')?.properties?.DHID"
]
}
}
]
}

View file

@ -751,11 +751,10 @@
"render": "El nom d'aquest caixer és {name}"
},
"operator": {
"freeform": {
"placeholder": "Operador"
},
"question": "Quina companyia opera aquest caixer?",
"render": "{operator} opera aquest caixer"
"override": {
"question": "Quina companyia opera aquest caixer?",
"render": "{operator} opera aquest caixer"
}
},
"speech_output": {
"mappings": {
@ -5732,11 +5731,13 @@
"render": "L'estació de fitness es diu {name}"
},
"operator": {
"freeform": {
"placeholder": "Operador de l'estació de fitness"
},
"question": "Qui manté l'estació de fitness?",
"render": "{operator} manté l'estació de fitness."
"override": {
"freeform": {
"placeholder": "Operador de l'estació de fitness"
},
"question": "Qui manté l'estació de fitness?",
"render": "{operator} manté l'estació de fitness."
}
},
"type": {
"mappings": {
@ -7890,11 +7891,10 @@
"question": "Pots enviar paquets des d'aquesta bústia intel·ligent?"
},
"operator": {
"freeform": {
"placeholder": "Gestor"
},
"question": "Qui gestiona aquesta bústia intel·ligent?",
"render": "Aquesta bústia intel·ligent la gestiona {operator}"
"override": {
"question": "Qui gestiona aquesta bústia intel·ligent?",
"render": "Aquesta bústia intel·ligent la gestiona {operator}"
}
},
"pickup": {
"mappings": {
@ -8501,8 +8501,10 @@
},
"tagRenderings": {
"operator": {
"question": "Qui opera aquesta bústia?",
"render": "Aquesta bústia està operada per <b>{operator}</b>"
"override": {
"question": "Qui opera aquesta bústia?",
"render": "Aquesta bústia està operada per <b>{operator}</b>"
}
}
},
"title": {
@ -8770,6 +8772,12 @@
},
"question": "Aquesta prestatgeria es troba a l'exterior?"
},
"operator": {
"override": {
"question": "Qui gestiona aquesta prestatgeria pública?",
"render": "Gestionant per {operator}"
}
},
"public_bookcase-brand": {
"freeform": {
"placeholder": "Nom de la xarxa"
@ -8795,10 +8803,6 @@
"question": "Com es diu aquesta prestatgeria pública?",
"render": "El nom d'aquesta prestatgeria és {name}"
},
"public_bookcase-operator": {
"question": "Qui gestiona aquesta prestatgeria pública?",
"render": "Gestionant per {operator}"
},
"public_bookcase-ref": {
"mappings": {
"0": {
@ -9140,6 +9144,11 @@
}
}
},
"operator": {
"freeform": {
"placeholder": "Operador"
}
},
"payment-options": {
"mappings": {
"0": {
@ -9561,8 +9570,10 @@
}
},
"operator": {
"question": "Quina empresa opera aquesta infraestructura de reciclatge?",
"render": "Aquesta infraestuctura de reciclatge està operada per {operator}"
"override": {
"question": "Quina empresa opera aquesta infraestructura de reciclatge?",
"render": "Aquesta infraestuctura de reciclatge està operada per {operator}"
}
},
"recycling-accepts": {
"mappings": {
@ -11854,16 +11865,15 @@
},
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "Nom de l'operador"
},
"mappings": {
"0": {
"then": "Ferrocarrils holandesos (NS)"
}
},
"question": "Qui és l'operador d'aquesta màquina de venda de bitllets?",
"render": "{operator} opera aquesta màquina de bitllets"
"override": {
"mappings+": {
"0": {
"then": "Ferrocarrils holandesos (NS)"
}
},
"question": "Qui és l'operador d'aquesta màquina de venda de bitllets?",
"render": "{operator} opera aquesta màquina de bitllets"
}
}
},
"title": {
@ -11888,6 +11898,12 @@
},
"render": "Aquest validador de bitllets forma part d'una barrera de tipus {barrier}"
},
"operator": {
"override": {
"question": "Qui és l'operador d'aquest validador de bitllets?",
"render": "{operator} opera aquest validador de bitllets"
}
},
"payment-options": {
"override": {
"mappings+": {
@ -11899,18 +11915,6 @@
}
}
}
},
"validator-operator": {
"freeform": {
"placeholder": "Nom de l'operador"
},
"mappings": {
"0": {
"then": "Ferrocarrils holandesos (NS)"
}
},
"question": "Qui és l'operador d'aquest validador de bitllets?",
"render": "{operator} opera aquest validador de bitllets"
}
},
"title": {
@ -12419,8 +12423,10 @@
"render": "Aquesta línea d'autobús és part de la xarxa {network}"
},
"operator": {
"question": "Quina companyia opera aquesta línia d'autobús?",
"render": "{operator} opera aquesta línea d'autobús"
"override": {
"question": "Quina companyia opera aquesta línia d'autobús?",
"render": "{operator} opera aquesta línea d'autobús"
}
},
"to": {
"question": "Quin és el punt final d'aquesta línea d'autobús?",
@ -13409,11 +13415,10 @@
"question": "Aquesta màquina expenedora encara funciona?"
},
"operator": {
"freeform": {
"placeholder": "Nom de l'operadora"
},
"question": "Qui opera aquesta màquina expenedora?",
"render": "{operator} gestiona aquesta màquina expenedora"
"override": {
"question": "Qui opera aquesta màquina expenedora?",
"render": "{operator} gestiona aquesta màquina expenedora"
}
},
"phone": {
"override": {

View file

@ -836,11 +836,10 @@
"render": "Název tohoto bankomatu je {name}"
},
"operator": {
"freeform": {
"placeholder": "Operátor"
},
"question": "Která společnost provozuje tento bankomat?",
"render": "Bankomat provozuje {operator}"
"override": {
"question": "Která společnost provozuje tento bankomat?",
"render": "Bankomat provozuje {operator}"
}
},
"speech_output": {
"mappings": {
@ -5994,11 +5993,13 @@
"render": "Tato fitness stanice se jmenuje {name}"
},
"operator": {
"freeform": {
"placeholder": "Provozovatel fitness stanice"
},
"question": "Kdo spravuje tuto fitness stanici?",
"render": "Fitness stanici spravuje {operator}."
"override": {
"freeform": {
"placeholder": "Provozovatel fitness stanice"
},
"question": "Kdo spravuje tuto fitness stanici?",
"render": "Fitness stanici spravuje {operator}."
}
},
"type": {
"mappings": {
@ -8426,11 +8427,10 @@
"question": "Lze z této schránky na balíky odesílat balíky?"
},
"operator": {
"freeform": {
"placeholder": "Operátor"
},
"question": "Kdo je provozovatelem schránky na balíky?",
"render": "Tuto schránku na balíky provozuje {operator}"
"override": {
"question": "Kdo je provozovatelem schránky na balíky?",
"render": "Tuto schránku na balíky provozuje {operator}"
}
},
"pickup": {
"mappings": {
@ -9037,8 +9037,10 @@
},
"tagRenderings": {
"operator": {
"question": "Kdo provozuje tuto poštovní schránku?",
"render": "Tuto poštovní schránku provozuje <b>{operator}</b>"
"override": {
"question": "Kdo provozuje tuto poštovní schránku?",
"render": "Tuto poštovní schránku provozuje <b>{operator}</b>"
}
}
},
"title": {
@ -9309,6 +9311,12 @@
},
"question": "Je tato knihobudka umístěna venku?"
},
"operator": {
"override": {
"question": "Kdo tuto veřejnou knihobudku spravuje?",
"render": "Provozuje {operator}"
}
},
"public_bookcase-brand": {
"freeform": {
"placeholder": "Název sítě"
@ -9334,10 +9342,6 @@
"question": "Jak se jmenuje tato knihobudka?",
"render": "Název této knihobudky je {name}"
},
"public_bookcase-operator": {
"question": "Kdo tuto veřejnou knihobudku spravuje?",
"render": "Provozuje {operator}"
},
"public_bookcase-ref": {
"mappings": {
"0": {
@ -9693,6 +9697,11 @@
}
}
},
"operator": {
"freeform": {
"placeholder": "Operátor"
}
},
"payment-options": {
"mappings": {
"0": {
@ -10148,8 +10157,10 @@
}
},
"operator": {
"question": "Jaká společnost provozuje toto recyklační zařízení?",
"render": "Toto recyklační zařízení provozuje {operator}"
"override": {
"question": "Jaká společnost provozuje toto recyklační zařízení?",
"render": "Toto recyklační zařízení provozuje {operator}"
}
},
"recycling-accepts": {
"mappings": {
@ -12508,16 +12519,15 @@
},
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "Jméno operátora"
},
"mappings": {
"0": {
"then": "Nizozemské dráhy (NS)"
}
},
"question": "Kdo je provozovatelem tohoto automatu na jízdenky?",
"render": "Tento automat na jízdenky provozuje {operator}"
"override": {
"mappings+": {
"0": {
"then": "Nizozemské dráhy (NS)"
}
},
"question": "Kdo je provozovatelem tohoto automatu na jízdenky?",
"render": "Tento automat na jízdenky provozuje {operator}"
}
}
},
"title": {
@ -12542,6 +12552,12 @@
},
"render": "Tento validátor vstupenek je součástí bariéry typu {barrier}"
},
"operator": {
"override": {
"question": "Kdo je provozovatelem tohoto validátoru jízdenek?",
"render": "Tento validátor jízdenek provozuje {operator}"
}
},
"payment-options": {
"override": {
"mappings+": {
@ -12553,18 +12569,6 @@
}
}
}
},
"validator-operator": {
"freeform": {
"placeholder": "Jméno operátora"
},
"mappings": {
"0": {
"then": "Nizozemské dráhy (NS)"
}
},
"question": "Kdo je provozovatelem tohoto validátoru jízdenek?",
"render": "Tento validátor jízdenek provozuje {operator}"
}
},
"title": {
@ -13205,8 +13209,10 @@
"render": "Tato autobusová linka je součástí sítě {network}"
},
"operator": {
"question": "Jaká společnost provozuje tuto autobusovou linku?",
"render": "Tuto autobusovou linku provozuje {operator}"
"override": {
"question": "Jaká společnost provozuje tuto autobusovou linku?",
"render": "Tuto autobusovou linku provozuje {operator}"
}
},
"to": {
"question": "Jaký je konečný bod této autobusové linky?",
@ -14247,11 +14253,10 @@
"question": "Je tento automat stále v provozu?"
},
"operator": {
"freeform": {
"placeholder": "Jméno provozovatele"
},
"question": "Kdo provozuje tento automat?",
"render": "Tento prodejní automat provozuje {operator}"
"override": {
"question": "Kdo provozuje tento automat?",
"render": "Tento prodejní automat provozuje {operator}"
}
},
"phone": {
"override": {

View file

@ -96,13 +96,6 @@
},
"atm": {
"name": "Peiriannau Codi Arian",
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "Gweithredwr"
}
}
},
"title": {
"render": "Peiriant Codi Arian"
}
@ -534,11 +527,6 @@
"placeholder": "Masnach"
}
},
"operator": {
"freeform": {
"placeholder": "Gweithredwr"
}
},
"ref": {
"freeform": {
"placeholder": "Cyfeirnod"
@ -576,6 +564,15 @@
"render": "Blwch Post"
}
},
"questions": {
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "Gweithredwr"
}
}
}
},
"railway_platforms": {
"title": {
"render": "Platfform"

View file

@ -2439,6 +2439,12 @@
},
"question": "Er dette bogbytteskab placeret udendørs?"
},
"operator": {
"override": {
"question": "Hvem står for at vedligeholde dette bogbytteskab?",
"render": "Drevet af {operator}"
}
},
"public_bookcase-brand": {
"freeform": {
"placeholder": "Navn på netværket"
@ -2464,10 +2470,6 @@
"question": "Hvad er navnet på dette bogbytteskab?",
"render": "Navnet på dette bogbytteskab er {name}"
},
"public_bookcase-operator": {
"question": "Hvem står for at vedligeholde dette bogbytteskab?",
"render": "Drevet af {operator}"
},
"public_bookcase-ref": {
"mappings": {
"0": {
@ -3395,8 +3397,10 @@
"question": "Hvilket netværk tilhører denne buslinje?"
},
"operator": {
"question": "Hvilket selskab driver denne buslinje?",
"render": "Denne buslinje drives af {operator}"
"override": {
"question": "Hvilket selskab driver denne buslinje?",
"render": "Denne buslinje drives af {operator}"
}
},
"to": {
"question": "Hvad er endestationen for denne buslinje?",

View file

@ -751,11 +751,10 @@
"render": "Der Name des Geldautomaten ist {name}"
},
"operator": {
"freeform": {
"placeholder": "Betreiber"
},
"question": "Welches Unternehmen betreibt den Geldautomaten?",
"render": "Der Geldautomat wird betrieben von {operator}"
"override": {
"question": "Welches Unternehmen betreibt den Geldautomaten?",
"render": "Der Geldautomat wird betrieben von {operator}"
}
},
"speech_output": {
"mappings": {
@ -5710,11 +5709,13 @@
"render": "Die Fitness-Station heißt {name}"
},
"operator": {
"freeform": {
"placeholder": "Betreiber der Fitness-Station"
},
"question": "Wer betreibt die Fitness-Station?",
"render": "Die Fitness-Station wird betrieben von {operator}."
"override": {
"freeform": {
"placeholder": "Betreiber der Fitness-Station"
},
"question": "Wer betreibt die Fitness-Station?",
"render": "Die Fitness-Station wird betrieben von {operator}."
}
},
"type": {
"mappings": {
@ -7854,11 +7855,10 @@
"question": "Können Sie von diesem Paketschließfach aus Pakete versenden?"
},
"operator": {
"freeform": {
"placeholder": "Betreiber"
},
"question": "Was ist der Betreiber des Paketschließfachs?",
"render": "Dieses Paketschließfach wird von {operator} betrieben"
"override": {
"question": "Was ist der Betreiber des Paketschließfachs?",
"render": "Dieses Paketschließfach wird von {operator} betrieben"
}
},
"pickup": {
"mappings": {
@ -8465,8 +8465,10 @@
},
"tagRenderings": {
"operator": {
"question": "Wer betreibt diesen Briefkasten?",
"render": "Dieser Briefkasten wird von <b>{operator}</b> betrieben"
"override": {
"question": "Wer betreibt diesen Briefkasten?",
"render": "Dieser Briefkasten wird von <b>{operator}</b> betrieben"
}
}
},
"title": {
@ -8734,6 +8736,12 @@
},
"question": "Befindet sich der Bücherschrank im Freien?"
},
"operator": {
"override": {
"question": "Wer betreibt den Bücherschrank?",
"render": "Betrieben von {operator}"
}
},
"public_bookcase-brand": {
"freeform": {
"placeholder": "Name des Netzwerks"
@ -8759,10 +8767,6 @@
"question": "Wie lautet der Name des Bücherschranks?",
"render": "Der Name des Bücherschranks lautet {name}"
},
"public_bookcase-operator": {
"question": "Wer betreibt den Bücherschrank?",
"render": "Betrieben von {operator}"
},
"public_bookcase-ref": {
"mappings": {
"0": {
@ -9104,6 +9108,11 @@
}
}
},
"operator": {
"freeform": {
"placeholder": "Betreiber"
}
},
"payment-options": {
"mappings": {
"0": {
@ -9525,8 +9534,10 @@
}
},
"operator": {
"question": "Welches Unternehmen betreibt diese Recyclinganlage?",
"render": "Die Recyclingeinrichtung wird betrieben von {operator}"
"override": {
"question": "Welches Unternehmen betreibt diese Recyclinganlage?",
"render": "Die Recyclingeinrichtung wird betrieben von {operator}"
}
},
"recycling-accepts": {
"mappings": {
@ -11843,16 +11854,15 @@
},
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "Name des Betreibers"
},
"mappings": {
"0": {
"then": "Niederländische Eisenbahn (NS)"
}
},
"question": "Wer ist der Betreiber dieses Fahrkartenautomaten?",
"render": "Dieser Fahrkartenautomat wird betrieben von {operator}"
"override": {
"mappings+": {
"0": {
"then": "Niederländische Eisenbahn (NS)"
}
},
"question": "Wer ist der Betreiber dieses Fahrkartenautomaten?",
"render": "Dieser Fahrkartenautomat wird betrieben von {operator}"
}
}
},
"title": {
@ -11877,6 +11887,12 @@
},
"render": "Dieser Fahrkartenentwerter ist Teil einer Zugangsbarriere vom Typ {barrier}"
},
"operator": {
"override": {
"question": "Wer ist der Betreiber dieses Fahrkartenentwerters?",
"render": "Dieser Fahrkartenentwerter wird betrieben von {operator}"
}
},
"payment-options": {
"override": {
"mappings+": {
@ -11888,18 +11904,6 @@
}
}
}
},
"validator-operator": {
"freeform": {
"placeholder": "Name des Betreibers"
},
"mappings": {
"0": {
"then": "Niederländische Eisenbahn (NS)"
}
},
"question": "Wer ist der Betreiber dieses Fahrkartenentwerters?",
"render": "Dieser Fahrkartenentwerter wird betrieben von {operator}"
}
},
"title": {
@ -12408,8 +12412,10 @@
"render": "Die Buslinie gehört zum Verkehrsverbund {network}"
},
"operator": {
"question": "Welches Unternehmen betreibt die Buslinie?",
"render": "Die Buslinie wird betrieben von {operator}"
"override": {
"question": "Welches Unternehmen betreibt die Buslinie?",
"render": "Die Buslinie wird betrieben von {operator}"
}
},
"to": {
"question": "Wo ist der Endpunkt der Buslinie?",
@ -13388,11 +13394,10 @@
"question": "Ist dieser Automat in Betrieb?"
},
"operator": {
"freeform": {
"placeholder": "Name des Betreibers"
},
"question": "Wer betreibt diesen Verkaufsautomaten?",
"render": "Dieser Verkaufsautomat wird betrieben von {operator}"
"override": {
"question": "Wer betreibt diesen Verkaufsautomaten?",
"render": "Dieser Verkaufsautomat wird betrieben von {operator}"
}
},
"phone": {
"override": {

View file

@ -779,6 +779,20 @@
},
"question": "Can you deposit cash into this ATM?"
},
"cash_in-types": {
"mappings": {
"0": {
"then": "You can deposit coins at this ATM"
},
"1": {
"then": "You can deposit notes at this ATM"
},
"2": {
"then": "You can deposit sealed bags at this ATM"
}
},
"question": "In what ways can you deposit cash at this ATM?"
},
"cash_out": {
"mappings": {
"0": {
@ -836,11 +850,10 @@
"render": "The name of this ATM is {name}"
},
"operator": {
"freeform": {
"placeholder": "Operator"
},
"question": "What company operates this ATM?",
"render": "The ATM is operated by {operator}"
"override": {
"question": "What company operates this ATM?",
"render": "The ATM is operated by {operator}"
}
},
"speech_output": {
"mappings": {
@ -6034,11 +6047,13 @@
"render": "This fitness station is called {name}"
},
"operator": {
"freeform": {
"placeholder": "Operator of the fitness station"
},
"question": "Who maintains this fitness station?",
"render": "The fitness station is maintained by {operator}."
"override": {
"freeform": {
"placeholder": "Operator of the fitness station"
},
"question": "Who maintains this fitness station?",
"render": "The fitness station is maintained by {operator}."
}
},
"type": {
"mappings": {
@ -8498,11 +8513,10 @@
"question": "Can you send packages from this parcel locker?"
},
"operator": {
"freeform": {
"placeholder": "Operator"
},
"question": "What is the operator of the parcel locker?",
"render": "This parcel locker is operated by {operator}"
"override": {
"question": "What is the operator of the parcel locker?",
"render": "This parcel locker is operated by {operator}"
}
},
"pickup": {
"mappings": {
@ -9144,8 +9158,10 @@
},
"tagRenderings": {
"operator": {
"question": "Who operates this postbox?",
"render": "This postbox is operated by <b>{operator}</b>"
"override": {
"question": "Who operates this postbox?",
"render": "This postbox is operated by <b>{operator}</b>"
}
}
},
"title": {
@ -9416,6 +9432,12 @@
},
"question": "Is this bookcase located outdoors?"
},
"operator": {
"override": {
"question": "Who maintains this public bookcase?",
"render": "This public bookcase is operated by {operator}"
}
},
"public_bookcase-brand": {
"freeform": {
"placeholder": "Name of the network"
@ -9441,10 +9463,6 @@
"question": "What is the name of this public bookcase?",
"render": "The name of this bookcase is {name}"
},
"public_bookcase-operator": {
"question": "Who maintains this public bookcase?",
"render": "Operated by {operator}"
},
"public_bookcase-ref": {
"mappings": {
"0": {
@ -9838,6 +9856,13 @@
}
}
},
"operator": {
"freeform": {
"placeholder": "Operator"
},
"question": "What company operates this place?",
"render": "This place is operated by <b>{operator}</b>"
},
"payment-options": {
"mappings": {
"0": {
@ -10293,8 +10318,10 @@
}
},
"operator": {
"question": "What company operates this recycling facility?",
"render": "This recycling facility is operated by {operator}"
"override": {
"question": "What company operates this recycling facility?",
"render": "This recycling facility is operated by {operator}"
}
},
"recycling-accepts": {
"mappings": {
@ -12516,6 +12543,17 @@
"question": "What exactly is surveilled here?",
"render": "Surveills a {surveillance:zone}"
},
"active": {
"mappings": {
"0": {
"then": "This camera is currently in use."
},
"1": {
"then": "This camera is not used anymore"
}
},
"question": "Is this camera currently in use?"
},
"camera:mount": {
"mappings": {
"0": {
@ -12574,6 +12612,11 @@
}
},
"title": {
"mappings": {
"0": {
"then": "Disused surveillance camera"
}
},
"render": "Surveillance Camera"
}
},
@ -12767,16 +12810,15 @@
},
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "Name of the operator"
},
"mappings": {
"0": {
"then": "Dutch Railways (NS)"
}
},
"question": "Who is the operator of this ticket machine?",
"render": "This ticket machine is operated by {operator}"
"override": {
"mappings+": {
"0": {
"then": "Dutch Railways (NS)"
}
},
"question": "Who is the operator of this ticket machine?",
"render": "This ticket machine is operated by {operator}"
}
}
},
"title": {
@ -12801,6 +12843,12 @@
},
"render": "This ticket validator is part of a barrier of type {barrier}"
},
"operator": {
"override": {
"question": "Who is the operator of this ticket validator?",
"render": "This ticket validator is operated by {operator}"
}
},
"payment-options": {
"override": {
"mappings+": {
@ -12812,18 +12860,6 @@
}
}
}
},
"validator-operator": {
"freeform": {
"placeholder": "Name of the operator"
},
"mappings": {
"0": {
"then": "Dutch Railways (NS)"
}
},
"question": "Who is the operator of this ticket validator?",
"render": "This ticket validator is operated by {operator}"
}
},
"title": {
@ -13456,35 +13492,37 @@
}
},
"transit_routes": {
"description": "Layer showing bus lines",
"name": "Bus lines",
"description": "Layer showing transit routes",
"name": "Transit Routes",
"tagRenderings": {
"colour": {
"question": "What is the colour for this bus line?",
"render": "This bus line has the color {colour}"
"question": "What is the colour for this transit route?",
"render": "This transit route has the color {colour}"
},
"from": {
"question": "What is the starting point for this bus line?",
"render": "This bus line begins at {from}"
"question": "What is the starting point for this transit route?",
"render": "This transit route begins at {from}"
},
"name": {
"question": "What is the name for this bus line? (i.e. Bus XX: From => Via => To)"
"question": "What is the name for this transit route? (i.e. Bus XX: From => Via => To)"
},
"network": {
"question": "What network does this bus line belong to?",
"render": "This bus line is part of the {network} network"
"question": "What network does this transit route belong to?",
"render": "This transit route is part of the {network} network"
},
"operator": {
"question": "What company operates this bus line?",
"render": "This bus line is operated by {operator}"
"override": {
"question": "What company operates this transit route?",
"render": "This transit route is operated by {operator}"
}
},
"to": {
"question": "What is the ending point for this bus line?",
"render": "This bus line ends at {to}"
"question": "What is the ending point for this transit route?",
"render": "This transit route ends at {to}"
},
"via": {
"question": "What is the via point for this bus line?",
"render": "This bus line goes via {via}"
"question": "What is the via point for this transit route?",
"render": "This transit route goes via {via}"
}
},
"title": {
@ -13493,7 +13531,7 @@
"then": "{name}"
}
},
"render": "Bus line"
"render": "Transit route"
}
},
"transit_stops": {
@ -13587,6 +13625,18 @@
},
"question": "Is this stop lit?"
},
"ref": {
"freeform": {
"placeholder": "e.g. A1 or 1"
},
"mappings": {
"0": {
"then": "This stop has no platform reference"
}
},
"question": "What is the platform reference of this stop?",
"render": "The platform reference of this stop is <b>{ref}</b>."
},
"shelter": {
"mappings": {
"0": {
@ -14538,11 +14588,10 @@
"question": "Is this vending machine still operational?"
},
"operator": {
"freeform": {
"placeholder": "Name of operator"
},
"question": "Who operates this vending machine?",
"render": "This vending machine is operated by {operator}"
"override": {
"question": "Who operates this vending machine?",
"render": "This vending machine is operated by {operator}"
}
},
"phone": {
"override": {

View file

@ -733,11 +733,10 @@
"render": "El nombre de este cajero automático es {name}"
},
"operator": {
"freeform": {
"placeholder": "Operador"
},
"question": "¿Qué empresa opera este cajero automático?",
"render": "El cajero automático es operado por {operator}"
"override": {
"question": "¿Qué empresa opera este cajero automático?",
"render": "El cajero automático es operado por {operator}"
}
},
"speech_output": {
"mappings": {
@ -5374,11 +5373,13 @@
"render": "Esta estación de fitness se llama {name}"
},
"operator": {
"freeform": {
"placeholder": "Operador de la estación de fitness"
},
"question": "¿Quién mantiene esta estación de fitness?",
"render": "La estación de fitness es mantenida por {operator}."
"override": {
"freeform": {
"placeholder": "Operador de la estación de fitness"
},
"question": "¿Quién mantiene esta estación de fitness?",
"render": "La estación de fitness es mantenida por {operator}."
}
},
"type": {
"mappings": {
@ -7478,11 +7479,10 @@
"question": "¿Puedes enviar paquetes desde esta taquilla?"
},
"operator": {
"freeform": {
"placeholder": "Operador"
},
"question": "¿Cuál es el operador de la taquilla de paquetes?",
"render": "Esta taquilla de paquetes es operada por {operator}"
"override": {
"question": "¿Cuál es el operador de la taquilla de paquetes?",
"render": "Esta taquilla de paquetes es operada por {operator}"
}
},
"pickup": {
"mappings": {
@ -8089,8 +8089,10 @@
},
"tagRenderings": {
"operator": {
"question": "¿Quién gestiona este buzón?",
"render": "Este buzón es operado por <b>{operator}</b>."
"override": {
"question": "¿Quién gestiona este buzón?",
"render": "Este buzón es operado por <b>{operator}</b>."
}
}
},
"title": {
@ -8358,6 +8360,12 @@
},
"question": "¿Está este librero situado en el exterior?"
},
"operator": {
"override": {
"question": "¿Quién mantiene este librero público?",
"render": "Operado por {operator}"
}
},
"public_bookcase-brand": {
"freeform": {
"placeholder": "Nombre de la red"
@ -8383,10 +8391,6 @@
"question": "¿Cuál es el nombre de este librero público?",
"render": "El nombre de este librero es {name}"
},
"public_bookcase-operator": {
"question": "¿Quién mantiene este librero público?",
"render": "Operado por {operator}"
},
"public_bookcase-ref": {
"mappings": {
"0": {
@ -8716,6 +8720,11 @@
}
}
},
"operator": {
"freeform": {
"placeholder": "Operador"
}
},
"payment-options": {
"mappings": {
"0": {
@ -9119,8 +9128,10 @@
}
},
"operator": {
"question": "¿Qué empresa opera esta instalación de reciclaje?",
"render": "Esta instalación de reciclaje está operada por {operator}"
"override": {
"question": "¿Qué empresa opera esta instalación de reciclaje?",
"render": "Esta instalación de reciclaje está operada por {operator}"
}
},
"recycling-accepts": {
"mappings": {
@ -10740,16 +10751,15 @@
},
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "Nombre del operador"
},
"mappings": {
"0": {
"then": "Ferrocarriles Holandeses (NS)"
}
},
"question": "¿Quién es el operador de esta máquina expendedora de billetes?",
"render": "Esta máquina expendedora de billetes está operada por {operator}"
"override": {
"mappings+": {
"0": {
"then": "Ferrocarriles Holandeses (NS)"
}
},
"question": "¿Quién es el operador de esta máquina expendedora de billetes?",
"render": "Esta máquina expendedora de billetes está operada por {operator}"
}
}
},
"title": {
@ -10774,6 +10784,12 @@
},
"render": "Este validador de billetes forma parte de una barrera de tipo {barrier}"
},
"operator": {
"override": {
"question": "¿Quién es el operador de este validador de billetes?",
"render": "Este validador de billetes está operado por {operator}"
}
},
"payment-options": {
"override": {
"mappings+": {
@ -10785,18 +10801,6 @@
}
}
}
},
"validator-operator": {
"freeform": {
"placeholder": "Nombre del operador"
},
"mappings": {
"0": {
"then": "Ferrocarriles Holandeses (NS)"
}
},
"question": "¿Quién es el operador de este validador de billetes?",
"render": "Este validador de billetes está operado por {operator}"
}
},
"title": {
@ -11287,8 +11291,10 @@
"render": "Esta línea de autobús es parte de la red {network}"
},
"operator": {
"question": "¿Qué compañía opera esta línea de autobús?",
"render": "Esta línea de autobús es operada por {operator}"
"override": {
"question": "¿Qué compañía opera esta línea de autobús?",
"render": "Esta línea de autobús es operada por {operator}"
}
},
"to": {
"question": "¿Cuál es el punto final de esta línea de autobús?",
@ -12241,11 +12247,10 @@
"question": "¿Esta máquina expendedora sigue operativa?"
},
"operator": {
"freeform": {
"placeholder": "Nombre del operador"
},
"question": "¿Quién opera esta máquina expendedora?",
"render": "Esta máquina expendedora es operada por {operator}"
"override": {
"question": "¿Quién opera esta máquina expendedora?",
"render": "Esta máquina expendedora es operada por {operator}"
}
},
"phone": {
"override": {

View file

@ -145,13 +145,6 @@
},
"atm": {
"name": "kutxazainak",
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "Operadorea"
}
}
},
"title": {
"render": "Kutxazaina"
}
@ -358,6 +351,15 @@
}
}
},
"questions": {
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "Operadorea"
}
}
}
},
"unit": {
"units": {
"3": {

View file

@ -516,11 +516,10 @@
"render": "Le nom de ce DAB est {name}"
},
"operator": {
"freeform": {
"placeholder": "Opérateur"
},
"question": "Quelle société exploite ce DAB ?",
"render": "Ce DAB est exploité par {operator}"
"override": {
"question": "Quelle société exploite ce DAB ?",
"render": "Ce DAB est exploité par {operator}"
}
}
},
"title": {
@ -4726,11 +4725,10 @@
"question": "Peut-on envoyer des colis depuis ce casier ?"
},
"operator": {
"freeform": {
"placeholder": "Exploitant"
},
"question": "Quel est l'exploitant de ce casier à colis ?",
"render": "Ce casier à colis est exploité par {operator}"
"override": {
"question": "Quel est l'exploitant de ce casier à colis ?",
"render": "Ce casier à colis est exploité par {operator}"
}
},
"pickup": {
"mappings": {
@ -5131,6 +5129,12 @@
},
"question": "Cette microbiliothèque est-elle en extérieur ?"
},
"operator": {
"override": {
"question": "Qui entretien cette microbibliothèque ?",
"render": "Entretenue par {operator}"
}
},
"public_bookcase-brand": {
"mappings": {
"0": {
@ -5153,10 +5157,6 @@
"question": "Quel est le nom de cette microbibliothèque ?",
"render": "Le nom de cette microbibliothèque est {name}"
},
"public_bookcase-operator": {
"question": "Qui entretien cette microbibliothèque ?",
"render": "Entretenue par {operator}"
},
"public_bookcase-ref": {
"mappings": {
"0": {
@ -5380,6 +5380,11 @@
}
}
},
"operator": {
"freeform": {
"placeholder": "Opérateur"
}
},
"payment-options": {
"mappings": {
"0": {
@ -5713,8 +5718,10 @@
"question": "Où ce conteneur est-il situé ?"
},
"operator": {
"question": "Quelle entreprise gère ce point de recyclage ?",
"render": "Ce point de recyclage est géré par {operator}"
"override": {
"question": "Quelle entreprise gère ce point de recyclage ?",
"render": "Ce point de recyclage est géré par {operator}"
}
},
"recycling-accepts": {
"mappings": {
@ -6816,7 +6823,9 @@
"render": "Cette ligne de bus fait partie du réseau {network}"
},
"operator": {
"render": "Cette ligne de bus est gérée par {operator}"
"override": {
"render": "Cette ligne de bus est gérée par {operator}"
}
},
"to": {
"render": "Cette ligne de bus termine à {to}"
@ -7394,11 +7403,10 @@
"question": "Cette machine est-elle encore opérationelle ?"
},
"operator": {
"freeform": {
"placeholder": "Nom de l'exploitant"
},
"question": "Qui exploite ce distributeur ?",
"render": "Ce distributeur est exploité par {operator}"
"override": {
"question": "Qui exploite ce distributeur ?",
"render": "Ce distributeur est exploité par {operator}"
}
},
"vending": {
"mappings": {

View file

@ -263,11 +263,10 @@
"render": "שמו של כספומט זה הוא {name}"
},
"operator": {
"freeform": {
"placeholder": "מפעיל"
},
"question": "איזו חברה מפעילה את הכספומט הזה?",
"render": "הכספומט מופעל על ידי {operator}"
"override": {
"question": "איזו חברה מפעילה את הכספומט הזה?",
"render": "הכספומט מופעל על ידי {operator}"
}
},
"speech_output": {
"mappings": {
@ -486,5 +485,14 @@
}
}
}
},
"questions": {
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "מפעיל"
}
}
}
}
}

View file

@ -822,6 +822,12 @@
},
"question": "A szabadban van-e ez a könyvespolc?"
},
"operator": {
"override": {
"question": "Ki tartja fenn ezt a nyilvános könyvespolcot?",
"render": "Üzemeltető: {operator}"
}
},
"public_bookcase-brand": {
"mappings": {
"0": {
@ -844,10 +850,6 @@
"question": "Mi a neve ennek a nyilvános könyvespolcnak?",
"render": "Ennek a könyvespolcnak a neve: {name}"
},
"public_bookcase-operator": {
"question": "Ki tartja fenn ezt a nyilvános könyvespolcot?",
"render": "Üzemeltető: {operator}"
},
"public_bookcase-ref": {
"mappings": {
"0": {

View file

@ -836,11 +836,10 @@
"render": "Il nome di questo sportello bancomat è {name}"
},
"operator": {
"freeform": {
"placeholder": "Operatore"
},
"question": "Quale azienda gestisce questo sportello bancomat?",
"render": "Lo sportello bancomat è gestito da {operator}"
"override": {
"question": "Quale azienda gestisce questo sportello bancomat?",
"render": "Lo sportello bancomat è gestito da {operator}"
}
},
"speech_output": {
"mappings": {
@ -5980,11 +5979,13 @@
"render": "Questa stazione fitness si chiama {name}"
},
"operator": {
"freeform": {
"placeholder": "Gestore della stazione fitness"
},
"question": "Chi mantiene questa stazione fitness?",
"render": "La stazione fitness è mantenuta da {operator}."
"override": {
"freeform": {
"placeholder": "Gestore della stazione fitness"
},
"question": "Chi mantiene questa stazione fitness?",
"render": "La stazione fitness è mantenuta da {operator}."
}
},
"type": {
"mappings": {
@ -8353,11 +8354,10 @@
"question": "Puoi inviare pacchi da questo armadietto per pacchi?"
},
"operator": {
"freeform": {
"placeholder": "Operatore"
},
"question": "Chi è l'operatore dell'armadietto per pacchi?",
"render": "Questo armadietto per pacchi è gestito da {operator}"
"override": {
"question": "Chi è l'operatore dell'armadietto per pacchi?",
"render": "Questo armadietto per pacchi è gestito da {operator}"
}
},
"pickup": {
"mappings": {
@ -8964,8 +8964,10 @@
},
"tagRenderings": {
"operator": {
"question": "Chi gestisce questa cassetta postale?",
"render": "Questa cassetta postale è gestita da <b>{operator}</b>"
"override": {
"question": "Chi gestisce questa cassetta postale?",
"render": "Questa cassetta postale è gestita da <b>{operator}</b>"
}
}
},
"title": {
@ -9236,6 +9238,12 @@
},
"question": "Questa libreria pubblica si trova all'aperto?"
},
"operator": {
"override": {
"question": "Chi mantiene questa libreria pubblica?",
"render": "Gestita da {operator}"
}
},
"public_bookcase-brand": {
"freeform": {
"placeholder": "Nome della rete"
@ -9261,10 +9269,6 @@
"question": "Qual è il nome di questa libreria pubblica?",
"render": "Il nome di questa libreria pubblica è {name}"
},
"public_bookcase-operator": {
"question": "Chi mantiene questa libreria pubblica?",
"render": "Gestita da {operator}"
},
"public_bookcase-ref": {
"mappings": {
"0": {
@ -9620,6 +9624,11 @@
}
}
},
"operator": {
"freeform": {
"placeholder": "Operatore"
}
},
"payment-options": {
"mappings": {
"0": {
@ -10071,8 +10080,10 @@
}
},
"operator": {
"question": "Quale azienda gestisce questa struttura di riciclaggio?",
"render": "Questa struttura di riciclaggio è gestita da {operator}"
"override": {
"question": "Quale azienda gestisce questa struttura di riciclaggio?",
"render": "Questa struttura di riciclaggio è gestita da {operator}"
}
},
"recycling-accepts": {
"mappings": {
@ -12407,16 +12418,15 @@
},
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "Nome dell'operatore"
},
"mappings": {
"0": {
"then": "Ferrovie Olandesi (NS)"
}
},
"question": "Chi è l'operatore di questa biglietteria automatica?",
"render": "Questa biglietteria automatica è gestita da {operator}"
"override": {
"mappings+": {
"0": {
"then": "Ferrovie Olandesi (NS)"
}
},
"question": "Chi è l'operatore di questa biglietteria automatica?",
"render": "Questa biglietteria automatica è gestita da {operator}"
}
}
},
"title": {
@ -12441,6 +12451,12 @@
},
"render": "Questo validatore di biglietti fa parte di una barriera di tipo {barrier}"
},
"operator": {
"override": {
"question": "Chi è l'operatore di questo validatore di biglietti?",
"render": "Questo validatore di biglietti è gestito da {operator}"
}
},
"payment-options": {
"override": {
"mappings+": {
@ -12452,18 +12468,6 @@
}
}
}
},
"validator-operator": {
"freeform": {
"placeholder": "Nome dell'operatore"
},
"mappings": {
"0": {
"then": "Ferrovie Olandesi (NS)"
}
},
"question": "Chi è l'operatore di questo validatore di biglietti?",
"render": "Questo validatore di biglietti è gestito da {operator}"
}
},
"title": {
@ -13104,8 +13108,10 @@
"render": "Questa linea di autobus fa parte della rete {network}"
},
"operator": {
"question": "Quale azienda gestisce questa linea di autobus?",
"render": "Questa linea di autobus è gestita da {operator}"
"override": {
"question": "Quale azienda gestisce questa linea di autobus?",
"render": "Questa linea di autobus è gestita da {operator}"
}
},
"to": {
"question": "Qual è il punto di arrivo di questa linea di autobus?",
@ -14130,11 +14136,10 @@
"question": "Questo distributore automatico è ancora operativo?"
},
"operator": {
"freeform": {
"placeholder": "Nome dell'operatore"
},
"question": "Chi gestisce questo distributore automatico?",
"render": "Questo distributore automatico è gestito da {operator}"
"override": {
"question": "Chi gestisce questo distributore automatico?",
"render": "Questo distributore automatico è gestito da {operator}"
}
},
"phone": {
"override": {

View file

@ -187,8 +187,10 @@
"render": "Navnet på denne minibanken er {name}"
},
"operator": {
"question": "Hvilket selskap driver denne minibanken?",
"render": "Minibanken drives av {operator}"
"override": {
"question": "Hvilket selskap driver denne minibanken?",
"render": "Minibanken drives av {operator}"
}
}
},
"title": {

View file

@ -757,6 +757,20 @@
},
"question": "Kan je geld storten bij deze geldautomaat?"
},
"cash_in-types": {
"mappings": {
"0": {
"then": "Je kan munten storten bij deze geldautomaat"
},
"1": {
"then": "Je kan biljetten storten bij deze geldautomaat"
},
"2": {
"then": "Je kan sealbags storten bij deze geldautomaat"
}
},
"question": "Op welke manieren kan je geld storten bij deze geldautomaat?"
},
"cash_out": {
"mappings": {
"0": {
@ -814,11 +828,10 @@
"render": "De naam van deze geldautomaat is {name}"
},
"operator": {
"freeform": {
"placeholder": "Beheerder"
},
"question": "Welk bedrijf beheert deze geldautomaat?",
"render": "Deze geldautomaat wordt beheerd door {operator}"
"override": {
"question": "Welk bedrijf beheert deze geldautomaat?",
"render": "Deze geldautomaat wordt beheerd door {operator}"
}
},
"speech_output": {
"mappings": {
@ -5505,11 +5518,13 @@
"render": "Dit fitness-toestel heet {name}"
},
"operator": {
"freeform": {
"placeholder": "Beheerder van het fitness-toestel"
},
"question": "Wie beheert dit fitness-toestel?",
"render": "Dit fitness-toestel wordt beheerd door {operator}"
"override": {
"freeform": {
"placeholder": "Beheerder van het fitness-toestel"
},
"question": "Wie beheert dit fitness-toestel?",
"render": "Dit fitness-toestel wordt beheerd door {operator}"
}
}
}
},
@ -7147,11 +7162,10 @@
"question": "Kan je pakketten versturen vanuit deze pakketautomaat?"
},
"operator": {
"freeform": {
"placeholder": "Beheerder"
},
"question": "Wie is de beheerder van deze pakketautomaat?",
"render": "Deze pakketautomaat wordt beheerd door {operator}"
"override": {
"question": "Wie is de beheerder van deze pakketautomaat?",
"render": "Deze pakketautomaat wordt beheerd door {operator}"
}
},
"pickup": {
"mappings": {
@ -7859,6 +7873,12 @@
},
"question": "Staat dit boekenruilkastje binnen of buiten?"
},
"operator": {
"override": {
"question": "Wie is verantwoordelijk voor dit boekenruilkastje?",
"render": "Onderhouden door {operator}"
}
},
"public_bookcase-brand": {
"mappings": {
"0": {
@ -7881,10 +7901,6 @@
"question": "Wat is de naam van dit boekenruilkastje?",
"render": "De naam van dit boekenruilkastje is {name}"
},
"public_bookcase-operator": {
"question": "Wie is verantwoordelijk voor dit boekenruilkastje?",
"render": "Onderhouden door {operator}"
},
"public_bookcase-ref": {
"mappings": {
"0": {
@ -8192,6 +8208,11 @@
}
}
},
"operator": {
"freeform": {
"placeholder": "Beheerder"
}
},
"payment-options": {
"mappings": {
"0": {
@ -8573,8 +8594,10 @@
}
},
"operator": {
"question": "Wat is de beheerder van deze recyclingfaciliteit?",
"render": "Deze recyclingfaciliteit wordt beheerd door {operator}"
"override": {
"question": "Wat is de beheerder van deze recyclingfaciliteit?",
"render": "Deze recyclingfaciliteit wordt beheerd door {operator}"
}
},
"recycling-accepts": {
"mappings": {
@ -9917,6 +9940,17 @@
"question": "Wat wordt hier precies bewaakt?",
"render": "Bewaakt een {surveillance:zone}"
},
"active": {
"mappings": {
"0": {
"then": "Deze camera is momenteel in gebruik."
},
"1": {
"then": "Deze camera is niet meer in gebruik"
}
},
"question": "Is deze camera momenteel in gebruik?"
},
"camera:mount": {
"mappings": {
"0": {
@ -10025,36 +10059,21 @@
},
"tagRenderings": {
"operator": {
"freeform": {
"placeholder": "Naam van de beheerder"
},
"mappings": {
"0": {
"then": "Nederlandse Spoorwegen (NS)"
}
},
"question": "Wie is de beheerder van deze kaartautomaat?",
"render": "Deze kaartautomaat wordt beheerd door {operator}"
"override": {
"mappings+": {
"0": {
"then": "Nederlandse Spoorwegen (NS)"
}
},
"question": "Wie is de beheerder van deze kaartautomaat?",
"render": "Deze kaartautomaat wordt beheerd door {operator}"
}
}
},
"title": {
"render": "Kaartautomaat"
}
},
"ticket_validator": {
"tagRenderings": {
"validator-operator": {
"freeform": {
"placeholder": "Naam van de beheerder"
},
"mappings": {
"0": {
"then": "Nederlandse Spoorwegen (NS)"
}
}
}
}
},
"toilet": {
"description": "Een laag die publieke toiletten toont",
"filter": {
@ -10574,35 +10593,37 @@
}
},
"transit_routes": {
"description": "Laag met buslijnen",
"name": "Buslijnen",
"description": "Laag met OV-lijnen",
"name": "OV-lijnen",
"tagRenderings": {
"colour": {
"question": "Wat is de kleur van deze buslijn?",
"render": "Deze buslijn heeft de kleur {colour}"
"question": "Wat is de kleur van deze OV-lijn?",
"render": "Deze OV-lijn heeft de kleur {colour}"
},
"from": {
"question": "Wat is het beginpunt van deze buslijn?",
"render": "Deze buslijn begint bij {from}"
"question": "Wat is het beginpunt van deze OV-lijn?",
"render": "Deze OV-lijn begint bij {from}"
},
"name": {
"question": "Wat is de naam van deze buslijn (bv. Bus XX: Van => Via => Naar)"
"question": "Wat is de naam van deze OV-lijn (bv. Bus XX: Van => Via => Naar)"
},
"network": {
"question": "Bij welk netwerk hoort deze buslijn?",
"render": "Deze buslijn is onderdeel van het {network} netwerk"
"question": "Bij welk netwerk hoort deze OV-lijn?",
"render": "Deze OV-lijn is onderdeel van het {network} netwerk"
},
"operator": {
"question": "Welk bedrijf exploiteert deze buslijn?",
"render": "Deze buslijn wordt geëxploiteerd door {operator}"
"override": {
"question": "Welk bedrijf exploiteert deze OV-lijn?",
"render": "Deze OV-lijn wordt geëxploiteerd door {operator}"
}
},
"to": {
"question": "Wat is het eindpunt van deze buslijn?",
"render": "Deze buslijn eindigt bij {to}"
"question": "Wat is het eindpunt van deze OV-lijn?",
"render": "Deze OV-lijn eindigt bij {to}"
},
"via": {
"question": "Via welk punt gaat deze buslijn?",
"render": "Deze buslijn gaat via {via}"
"question": "Via welk punt gaat deze OV-lijn?",
"render": "Deze OV-lijn gaat via {via}"
}
},
"title": {
@ -10611,7 +10632,7 @@
"then": "{name}"
}
},
"render": "Buslijn"
"render": "OV-lijn"
}
},
"transit_stops": {
@ -10702,7 +10723,7 @@
"then": "Halte {name}"
}
},
"render": "Bushalte"
"render": "OV-halte"
}
},
"tree_node": {
@ -11373,11 +11394,10 @@
"question": "Is deze verkoopsautomaat nog steeds werkende?"
},
"operator": {
"freeform": {
"placeholder": "Naam van beheerder"
},
"question": "Wie beheert deze verkoopautomaat?",
"render": "Deze verkoopautomaat wordt beheerd door {operator}"
"override": {
"question": "Wie beheert deze verkoopautomaat?",
"render": "Deze verkoopautomaat wordt beheerd door {operator}"
}
},
"vending": {
"mappings": {

View file

@ -537,8 +537,10 @@
"render": "Nazwa tego bankomatu to {name}"
},
"operator": {
"question": "Jaka firma obsługuje ten bankomat?",
"render": "Ten bankomat jest obsługiwany przez {operator}"
"override": {
"question": "Jaka firma obsługuje ten bankomat?",
"render": "Ten bankomat jest obsługiwany przez {operator}"
}
}
},
"title": {
@ -2883,10 +2885,9 @@
"question": "Czy z tego paczkomatu można wysyłać przesyłki?"
},
"operator": {
"freeform": {
"placeholder": "Operator"
},
"render": "Ten paczkomat jest obsługiwany przez {operator}"
"override": {
"render": "Ten paczkomat jest obsługiwany przez {operator}"
}
},
"pickup": {
"mappings": {
@ -3331,6 +3332,11 @@
}
}
},
"operator": {
"freeform": {
"placeholder": "Operator"
}
},
"payment-options": {
"mappings": {
"0": {

View file

@ -479,11 +479,10 @@
"render": "O nome deste multibanco é {name}"
},
"operator": {
"freeform": {
"placeholder": "Operador"
},
"question": "Qual companhia opera este multibanco?",
"render": "O multibanco é operado por {operator}"
"override": {
"question": "Qual companhia opera este multibanco?",
"render": "O multibanco é operado por {operator}"
}
},
"speech_output": {
"mappings": {
@ -1601,6 +1600,11 @@
"question": "Qual é o horário de funcionamento de {title()}?",
"render": "<h3>Horário de funcionamento</h3>{opening_hours_table(opening_hours)}"
},
"operator": {
"freeform": {
"placeholder": "Operador"
}
},
"payment-options": {
"mappings": {
"0": {

View file

@ -468,11 +468,10 @@
"render": "O nome desse caixa eletrônico é {name}"
},
"operator": {
"freeform": {
"placeholder": "Operador"
},
"question": "Qual companhia opera esse caixa eletrônico?",
"render": "O caixa eletrônico é operado por {operator}"
"override": {
"question": "Qual companhia opera esse caixa eletrônico?",
"render": "O caixa eletrônico é operado por {operator}"
}
},
"speech_output": {
"mappings": {
@ -1518,6 +1517,11 @@
"question": "Qual o horário de funcionamento de {title()}?",
"render": "<h3>Horário de funcionamento</h3>{opening_hours_table(opening_hours)}"
},
"operator": {
"freeform": {
"placeholder": "Operador"
}
},
"payment-options": {
"mappings": {
"0": {

View file

@ -11,7 +11,9 @@
"atm": {
"tagRenderings": {
"operator": {
"render": "Ta bankomat upravlja {operator}"
"override": {
"render": "Ta bankomat upravlja {operator}"
}
}
},
"title": {

View file

@ -1805,8 +1805,10 @@
"question": "Чи можете ви відправляти посилки з цього поштомату?"
},
"operator": {
"question": "Який оператор поштомату?",
"render": "Цей посилкова шафка обслуговується компанією {operator}"
"override": {
"question": "Який оператор поштомату?",
"render": "Цей посилкова шафка обслуговується компанією {operator}"
}
},
"ref": {
"question": "Який ідентифікаційний номер цього поштомату?",
@ -2958,7 +2960,9 @@
"render": "Ця автобусна лінія є частиною {network} мережі"
},
"operator": {
"render": "Ця автобусна лінія обслуговується {operator}"
"override": {
"render": "Ця автобусна лінія обслуговується {operator}"
}
},
"to": {
"render": "Ця автобусна лінія закінчується в {to}"
@ -3322,8 +3326,10 @@
"question": "Чи працює цей торговий автомат досі?"
},
"operator": {
"question": "Хто керує цим автоматом?",
"render": "Цим торговим автоматом керує {operator}"
"override": {
"question": "Хто керує цим автоматом?",
"render": "Цим торговим автоматом керує {operator}"
}
},
"phone": {
"override": {

View file

@ -1370,7 +1370,7 @@
},
"transit": {
"description": "Plan your trip with the help of the public transport system.",
"title": "Bus routes"
"title": "Transit routes"
},
"trees": {
"description": "Map all the trees!",
@ -1511,5 +1511,88 @@
}
},
"title": "Winter Service"
},
"zhv": {
"description": "Small theme allowing import of bus stops from the Zentrales Haltestellenverzeichnis in Germany.",
"layers": {
"0": {
"name": "Public transport stops in ZHV",
"tagRenderings": {
"closest_stop": {
"render": "The closest stop in OSM is <a href=#{_closest_osm_stop}>{_closest_osm_stop_name}</a>."
},
"id": {
"render": "The ID of this stop is {_ifopt}"
},
"import": {
"render": {
"special": {
"text": "Add this stop"
}
}
},
"imported": {
"render": "This stop is (probably) already added. <a href=#{_closest_osm_stop_id}>View the point</a>."
},
"name": {
"render": "This stop is called {Name}"
},
"tag-hint": {
"render": "This stop will get the following tags: <b>{_tags}</b>"
}
},
"title": {
"render": "Public transport stop in ZHV"
}
},
"1": {
"override": {
"name": "Public transport stops in OSM",
"tagRenderings+": {
"0": {
"mappings": {
"0": {
"then": "This stop is used for bus transit."
},
"1": {
"then": "This stop is used for train transit."
},
"2": {
"then": "This stop is used for light rail transit."
},
"3": {
"then": "This stop is used for subway transit."
},
"4": {
"then": "This stop is used for tram transit."
},
"5": {
"then": "This stop is used for ferry transit."
}
},
"question": "What kind of transit types is this stop used for?"
},
"1": {
"freeform": {
"placeholder": "e.g. NL:Q:15003950 or de:03457:15801::2"
},
"question": "What is the IFOPT reference of this stop?",
"render": "The IFOPT reference of this stop is {ref:IFOPT}."
},
"2": {
"render": "There is a ZHV stop nearby: <a href=#{_closest_zhv_stop_id}>{_closest_zhv_stop_name}</a>."
},
"3": {
"render": {
"special": {
"message": "Add IFOPT to this stop"
}
}
}
}
}
}
},
"title": "ZHV Import Tool"
}
}

View file

@ -1359,7 +1359,7 @@
},
"transit": {
"description": "Plan je trip met behulp van het openbaar vervoer.",
"title": "Busroutes"
"title": "OV-lijnen"
},
"trees": {
"description": "Breng bomen in kaart!",

8
package-lock.json generated
View file

@ -84,7 +84,7 @@
"showdown": "^2.1.0",
"svelte": "^3.59.2",
"svg-path-parser": "^1.1.0",
"tag2link": "^2025.3.21",
"tag2link": "^2025.5.21",
"tailwind-merge": "^1.14.0",
"tailwindcss": "^3.4.17",
"ts-node": "^10.9.2",
@ -26604,9 +26604,9 @@
"license": "MIT"
},
"node_modules/tag2link": {
"version": "2025.3.21",
"resolved": "https://registry.npmjs.org/tag2link/-/tag2link-2025.3.21.tgz",
"integrity": "sha512-JvRTQdY/z0vAEFUzL7rhLndNiDnStlurW+1jgXL5FW+GppR2T/dq2lXMEppbFNxJ9C4h5b+ykjcMPH791YeLdA==",
"version": "2025.5.21",
"resolved": "https://registry.npmjs.org/tag2link/-/tag2link-2025.5.21.tgz",
"integrity": "sha512-vcz6/6U5V3QYPA7geLrtzLMqhCwg6OvoGP665DbGgPRSWASjFn0J4jA/NyifD3Tmp2yf8RnEuI6QBvhXGBVSHg==",
"license": "ISC"
},
"node_modules/tailwind-merge": {

View file

@ -249,7 +249,7 @@
"showdown": "^2.1.0",
"svelte": "^3.59.2",
"svg-path-parser": "^1.1.0",
"tag2link": "^2025.3.21",
"tag2link": "^2025.5.21",
"tailwind-merge": "^1.14.0",
"tailwindcss": "^3.4.17",
"ts-node": "^10.9.2",
@ -300,4 +300,4 @@
"vite-node": "^3.0.5",
"vitest": "^3.2.1"
}
}
}

View file

@ -0,0 +1,58 @@
import { readFileSync, writeFileSync } from "fs"
import Script from "../Script"
import { parse } from "papaparse"
import { FeatureCollection, Point } from "geojson"
class ZHVcsv2GeoJson extends Script {
constructor() {
super("Converts a CSV file with ZHV data to GeoJSON format. Usage: csv-file output-file")
}
async main(args: string[]): Promise<void> {
const csvFile = args[0]
const outputFile = args[1]
if (!csvFile || !outputFile) {
console.error("Usage: csv-file output-file")
return
}
// Read the CSV file and parse it using PapaParse
const text = readFileSync(csvFile, "utf-8")
const parsed = parse(text, {
header: true,
dynamicTyping: false,
})
console.log(`Parsed ${parsed.data.length} rows from ${csvFile}`)
console.log(`First row:`, parsed.data[0])
// Drop all rows that do not have a valid latitude and longitude
parsed.data = parsed.data.filter((row: any) => {
return row["Latitude"] && row["Longitude"]
})
// Convert the parsed data to GeoJSON format
const geoJson: FeatureCollection<Point> = {
type: "FeatureCollection",
features: parsed.data.map((row: any) => ({
type: "Feature",
geometry: {
type: "Point",
coordinates: [
parseFloat(row["Longitude"].replace(",", ".")),
parseFloat(row["Latitude"].replace(",", ".")),
],
},
properties: row,
})),
}
console.log(`First feature:`, geoJson.features[0])
// Write the GeoJSON output to the specified file
writeFileSync(outputFile, JSON.stringify(geoJson), "utf-8")
}
}
new ZHVcsv2GeoJson().run()