diff --git a/.gitignore b/.gitignore index ed8cb6f15..3eea34f06 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ scratch assets/editor-layer-index.json assets/generated/* assets/generated/images/* -/*.webmanifest +public/*.webmanifest /*.html !/index.html !/customGenerator.html @@ -35,4 +35,6 @@ service-worker.js .history/ # Built Visual Studio Code Extensions -*.vsix \ No newline at end of file +*.vsix +public/*.webmanifest +public/assets/generated/ diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..132d0eed6 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +nodejs 16.9.1 \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json index 7acf4f02d..65a69c06b 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,4 +1,6 @@ { "semi": false, - "printWidth": 100 + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] } diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 68d524f21..8ca85028f 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,6 +2,8 @@ "recommendations": [ "esbenp.prettier-vscode", "eamodio.gitlens", - "GitHub.vscode-pull-request-github" + "GitHub.vscode-pull-request-github", + "svelte.svelte-vscode", + "bradlc.vscode-tailwindcss" ] } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 25b1f4dbe..26b59e881 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,21 +1,21 @@ { - "json.schemas": [ - { - "fileMatch": [ - "/assets/layers/*/*.json", - "!/assets/layers/*/license_info.json" - ], - "url": "./Docs/Schemas/LayerConfigJson.schema.json" - }, - { - "fileMatch": [ - "/assets/themes/*/*.json", - "!/assets/themes/*/license_info.json" - ], - "url": "./Docs/Schemas/LayoutConfigJson.schema.json" - } - ], - "editor.tabSize": 2, - "files.autoSave": "onFocusChange", - "search.useIgnoreFiles": true - } \ No newline at end of file + "json.schemas": [ + { + "fileMatch": ["/assets/layers/*/*.json", "!/assets/layers/*/license_info.json"], + "url": "./Docs/Schemas/LayerConfigJson.schema.json" + }, + { + "fileMatch": ["/assets/themes/*/*.json", "!/assets/themes/*/license_info.json"], + "url": "./Docs/Schemas/LayoutConfigJson.schema.json" + } + ], + "editor.tabSize": 2, + "files.autoSave": "onFocusChange", + "search.useIgnoreFiles": true, + "css.lint.unknownAtRules": "ignore", + "scss.lint.unknownAtRules": "ignore", + "editor.defaultFormatter": "esbenp.prettier-vscode", + "[svelte]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } +} diff --git a/Customizations/AllKnownLayouts.ts b/Customizations/AllKnownLayouts.ts index 062eccc42..12c27223c 100644 --- a/Customizations/AllKnownLayouts.ts +++ b/Customizations/AllKnownLayouts.ts @@ -1,290 +1,52 @@ -import * as known_themes from "../assets/generated/known_layers_and_themes.json" +import known_themes from "../assets/generated/known_themes.json" import LayoutConfig from "../Models/ThemeConfig/LayoutConfig" -import LayerConfig from "../Models/ThemeConfig/LayerConfig" -import BaseUIElement from "../UI/BaseUIElement" -import Combine from "../UI/Base/Combine" -import Title from "../UI/Base/Title" -import List from "../UI/Base/List" -import DependencyCalculator from "../Models/ThemeConfig/DependencyCalculator" -import Constants from "../Models/Constants" -import { Utils } from "../Utils" -import Link from "../UI/Base/Link" import { LayoutConfigJson } from "../Models/ThemeConfig/Json/LayoutConfigJson" -import { LayerConfigJson } from "../Models/ThemeConfig/Json/LayerConfigJson" -export class AllKnownLayouts { - public static allKnownLayouts: Map = AllKnownLayouts.AllLayouts() - public static layoutsList: LayoutConfig[] = AllKnownLayouts.GenerateOrderedList( - AllKnownLayouts.allKnownLayouts - ) - // Must be below the list... - private static sharedLayers: Map = AllKnownLayouts.getSharedLayers() - - public static AllPublicLayers(options?: { - includeInlineLayers: true | boolean - }): LayerConfig[] { - const allLayers: LayerConfig[] = [] - const seendIds = new Set() - AllKnownLayouts.sharedLayers.forEach((layer, key) => { - seendIds.add(key) - allLayers.push(layer) - }) - if (options?.includeInlineLayers ?? true) { - const publicLayouts = AllKnownLayouts.layoutsList.filter((l) => !l.hideFromOverview) - for (const layout of publicLayouts) { - if (layout.hideFromOverview) { - continue - } - for (const layer of layout.layers) { - if (seendIds.has(layer.id)) { - continue - } - seendIds.add(layer.id) - allLayers.push(layer) - } - } - } - - return allLayers - } - - /** - * Returns all themes which use the given layer, reverse sorted by minzoom. This sort maximizes the chances that the layer is prominently featured on the first theme - */ - public static themesUsingLayer(id: string, publicOnly = true): LayoutConfig[] { - const themes = AllKnownLayouts.layoutsList - .filter((l) => !(publicOnly && l.hideFromOverview) && l.id !== "personal") - .map((theme) => ({ - theme, - minzoom: theme.layers.find((layer) => layer.id === id)?.minzoom, - })) - .filter((obj) => obj.minzoom !== undefined) - themes.sort((th0, th1) => th1.minzoom - th0.minzoom) - return themes.map((th) => th.theme) - } - - /** - * Generates documentation for the layers. - * Inline layers are included (if the theme is public) - * @param callback - * @constructor - */ - public static GenOverviewsForSingleLayer( - callback: (layer: LayerConfig, element: BaseUIElement, inlineSource: string) => void - ): void { - const allLayers: LayerConfig[] = Array.from(AllKnownLayouts.sharedLayers.values()).filter( - (layer) => Constants.priviliged_layers.indexOf(layer.id) < 0 - ) - const builtinLayerIds: Set = new Set() - allLayers.forEach((l) => builtinLayerIds.add(l.id)) - const inlineLayers = new Map() - - for (const layout of Array.from(AllKnownLayouts.allKnownLayouts.values())) { - if (layout.hideFromOverview) { - continue - } - - for (const layer of layout.layers) { - if (Constants.priviliged_layers.indexOf(layer.id) >= 0) { - continue - } - if (builtinLayerIds.has(layer.id)) { - continue - } - if (layer.source.geojsonSource !== undefined) { - // Not an OSM-source - continue - } - allLayers.push(layer) - builtinLayerIds.add(layer.id) - inlineLayers.set(layer.id, layout.id) - } - } - - const themesPerLayer = new Map() - - for (const layout of Array.from(AllKnownLayouts.allKnownLayouts.values())) { - if (layout.hideFromOverview) { - continue - } - for (const layer of layout.layers) { - if (!builtinLayerIds.has(layer.id)) { - // This is an inline layer - continue - } - if (!themesPerLayer.has(layer.id)) { - themesPerLayer.set(layer.id, []) - } - themesPerLayer.get(layer.id).push(layout.id) - } - } - - // Determine the cross-dependencies - const layerIsNeededBy: Map = new Map() - - for (const layer of allLayers) { - for (const dep of DependencyCalculator.getLayerDependencies(layer)) { - const dependency = dep.neededLayer - if (!layerIsNeededBy.has(dependency)) { - layerIsNeededBy.set(dependency, []) - } - layerIsNeededBy.get(dependency).push(layer.id) - } - } - - allLayers.forEach((layer) => { - const element = layer.GenerateDocumentation( - themesPerLayer.get(layer.id), - layerIsNeededBy, - DependencyCalculator.getLayerDependencies(layer) - ) - callback(layer, element, inlineLayers.get(layer.id)) - }) - } - - /** - * Generates the documentation for the layers overview page - * @constructor - */ - public static GenLayerOverviewText(): BaseUIElement { - for (const id of Constants.priviliged_layers) { - if (!AllKnownLayouts.sharedLayers.has(id)) { - throw "Priviliged layer definition not found: " + id - } - } - - const allLayers: LayerConfig[] = Array.from(AllKnownLayouts.sharedLayers.values()).filter( - (layer) => Constants.priviliged_layers.indexOf(layer.id) < 0 - ) - - const builtinLayerIds: Set = new Set() - allLayers.forEach((l) => builtinLayerIds.add(l.id)) - - const themesPerLayer = new Map() - - for (const layout of Array.from(AllKnownLayouts.allKnownLayouts.values())) { - for (const layer of layout.layers) { - if (!builtinLayerIds.has(layer.id)) { - continue - } - if (!themesPerLayer.has(layer.id)) { - themesPerLayer.set(layer.id, []) - } - themesPerLayer.get(layer.id).push(layout.id) - } - } - - // Determine the cross-dependencies - const layerIsNeededBy: Map = new Map() - - for (const layer of allLayers) { - for (const dep of DependencyCalculator.getLayerDependencies(layer)) { - const dependency = dep.neededLayer - if (!layerIsNeededBy.has(dependency)) { - layerIsNeededBy.set(dependency, []) - } - layerIsNeededBy.get(dependency).push(layer.id) - } - } - - return new Combine([ - new Title("Special and other useful layers", 1), - "MapComplete has a few data layers available in the theme which have special properties through builtin-hooks. Furthermore, there are some normal layers (which are built from normal Theme-config files) but are so general that they get a mention here.", - new Title("Priviliged layers", 1), - new List(Constants.priviliged_layers.map((id) => "[" + id + "](#" + id + ")")), - ...Constants.priviliged_layers - .map((id) => AllKnownLayouts.sharedLayers.get(id)) - .map((l) => - l.GenerateDocumentation( - themesPerLayer.get(l.id), - layerIsNeededBy, - DependencyCalculator.getLayerDependencies(l), - Constants.added_by_default.indexOf(l.id) >= 0, - Constants.no_include.indexOf(l.id) < 0 - ) - ), - new Title("Normal layers", 1), - "The following layers are included in MapComplete:", - new List( - Array.from(AllKnownLayouts.sharedLayers.keys()).map( - (id) => new Link(id, "./Layers/" + id + ".md") - ) - ), - ]) - } - - public static GenerateDocumentationForTheme(theme: LayoutConfig): BaseUIElement { - return new Combine([ - new Title(new Combine([theme.title, "(", theme.id + ")"]), 2), - theme.description, - "This theme contains the following layers:", - new List( - theme.layers - .filter((l) => !l.id.startsWith("note_import_")) - .map((l) => new Link(l.id, "../Layers/" + l.id + ".md")) - ), - "Available languages:", - new List(theme.language.filter((ln) => ln !== "_context")), - ]).SetClass("flex flex-col") - } - - public static getSharedLayers(): Map { - const sharedLayers = new Map() - for (const layer of known_themes["layers"]) { - try { - // @ts-ignore - const parsed = new LayerConfig(layer, "shared_layers") - sharedLayers.set(layer.id, parsed) - } catch (e) { - if (!Utils.runningFromConsole) { - console.error( - "CRITICAL: Could not parse a layer configuration!", - layer.id, - " due to", - e - ) - } - } - } - - return sharedLayers - } - - public static getSharedLayersConfigs(): Map { - const sharedLayers = new Map() - for (const layer of known_themes["layers"]) { - // @ts-ignore - sharedLayers.set(layer.id, layer) - } - - return sharedLayers - } - - private static GenerateOrderedList(allKnownLayouts: Map): LayoutConfig[] { - const list = [] - allKnownLayouts.forEach((layout) => { - list.push(layout) - }) - return list - } - - private static AllLayouts(): Map { - const dict: Map = new Map() +/** + * Somewhat of a dictionary, which lazily parses needed themes + */ +export class AllKnownLayoutsLazy { + private readonly dict: Map LayoutConfig }> = + new Map() + constructor() { for (const layoutConfigJson of known_themes["themes"]) { - const layout = new LayoutConfig(layoutConfigJson, true) - dict.set(layout.id, layout) - for (let i = 0; i < layout.layers.length; i++) { - let layer = layout.layers[i] - if (typeof layer === "string") { - layer = AllKnownLayouts.sharedLayers.get(layer) - layout.layers[i] = layer - if (layer === undefined) { - console.log("Defined layers are ", AllKnownLayouts.sharedLayers.keys()) - throw `Layer ${layer} was not found or defined - probably a type was made` + this.dict.set(layoutConfigJson.id, { + func: () => { + const layout = new LayoutConfig(layoutConfigJson, true) + for (let i = 0; i < layout.layers.length; i++) { + let layer = layout.layers[i] + if (typeof layer === "string") { + throw "Layer " + layer + " was not expanded in " + layout.id + } } - } - } + return layout + }, + }) } - return dict + } + + public get(key: string): LayoutConfig { + const thunk = this.dict.get(key) + if (thunk === undefined) { + return undefined + } + if (thunk["data"]) { + return thunk["data"] + } + const layout = thunk["func"]() + this.dict.set(key, { data: layout }) + return layout + } + + public keys() { + return this.dict.keys() + } + + public values() { + return Array.from(this.keys()).map((k) => this.get(k)) } } + +export class AllKnownLayouts { + public static allKnownLayouts: AllKnownLayoutsLazy = new AllKnownLayoutsLazy() +} diff --git a/Customizations/AllSharedLayers.ts b/Customizations/AllSharedLayers.ts new file mode 100644 index 000000000..7e4cf71a1 --- /dev/null +++ b/Customizations/AllSharedLayers.ts @@ -0,0 +1,69 @@ +import LayerConfig from "../Models/ThemeConfig/LayerConfig" +import { Utils } from "../Utils" +import known_themes from "../assets/generated/known_layers.json" +import { LayerConfigJson } from "../Models/ThemeConfig/Json/LayerConfigJson" +import { ALL } from "dns" +import { AllKnownLayouts } from "./AllKnownLayouts" +export class AllSharedLayers { + public static sharedLayers: Map = AllSharedLayers.getSharedLayers() + public static getSharedLayersConfigs(): Map { + const sharedLayers = new Map() + for (const layer of known_themes.layers) { + // @ts-ignore + sharedLayers.set(layer.id, layer) + } + + return sharedLayers + } + private static getSharedLayers(): Map { + const sharedLayers = new Map() + for (const layer of known_themes.layers) { + try { + // @ts-ignore + const parsed = new LayerConfig(layer, "shared_layers") + sharedLayers.set(layer.id, parsed) + } catch (e) { + if (!Utils.runningFromConsole) { + console.error( + "CRITICAL: Could not parse a layer configuration!", + layer.id, + " due to", + e + ) + } + } + } + + return sharedLayers + } + + public static AllPublicLayers(options?: { + includeInlineLayers: true | boolean + }): LayerConfig[] { + const allLayers: LayerConfig[] = [] + const seendIds = new Set() + AllSharedLayers.sharedLayers.forEach((layer, key) => { + seendIds.add(key) + allLayers.push(layer) + }) + if (options?.includeInlineLayers ?? true) { + const publicLayouts = Array.from(AllKnownLayouts.allKnownLayouts.values()).filter( + (l) => !l.hideFromOverview + ) + for (const layout of publicLayouts) { + if (layout.hideFromOverview) { + continue + } + for (const layer of layout.layers) { + if (seendIds.has(layer.id)) { + continue + } + seendIds.add(layer.id) + allLayers.push(layer) + } + } + } + + return allLayers + } +} diff --git a/Customizations/SharedTagRenderings.ts b/Customizations/SharedTagRenderings.ts index 9938c7813..85877b7e5 100644 --- a/Customizations/SharedTagRenderings.ts +++ b/Customizations/SharedTagRenderings.ts @@ -1,5 +1,4 @@ -import * as questions from "../assets/tagRenderings/questions.json" -import * as icons from "../assets/tagRenderings/icons.json" +import questions from "../assets/tagRenderings/questions.json" import { Utils } from "../Utils" import TagRenderingConfig from "../Models/ThemeConfig/TagRenderingConfig" import { TagRenderingConfigJson } from "../Models/ThemeConfig/Json/TagRenderingConfigJson" @@ -14,11 +13,9 @@ export default class SharedTagRenderings { SharedTagRenderings.generatedSharedFields() public static SharedTagRenderingJson: Map = SharedTagRenderings.generatedSharedFieldsJsons() - public static SharedIcons: Map = - SharedTagRenderings.generatedSharedFields(true) - private static generatedSharedFields(iconsOnly = false): Map { - const configJsons = SharedTagRenderings.generatedSharedFieldsJsons(iconsOnly) + private static generatedSharedFields(): Map { + const configJsons = SharedTagRenderings.generatedSharedFieldsJsons() const d = new Map() for (const key of Array.from(configJsons.keys())) { try { @@ -31,7 +28,7 @@ export default class SharedTagRenderings { console.error( "BUG: could not parse", key, - " from questions.json or icons.json - this error happened during the build step of the SharedTagRenderings", + " from questions.json - this error happened during the build step of the SharedTagRenderings", e ) } @@ -40,24 +37,14 @@ export default class SharedTagRenderings { return d } - private static generatedSharedFieldsJsons( - iconsOnly = false - ): Map { + private static generatedSharedFieldsJsons(): Map { const dict = new Map() - if (!iconsOnly) { - for (const key in questions) { - if (key === "id") { - continue - } - dict.set(key, questions[key]) - } - } - for (const key in icons) { + for (const key in questions) { if (key === "id") { continue } - dict.set(key, icons[key]) + dict.set(key, questions[key]) } dict.forEach((value, key) => { diff --git a/Docs/BuiltinIndex.md b/Docs/BuiltinIndex.md index 8b46f5d17..4010f485d 100644 --- a/Docs/BuiltinIndex.md +++ b/Docs/BuiltinIndex.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) Index of builtin TagRendering =============================== @@ -48,13 +48,13 @@ + [questions](#questions) + [export_as_gpx](#export_as_gpx) + [export_as_geojson](#export_as_geojson) - + [{upload_to_osm()}](#{upload_to_osm()}) + [minimap](#minimap) + + [payment-options-split](#payment-options-split) + + [denominations-coins](#denominations-coins) + + [denominations-notes](#denominations-notes) + [id_presets.shop_types](#id_presetsshop_types) + [school.capacity](#schoolcapacity) + [school.gender](#schoolgender) - + [payment-options-split](#payment-options-split) - + [denominations-coins](#denominations-coins) + [toilet.toilets-type](#toilettoilets-type) + [toilet.toilets-changing-table](#toilettoilets-changing-table) + [toilet.toilet-changing_table:location](#toilettoilet-changing_table:location) @@ -101,6 +101,7 @@ - climbing_area - climbing_gym - climbing_route + - clock - crossings - defibrillator - dentist @@ -112,6 +113,7 @@ - extinguisher - fire_station - fitness_centre + - fitness_station - food - ghost_bike - governments @@ -128,6 +130,7 @@ - parcel_lockers - parking - parking_spaces + - parking_ticket_machine - pharmacy - physiotherapist - picnic_table @@ -156,6 +159,7 @@ - viewpoint - village_green - waste_basket + - waste_disposal - windturbine @@ -739,17 +743,6 @@ - - gps_track - - - - -### {upload_to_osm()} - - - - - - gps_track @@ -766,6 +759,43 @@ +### payment-options-split + + + + + + - parking_ticket_machine + - ticket_machine + - toilet + + + + +### denominations-coins + + + + + + - parking_ticket_machine + - ticket_machine + + + + +### denominations-notes + + + + + + - parking_ticket_machine + - ticket_machine + + + + ### id_presets.shop_types @@ -799,29 +829,6 @@ -### payment-options-split - - - - - - - ticket_machine - - toilet - - - - -### denominations-coins - - - - - - - ticket_machine - - - - ### toilet.toilets-type @@ -875,4 +882,4 @@ - toilet_at_amenity -This document is autogenerated from [assets/layers/*.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/*.json) \ No newline at end of file +This document is autogenerated from [assets/layers/*.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/*.json) diff --git a/Docs/BuiltinLayers.md b/Docs/BuiltinLayers.md index 4d5949539..96a948700 100644 --- a/Docs/BuiltinLayers.md +++ b/Docs/BuiltinLayers.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) Special and other useful layers ================================= @@ -27,7 +27,7 @@ + [Privacy notice](#privacy-notice) + [export_as_gpx](#export_as_gpx) + [export_as_geojson](#export_as_geojson) - + [uploadtoosm](#uploadtoosm) + + [upload_to_osm](#upload_to_osm) + [minimap](#minimap) + [delete](#delete) 1. [type_node](#type_node) @@ -349,7 +349,7 @@ This tagrendering has no question and is thus read-only -### uploadtoosm +### upload_to_osm @@ -946,6 +946,7 @@ The following layers are included in MapComplete: - [climbing_gym](./Layers/climbing_gym.md) - [climbing_opportunity](./Layers/climbing_opportunity.md) - [climbing_route](./Layers/climbing_route.md) + - [clock](./Layers/clock.md) - [cluster_style](./Layers/cluster_style.md) - [conflation](./Layers/conflation.md) - [crab_address](./Layers/crab_address.md) @@ -978,6 +979,7 @@ The following layers are included in MapComplete: - [hospital](./Layers/hospital.md) - [hotel](./Layers/hotel.md) - [hydrant](./Layers/hydrant.md) + - [icons](./Layers/icons.md) - [id_presets](./Layers/id_presets.md) - [import_candidate](./Layers/import_candidate.md) - [indoors](./Layers/indoors.md) @@ -998,6 +1000,7 @@ The following layers are included in MapComplete: - [parcel_lockers](./Layers/parcel_lockers.md) - [parking](./Layers/parking.md) - [parking_spaces](./Layers/parking_spaces.md) + - [parking_ticket_machine](./Layers/parking_ticket_machine.md) - [pedestrian_path](./Layers/pedestrian_path.md) - [pharmacy](./Layers/pharmacy.md) - [physiotherapist](./Layers/physiotherapist.md) @@ -1045,4 +1048,4 @@ The following layers are included in MapComplete: - [windturbine](./Layers/windturbine.md) -This document is autogenerated from [Customizations/AllKnownLayouts.ts](https://github.com/pietervdvn/MapComplete/blob/develop/Customizations/AllKnownLayouts.ts) \ No newline at end of file +This document is autogenerated from [Customizations/AllKnownLayouts.ts](https://github.com/pietervdvn/MapComplete/blob/develop/Customizations/AllKnownLayouts.ts) diff --git a/Docs/BuiltinQuestions.md b/Docs/BuiltinQuestions.md index dce573289..492ee1a49 100644 --- a/Docs/BuiltinQuestions.md +++ b/Docs/BuiltinQuestions.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) Builtin questions =================== @@ -20,7 +20,6 @@ The following items can be easily reused in your layers + [minimap](#minimap) + [phone](#phone) + [osmlink](#osmlink) - + [wikipedialink](#wikipedialink) + [email](#email) + [website](#website) + [wheelchair-access](#wheelchair-access) @@ -34,6 +33,7 @@ The following items can be easily reused in your layers + [payment-options-split](#payment-options-split) + [payment-options-advanced](#payment-options-advanced) + [denominations-coins](#denominations-coins) + + [denominations-notes](#denominations-notes) + [last_edit](#last_edit) + [all_tags](#all_tags) + [multilevels](#multilevels) @@ -43,13 +43,6 @@ The following items can be easily reused in your layers + [internet](#internet) + [internet-fee](#internet-fee) + [internet-ssid](#internet-ssid) - + [default](#default) - + [defaults](#defaults) - + [isOpen](#isopen) - + [phonelink](#phonelink) - + [emaillink](#emaillink) - + [smokingicon](#smokingicon) - + [sharelink](#sharelink) @@ -158,29 +151,13 @@ What is the phone number of {title()}? -on osm + *Read-only tagrendering* - - - - - - - - -### wikipedialink - - - -Wikipedia - -*Read-only tagrendering* - - - - - WD + - Uploading... @@ -253,7 +230,7 @@ Are dogs allowed in this business? {description} -Is there still something relevant you couldn't give in the previous questions? Add it here.
Don't repeat already stated facts +Is there still something relevant you couldn't give in the previous questions? Add it here. @@ -382,6 +359,25 @@ What coins can you use to pay here? +### denominations-notes + + + +what notes can you use to pay here? + + + + - 5 euro notes are accepted + - 10 euro notes are accepted + - 20 euro notes are accepted + - 50 euro notes are accepted + - 100 euro notes are accepted + - 200 euro notes are accepted + - 500 euro notes are accepted + + + + ### last_edit @@ -512,82 +508,6 @@ What is the network name for the wireless internet access? - Telekom + - - - -### default - - - -*Read-only tagrendering* - - - -### defaults - - - -*Read-only tagrendering* - - - -### isOpen - - - -*Read-only tagrendering* - - - - - clock:#0f0;ring:#0f0 - - circle:#f00;clock:#fff - - clock:#ff0;ring:#ff0 - - circle:#f0f;clock:#fff - - - - -### phonelink - - - -phone - -*Read-only tagrendering* - - - -### emaillink - - - -email - -*Read-only tagrendering* - - - -### smokingicon - - - -*Read-only tagrendering* - - - - - no-smoking - - smoking-allowed - - - - -### sharelink - - - -{share_link()} - -*Read-only tagrendering* - -This document is autogenerated from [Customizations/SharedTagRenderings.ts](https://github.com/pietervdvn/MapComplete/blob/develop/Customizations/SharedTagRenderings.ts), [assets/tagRenderings/questions.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/tagRenderings/questions.json) \ No newline at end of file +This document is autogenerated from [Customizations/SharedTagRenderings.ts](https://github.com/pietervdvn/MapComplete/blob/develop/Customizations/SharedTagRenderings.ts), [assets/tagRenderings/questions.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/tagRenderings/questions.json) diff --git a/Docs/CalculatedTags.md b/Docs/CalculatedTags.md index 3796df872..82ed5763d 100644 --- a/Docs/CalculatedTags.md +++ b/Docs/CalculatedTags.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) Metatags ========== @@ -23,6 +23,7 @@ + [sidewalk:left, sidewalk:right, generic_key:left:property, generic_key:right:property](#sidewalkleft,-sidewalk:right,-generic_key:left:property,-generic_key:right:property) + [_geometry:type](#_geometrytype) + [_level](#_level) + + [_referencing_ways](#_referencing_ways) + [distanceTo](#distanceto) + [overlapWith](#overlapwith) + [enclosingFeatures](#enclosingfeatures) @@ -191,6 +192,16 @@ Extract the 'level'-tag into a normalized, ';'-separated value +### _referencing_ways + + + +_referencing_ways contains - for a node - which ways use this this node as point in their geometry. + +This is a lazy metatag and is only calculated when needed + + + Calculating tags with Javascript ---------------------------------- @@ -329,4 +340,4 @@ For example: `_part_of_walking_routes=feat.memberships().map(r => r.relation.tag 0. key -This document is autogenerated from [Logic/SimpleMetaTagger.ts](https://github.com/pietervdvn/MapComplete/blob/develop/Logic/SimpleMetaTagger.ts), [Logic/ExtraFunctions.ts](https://github.com/pietervdvn/MapComplete/blob/develop/Logic/ExtraFunctions.ts) \ No newline at end of file +This document is autogenerated from [Logic/SimpleMetaTagger.ts](https://github.com/pietervdvn/MapComplete/blob/develop/Logic/SimpleMetaTagger.ts), [Logic/ExtraFunctions.ts](https://github.com/pietervdvn/MapComplete/blob/develop/Logic/ExtraFunctions.ts) diff --git a/Docs/Development_deployment.md b/Docs/Development_deployment.md index e163ebf79..0ef50621e 100644 --- a/Docs/Development_deployment.md +++ b/Docs/Development_deployment.md @@ -24,26 +24,27 @@ the switch ;) ). If you are using Visual Studio Code you can use a [WSL Remote](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) window, or use the Devcontainer (see more details later). -You need at least 3Gb available to run MapComplete. +You need at least 3Gb RAM available to run MapComplete, but you'll preferably have 8GB of free RAM available. 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 `) -1. Install `python3` if you do not have it already - - On linux: `sudo apt install python3` - - On windows: find the latest download on the [Python Releases for Windows page](https://www.python.org/downloads/windows/) -2. Install the nodejs version specified in [/.tool-versions](/.tool-versions) - - On linux: install npm first `sudo apt install npm`, then install `n` using npm: ` npm install -g n`, which can - then install node with `n install `. You can [use asdf to manage your runtime versions](https://asdf-vm.com/). - - Windows: install nodeJS: https://nodejs.org/en/download/ -3. Run `npm run init` which … - - runs `npm install` - - generates some additional dependencies and files -4. 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` +1. Install `python3` if you do not have it already - On linux: `sudo apt 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 … + - 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` or `userlayout=true#` as [Query parameter](URL_Parameters.md). Note that the shorter URLs ( e.g. `bookcases.html`, `aed.html`, ...) _don't_ exist on the development version. +The previous instructions were tested on 2023-03-09 on a Ubuntu 22.04 machine + Development using Windows ------------------------ diff --git a/Docs/Hotkeys.md b/Docs/Hotkeys.md index 8931d54f9..1ac7bbd61 100644 --- a/Docs/Hotkeys.md +++ b/Docs/Hotkeys.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) Hotkeys ========= @@ -27,4 +27,4 @@ Key combination | Action `shift+O` | Sets the background layer to OpenStreetMap-carto -This document is autogenerated from \ No newline at end of file +This document is autogenerated from diff --git a/Docs/Integrating_Maproulette.md b/Docs/Integrating_Maproulette.md new file mode 100644 index 000000000..701b44e3d --- /dev/null +++ b/Docs/Integrating_Maproulette.md @@ -0,0 +1,136 @@ +# Integrating MapRoulette + +[MapRoulette](https://www.maproulette.org/) is a website which has challenges. A challenge is a collection of _microtasks_, i.e. mapping +tasks which can be solved in a few minutes. + +A perfect example of this is to setup such a challenge to e.g. import new points. [Important: always follow the import guidelines if you want to import data.](https://wiki.openstreetmap.org/wiki/Import/Guidelines) +(Another approach to set up a guided import is to create a map note for every point with the [import helper](https://mapcomplete.osm.be/import_helper). This however litters the map notes and will upset mappers if used with to much points. However, this flow is easier to setup as no changes to theme files are needed, nor is a maproulette-account needed) + +## The API + +**Most of the heavy lifting is done in [layer `maproulette-challenge`](./Docs/Layers/maproulette_challenge.md). Extend this layer with your needs.** +The API is shortly discussed here for future reference only. + +There is an API-endpoint at `https://maproulette.org/api/v2/tasks/box/{x_min}/{y_min}/{x_max}/{y_max}` which can be used +to query _all_ tasks in a bbox and returns this as geojson. Hint: +use [the maproulette theme in debug mode](https://mapcomplete.osm.be/maproulette?debug=true) to inspect all properties. + +To view the overview a single challenge, visit `https://maproulette.org/browse/challenges/` with your +browser. +The API endpoint for a single challenge is `https://maproulette.org/api/v2/challenge/view/` which returns a +geojson. + +## Displaying MapRoulette data in MapComplete + +As you'll probably want to link MapComplete to your challenge, reuse [maproulette_challenge](Docs/Layers/maproulette_challenge.md). +It has a basic framework already to load the tags. + +Of course, interacting with the tasks is the next step. + +### Detecting nearby features + +You can use [`calculatedTags`](./Docs/CalculatedTags.md) to add a small piece of code to e.g. detect nearby entities. + +The following example is to match hotels: + +``` + "calculatedTags": [ + "_closest_osm_hotel=feat.closest('hotel')?.properties?.id", + "_closest_osm_hotel_distance=feat.distanceTo(feat.properties._closest_osm_hotel)", + "_has_closeby_feature=Number(feat.properties._closest_osm_hotel_distance) < 50 ? 'yes' : 'no'" + ], +``` + +This can be used to decide if tags should be applied on an existing object or a new point should be created. + + +### Creating a new point based on a maproulette challenge (Guided import) + +**Requirement**: the MapRoulette task should have `tags` added. + +One can add `import`-button in the featureInfoBox ([documentation here](./Docs/SpecialRenderings.md#importbutton)). +Note that the import button has support for MapRoulette and is able to close the task if the property containing the maproulette-id is given: + +```json +{ + "id": "import-button", + "render": { + "special": { + "type": "import_button", + "targetLayer": "", + "tags": "tags", -- should stay 'tags' + "maproulette_id": "mr_taskId", -- important to get the task closed + "text": { + "en": "Import this point" -- or a nice message + }, + "icon": "./assets/svg/addSmall.svg", -- optional, feel free to change + "location_picker": "photo", -- optional, background layer to pinpoint the hotel + } + } +} +``` + + +### Applying tags to already existing features + +For this, [the `tag_apply`-button can be used](./Docs/SpecialRenderings.md#tagapply). + +The following example uses the calculated tags `_has_closeby_feature` and `_closest_osm_hotel`. These were added by a small extra script using `calculatedTagss`. + +```json + + { + "id": "tag-apply-button", + "condition": "_has_closeby_feature=yes", -- don't show if no feature to add to + "render": { + "special": { + "type": "tag_apply", + "tags_to_apply": "$tags", -- note the '$', property containing the tags + "id_of_object_to_apply_this_one": "_closest_osm_hotel" -- id of the feature to add those tags to + "message": { + "en": "Add all the suggested tags" + }, + "image": "./assets/svg/addSmall.svg" + } + } + } + +``` + +### Changing the status of the task + +The easiest way is to reuse a tagrendering from the [Maproulette-layer](./Docs/Layers/maproulette.md) (_not_ the `maproulette-challenge`-layer!), such as [`maproulette.mark_fixed`](./Docs/Layers/maproulette.md#markfixed),[`maproulette.mark_duplicate`](./Docs/Layers/maproulette.md#markduplicate),[`maproulette.mark_too_hard`](./Docs/Layers/maproulette.md#marktoohard). + +In the background, these use the special visualisation [`maproulette_set_status`](./Docs/SpecialRenderings.md#maproulettesetstatus) - which allows to apply different status codes or different messages/icons. + +## Creating a maproulette challenge + +A challenge can be created on https://maproulette.org/admin/projects + +This can be done with a geojson-file (or by other means). + +MapRoulette works as a geojson-store with status fields added. As such, you have a bit of freedom in creating the data, but an **id** field is mandatory. A **name** tag is recommended + +To setup a guided import, add a `tags`-field with tags formatted in such a way that they are compatible with the [import-button](./Docs/SpecialRenderings.md#specifying-which-tags-to-copy-or-add) + + +(The following example is not tested and might be wrong.) + +``` +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": {"type": "Point", "coordinates": [1.234, 5.678]}, + "properties": { + "id": ... + "tags": "foo=bar;name=xyz", + } + + } + + ] +} + +``` diff --git a/Docs/Layers/address.md b/Docs/Layers/address.md index e955c26f4..59ea54e7b 100644 --- a/Docs/Layers/address.md +++ b/Docs/Layers/address.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) address ========= @@ -113,4 +113,4 @@ This is rendered with `Fixme description{fixme}` - *No fixme - write something here to explain complicated cases* corresponds with `` -This document is autogenerated from [assets/layers/address/address.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/address/address.json) \ No newline at end of file +This document is autogenerated from [assets/layers/address/address.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/address/address.json) diff --git a/Docs/Layers/all_streets.md b/Docs/Layers/all_streets.md index 08a8c0982..6b872c4e2 100644 --- a/Docs/Layers/all_streets.md +++ b/Docs/Layers/all_streets.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) all_streets ============= @@ -159,4 +159,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/themes/cyclestreets/cyclestreets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclestreets/cyclestreets.json) \ No newline at end of file +This document is autogenerated from [assets/themes/cyclestreets/cyclestreets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclestreets/cyclestreets.json) diff --git a/Docs/Layers/ambulancestation.md b/Docs/Layers/ambulancestation.md index 2d7e10276..7391a9d9f 100644 --- a/Docs/Layers/ambulancestation.md +++ b/Docs/Layers/ambulancestation.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) ambulancestation ================== @@ -162,4 +162,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/ambulancestation/ambulancestation.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/ambulancestation/ambulancestation.json) \ No newline at end of file +This document is autogenerated from [assets/layers/ambulancestation/ambulancestation.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/ambulancestation/ambulancestation.json) diff --git a/Docs/Layers/artwork.md b/Docs/Layers/artwork.md index 9ab8e7f63..f83d13c86 100644 --- a/Docs/Layers/artwork.md +++ b/Docs/Layers/artwork.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) artwork ========= @@ -378,7 +378,7 @@ This tagrendering has labels `bench-questions` -The question is *Does this bench have an inscription?
E.g. on a mounted plaque, in the backrest, ...
* +The question is *Does this bench have an inscription?* This rendering asks information about the property [inscription](https://wiki.openstreetmap.org/wiki/Key:inscription) @@ -432,4 +432,4 @@ has_image.1 | Has at least one image | image~.+\|image:0~.+|image:1~.+|image:2~. has_image.2 | Probably does not have an image | -This document is autogenerated from [assets/layers/artwork/artwork.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/artwork/artwork.json) \ No newline at end of file +This document is autogenerated from [assets/layers/artwork/artwork.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/artwork/artwork.json) diff --git a/Docs/Layers/atm.md b/Docs/Layers/atm.md index 5dd5d30dd..59efb276e 100644 --- a/Docs/Layers/atm.md +++ b/Docs/Layers/atm.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) atm ===== @@ -218,4 +218,4 @@ id | question | osmTags speech_output.0 | With speech output | speech_output=yes -This document is autogenerated from [assets/layers/atm/atm.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/atm/atm.json) \ No newline at end of file +This document is autogenerated from [assets/layers/atm/atm.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/atm/atm.json) diff --git a/Docs/Layers/bank.md b/Docs/Layers/bank.md index 20a67d3a8..c6291208e 100644 --- a/Docs/Layers/bank.md +++ b/Docs/Layers/bank.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bank ====== @@ -100,4 +100,4 @@ id | question | osmTags has_atm.0 | With an ATM | atm=yes -This document is autogenerated from [assets/layers/bank/bank.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bank/bank.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bank/bank.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bank/bank.json) diff --git a/Docs/Layers/banks_with_atm.md b/Docs/Layers/banks_with_atm.md index d3f2607d7..d6139e364 100644 --- a/Docs/Layers/banks_with_atm.md +++ b/Docs/Layers/banks_with_atm.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) banks_with_atm ================ @@ -125,4 +125,4 @@ id | question | osmTags has_atm.0 | With an ATM | atm=yes -This document is autogenerated from [assets/themes/atm/atm.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/atm/atm.json) \ No newline at end of file +This document is autogenerated from [assets/themes/atm/atm.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/atm/atm.json) diff --git a/Docs/Layers/barrier.md b/Docs/Layers/barrier.md index 64107aa32..9bee4b990 100644 --- a/Docs/Layers/barrier.md +++ b/Docs/Layers/barrier.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) barrier ========= @@ -100,6 +100,8 @@ The question is *Can a bicycle go past this barrier?* - *A cyclist can not go past this.* corresponds with `bicycle=no` +This tagrendering is only visible in the popup if the following condition is met: `_referencing_ways~.+` + ### barrier_type @@ -171,6 +173,8 @@ This is rendered with `Maximum width: {maxwidth:physical} m` +This tagrendering is only visible in the popup if the following condition is met: `cycle_barrier!=double&cycle_barrier!=triple&_referencing_ways~.+` + ### Space between barrier (cyclebarrier) @@ -219,4 +223,4 @@ This is rendered with `Overlap: {overlap} m` This tagrendering is only visible in the popup if the following condition is met: `cycle_barrier=double|cycle_barrier=triple` -This document is autogenerated from [assets/layers/barrier/barrier.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/barrier/barrier.json) \ No newline at end of file +This document is autogenerated from [assets/layers/barrier/barrier.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/barrier/barrier.json) diff --git a/Docs/Layers/bench.md b/Docs/Layers/bench.md index 4f9e88a8e..f9dfc60ea 100644 --- a/Docs/Layers/bench.md +++ b/Docs/Layers/bench.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bench ======= @@ -225,7 +225,7 @@ This tagrendering has labels `bench-questions` -The question is *Does this bench have an inscription?
E.g. on a mounted plaque, in the backrest, ...
* +The question is *Does this bench have an inscription?* This rendering asks information about the property [inscription](https://wiki.openstreetmap.org/wiki/Key:inscription) @@ -248,7 +248,7 @@ This tagrendering has labels `bench-questions` -The question is *Does this bench have an artistic element?
E.g. it has an integrated painting, statue or other non-trivial, creative work
* +The question is *Does this bench have an artistic element?* @@ -416,4 +416,4 @@ has_image.1 | Has at least one image | image~.+\|image:0~.+|image:1~.+|image:2~. has_image.2 | Probably does not have an image | -This document is autogenerated from [assets/layers/bench/bench.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bench/bench.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bench/bench.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bench/bench.json) diff --git a/Docs/Layers/bench_at_pt.md b/Docs/Layers/bench_at_pt.md index 42bab96a9..ea47eddd1 100644 --- a/Docs/Layers/bench_at_pt.md +++ b/Docs/Layers/bench_at_pt.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bench_at_pt ============= @@ -108,4 +108,4 @@ The question is *What kind of bench is this?* - *There is no bench here* corresponds with `bench=no` -This document is autogenerated from [assets/layers/bench_at_pt/bench_at_pt.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bench_at_pt/bench_at_pt.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bench_at_pt/bench_at_pt.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bench_at_pt/bench_at_pt.json) diff --git a/Docs/Layers/bicycle_library.md b/Docs/Layers/bicycle_library.md index ce454a8f5..a730f4076 100644 --- a/Docs/Layers/bicycle_library.md +++ b/Docs/Layers/bicycle_library.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bicycle_library ================= @@ -214,7 +214,7 @@ The question is *Who can loan bicycles here?* -The question is *Is there still something relevant you couldn't give in the previous questions? Add it here.
Don't repeat already stated facts* +The question is *Is there still something relevant you couldn't give in the previous questions? Add it here.* This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description) @@ -222,4 +222,4 @@ This is rendered with `{description}` -This document is autogenerated from [assets/layers/bicycle_library/bicycle_library.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bicycle_library/bicycle_library.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bicycle_library/bicycle_library.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bicycle_library/bicycle_library.json) diff --git a/Docs/Layers/bicycle_rental.md b/Docs/Layers/bicycle_rental.md index 1386ad1a2..cfc2da80f 100644 --- a/Docs/Layers/bicycle_rental.md +++ b/Docs/Layers/bicycle_rental.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bicycle_rental ================ @@ -381,4 +381,4 @@ This tagrendering is only visible in the popup if the following condition is met This tagrendering has labels `bicycle_rental` -This document is autogenerated from [assets/layers/bicycle_rental/bicycle_rental.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bicycle_rental/bicycle_rental.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bicycle_rental/bicycle_rental.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bicycle_rental/bicycle_rental.json) diff --git a/Docs/Layers/bicycle_rental_non_docking.md b/Docs/Layers/bicycle_rental_non_docking.md index 773ab98ee..5e01025e1 100644 --- a/Docs/Layers/bicycle_rental_non_docking.md +++ b/Docs/Layers/bicycle_rental_non_docking.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bicycle_rental_non_docking ============================ @@ -404,4 +404,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/themes/cyclofix/cyclofix.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclofix/cyclofix.json) \ No newline at end of file +This document is autogenerated from [assets/themes/cyclofix/cyclofix.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclofix/cyclofix.json) diff --git a/Docs/Layers/bicycle_tube_vending_machine.md b/Docs/Layers/bicycle_tube_vending_machine.md index 3826ca004..4b0467396 100644 --- a/Docs/Layers/bicycle_tube_vending_machine.md +++ b/Docs/Layers/bicycle_tube_vending_machine.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bicycle_tube_vending_machine ============================== @@ -198,4 +198,4 @@ The question is *Are other bicycle bicycle accessories sold here?* - Unselecting this answer will add vending:bicycle_lock=no -This document is autogenerated from [assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json) diff --git a/Docs/Layers/bike_cafe.md b/Docs/Layers/bike_cafe.md index 53dd126c8..80f0240a5 100644 --- a/Docs/Layers/bike_cafe.md +++ b/Docs/Layers/bike_cafe.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bike_cafe =========== @@ -219,4 +219,4 @@ This is rendered with `

Opening hours

{opening_hours_table(opening_hours -This document is autogenerated from [assets/layers/bike_cafe/bike_cafe.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_cafe/bike_cafe.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bike_cafe/bike_cafe.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_cafe/bike_cafe.json) diff --git a/Docs/Layers/bike_cleaning.md b/Docs/Layers/bike_cleaning.md index c8973b4b6..a695f5b5a 100644 --- a/Docs/Layers/bike_cleaning.md +++ b/Docs/Layers/bike_cleaning.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bike_cleaning =============== @@ -119,4 +119,4 @@ This is rendered with `Using the cleaning service costs {charge}` This tagrendering is only visible in the popup if the following condition is met: `amenity=bike_wash|amenity=bicycle_wash` -This document is autogenerated from [assets/layers/bike_cleaning/bike_cleaning.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_cleaning/bike_cleaning.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bike_cleaning/bike_cleaning.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_cleaning/bike_cleaning.json) diff --git a/Docs/Layers/bike_parking.md b/Docs/Layers/bike_parking.md index 35ead56f0..f7dd3441c 100644 --- a/Docs/Layers/bike_parking.md +++ b/Docs/Layers/bike_parking.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bike_parking ============== @@ -211,4 +211,4 @@ This is rendered with `This parking fits {capacity:cargo_bike} cargo bikes` This tagrendering is only visible in the popup if the following condition is met: `cargo_bike~^(designated|yes)$` -This document is autogenerated from [assets/layers/bike_parking/bike_parking.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_parking/bike_parking.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bike_parking/bike_parking.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_parking/bike_parking.json) diff --git a/Docs/Layers/bike_repair_station.md b/Docs/Layers/bike_repair_station.md index 99cb6533b..611537012 100644 --- a/Docs/Layers/bike_repair_station.md +++ b/Docs/Layers/bike_repair_station.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bike_repair_station ===================== @@ -341,4 +341,4 @@ This is rendered with `Located on the {level}th floor` - *Located on the first basement level* corresponds with `level=-1` -This document is autogenerated from [assets/layers/bike_repair_station/bike_repair_station.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_repair_station/bike_repair_station.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bike_repair_station/bike_repair_station.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_repair_station/bike_repair_station.json) diff --git a/Docs/Layers/bike_shop.md b/Docs/Layers/bike_shop.md index 190b8d8b2..5ca275fcf 100644 --- a/Docs/Layers/bike_shop.md +++ b/Docs/Layers/bike_shop.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bike_shop =========== @@ -40,10 +40,10 @@ Elements must have the all of following tags to be shown on this layer: - - shop=bicycle|amenity=bicycle_rental|shop=sports&service:bicycle:retail!=no&service:bicycle:repair!=no&sport=bicycle|sport=cycling| + - shop=bicycle|shop=sports&service:bicycle:retail!=no&service:bicycle:repair!=no&sport=bicycle|sport=cycling| -[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22shop%22%3D%22bicycle%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22bicycle_rental%22%5D%5B!%22network%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22shop%22%3D%22sports%22%5D%5B%22sport%22%3D%22bicycle%22%5D%5B%22service%3Abicycle%3Aretail%22!%3D%22no%22%5D%5B%22service%3Abicycle%3Arepair%22!%3D%22no%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22shop%22%3D%22sports%22%5D%5B%22sport%22%3D%22cycling%22%5D%5B%22service%3Abicycle%3Aretail%22!%3D%22no%22%5D%5B%22service%3Abicycle%3Arepair%22!%3D%22no%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22shop%22%3D%22sports%22%5D%5B!%22sport%22%5D%5B%22service%3Abicycle%3Aretail%22!%3D%22no%22%5D%5B%22service%3Abicycle%3Arepair%22!%3D%22no%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22shop%22%3D%22bicycle%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22shop%22%3D%22sports%22%5D%5B%22sport%22%3D%22bicycle%22%5D%5B%22service%3Abicycle%3Aretail%22!%3D%22no%22%5D%5B%22service%3Abicycle%3Arepair%22!%3D%22no%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22shop%22%3D%22sports%22%5D%5B%22sport%22%3D%22cycling%22%5D%5B%22service%3Abicycle%3Aretail%22!%3D%22no%22%5D%5B%22service%3Abicycle%3Arepair%22!%3D%22no%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22shop%22%3D%22sports%22%5D%5B!%22sport%22%5D%5B%22service%3Abicycle%3Aretail%22!%3D%22no%22%5D%5B%22service%3Abicycle%3Arepair%22!%3D%22no%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) @@ -518,7 +518,7 @@ This is rendered with `Using the cleaning service costs {service:bicycle:cleani -The question is *Is there still something relevant you couldn't give in the previous questions? Add it here.
Don't repeat already stated facts* +The question is *Is there still something relevant you couldn't give in the previous questions? Add it here.* This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description) @@ -526,4 +526,4 @@ This is rendered with `{description}` -This document is autogenerated from [assets/layers/bike_shop/bike_shop.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_shop/bike_shop.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bike_shop/bike_shop.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_shop/bike_shop.json) diff --git a/Docs/Layers/bike_themed_object.md b/Docs/Layers/bike_themed_object.md index 694baca5e..2db33554a 100644 --- a/Docs/Layers/bike_themed_object.md +++ b/Docs/Layers/bike_themed_object.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) bike_themed_object ==================== @@ -85,7 +85,7 @@ This tagrendering has no question and is thus read-only -The question is *Is there still something relevant you couldn't give in the previous questions? Add it here.
Don't repeat already stated facts* +The question is *Is there still something relevant you couldn't give in the previous questions? Add it here.* This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description) @@ -167,4 +167,4 @@ This is rendered with `

Opening hours

{opening_hours_table(opening_hours -This document is autogenerated from [assets/layers/bike_themed_object/bike_themed_object.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_themed_object/bike_themed_object.json) \ No newline at end of file +This document is autogenerated from [assets/layers/bike_themed_object/bike_themed_object.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/bike_themed_object/bike_themed_object.json) diff --git a/Docs/Layers/binocular.md b/Docs/Layers/binocular.md index f6a6b0f33..b6090611e 100644 --- a/Docs/Layers/binocular.md +++ b/Docs/Layers/binocular.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) binocular =========== @@ -109,4 +109,4 @@ This is rendered with `Looks towards {direction}°` -This document is autogenerated from [assets/layers/binocular/binocular.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/binocular/binocular.json) \ No newline at end of file +This document is autogenerated from [assets/layers/binocular/binocular.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/binocular/binocular.json) diff --git a/Docs/Layers/birdhide.md b/Docs/Layers/birdhide.md index feeae4f24..0e7edcd05 100644 --- a/Docs/Layers/birdhide.md +++ b/Docs/Layers/birdhide.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) birdhide ========== @@ -154,4 +154,4 @@ id | question | osmTags shelter.0 | Only covered birdhides | shelter=yes\|building~.+&covered!=no -This document is autogenerated from [assets/layers/birdhide/birdhide.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/birdhide/birdhide.json) \ No newline at end of file +This document is autogenerated from [assets/layers/birdhide/birdhide.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/birdhide/birdhide.json) diff --git a/Docs/Layers/cafe_pub.md b/Docs/Layers/cafe_pub.md index eeec0beca..9a83203c2 100644 --- a/Docs/Layers/cafe_pub.md +++ b/Docs/Layers/cafe_pub.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) cafe_pub ========== @@ -410,4 +410,4 @@ id | question | osmTags accepts_cards.0 | Accepts payment cards | payment:cards=yes -This document is autogenerated from [assets/layers/cafe_pub/cafe_pub.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/cafe_pub/cafe_pub.json) \ No newline at end of file +This document is autogenerated from [assets/layers/cafe_pub/cafe_pub.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/cafe_pub/cafe_pub.json) diff --git a/Docs/Layers/car_rental.md b/Docs/Layers/car_rental.md index 4f091abee..230f666f5 100644 --- a/Docs/Layers/car_rental.md +++ b/Docs/Layers/car_rental.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) car_rental ============ @@ -173,4 +173,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/car_rental/car_rental.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/car_rental/car_rental.json) \ No newline at end of file +This document is autogenerated from [assets/layers/car_rental/car_rental.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/car_rental/car_rental.json) diff --git a/Docs/Layers/caravansites.md b/Docs/Layers/caravansites.md index 6915216b5..de51b0bf3 100644 --- a/Docs/Layers/caravansites.md +++ b/Docs/Layers/caravansites.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) caravansites ============== @@ -336,4 +336,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/themes/campersite/campersite.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/campersite/campersite.json) \ No newline at end of file +This document is autogenerated from [assets/themes/campersite/campersite.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/campersite/campersite.json) diff --git a/Docs/Layers/charging_station.md b/Docs/Layers/charging_station.md index f421ad74f..460d2f84e 100644 --- a/Docs/Layers/charging_station.md +++ b/Docs/Layers/charging_station.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) charging_station ================== @@ -2065,4 +2065,4 @@ connection_type.15 | Has a
Bosch Active connection_type.16 | Has a
Bosch Active Connect with 5 pins and cable
connector | socket:bosch_5pin~.+ -This document is autogenerated from [assets/layers/charging_station/charging_station.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/charging_station/charging_station.json) \ No newline at end of file +This document is autogenerated from [assets/layers/charging_station/charging_station.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/charging_station/charging_station.json) diff --git a/Docs/Layers/charging_station_ebikes.md b/Docs/Layers/charging_station_ebikes.md index 16b8201bd..dde3de553 100644 --- a/Docs/Layers/charging_station_ebikes.md +++ b/Docs/Layers/charging_station_ebikes.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) charging_station_ebikes ========================= @@ -2043,4 +2043,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/themes/cyclofix/cyclofix.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclofix/cyclofix.json) \ No newline at end of file +This document is autogenerated from [assets/themes/cyclofix/cyclofix.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclofix/cyclofix.json) diff --git a/Docs/Layers/climbing.md b/Docs/Layers/climbing.md index bcd6ba5ec..6c85aa3dc 100644 --- a/Docs/Layers/climbing.md +++ b/Docs/Layers/climbing.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) climbing ========== @@ -184,7 +184,7 @@ The question is *Is sport climbing possible here on fixed anchors?* -The question is *Is traditional climbing possible here (using own gear e.g. chocks)?* +The question is *Is traditional climbing possible here?* @@ -230,4 +230,4 @@ This is rendered with `A fee of {charge} should be paid for climbing here` - *Paying a fee is required to climb here* corresponds with `fee=yes` -This document is autogenerated from [assets/layers/climbing/climbing.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing/climbing.json) \ No newline at end of file +This document is autogenerated from [assets/layers/climbing/climbing.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing/climbing.json) diff --git a/Docs/Layers/climbing_area.md b/Docs/Layers/climbing_area.md index c8cb28ee2..b4d70aa7e 100644 --- a/Docs/Layers/climbing_area.md +++ b/Docs/Layers/climbing_area.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) climbing_area =============== @@ -239,4 +239,4 @@ The question is *Is bouldering possible here?* - This option cannot be chosen as answer -This document is autogenerated from [assets/layers/climbing_area/climbing_area.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing_area/climbing_area.json) \ No newline at end of file +This document is autogenerated from [assets/layers/climbing_area/climbing_area.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing_area/climbing_area.json) diff --git a/Docs/Layers/climbing_club.md b/Docs/Layers/climbing_club.md index 2bd6fcdff..72488f16e 100644 --- a/Docs/Layers/climbing_club.md +++ b/Docs/Layers/climbing_club.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) climbing_club =============== @@ -155,4 +155,4 @@ This is rendered with `

Opening hours

{opening_hours_table(opening_hours -This document is autogenerated from [assets/layers/climbing_club/climbing_club.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing_club/climbing_club.json) \ No newline at end of file +This document is autogenerated from [assets/layers/climbing_club/climbing_club.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing_club/climbing_club.json) diff --git a/Docs/Layers/climbing_gym.md b/Docs/Layers/climbing_gym.md index 67a66e6c0..8b71bb04e 100644 --- a/Docs/Layers/climbing_gym.md +++ b/Docs/Layers/climbing_gym.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) climbing_gym ============== @@ -364,4 +364,4 @@ The question is *Is there a speed climbing wall?* - This option cannot be chosen as answer -This document is autogenerated from [assets/layers/climbing_gym/climbing_gym.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing_gym/climbing_gym.json) \ No newline at end of file +This document is autogenerated from [assets/layers/climbing_gym/climbing_gym.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing_gym/climbing_gym.json) diff --git a/Docs/Layers/climbing_opportunity.md b/Docs/Layers/climbing_opportunity.md index fc1c1d6fe..e87ea6e91 100644 --- a/Docs/Layers/climbing_opportunity.md +++ b/Docs/Layers/climbing_opportunity.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) climbing_opportunity ====================== @@ -83,4 +83,4 @@ The question is *Is climbing possible here?* - This option cannot be chosen as answer -This document is autogenerated from [assets/layers/climbing_opportunity/climbing_opportunity.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing_opportunity/climbing_opportunity.json) \ No newline at end of file +This document is autogenerated from [assets/layers/climbing_opportunity/climbing_opportunity.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing_opportunity/climbing_opportunity.json) diff --git a/Docs/Layers/climbing_route.md b/Docs/Layers/climbing_route.md index 02b7fceb1..a453fbe35 100644 --- a/Docs/Layers/climbing_route.md +++ b/Docs/Layers/climbing_route.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) climbing_route ================ @@ -153,7 +153,7 @@ This is rendered with `This route has {climbing:bolts} bolts
Don't repeat already stated facts* +The question is *Is there still something relevant you couldn't give in the previous questions? Add it here.* This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description) @@ -175,4 +175,4 @@ This is rendered with `The rock type is {_embedding_features_with_rock:rock} as -This document is autogenerated from [assets/layers/climbing_route/climbing_route.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing_route/climbing_route.json) \ No newline at end of file +This document is autogenerated from [assets/layers/climbing_route/climbing_route.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/climbing_route/climbing_route.json) diff --git a/Docs/Layers/clock.md b/Docs/Layers/clock.md new file mode 100644 index 000000000..b32f0dda2 --- /dev/null +++ b/Docs/Layers/clock.md @@ -0,0 +1,232 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) + + clock +======= + + + + + +Layer with public clocks + + + + + + + - This layer is shown at zoomlevel **13** and higher + - This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on it: a preset snaps to this layer (presets[1]) + + + + +#### Themes using this layer + + + + + + - [clock](https://mapcomplete.osm.be/clock) + - [personal](https://mapcomplete.osm.be/personal) + + + + + Basic tags for this layer +--------------------------- + + + +Elements must have the all of following tags to be shown on this layer: + + + + - amenity=clock + + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22amenity%22%3D%22clock%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + + + + Supported attributes +---------------------- + + + +Warning: + +this quick overview is incomplete + + + +attribute | type | values which are supported by this layer +----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/support#values) [support](https://wiki.openstreetmap.org/wiki/Key:support) | Multiple choice | [pole](https://wiki.openstreetmap.org/wiki/Tag:support%3Dpole) [wall_mounted](https://wiki.openstreetmap.org/wiki/Tag:support%3Dwall_mounted) [billboard](https://wiki.openstreetmap.org/wiki/Tag:support%3Dbillboard) [ground](https://wiki.openstreetmap.org/wiki/Tag:support%3Dground) +[](https://taginfo.openstreetmap.org/keys/display#values) [display](https://wiki.openstreetmap.org/wiki/Key:display) | Multiple choice | [analog](https://wiki.openstreetmap.org/wiki/Tag:display%3Danalog) [digital](https://wiki.openstreetmap.org/wiki/Tag:display%3Ddigital) [sundial](https://wiki.openstreetmap.org/wiki/Tag:display%3Dsundial) [unorthodox](https://wiki.openstreetmap.org/wiki/Tag:display%3Dunorthodox) +[](https://taginfo.openstreetmap.org/keys/visibility#values) [visibility](https://wiki.openstreetmap.org/wiki/Key:visibility) | Multiple choice | [house](https://wiki.openstreetmap.org/wiki/Tag:visibility%3Dhouse) [street](https://wiki.openstreetmap.org/wiki/Tag:visibility%3Dstreet) [area](https://wiki.openstreetmap.org/wiki/Tag:visibility%3Darea) +[](https://taginfo.openstreetmap.org/keys/date#values) [date](https://wiki.openstreetmap.org/wiki/Key:date) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:date%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:date%3Dno) +[](https://taginfo.openstreetmap.org/keys/thermometer#values) [thermometer](https://wiki.openstreetmap.org/wiki/Key:thermometer) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:thermometer%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:thermometer%3Dno) +[](https://taginfo.openstreetmap.org/keys/barometer#values) [barometer](https://wiki.openstreetmap.org/wiki/Key:barometer) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:barometer%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:barometer%3Dno) +[](https://taginfo.openstreetmap.org/keys/hygrometer#values) [hygrometer](https://wiki.openstreetmap.org/wiki/Key:hygrometer) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:hygrometer%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:hygrometer%3Dno) +[](https://taginfo.openstreetmap.org/keys/faces#values) [faces](https://wiki.openstreetmap.org/wiki/Key:faces) | [pnat](../SpecialInputElements.md#pnat) | [1](https://wiki.openstreetmap.org/wiki/Tag:faces%3D1) [2](https://wiki.openstreetmap.org/wiki/Tag:faces%3D2) [4](https://wiki.openstreetmap.org/wiki/Tag:faces%3D4) + + + + +### images + + + +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + +This tagrendering has no question and is thus read-only + + + + + +### support + + + +The question is *In what way is the clock mounted?* + + + + + + - *This clock is mounted on a pole* corresponds with `support=pole` + - *This clock is mounted on a wall* corresponds with `support=wall_mounted` + - *This clock is part of a billboard* corresponds with `support=billboard` + - *This clock is on the ground* corresponds with `support=ground` + + + + +### display + + + +The question is *How does this clock display the time?* + + + + + + - *This clock displays the time with hands* corresponds with `display=analog` + - *This clock displays the time with digits* corresponds with `display=digital` + - *This clock displays the time with a sundial* corresponds with `display=sundial` + - *This clock displays the time in a non-standard way, e.g using binary, water or something else* corresponds with `display=unorthodox` + + + + +### visibility + + + +The question is *How visible is this clock?* + + + + + + - *This clock is visible from about 5 meters away (small wall-mounted clock)* corresponds with `visibility=house` + - *This clock is visible from about 20 meters away (medium size billboard clock)* corresponds with `visibility=street` + - *This clock is visible from more than 20 meters away (church clock)* corresponds with `visibility=area` + + + + +### date + + + +The question is *Does this clock also display the date?* + + + + + + - *This clock also displays the date* corresponds with `date=yes` + - *This clock does not display the date* corresponds with `date=no` + - *This clock does probably not display the date* corresponds with `` + - This option cannot be chosen as answer + + + + +### thermometer + + + +The question is *Does this clock also display the temperature?* + + + + + + - *This clock also displays the temperature* corresponds with `thermometer=yes` + - *This clock does not display the temperature* corresponds with `thermometer=no` + - *This clock does probably not display the temperature* corresponds with `` + - This option cannot be chosen as answer + + + + +### barometer + + + +The question is *Does this clock also display the air pressure?* + + + + + + - *This clock also displays the air pressure* corresponds with `barometer=yes` + - *This clock does not display the air pressure* corresponds with `barometer=no` + - *This clock does probably not display the air pressure* corresponds with `` + - This option cannot be chosen as answer + + + + +### hygrometer + + + +The question is *Does this clock also display the humidity?* + + + + + + - *This clock also displays the humidity* corresponds with `hygrometer=yes` + - *This clock does not display the humidity* corresponds with `hygrometer=no` + - *This clock does probably not display the humidity* corresponds with `` + - This option cannot be chosen as answer + + + + +### faces + + + +The question is *How many faces does this clock have?* + +This rendering asks information about the property [faces](https://wiki.openstreetmap.org/wiki/Key:faces) + +This is rendered with `This clock has {faces} faces` + + + + + + - *This clock has one face* corresponds with `faces=1` + - *This clock has two faces* corresponds with `faces=2` + - *This clock has four faces* corresponds with `faces=4` + + +This document is autogenerated from [assets/layers/clock/clock.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/clock/clock.json) diff --git a/Docs/Layers/cluster_style.md b/Docs/Layers/cluster_style.md index 2c51605d2..19209617f 100644 --- a/Docs/Layers/cluster_style.md +++ b/Docs/Layers/cluster_style.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) cluster_style =============== @@ -53,4 +53,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/cluster_style/cluster_style.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/cluster_style/cluster_style.json) \ No newline at end of file +This document is autogenerated from [assets/layers/cluster_style/cluster_style.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/cluster_style/cluster_style.json) diff --git a/Docs/Layers/crab_address.md b/Docs/Layers/crab_address.md index aed1b4051..b4cd9800a 100644 --- a/Docs/Layers/crab_address.md +++ b/Docs/Layers/crab_address.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) crab_address ============== @@ -51,4 +51,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/crab_address/crab_address.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/crab_address/crab_address.json) \ No newline at end of file +This document is autogenerated from [assets/layers/crab_address/crab_address.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/crab_address/crab_address.json) diff --git a/Docs/Layers/crossings.md b/Docs/Layers/crossings.md index e3d613c79..400bef822 100644 --- a/Docs/Layers/crossings.md +++ b/Docs/Layers/crossings.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) crossings =========== @@ -331,4 +331,4 @@ tactile_paving_advanced.2 | Without tactile paving | tactile_paving=no tactile_paving_advanced.3 | No information about tactile paving | -This document is autogenerated from [assets/layers/crossings/crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/crossings/crossings.json) \ No newline at end of file +This document is autogenerated from [assets/layers/crossings/crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/crossings/crossings.json) diff --git a/Docs/Layers/cultural_places_without_etymology.md b/Docs/Layers/cultural_places_without_etymology.md index d43b7cf29..594b792c8 100644 --- a/Docs/Layers/cultural_places_without_etymology.md +++ b/Docs/Layers/cultural_places_without_etymology.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) cultural_places_without_etymology =================================== @@ -106,7 +106,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *What is this object named after?
This might be written on the street name sign* +The question is *What is this object named after?* This rendering asks information about the property [name:etymology](https://wiki.openstreetmap.org/wiki/Key:name:etymology) @@ -171,4 +171,4 @@ This tagrendering has no question and is thus read-only This tagrendering is only visible in the popup if the following condition is met: `wikidata~.+` -This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) \ No newline at end of file +This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) diff --git a/Docs/Layers/cycleways_and_roads.md b/Docs/Layers/cycleways_and_roads.md index 24e264ac5..5544f8018 100644 --- a/Docs/Layers/cycleways_and_roads.md +++ b/Docs/Layers/cycleways_and_roads.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) cycleways_and_roads ===================== @@ -287,7 +287,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *What is the carriage width of this road (in meters)?
This is measured curb to curb and thus includes the width of parallell parking lanes* +The question is *What is the carriage width of this road (in meters)?* This rendering asks information about the property [width:carriageway](https://wiki.openstreetmap.org/wiki/Key:width:carriageway) @@ -421,4 +421,4 @@ The question is *How is this cycleway separated from the road?* This tagrendering is only visible in the popup if the following condition is met: `highway=cycleway|highway=path` -This document is autogenerated from [assets/layers/cycleways_and_roads/cycleways_and_roads.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/cycleways_and_roads/cycleways_and_roads.json) \ No newline at end of file +This document is autogenerated from [assets/layers/cycleways_and_roads/cycleways_and_roads.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/cycleways_and_roads/cycleways_and_roads.json) diff --git a/Docs/Layers/defibrillator.md b/Docs/Layers/defibrillator.md index c071b9222..60e7a2e08 100644 --- a/Docs/Layers/defibrillator.md +++ b/Docs/Layers/defibrillator.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) defibrillator =============== @@ -364,4 +364,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/defibrillator/defibrillator.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/defibrillator/defibrillator.json) \ No newline at end of file +This document is autogenerated from [assets/layers/defibrillator/defibrillator.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/defibrillator/defibrillator.json) diff --git a/Docs/Layers/dentist.md b/Docs/Layers/dentist.md index 759bf3a61..8eb382ff2 100644 --- a/Docs/Layers/dentist.md +++ b/Docs/Layers/dentist.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) dentist ========= @@ -180,4 +180,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/dentist/dentist.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/dentist/dentist.json) \ No newline at end of file +This document is autogenerated from [assets/layers/dentist/dentist.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/dentist/dentist.json) diff --git a/Docs/Layers/doctors.md b/Docs/Layers/doctors.md index aba60e666..ec2e6148d 100644 --- a/Docs/Layers/doctors.md +++ b/Docs/Layers/doctors.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) doctors ========= @@ -211,4 +211,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/doctors/doctors.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/doctors/doctors.json) \ No newline at end of file +This document is autogenerated from [assets/layers/doctors/doctors.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/doctors/doctors.json) diff --git a/Docs/Layers/dogfoodb.md b/Docs/Layers/dogfoodb.md index c0a217ee2..d897c2894 100644 --- a/Docs/Layers/dogfoodb.md +++ b/Docs/Layers/dogfoodb.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) dogfoodb ========== @@ -503,7 +503,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *If you bring your own container (such as a cooking pot and small pots), is it used to package your order?
* +The question is *If you bring your own container (such as a cooking pot and small pots), is it used to package your order?* @@ -710,4 +710,4 @@ id | question | osmTags accepts_cards.0 | Accepts payment cards | payment:cards=yes -This document is autogenerated from [assets/themes/pets/pets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/pets/pets.json) \ No newline at end of file +This document is autogenerated from [assets/themes/pets/pets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/pets/pets.json) diff --git a/Docs/Layers/dogpark.md b/Docs/Layers/dogpark.md index 4846efdff..926785ecd 100644 --- a/Docs/Layers/dogpark.md +++ b/Docs/Layers/dogpark.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) dogpark ========= @@ -145,4 +145,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/dogpark/dogpark.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/dogpark/dogpark.json) \ No newline at end of file +This document is autogenerated from [assets/layers/dogpark/dogpark.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/dogpark/dogpark.json) diff --git a/Docs/Layers/dogshop.md b/Docs/Layers/dogshop.md index d8dac30ad..221ce62e6 100644 --- a/Docs/Layers/dogshop.md +++ b/Docs/Layers/dogshop.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) dogshop ========= @@ -418,7 +418,7 @@ The question is *What paper formats does this shop offer?* - Unselecting this answer will add service:print:A0=no -This tagrendering is only visible in the popup if the following condition is met: `shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes` +This tagrendering is only visible in the popup if the following condition is met: `shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes` @@ -593,4 +593,4 @@ id | question | osmTags has_organic.0 | Has organic options | organic=yes\|organic=only -This document is autogenerated from [assets/themes/pets/pets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/pets/pets.json) \ No newline at end of file +This document is autogenerated from [assets/themes/pets/pets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/pets/pets.json) diff --git a/Docs/Layers/drinking_water.md b/Docs/Layers/drinking_water.md index 938bfe059..f2e4121ac 100644 --- a/Docs/Layers/drinking_water.md +++ b/Docs/Layers/drinking_water.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) drinking_water ================ @@ -132,4 +132,4 @@ This tagrendering has no question and is thus read-only This tagrendering is only visible in the popup if the following condition is met: `_closest_other_drinking_water_id~.+` -This document is autogenerated from [assets/layers/drinking_water/drinking_water.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/drinking_water/drinking_water.json) \ No newline at end of file +This document is autogenerated from [assets/layers/drinking_water/drinking_water.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/drinking_water/drinking_water.json) diff --git a/Docs/Layers/dumpstations.md b/Docs/Layers/dumpstations.md index 3d8b8ce7b..119296efe 100644 --- a/Docs/Layers/dumpstations.md +++ b/Docs/Layers/dumpstations.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) dumpstations ============== @@ -250,4 +250,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/themes/campersite/campersite.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/campersite/campersite.json) \ No newline at end of file +This document is autogenerated from [assets/themes/campersite/campersite.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/campersite/campersite.json) diff --git a/Docs/Layers/education_institutions_without_etymology.md b/Docs/Layers/education_institutions_without_etymology.md index 8248675b0..a4c84324c 100644 --- a/Docs/Layers/education_institutions_without_etymology.md +++ b/Docs/Layers/education_institutions_without_etymology.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) education_institutions_without_etymology ========================================== @@ -106,7 +106,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *What is this object named after?
This might be written on the street name sign* +The question is *What is this object named after?* This rendering asks information about the property [name:etymology](https://wiki.openstreetmap.org/wiki/Key:name:etymology) @@ -171,4 +171,4 @@ This tagrendering has no question and is thus read-only This tagrendering is only visible in the popup if the following condition is met: `wikidata~.+` -This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) \ No newline at end of file +This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) diff --git a/Docs/Layers/elevator.md b/Docs/Layers/elevator.md index 7728f6d60..0d90eac28 100644 --- a/Docs/Layers/elevator.md +++ b/Docs/Layers/elevator.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) elevator ========== @@ -196,4 +196,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/elevator/elevator.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/elevator/elevator.json) \ No newline at end of file +This document is autogenerated from [assets/layers/elevator/elevator.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/elevator/elevator.json) diff --git a/Docs/Layers/entrance.md b/Docs/Layers/entrance.md index c45a7b142..3e2d67c48 100644 --- a/Docs/Layers/entrance.md +++ b/Docs/Layers/entrance.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) entrance ========== @@ -140,7 +140,7 @@ The question is *What type of entrance is this?* -The question is *What is the type of this door?
Wether or not the door is automated is asked in the next question* +The question is *What is the type of this door?* @@ -212,4 +212,4 @@ This is rendered with `The kerb height of this door is {kerb:height}` - *This door does not have a kerb* corresponds with `kerb:height=0` -This document is autogenerated from [assets/layers/entrance/entrance.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/entrance/entrance.json) \ No newline at end of file +This document is autogenerated from [assets/layers/entrance/entrance.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/entrance/entrance.json) diff --git a/Docs/Layers/etymology.md b/Docs/Layers/etymology.md index 034b6eba3..b1c6c3078 100644 --- a/Docs/Layers/etymology.md +++ b/Docs/Layers/etymology.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) etymology =========== @@ -106,7 +106,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *What is this object named after?
This might be written on the street name sign* +The question is *What is this object named after?* This rendering asks information about the property [name:etymology](https://wiki.openstreetmap.org/wiki/Key:name:etymology) @@ -171,4 +171,4 @@ This tagrendering has no question and is thus read-only This tagrendering is only visible in the popup if the following condition is met: `wikidata~.+` -This document is autogenerated from [assets/layers/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/etymology/etymology.json) \ No newline at end of file +This document is autogenerated from [assets/layers/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/etymology/etymology.json) diff --git a/Docs/Layers/extinguisher.md b/Docs/Layers/extinguisher.md index f6499abd2..1b77936a7 100644 --- a/Docs/Layers/extinguisher.md +++ b/Docs/Layers/extinguisher.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) extinguisher ============== @@ -95,4 +95,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/extinguisher/extinguisher.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/extinguisher/extinguisher.json) \ No newline at end of file +This document is autogenerated from [assets/layers/extinguisher/extinguisher.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/extinguisher/extinguisher.json) diff --git a/Docs/Layers/facadegardens.md b/Docs/Layers/facadegardens.md index c400af17b..574d446b0 100644 --- a/Docs/Layers/facadegardens.md +++ b/Docs/Layers/facadegardens.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) facadegardens =============== @@ -214,4 +214,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/themes/facadegardens/facadegardens.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/facadegardens/facadegardens.json) \ No newline at end of file +This document is autogenerated from [assets/themes/facadegardens/facadegardens.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/facadegardens/facadegardens.json) diff --git a/Docs/Layers/fietsstraat.md b/Docs/Layers/fietsstraat.md index ce78df392..b540f4b06 100644 --- a/Docs/Layers/fietsstraat.md +++ b/Docs/Layers/fietsstraat.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) fietsstraat ============= @@ -158,4 +158,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/themes/cyclestreets/cyclestreets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclestreets/cyclestreets.json) \ No newline at end of file +This document is autogenerated from [assets/themes/cyclestreets/cyclestreets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclestreets/cyclestreets.json) diff --git a/Docs/Layers/filters.md b/Docs/Layers/filters.md index f5c13c7d8..5fc43fe3c 100644 --- a/Docs/Layers/filters.md +++ b/Docs/Layers/filters.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) filters ========= @@ -103,4 +103,4 @@ id | question | osmTags has_organic.0 | Has organic options | organic=yes\|organic=only -This document is autogenerated from [assets/layers/filters/filters.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/filters/filters.json) \ No newline at end of file +This document is autogenerated from [assets/layers/filters/filters.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/filters/filters.json) diff --git a/Docs/Layers/fire_station.md b/Docs/Layers/fire_station.md index ebe203082..e17573f0e 100644 --- a/Docs/Layers/fire_station.md +++ b/Docs/Layers/fire_station.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) fire_station ============== @@ -162,4 +162,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/fire_station/fire_station.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/fire_station/fire_station.json) \ No newline at end of file +This document is autogenerated from [assets/layers/fire_station/fire_station.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/fire_station/fire_station.json) diff --git a/Docs/Layers/fitness_centre.md b/Docs/Layers/fitness_centre.md index a52029ecb..efa8df020 100644 --- a/Docs/Layers/fitness_centre.md +++ b/Docs/Layers/fitness_centre.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) fitness_centre ================ @@ -242,4 +242,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/fitness_centre/fitness_centre.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/fitness_centre/fitness_centre.json) \ No newline at end of file +This document is autogenerated from [assets/layers/fitness_centre/fitness_centre.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/fitness_centre/fitness_centre.json) diff --git a/Docs/Layers/fitness_station.md b/Docs/Layers/fitness_station.md index 3a81f7d62..9be0aaf08 100644 --- a/Docs/Layers/fitness_station.md +++ b/Docs/Layers/fitness_station.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) fitness_station ================= @@ -68,6 +68,18 @@ attribute | type | values which are supported by this layer +### images + + + +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + +This tagrendering has no question and is thus read-only + + + + + ### name @@ -165,4 +177,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/fitness_station/fitness_station.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/fitness_station/fitness_station.json) \ No newline at end of file +This document is autogenerated from [assets/layers/fitness_station/fitness_station.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/fitness_station/fitness_station.json) diff --git a/Docs/Layers/food.md b/Docs/Layers/food.md index 41de0be01..3e3726ada 100644 --- a/Docs/Layers/food.md +++ b/Docs/Layers/food.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) food ====== @@ -506,7 +506,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *If you bring your own container (such as a cooking pot and small pots), is it used to package your order?
* +The question is *If you bring your own container (such as a cooking pot and small pots), is it used to package your order?* @@ -689,4 +689,4 @@ id | question | osmTags accepts_cards.0 | Accepts payment cards | payment:cards=yes -This document is autogenerated from [assets/layers/food/food.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/food/food.json) \ No newline at end of file +This document is autogenerated from [assets/layers/food/food.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/food/food.json) diff --git a/Docs/Layers/friture.md b/Docs/Layers/friture.md index d584925b4..8b463a582 100644 --- a/Docs/Layers/friture.md +++ b/Docs/Layers/friture.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) friture ========= @@ -503,7 +503,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *If you bring your own container (such as a cooking pot and small pots), is it used to package your order?
* +The question is *If you bring your own container (such as a cooking pot and small pots), is it used to package your order?* @@ -710,4 +710,4 @@ id | question | osmTags accepts_cards.0 | Accepts payment cards | payment:cards=yes -This document is autogenerated from [assets/themes/fritures/fritures.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/fritures/fritures.json) \ No newline at end of file +This document is autogenerated from [assets/themes/fritures/fritures.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/fritures/fritures.json) diff --git a/Docs/Layers/ghost_bike.md b/Docs/Layers/ghost_bike.md index f34e9060a..db5d1794c 100644 --- a/Docs/Layers/ghost_bike.md +++ b/Docs/Layers/ghost_bike.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) ghost_bike ============ @@ -94,7 +94,7 @@ This tagrendering has no question and is thus read-only -The question is *Whom is remembered by this ghost bike?
Please respect privacy - only fill out the name if it is widely published or marked on the cycle. Opt to leave out the family name.
* +The question is *Whom is remembered by this ghost bike?* This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name) @@ -149,4 +149,4 @@ This is rendered with `Placed on {start_date}` -This document is autogenerated from [assets/layers/ghost_bike/ghost_bike.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/ghost_bike/ghost_bike.json) \ No newline at end of file +This document is autogenerated from [assets/layers/ghost_bike/ghost_bike.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/ghost_bike/ghost_bike.json) diff --git a/Docs/Layers/governments.md b/Docs/Layers/governments.md index b293e0aa9..75bc5fd09 100644 --- a/Docs/Layers/governments.md +++ b/Docs/Layers/governments.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) governments ============= @@ -152,4 +152,4 @@ This is rendered with `This Governmental Office is called {name}` -This document is autogenerated from [assets/layers/governments/governments.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/governments/governments.json) \ No newline at end of file +This document is autogenerated from [assets/layers/governments/governments.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/governments/governments.json) diff --git a/Docs/Layers/grass_in_parks.md b/Docs/Layers/grass_in_parks.md index b03cd5419..d28cf4019 100644 --- a/Docs/Layers/grass_in_parks.md +++ b/Docs/Layers/grass_in_parks.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) grass_in_parks ================ @@ -72,4 +72,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/grass_in_parks/grass_in_parks.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/grass_in_parks/grass_in_parks.json) \ No newline at end of file +This document is autogenerated from [assets/layers/grass_in_parks/grass_in_parks.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/grass_in_parks/grass_in_parks.json) diff --git a/Docs/Layers/hackerspace.md b/Docs/Layers/hackerspace.md index 97c8a3bc1..1e84616fc 100644 --- a/Docs/Layers/hackerspace.md +++ b/Docs/Layers/hackerspace.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) hackerspace ============= @@ -303,4 +303,4 @@ This is rendered with `This hackerspace was founded at {start_date}` -This document is autogenerated from [assets/layers/hackerspace/hackerspace.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/hackerspace/hackerspace.json) \ No newline at end of file +This document is autogenerated from [assets/layers/hackerspace/hackerspace.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/hackerspace/hackerspace.json) diff --git a/Docs/Layers/health_and_social_places_without_etymology.md b/Docs/Layers/health_and_social_places_without_etymology.md index aaafacdca..fad8bc4ea 100644 --- a/Docs/Layers/health_and_social_places_without_etymology.md +++ b/Docs/Layers/health_and_social_places_without_etymology.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) health_and_social_places_without_etymology ============================================ @@ -106,7 +106,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *What is this object named after?
This might be written on the street name sign* +The question is *What is this object named after?* This rendering asks information about the property [name:etymology](https://wiki.openstreetmap.org/wiki/Key:name:etymology) @@ -171,4 +171,4 @@ This tagrendering has no question and is thus read-only This tagrendering is only visible in the popup if the following condition is met: `wikidata~.+` -This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) \ No newline at end of file +This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) diff --git a/Docs/Layers/hospital.md b/Docs/Layers/hospital.md index 5f44f0430..a8c8829d0 100644 --- a/Docs/Layers/hospital.md +++ b/Docs/Layers/hospital.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) hospital ========== @@ -41,10 +41,10 @@ Elements must have the all of following tags to be shown on this layer: - - amenity=hospital + - amenity=hospital|amenity=clinic -[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22amenity%22%3D%22hospital%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22amenity%22%3D%22hospital%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22clinic%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) @@ -62,6 +62,7 @@ this quick overview is incomplete attribute | type | values which are supported by this layer ----------- | ------ | ------------------------------------------ [](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | +[](https://taginfo.openstreetmap.org/keys/amenity#values) [amenity](https://wiki.openstreetmap.org/wiki/Key:amenity) | Multiple choice | [clinic](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dclinic) [hospital](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dhospital) [](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | [](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | [](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | @@ -83,6 +84,22 @@ This is rendered with `This hospital is called {name}` +### inpatient + + + +The question is *Does this facility admit inpatients?* + + + + + + - *This is a clinic - patients can not stay overnight* corresponds with `amenity=clinic` + - *This is a hospital - patients can be admitted here for multiple days* corresponds with `amenity=hospital` + + + + ### phone @@ -141,4 +158,4 @@ This is rendered with `{internet_access:ssid}
` This tagrendering is only visible in the popup if the following condition is met: `internet_access=wlan` -This document is autogenerated from [assets/layers/hotel/hotel.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/hotel/hotel.json) \ No newline at end of file +This document is autogenerated from [assets/layers/hotel/hotel.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/hotel/hotel.json) diff --git a/Docs/Layers/hydrant.md b/Docs/Layers/hydrant.md index 8d3432e7e..2429fda6c 100644 --- a/Docs/Layers/hydrant.md +++ b/Docs/Layers/hydrant.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) hydrant ========= @@ -64,6 +64,7 @@ attribute | type | values which are supported by this layer [](https://taginfo.openstreetmap.org/keys/fire_hydrant:type#values) [fire_hydrant:type](https://wiki.openstreetmap.org/wiki/Key:fire_hydrant:type) | [string](../SpecialInputElements.md#string) | [pillar](https://wiki.openstreetmap.org/wiki/Tag:fire_hydrant:type%3Dpillar) [pipe](https://wiki.openstreetmap.org/wiki/Tag:fire_hydrant:type%3Dpipe) [wall](https://wiki.openstreetmap.org/wiki/Tag:fire_hydrant:type%3Dwall) [underground](https://wiki.openstreetmap.org/wiki/Tag:fire_hydrant:type%3Dunderground) [](https://taginfo.openstreetmap.org/keys/emergency#values) [emergency](https://wiki.openstreetmap.org/wiki/Key:emergency) | Multiple choice | [fire_hydrant](https://wiki.openstreetmap.org/wiki/Tag:emergency%3Dfire_hydrant) [](https://wiki.openstreetmap.org/wiki/Tag:emergency%3D) [](https://wiki.openstreetmap.org/wiki/Tag:emergency%3D) [](https://taginfo.openstreetmap.org/keys/fire_hydrant:diameter#values) [fire_hydrant:diameter](https://wiki.openstreetmap.org/wiki/Key:fire_hydrant:diameter) | [int](../SpecialInputElements.md#int) | +[](https://taginfo.openstreetmap.org/keys/couplings#values) [couplings](https://wiki.openstreetmap.org/wiki/Key:couplings) | [int](../SpecialInputElements.md#int) | [](https://taginfo.openstreetmap.org/keys/couplings:type#values) [couplings:type](https://wiki.openstreetmap.org/wiki/Key:couplings:type) | [string](../SpecialInputElements.md#string) | [Storz](https://wiki.openstreetmap.org/wiki/Tag:couplings:type%3DStorz) [UNI](https://wiki.openstreetmap.org/wiki/Tag:couplings:type%3DUNI) [Barcelona](https://wiki.openstreetmap.org/wiki/Tag:couplings:type%3DBarcelona) [](https://taginfo.openstreetmap.org/keys/couplings:diameters#values) [couplings:diameters](https://wiki.openstreetmap.org/wiki/Key:couplings:diameters) | [string](../SpecialInputElements.md#string) | @@ -84,8 +85,6 @@ This is rendered with `The hydrant color is {colour}` - - *The hydrant color is unknown.* corresponds with `` - - This option cannot be chosen as answer - *The hydrant color is yellow.* corresponds with `colour=yellow` - *The hydrant color is red.* corresponds with `colour=red` @@ -106,8 +105,6 @@ This is rendered with ` Hydrant type: {fire_hydrant:type}` - - *The hydrant type is unknown.* corresponds with `` - - This option cannot be chosen as answer - *Pillar type.* corresponds with `fire_hydrant:type=pillar` - *Pipe type.* corresponds with `fire_hydrant:type=pipe` - *Wall type.* corresponds with `fire_hydrant:type=wall` @@ -147,6 +144,20 @@ This is rendered with `Pipe diameter: {canonical(fire_hydrant:diameter)}` +### hydrant-number-of-couplings + + + +The question is *How many couplings does this fire hydrant have?* + +This rendering asks information about the property [couplings](https://wiki.openstreetmap.org/wiki/Key:couplings) + +This is rendered with `Number of couplings: {couplings}` + + + + + ### hydrant-couplings @@ -192,4 +203,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/hydrant/hydrant.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/hydrant/hydrant.json) \ No newline at end of file +This document is autogenerated from [assets/layers/hydrant/hydrant.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/hydrant/hydrant.json) diff --git a/Docs/Layers/icons.md b/Docs/Layers/icons.md new file mode 100644 index 000000000..1a2685f4e --- /dev/null +++ b/Docs/Layers/icons.md @@ -0,0 +1,176 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) + + icons +======= + + + + + +A layer acting as library for icon-tagrenderings, especially to show as badge next to a POI + + + + + + + - This layer is shown at zoomlevel **0** and higher + - Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable. + - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` + - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` + + + + + Basic tags for this layer +--------------------------- + + + +Elements must have the all of following tags to be shown on this layer: + + + + - id~.+ + + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22id%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + + + + Supported attributes +---------------------- + + + +Warning: + +this quick overview is incomplete + + + +attribute | type | values which are supported by this layer +----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/wikipedia#values) [wikipedia](https://wiki.openstreetmap.org/wiki/Key:wikipedia) | Multiple choice | [](https://wiki.openstreetmap.org/wiki/Tag:wikipedia%3D) +[](https://taginfo.openstreetmap.org/keys/_isOpen#values) [_isOpen](https://wiki.openstreetmap.org/wiki/Key:_isOpen) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:_isOpen%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:_isOpen%3Dno) [](https://wiki.openstreetmap.org/wiki/Tag:_isOpen%3D) [parse_error](https://wiki.openstreetmap.org/wiki/Tag:_isOpen%3Dparse_error) +[](https://taginfo.openstreetmap.org/keys/smoking#values) [smoking](https://wiki.openstreetmap.org/wiki/Key:smoking) | Multiple choice | [no](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Dno) [yes](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Dyes) + + + + +### wikipedialink + + + +This tagrendering has no question and is thus read-only + + + + + + - *WD* corresponds with `` + + +This tagrendering is only visible in the popup if the following condition is met: `wikipedia~.+|wikidata~.+` + +This tagrendering has labels `defaults` + + + +### isOpen + + + +This tagrendering has no question and is thus read-only + + + + + + - *clock:#0f0;ring:#0f0* corresponds with `_isOpen=yes` + - *circle:#f00;clock:#fff* corresponds with `_isOpen=no` + - *clock:#ff0;ring:#ff0* corresponds with `opening_hours~.+` + - *circle:#f0f;clock:#fff* corresponds with `_isOpen=parse_error&opening_hours~.+` + + +This tagrendering has labels `defaults` + + + +### phonelink + + + +This tagrendering has no question and is thus read-only + + + +This tagrendering is only visible in the popup if the following condition is met: `phone~.+` + +This tagrendering has labels `defaults` + + + +### emaillink + + + +This tagrendering has no question and is thus read-only + + + +This tagrendering is only visible in the popup if the following condition is met: `email~.+` + +This tagrendering has labels `defaults` + + + +### smokingicon + + + +This tagrendering has no question and is thus read-only + + + + + + - *no-smoking* corresponds with `smoking=no` + - *smoking-allowed* corresponds with `smoking=yes` + + +This tagrendering has labels `defaults` + + + +### sharelink + + + +This tagrendering has no question and is thus read-only + + + +This tagrendering has labels `defaults` + + + +### osmlink + + + +This tagrendering has no question and is thus read-only + + + + + + - ** corresponds with `id~^(.*\/-.*)$` + - ** corresponds with `_backend~.+` + + +This tagrendering is only visible in the popup if the following condition is met: `id~^((node|way|relation)\/[0-9]*)$` + +This tagrendering has labels `defaults` + +This document is autogenerated from [assets/layers/icons/icons.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/icons/icons.json) diff --git a/Docs/Layers/id_presets.md b/Docs/Layers/id_presets.md index 749b84d51..143e81951 100644 --- a/Docs/Layers/id_presets.md +++ b/Docs/Layers/id_presets.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) id_presets ============ @@ -395,4 +395,4 @@ This tagrendering has no question and is thus read-only - *circle:white;./assets/layers/id_presets/maki-alcohol-shop.svg* corresponds with `shop=wine` -This document is autogenerated from [assets/layers/id_presets/id_presets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/id_presets/id_presets.json) \ No newline at end of file +This document is autogenerated from [assets/layers/id_presets/id_presets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/id_presets/id_presets.json) diff --git a/Docs/Layers/indoors.md b/Docs/Layers/indoors.md index af4bb1ccb..8d245d954 100644 --- a/Docs/Layers/indoors.md +++ b/Docs/Layers/indoors.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) indoors ========= @@ -110,4 +110,4 @@ This is rendered with `This room is named {name}` This tagrendering is only visible in the popup if the following condition is met: `indoor=room|indoor=area|indoor=corridor` -This document is autogenerated from [assets/layers/indoors/indoors.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/indoors/indoors.json) \ No newline at end of file +This document is autogenerated from [assets/layers/indoors/indoors.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/indoors/indoors.json) diff --git a/Docs/Layers/information_board.md b/Docs/Layers/information_board.md index 4f1c10672..181405c9f 100644 --- a/Docs/Layers/information_board.md +++ b/Docs/Layers/information_board.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) information_board =================== @@ -64,4 +64,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/information_board/information_board.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/information_board/information_board.json) \ No newline at end of file +This document is autogenerated from [assets/layers/information_board/information_board.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/information_board/information_board.json) diff --git a/Docs/Layers/kerbs.md b/Docs/Layers/kerbs.md index 3000ddd82..545141344 100644 --- a/Docs/Layers/kerbs.md +++ b/Docs/Layers/kerbs.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) kerbs ======= @@ -172,4 +172,4 @@ tactile_paving_advanced.2 | Without tactile paving | tactile_paving=no tactile_paving_advanced.3 | No information about tactile paving | -This document is autogenerated from [assets/layers/kerbs/kerbs.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/kerbs/kerbs.json) \ No newline at end of file +This document is autogenerated from [assets/layers/kerbs/kerbs.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/kerbs/kerbs.json) diff --git a/Docs/Layers/kindergarten_childcare.md b/Docs/Layers/kindergarten_childcare.md index 09f45da82..4a98883bc 100644 --- a/Docs/Layers/kindergarten_childcare.md +++ b/Docs/Layers/kindergarten_childcare.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) kindergarten_childcare ======================== @@ -189,4 +189,4 @@ This is rendered with `This facility has room for {capacity} kids` -This document is autogenerated from [assets/layers/kindergarten_childcare/kindergarten_childcare.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/kindergarten_childcare/kindergarten_childcare.json) \ No newline at end of file +This document is autogenerated from [assets/layers/kindergarten_childcare/kindergarten_childcare.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/kindergarten_childcare/kindergarten_childcare.json) diff --git a/Docs/Layers/lit_streets.md b/Docs/Layers/lit_streets.md index 1e510f092..f7884cfd9 100644 --- a/Docs/Layers/lit_streets.md +++ b/Docs/Layers/lit_streets.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) lit_streets ============= @@ -119,4 +119,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/themes/street_lighting/street_lighting.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/street_lighting/street_lighting.json) \ No newline at end of file +This document is autogenerated from [assets/themes/street_lighting/street_lighting.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/street_lighting/street_lighting.json) diff --git a/Docs/Layers/map.md b/Docs/Layers/map.md index da09dd385..be448aa84 100644 --- a/Docs/Layers/map.md +++ b/Docs/Layers/map.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) map ===== @@ -118,4 +118,4 @@ The question is *Is the OpenStreetMap-attribution given?* This tagrendering is only visible in the popup if the following condition is met: `map_source~^((O|)pen(S|s)treet(M|m)ap)$|map_source=osm|map_source=OSM` -This document is autogenerated from [assets/layers/map/map.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/map/map.json) \ No newline at end of file +This document is autogenerated from [assets/layers/map/map.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/map/map.json) diff --git a/Docs/Layers/maproulette.md b/Docs/Layers/maproulette.md index 2ba0407d4..1e41542b5 100644 --- a/Docs/Layers/maproulette.md +++ b/Docs/Layers/maproulette.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) maproulette ============= @@ -76,7 +76,7 @@ This tagrendering has no question and is thus read-only -### blurb +### mark_fixed @@ -84,7 +84,25 @@ This tagrendering has no question and is thus read-only -This tagrendering is only visible in the popup if the following condition is met: `blurb~.+` + + +### mark_duplicate + + + +This tagrendering has no question and is thus read-only + + + + + +### mark_too_hard + + + +This tagrendering has no question and is thus read-only + + @@ -121,4 +139,4 @@ id | question | osmTags | fields parent-id.0 | Challenge ID matches {search} | | search (string) -This document is autogenerated from [assets/layers/maproulette/maproulette.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/maproulette/maproulette.json) \ No newline at end of file +This document is autogenerated from [assets/layers/maproulette/maproulette.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/maproulette/maproulette.json) diff --git a/Docs/Layers/maproulette_challenge.md b/Docs/Layers/maproulette_challenge.md index 82d443cdd..0d8929b22 100644 --- a/Docs/Layers/maproulette_challenge.md +++ b/Docs/Layers/maproulette_challenge.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) maproulette_challenge ======================= @@ -7,7 +7,7 @@ -Layer showing tasks of a MapRoulette challenge +Layer showing tasks of a single MapRoulette challenge. This layer is intended to be reused and extended in themes; refer to the documentation on how to do this. @@ -99,18 +99,6 @@ This tagrendering has no question and is thus read-only -### blurb - - - -This tagrendering has no question and is thus read-only - - - -This tagrendering is only visible in the popup if the following condition is met: `blurb~.+` - - - #### Filters @@ -130,4 +118,4 @@ status.7 | Show tasks that are marked as too hard | mr_taskStatus=Too hard status.8 | Show tasks that are disabled | mr_taskStatus=Disabled -This document is autogenerated from [assets/layers/maproulette_challenge/maproulette_challenge.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/maproulette_challenge/maproulette_challenge.json) \ No newline at end of file +This document is autogenerated from [assets/layers/maproulette_challenge/maproulette_challenge.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/maproulette_challenge/maproulette_challenge.json) diff --git a/Docs/Layers/maxspeed.md b/Docs/Layers/maxspeed.md index 795cc4c8a..8ec1b834c 100644 --- a/Docs/Layers/maxspeed.md +++ b/Docs/Layers/maxspeed.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) maxspeed ========== @@ -87,4 +87,4 @@ This is rendered with `The maximum allowed speed on this road is {canonical(max - *This is a living street, which has a maxspeed of 20km/h* corresponds with `highway=living_street` -This document is autogenerated from [assets/layers/maxspeed/maxspeed.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/maxspeed/maxspeed.json) \ No newline at end of file +This document is autogenerated from [assets/layers/maxspeed/maxspeed.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/maxspeed/maxspeed.json) diff --git a/Docs/Layers/medical-shops.md b/Docs/Layers/medical-shops.md new file mode 100644 index 000000000..60ac0f13e --- /dev/null +++ b/Docs/Layers/medical-shops.md @@ -0,0 +1,575 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) + + medical-shops +=============== + + + + + +A shop + + + + + + + - This layer is shown at zoomlevel **13** and higher + + + + +#### Themes using this layer + + + + + + - [healthcare](https://mapcomplete.osm.be/healthcare) + + + + + Basic tags for this layer +--------------------------- + + + +Elements must have the all of following tags to be shown on this layer: + + + + - shop~.+ + - shop=medical_supply|shop=hearing_aids|shop=optician + + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22shop%22%3D%22medical_supply%22%5D%5B%22shop%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22shop%22%3D%22hearing_aids%22%5D%5B%22shop%22%5D(%7B%7Bbbox%7D%7D)%3B%0A%20%20%20%20nwr%5B%22shop%22%3D%22optician%22%5D%5B%22shop%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + + + + Supported attributes +---------------------- + + + +Warning: + +this quick overview is incomplete + + + +attribute | type | values which are supported by this layer +----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/name#values) [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | +[](https://taginfo.openstreetmap.org/keys/shop#values) [shop](https://wiki.openstreetmap.org/wiki/Key:shop) | [string](../SpecialInputElements.md#string) | [agrarian](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dagrarian) [alcohol](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dalcohol) [anime](https://wiki.openstreetmap.org/wiki/Tag:shop%3Danime) [antiques](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dantiques) [appliance](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dappliance) [art](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dart) [baby_goods](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbaby_goods) [bag](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbag) [bakery](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbakery) [bathroom_furnishing](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbathroom_furnishing) [beauty](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbeauty) [bed](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbed) [beverages](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbeverages) [bicycle](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle) [boat](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dboat) [bookmaker](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbookmaker) [books](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbooks) [brewing_supplies](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbrewing_supplies) [butcher](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbutcher) [camera](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcamera) [candles](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcandles) [cannabis](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcannabis) [car](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcar) [car_parts](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcar_parts) [car_repair](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcar_repair) [caravan](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcaravan) [carpet](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcarpet) [catalogue](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcatalogue) [charity](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcharity) [cheese](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcheese) [chemist](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dchemist) [chocolate](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dchocolate) [clothes](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dclothes) [coffee](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcoffee) [collector](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcollector) [computer](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcomputer) [confectionery](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dconfectionery) [convenience](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dconvenience) [copyshop](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcopyshop) [cosmetics](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcosmetics) [country_store](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcountry_store) [craft](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcraft) [curtain](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dcurtain) [dairy](https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddairy) [deli](https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddeli) [department_store](https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddepartment_store) [doityourself](https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddoityourself) [doors](https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddoors) [dry_cleaning](https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddry_cleaning) [e-cigarette](https://wiki.openstreetmap.org/wiki/Tag:shop%3De-cigarette) [electrical](https://wiki.openstreetmap.org/wiki/Tag:shop%3Delectrical) [electronics](https://wiki.openstreetmap.org/wiki/Tag:shop%3Delectronics) [erotic](https://wiki.openstreetmap.org/wiki/Tag:shop%3Derotic) [fabric](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dfabric) [farm](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dfarm) [fashion_accessories](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dfashion_accessories) [fireplace](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dfireplace) [fishing](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dfishing) [flooring](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dflooring) [florist](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dflorist) [frame](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dframe) [frozen_food](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dfrozen_food) [fuel](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dfuel) [funeral_directors](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dfuneral_directors) [furniture](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dfurniture) [games](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dgames) [garden_centre](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dgarden_centre) [gas](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dgas) [general](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dgeneral) [gift](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dgift) [greengrocer](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dgreengrocer) [hairdresser](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dhairdresser) [hairdresser_supply](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dhairdresser_supply) [hardware](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dhardware) [health_food](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dhealth_food) [hearing_aids](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dhearing_aids) [herbalist](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dherbalist) [hifi](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dhifi) [hobby](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dhobby) [household_linen](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dhousehold_linen) [houseware](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dhouseware) [hunting](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dhunting) [interior_decoration](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dinterior_decoration) [jewelry](https://wiki.openstreetmap.org/wiki/Tag:shop%3Djewelry) [kiosk](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dkiosk) [kitchen](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dkitchen) [laundry](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dlaundry) [leather](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dleather) [lighting](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dlighting) [locksmith](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dlocksmith) [lottery](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dlottery) [mall](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dmall) [massage](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dmassage) [medical_supply](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dmedical_supply) [military_surplus](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dmilitary_surplus) [mobile_phone](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dmobile_phone) [model](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dmodel) [money_lender](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dmoney_lender) [motorcycle](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dmotorcycle) [motorcycle_repair](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dmotorcycle_repair) [music](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dmusic) [musical_instrument](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dmusical_instrument) [newsagent](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dnewsagent) [nutrition_supplements](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dnutrition_supplements) [optician](https://wiki.openstreetmap.org/wiki/Tag:shop%3Doptician) [outdoor](https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor) [outpost](https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutpost) [paint](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dpaint) [party](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dparty) [pastry](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dpastry) [pawnbroker](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dpawnbroker) [perfumery](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dperfumery) [pet](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dpet) [pet_grooming](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dpet_grooming) [photo](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dphoto) [pottery](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dpottery) [printer_ink](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dprinter_ink) [psychic](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dpsychic) [pyrotechnics](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dpyrotechnics) [radiotechnics](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dradiotechnics) [religion](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dreligion) [rental](https://wiki.openstreetmap.org/wiki/Tag:shop%3Drental) [repair](https://wiki.openstreetmap.org/wiki/Tag:shop%3Drepair) [scuba_diving](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dscuba_diving) [seafood](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dseafood) [second_hand](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsecond_hand) [sewing](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsewing) [shoe_repair](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dshoe_repair) [shoes](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dshoes) [spices](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dspices) [sports](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsports) [stationery](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dstationery) [storage_rental](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dstorage_rental) [supermarket](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsupermarket) [swimming_pool](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dswimming_pool) [tailor](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtailor) [tattoo](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtattoo) [tea](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtea) [telecommunication](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtelecommunication) [ticket](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dticket) [tiles](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtiles) [tobacco](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtobacco) [tool_hire](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtool_hire) [toys](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtoys) [trade](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtrade) [travel_agency](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtravel_agency) [trophy](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtrophy) [tyres](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dtyres) [vacuum_cleaner](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dvacuum_cleaner) [variety_store](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dvariety_store) [video](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dvideo) [video_games](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dvideo_games) [watches](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dwatches) [water](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dwater) [water_sports](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dwater_sports) [weapons](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dweapons) [wholesale](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dwholesale) [wigs](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dwigs) [window_blind](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dwindow_blind) [wine](https://wiki.openstreetmap.org/wiki/Tag:shop%3Dwine) +[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | +[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | +[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | +[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) +[](https://taginfo.openstreetmap.org/keys/internet_access#values) [internet_access](https://wiki.openstreetmap.org/wiki/Key:internet_access) | Multiple choice | [wlan](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dwlan) [no](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dno) [terminal](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dterminal) [wired](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dwired) +[](https://taginfo.openstreetmap.org/keys/internet_access:fee#values) [internet_access:fee](https://wiki.openstreetmap.org/wiki/Key:internet_access:fee) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dno) [customers](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dcustomers) +[](https://taginfo.openstreetmap.org/keys/internet_access:ssid#values) [internet_access:ssid](https://wiki.openstreetmap.org/wiki/Key:internet_access:ssid) | [string](../SpecialInputElements.md#string) | [Telekom](https://wiki.openstreetmap.org/wiki/Tag:internet_access:ssid%3DTelekom) +[](https://taginfo.openstreetmap.org/keys/organic#values) [organic](https://wiki.openstreetmap.org/wiki/Key:organic) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:organic%3Dyes) [only](https://wiki.openstreetmap.org/wiki/Tag:organic%3Donly) [no](https://wiki.openstreetmap.org/wiki/Tag:organic%3Dno) + + + + +### images + + + +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + +This tagrendering has no question and is thus read-only + + + + + +### shops-name + + + +The question is *What is the name of this shop?* + +This rendering asks information about the property [name](https://wiki.openstreetmap.org/wiki/Key:name) + +This is rendered with `This shop is called {name}` + + + + + +### shop_types + + + +The question is *What kind of shop is this?* + +This rendering asks information about the property [shop](https://wiki.openstreetmap.org/wiki/Key:shop) + +This is rendered with `This is a {shop}` + + + + + + - *Farm Supply Shop* corresponds with `shop=agrarian` + - *Liquor Store* corresponds with `shop=alcohol` + - *Anime / Manga Shop* corresponds with `shop=anime` + - *Antiques Shop* corresponds with `shop=antiques` + - *Appliance Store* corresponds with `shop=appliance` + - *Art Store* corresponds with `shop=art` + - *Baby Goods Store* corresponds with `shop=baby_goods` + - *Bag/Luggage Store* corresponds with `shop=bag` + - *Bakery* corresponds with `shop=bakery` + - *Bathroom Furnishing Store* corresponds with `shop=bathroom_furnishing` + - *Beauty Shop* corresponds with `shop=beauty` + - *Bedding/Mattress Store* corresponds with `shop=bed` + - *Beverage Store* corresponds with `shop=beverages` + - *Bicycle Shop* corresponds with `shop=bicycle` + - *Boat Store* corresponds with `shop=boat` + - *Bookmaker* corresponds with `shop=bookmaker` + - *Book Store* corresponds with `shop=books` + - *Brewing Supply Store* corresponds with `shop=brewing_supplies` + - *Butcher* corresponds with `shop=butcher` + - *Camera Equipment Store* corresponds with `shop=camera` + - *Candle Shop* corresponds with `shop=candles` + - *Cannabis Shop* corresponds with `shop=cannabis` + - *Car Dealership* corresponds with `shop=car` + - *Car Parts Store* corresponds with `shop=car_parts` + - *Car Repair Shop* corresponds with `shop=car_repair` + - *RV Dealership* corresponds with `shop=caravan` + - *Carpet Store* corresponds with `shop=carpet` + - *Catalog Shop* corresponds with `shop=catalogue` + - *Charity Store* corresponds with `shop=charity` + - *Cheese Store* corresponds with `shop=cheese` + - *Drugstore* corresponds with `shop=chemist` + - *Chocolate Store* corresponds with `shop=chocolate` + - *Clothing Store* corresponds with `shop=clothes` + - *Coffee Store* corresponds with `shop=coffee` + - *Collectibles Shop* corresponds with `shop=collector` + - *Computer Store* corresponds with `shop=computer` + - *Candy Store* corresponds with `shop=confectionery` + - *Convenience Store* corresponds with `shop=convenience` + - *Copy Store* corresponds with `shop=copyshop` + - *Cosmetics Store* corresponds with `shop=cosmetics` + - *Country Store* corresponds with `shop=country_store` + - *Arts & Crafts Store* corresponds with `shop=craft` + - *Curtain Store* corresponds with `shop=curtain` + - *Dairy Store* corresponds with `shop=dairy` + - *Deli* corresponds with `shop=deli` + - *Department Store* corresponds with `shop=department_store` + - *DIY Store* corresponds with `shop=doityourself` + - *Door Shop* corresponds with `shop=doors` + - *Dry Cleaner* corresponds with `shop=dry_cleaning` + - *E-Cigarette Shop* corresponds with `shop=e-cigarette` + - *Electrical Equipment Store* corresponds with `shop=electrical` + - *Electronics Store* corresponds with `shop=electronics` + - *Erotic Store* corresponds with `shop=erotic` + - *Fabric Store* corresponds with `shop=fabric` + - *Produce Stand* corresponds with `shop=farm` + - *Fashion Accessories Store* corresponds with `shop=fashion_accessories` + - *Fireplace Store* corresponds with `shop=fireplace` + - *Fishing Shop* corresponds with `shop=fishing` + - *Flooring Supply Shop* corresponds with `shop=flooring` + - *Florist* corresponds with `shop=florist` + - *Framing Shop* corresponds with `shop=frame` + - *Frozen Food Store* corresponds with `shop=frozen_food` + - *Fuel Shop* corresponds with `shop=fuel` + - *Funeral Home* corresponds with `shop=funeral_directors` + - *Furniture Store* corresponds with `shop=furniture` + - *Tabletop Game Store* corresponds with `shop=games` + - *Garden Center* corresponds with `shop=garden_centre` + - *Bottled Gas Shop* corresponds with `shop=gas` + - *General Store* corresponds with `shop=general` + - *Gift Shop* corresponds with `shop=gift` + - *Greengrocer* corresponds with `shop=greengrocer` + - *Hairdresser* corresponds with `shop=hairdresser` + - *Hairdresser Supply Store* corresponds with `shop=hairdresser_supply` + - *Hardware Store* corresponds with `shop=hardware` + - *Health Food Shop* corresponds with `shop=health_food` + - *Hearing Aids Store* corresponds with `shop=hearing_aids` + - *Herbalist* corresponds with `shop=herbalist` + - *Hifi Store* corresponds with `shop=hifi` + - *Hobby Shop* corresponds with `shop=hobby` + - *Household Linen Shop* corresponds with `shop=household_linen` + - *Houseware Store* corresponds with `shop=houseware` + - *Hunting Shop* corresponds with `shop=hunting` + - *Interior Decoration Store* corresponds with `shop=interior_decoration` + - *Jewelry Store* corresponds with `shop=jewelry` + - *Kiosk* corresponds with `shop=kiosk` + - *Kitchen Design Store* corresponds with `shop=kitchen` + - *Laundry* corresponds with `shop=laundry` + - *Leather Store* corresponds with `shop=leather` + - *Lighting Store* corresponds with `shop=lighting` + - *Locksmith* corresponds with `shop=locksmith` + - *Lottery Shop* corresponds with `shop=lottery` + - *Mall* corresponds with `shop=mall` + - *Massage Shop* corresponds with `shop=massage` + - *Medical Supply Store* corresponds with `shop=medical_supply` + - *Military Surplus Store* corresponds with `shop=military_surplus` + - *Mobile Phone Store* corresponds with `shop=mobile_phone` + - *Model Shop* corresponds with `shop=model` + - *Money Lender* corresponds with `shop=money_lender` + - *Motorcycle Dealership* corresponds with `shop=motorcycle` + - *Motorcycle Repair Shop* corresponds with `shop=motorcycle_repair` + - *Music Store* corresponds with `shop=music` + - *Musical Instrument Store* corresponds with `shop=musical_instrument` + - *Newspaper/Magazine Shop* corresponds with `shop=newsagent` + - *Nutrition Supplements Store* corresponds with `shop=nutrition_supplements` + - *Optician* corresponds with `shop=optician` + - *Outdoors Store* corresponds with `shop=outdoor` + - *Online Retailer Outpost* corresponds with `shop=outpost` + - *Paint Store* corresponds with `shop=paint` + - *Party Supply Store* corresponds with `shop=party` + - *Pastry Shop* corresponds with `shop=pastry` + - *Pawn Shop* corresponds with `shop=pawnbroker` + - *Perfume Store* corresponds with `shop=perfumery` + - *Pet Store* corresponds with `shop=pet` + - *Pet Grooming Store* corresponds with `shop=pet_grooming` + - *Photography Store* corresponds with `shop=photo` + - *Pottery Store* corresponds with `shop=pottery` + - *Printer Ink Store* corresponds with `shop=printer_ink` + - *Psychic* corresponds with `shop=psychic` + - *Fireworks Store* corresponds with `shop=pyrotechnics` + - *Radio/Electronic Component Store* corresponds with `shop=radiotechnics` + - *Religious Store* corresponds with `shop=religion` + - *Rental Shop* corresponds with `shop=rental` + - *Repair Shop* corresponds with `shop=repair` + - *Scuba Diving Shop* corresponds with `shop=scuba_diving` + - *Seafood Shop* corresponds with `shop=seafood` + - *Consignment/Thrift Store* corresponds with `shop=second_hand` + - *Sewing Supply Shop* corresponds with `shop=sewing` + - *Shoe Repair Shop* corresponds with `shop=shoe_repair` + - *Shoe Store* corresponds with `shop=shoes` + - *Spice Shop* corresponds with `shop=spices` + - *Sporting Goods Store* corresponds with `shop=sports` + - *Stationery Store* corresponds with `shop=stationery` + - *Storage Rental* corresponds with `shop=storage_rental` + - *Supermarket* corresponds with `shop=supermarket` + - *Pool Supply Store* corresponds with `shop=swimming_pool` + - *Tailor* corresponds with `shop=tailor` + - *Tattoo Parlor* corresponds with `shop=tattoo` + - *Tea Store* corresponds with `shop=tea` + - *Telecom Retail Store* corresponds with `shop=telecommunication` + - *Ticket Seller* corresponds with `shop=ticket` + - *Tile Shop* corresponds with `shop=tiles` + - *Tobacco Shop* corresponds with `shop=tobacco` + - *Tool Rental* corresponds with `shop=tool_hire` + - *Toy Store* corresponds with `shop=toys` + - *Trade Shop* corresponds with `shop=trade` + - *Travel Agency* corresponds with `shop=travel_agency` + - *Trophy Shop* corresponds with `shop=trophy` + - *Tire Store* corresponds with `shop=tyres` + - *Vacuum Cleaner Store* corresponds with `shop=vacuum_cleaner` + - *Variety Store* corresponds with `shop=variety_store` + - *Video Store* corresponds with `shop=video` + - *Video Game Store* corresponds with `shop=video_games` + - *Watches Shop* corresponds with `shop=watches` + - *Drinking Water Shop* corresponds with `shop=water` + - *Watersport/Swim Shop* corresponds with `shop=water_sports` + - *Weapon Shop* corresponds with `shop=weapons` + - *Wholesale Store* corresponds with `shop=wholesale` + - *Wig Shop* corresponds with `shop=wigs` + - *Window Blind Store* corresponds with `shop=window_blind` + - *Wine Shop* corresponds with `shop=wine` + + + + +### opening_hours + + + +The question is *What are the opening hours of {title()}?* + +This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) + +This is rendered with `

Opening hours

{opening_hours_table(opening_hours)}` + + + + + +### website + + + +The question is *What is the website of {title()}?* + +This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website) + +This is rendered with `{website}` + + + + + + - *{contact:website}* corresponds with `contact:website~.+` + - This option cannot be chosen as answer + + + + +### email + + + +The question is *What is the email address of {title()}?* + +This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email) + +This is rendered with `{email}` + + + + + + - *{contact:email}* corresponds with `contact:email~.+` + - This option cannot be chosen as answer + + + + +### phone + + + +The question is *What is the phone number of {title()}?* + +This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone) + +This is rendered with `{phone}` + + + + + + - *{contact:phone}* corresponds with `contact:phone~.+` + - This option cannot be chosen as answer + + + + +### payment-options + + + +The question is *Which methods of payment are accepted here?* + + + + + + - *Cash is accepted here* corresponds with `payment:cash=yes` + - Unselecting this answer will add payment:cash=no + - *Payment cards are accepted here* corresponds with `payment:cards=yes` + - Unselecting this answer will add payment:cards=no + + + + +### level + + + +The question is *On what level is this feature located?* + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with `Located on the {level}th floor` + + + + + + - *Located underground* corresponds with `location=underground` + - This option cannot be chosen as answer + - *Located on the ground floor* corresponds with `level=0` + - *Located on the ground floor* corresponds with `` + - This option cannot be chosen as answer + - *Located on the first floor* corresponds with `level=1` + - *Located on the first basement level* corresponds with `level=-1` + + + + +### copyshop-print-sizes + + + +The question is *What paper formats does this shop offer?* + + + + + + - *This shop can print on papers of size A4* corresponds with `service:print:A4=yes` + - Unselecting this answer will add service:print:A4=no + - *This shop can print on papers of size A3* corresponds with `service:print:A3=yes` + - Unselecting this answer will add service:print:A3=no + - *This shop can print on papers of size A2* corresponds with `service:print:A2=yes` + - Unselecting this answer will add service:print:A2=no + - *This shop can print on papers of size A1* corresponds with `service:print:A1=yes` + - Unselecting this answer will add service:print:A1=no + - *This shop can print on papers of size A0* corresponds with `service:print:A0=yes` + - Unselecting this answer will add service:print:A0=no + + +This tagrendering is only visible in the popup if the following condition is met: `shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes` + + + +### internet + + + +The question is *Does this place offer internet access?* + + + + + + - *This place offers wireless internet access* corresponds with `internet_access=wlan` + - *This place does not offer internet access* corresponds with `internet_access=no` + - *This place offers internet access* corresponds with `internet_access=yes` + - This option cannot be chosen as answer + - *This place offers internet access via a terminal or computer* corresponds with `internet_access=terminal` + - *This place offers wired internet access* corresponds with `internet_access=wired` + + + + +### internet-fee + + + +The question is *Is there a fee for internet access?* + + + + + + - *There is a fee for the internet access at this place* corresponds with `internet_access:fee=yes` + - *Internet access is free at this place* corresponds with `internet_access:fee=no` + - *Internet access is free at this place, for customers only* corresponds with `internet_access:fee=customers` + + +This tagrendering is only visible in the popup if the following condition is met: `internet_access!=no&internet_access~.+` + + + +### internet-ssid + + + +The question is *What is the network name for the wireless internet access?* + +This rendering asks information about the property [internet_access:ssid](https://wiki.openstreetmap.org/wiki/Key:internet_access:ssid) + +This is rendered with `The network name is {internet_access:ssid}` + + + + + + - *Telekom* corresponds with `internet_access:ssid=Telekom` + + +This tagrendering is only visible in the popup if the following condition is met: `internet_access=wlan` + + + +### organic + + + +The question is *Does this shop offer organic products?* + + + + + + - *This shop offers organic products* corresponds with `organic=yes` + - *This shop only offers organic products* corresponds with `organic=only` + - *This shop does not offer organic products* corresponds with `organic=no` + + +This tagrendering is only visible in the popup if the following condition is met: `shop=supermarket|shop=convenience|shop=farm|shop=greengrocer|shop=health_food|shop=clothes|shop=shoes|shop=butcher|shop=cosmetics|shop=deli|shop=bakery|shop=alcohol|shop=seafood|shop=beverages|shop=florist` + + + +### questions + + + +This tagrendering has no question and is thus read-only + + + + + +### reviews + + + +Shows the reviews module (including the possibility to leave a review) + +This tagrendering has no question and is thus read-only + + + + + +### questions + + + +Show the images block at this location + +This tagrendering has no question and is thus read-only + + + + + +### minimap + + + +Shows a small map with the feature. Added by default to every popup + +This tagrendering has no question and is thus read-only + + + + + +#### Filters + + + + + +id | question | osmTags +---- | ---------- | --------- +open_now.0 | Opened now | _isOpen=yes + + + + +id | question | osmTags +---- | ---------- | --------- +accepts_cash.0 | Accepts cash | payment:cash=yes + + + + +id | question | osmTags +---- | ---------- | --------- +accepts_cards.0 | Accepts payment cards | payment:cards=yes + + +This document is autogenerated from [assets/themes/healthcare/healthcare.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/healthcare/healthcare.json) diff --git a/Docs/Layers/named_streets.md b/Docs/Layers/named_streets.md index ac64b90f6..e569b7b11 100644 --- a/Docs/Layers/named_streets.md +++ b/Docs/Layers/named_streets.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) named_streets =============== @@ -47,4 +47,4 @@ Elements must have the all of following tags to be shown on this layer: -This document is autogenerated from [assets/layers/named_streets/named_streets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/named_streets/named_streets.json) \ No newline at end of file +This document is autogenerated from [assets/layers/named_streets/named_streets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/named_streets/named_streets.json) diff --git a/Docs/Layers/nature_reserve.md b/Docs/Layers/nature_reserve.md index c655e0023..7875de6dd 100644 --- a/Docs/Layers/nature_reserve.md +++ b/Docs/Layers/nature_reserve.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) nature_reserve ================ @@ -195,7 +195,7 @@ This is rendered with `Respect privacy - only fill out a name if this is widely published* +The question is *Whom is the curator of this nature reserve?* This rendering asks information about the property [curator](https://wiki.openstreetmap.org/wiki/Key:curator) @@ -209,7 +209,7 @@ This is rendered with `{curator} is the curator of this nature reserve` -The question is *What email adress can one send to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal email address if this is widely published* +The question is *What email adress can one send to with questions and problems with this nature reserve?* This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email) @@ -223,7 +223,7 @@ This is rendered with `
{email}` -The question is *What phone number can one call to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal phone number address if this is widely published* +The question is *What phone number can one call to with questions and problems with this nature reserve?* This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone) @@ -315,4 +315,4 @@ dogs.1 | Dogs are allowed to roam freely | dog=yes dogs.2 | Dogs are allowed if they are leashed | dog=yes\|dog=leashed -This document is autogenerated from [assets/layers/nature_reserve/nature_reserve.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/nature_reserve/nature_reserve.json) \ No newline at end of file +This document is autogenerated from [assets/layers/nature_reserve/nature_reserve.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/nature_reserve/nature_reserve.json) diff --git a/Docs/Layers/observation_tower.md b/Docs/Layers/observation_tower.md index a1d277889..83aa52fd6 100644 --- a/Docs/Layers/observation_tower.md +++ b/Docs/Layers/observation_tower.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) observation_tower =================== @@ -286,4 +286,4 @@ This is rendered with `{wikipedia():max-height:25rem}` - This option cannot be chosen as answer -This document is autogenerated from [assets/layers/observation_tower/observation_tower.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/observation_tower/observation_tower.json) \ No newline at end of file +This document is autogenerated from [assets/layers/observation_tower/observation_tower.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/observation_tower/observation_tower.json) diff --git a/Docs/Layers/osm_community_index.md b/Docs/Layers/osm_community_index.md index 3ddef1e98..96d27a025 100644 --- a/Docs/Layers/osm_community_index.md +++ b/Docs/Layers/osm_community_index.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) osm_community_index ===================== @@ -15,7 +15,7 @@ A layer showing the OpenStreetMap Communities - This layer is shown at zoomlevel **0** and higher - - This layer is loaded from an external source, namely `https://raw.githubusercontent.com/osmlab/osm-community-index/main/dist/completeFeatureCollection.json` + - This layer is loaded from an external source, namely `https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/community_index/tile_{z}_{x}_{y}.geojson` @@ -136,4 +136,4 @@ id | question | osmTags other.0 | Other Communities | -This document is autogenerated from [assets/layers/osm_community_index/osm_community_index.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/osm_community_index/osm_community_index.json) \ No newline at end of file +This document is autogenerated from [assets/layers/osm_community_index/osm_community_index.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/osm_community_index/osm_community_index.json) diff --git a/Docs/Layers/parcel_lockers.md b/Docs/Layers/parcel_lockers.md index b128d5417..d6e5c3ec4 100644 --- a/Docs/Layers/parcel_lockers.md +++ b/Docs/Layers/parcel_lockers.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) parcel_lockers ================ @@ -198,4 +198,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/parcel_lockers/parcel_lockers.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/parcel_lockers/parcel_lockers.json) \ No newline at end of file +This document is autogenerated from [assets/layers/parcel_lockers/parcel_lockers.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/parcel_lockers/parcel_lockers.json) diff --git a/Docs/Layers/parking.md b/Docs/Layers/parking.md index 7f47e4606..8f1ca4fda 100644 --- a/Docs/Layers/parking.md +++ b/Docs/Layers/parking.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) parking ========= @@ -166,4 +166,4 @@ This is rendered with `There are {capacity} parking spots` -This document is autogenerated from [assets/layers/parking/parking.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/parking/parking.json) \ No newline at end of file +This document is autogenerated from [assets/layers/parking/parking.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/parking/parking.json) diff --git a/Docs/Layers/parking_spaces.md b/Docs/Layers/parking_spaces.md index bfc42eb08..368ea9d98 100644 --- a/Docs/Layers/parking_spaces.md +++ b/Docs/Layers/parking_spaces.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) parking_spaces ================ @@ -122,4 +122,4 @@ This tagrendering has no question and is thus read-only - *This parking space has 1 space.* corresponds with `capacity=1` -This document is autogenerated from [assets/layers/parking_spaces/parking_spaces.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/parking_spaces/parking_spaces.json) \ No newline at end of file +This document is autogenerated from [assets/layers/parking_spaces/parking_spaces.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/parking_spaces/parking_spaces.json) diff --git a/Docs/Layers/parking_ticket_machine.md b/Docs/Layers/parking_ticket_machine.md new file mode 100644 index 000000000..5d3d3cf93 --- /dev/null +++ b/Docs/Layers/parking_ticket_machine.md @@ -0,0 +1,175 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) + + parking_ticket_machine +======================== + + + + + +Layer with parking ticket machines to pay for parking. + + + + + + + - This layer is shown at zoomlevel **16** and higher + + + + +#### Themes using this layer + + + + + + - [parkings](https://mapcomplete.osm.be/parkings) + - [personal](https://mapcomplete.osm.be/personal) + + + + + Basic tags for this layer +--------------------------- + + + +Elements must have the all of following tags to be shown on this layer: + + + + - amenity=vending_machine + - vending=parking_tickets + + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B(%20%20%20%20nwr%5B%22amenity%22%3D%22vending_machine%22%5D%5B%22vending%22%3D%22parking_tickets%22%5D(%7B%7Bbbox%7D%7D)%3B%0A)%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + + + + Supported attributes +---------------------- + + + +Warning: + +this quick overview is incomplete + + + +attribute | type | values which are supported by this layer +----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/payment:coins:denominations#values) [payment:coins:denominations](https://wiki.openstreetmap.org/wiki/Key:payment:coins:denominations) | Multiple choice | [0.01 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.01 EUR) [0.02 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.02 EUR) [0.05 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.05 EUR) [0.10 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.10 EUR) [0.20 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.20 EUR) [0.50 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.50 EUR) [1 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D1 EUR) [2 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D2 EUR) +[](https://taginfo.openstreetmap.org/keys/payment:notes:denominations#values) [payment:notes:denominations](https://wiki.openstreetmap.org/wiki/Key:payment:notes:denominations) | Multiple choice | [5 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D5 EUR) [10 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D10 EUR) [20 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D20 EUR) [50 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D50 EUR) [100 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D100 EUR) [200 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D200 EUR) [500 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D500 EUR) +[](https://taginfo.openstreetmap.org/keys/ref#values) [ref](https://wiki.openstreetmap.org/wiki/Key:ref) | [string](../SpecialInputElements.md#string) | + + + + +### images + + + +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` + +This tagrendering has no question and is thus read-only + + + + + +### payment-options-split + + + +The question is *Which methods of payment are accepted here?* + + + + + + - *Cash is accepted here* corresponds with `payment:cash=yes` + - This option cannot be chosen as answer + - Unselecting this answer will add + - *Payment cards are accepted here* corresponds with `payment:cards=yes` + - This option cannot be chosen as answer + - Unselecting this answer will add + - *Coins are accepted here* corresponds with `payment:coins=yes` + - Unselecting this answer will add payment:coins=no + - *Bank notes are accepted here* corresponds with `payment:notes=yes` + - Unselecting this answer will add payment:notes=no + - *Debit cards are accepted here* corresponds with `payment:debit_cards=yes` + - Unselecting this answer will add payment_debit_cards=no + - *Credit cards are accepted here* corresponds with `payment:credit_cards=yes` + - Unselecting this answer will add payment:credit_cards=no + + + + +### denominations-coins + + + +The question is *What coins can you use to pay here?* + + + + + + - *1 cent coins are accepted* corresponds with `payment:coins:denominations=0.01 EUR` + - *2 cent coins are accepted* corresponds with `payment:coins:denominations=0.02 EUR` + - *5 cent coins are accepted* corresponds with `payment:coins:denominations=0.05 EUR` + - *10 cent coins are accepted* corresponds with `payment:coins:denominations=0.10 EUR` + - *20 cent coins are accepted* corresponds with `payment:coins:denominations=0.20 EUR` + - *50 cent coins are accepted* corresponds with `payment:coins:denominations=0.50 EUR` + - *1 euro coins are accepted* corresponds with `payment:coins:denominations=1 EUR` + - *2 euro coins are accepted* corresponds with `payment:coins:denominations=2 EUR` + + +This tagrendering is only visible in the popup if the following condition is met: `payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk` + + + +### denominations-notes + + + +The question is *what notes can you use to pay here?* + + + + + + - *5 euro notes are accepted* corresponds with `payment:notes:denominations=5 EUR` + - *10 euro notes are accepted* corresponds with `payment:notes:denominations=10 EUR` + - *20 euro notes are accepted* corresponds with `payment:notes:denominations=20 EUR` + - *50 euro notes are accepted* corresponds with `payment:notes:denominations=50 EUR` + - *100 euro notes are accepted* corresponds with `payment:notes:denominations=100 EUR` + - *200 euro notes are accepted* corresponds with `payment:notes:denominations=200 EUR` + - *500 euro notes are accepted* corresponds with `payment:notes:denominations=500 EUR` + + +This tagrendering is only visible in the popup if the following condition is met: `payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk` + + + +### ref + + + +The question is *What is the reference number of this parking ticket machine?* + +This rendering asks information about the property [ref](https://wiki.openstreetmap.org/wiki/Key:ref) + +This is rendered with `This parking ticket machine has the reference number {ref}` + + + + + + - *This parking ticket machine has no reference number* corresponds with `noref=yes` + + +This document is autogenerated from [assets/layers/parking_ticket_machine/parking_ticket_machine.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/parking_ticket_machine/parking_ticket_machine.json) diff --git a/Docs/Layers/parks_and_forests_without_etymology.md b/Docs/Layers/parks_and_forests_without_etymology.md index 02319454f..228a8c9dd 100644 --- a/Docs/Layers/parks_and_forests_without_etymology.md +++ b/Docs/Layers/parks_and_forests_without_etymology.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) parks_and_forests_without_etymology ===================================== @@ -106,7 +106,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *What is this object named after?
This might be written on the street name sign* +The question is *What is this object named after?* This rendering asks information about the property [name:etymology](https://wiki.openstreetmap.org/wiki/Key:name:etymology) @@ -171,4 +171,4 @@ This tagrendering has no question and is thus read-only This tagrendering is only visible in the popup if the following condition is met: `wikidata~.+` -This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) \ No newline at end of file +This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) diff --git a/Docs/Layers/pedestrian_path.md b/Docs/Layers/pedestrian_path.md index 030dd5755..4fe6acc64 100644 --- a/Docs/Layers/pedestrian_path.md +++ b/Docs/Layers/pedestrian_path.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) pedestrian_path ================= @@ -55,4 +55,4 @@ Elements must have the all of following tags to be shown on this layer: -This document is autogenerated from [assets/layers/pedestrian_path/pedestrian_path.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/pedestrian_path/pedestrian_path.json) \ No newline at end of file +This document is autogenerated from [assets/layers/pedestrian_path/pedestrian_path.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/pedestrian_path/pedestrian_path.json) diff --git a/Docs/Layers/pharmacy.md b/Docs/Layers/pharmacy.md index 214b29cce..74c893985 100644 --- a/Docs/Layers/pharmacy.md +++ b/Docs/Layers/pharmacy.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) pharmacy ========== @@ -214,4 +214,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/pharmacy/pharmacy.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/pharmacy/pharmacy.json) \ No newline at end of file +This document is autogenerated from [assets/layers/pharmacy/pharmacy.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/pharmacy/pharmacy.json) diff --git a/Docs/Layers/physiotherapist.md b/Docs/Layers/physiotherapist.md index 77e9baad1..dbd2ee02d 100644 --- a/Docs/Layers/physiotherapist.md +++ b/Docs/Layers/physiotherapist.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) physiotherapist ================= @@ -187,4 +187,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/physiotherapist/physiotherapist.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/physiotherapist/physiotherapist.json) \ No newline at end of file +This document is autogenerated from [assets/layers/physiotherapist/physiotherapist.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/physiotherapist/physiotherapist.json) diff --git a/Docs/Layers/picnic_table.md b/Docs/Layers/picnic_table.md index a818bfad4..0b85393da 100644 --- a/Docs/Layers/picnic_table.md +++ b/Docs/Layers/picnic_table.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) picnic_table ============== @@ -123,4 +123,4 @@ This is rendered with `This picnic table is made of {material}` - *This picnic table is made from (recycled) plastic* corresponds with `material=plastic` -This document is autogenerated from [assets/layers/picnic_table/picnic_table.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/picnic_table/picnic_table.json) \ No newline at end of file +This document is autogenerated from [assets/layers/picnic_table/picnic_table.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/picnic_table/picnic_table.json) diff --git a/Docs/Layers/play_forest.md b/Docs/Layers/play_forest.md index ff2ffc026..f9bda4db2 100644 --- a/Docs/Layers/play_forest.md +++ b/Docs/Layers/play_forest.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) play_forest ============= @@ -151,4 +151,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/play_forest/play_forest.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/play_forest/play_forest.json) \ No newline at end of file +This document is autogenerated from [assets/layers/play_forest/play_forest.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/play_forest/play_forest.json) diff --git a/Docs/Layers/playground.md b/Docs/Layers/playground.md index b5effb110..cf7612821 100644 --- a/Docs/Layers/playground.md +++ b/Docs/Layers/playground.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) playground ============ @@ -91,7 +91,7 @@ This tagrendering has no question and is thus read-only -The question is *Which is the surface of this playground?
If there are multiple, select the most occuring one* +The question is *Which is the surface of this playground?* This rendering asks information about the property [surface](https://wiki.openstreetmap.org/wiki/Key:surface) @@ -303,4 +303,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/playground/playground.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/playground/playground.json) \ No newline at end of file +This document is autogenerated from [assets/layers/playground/playground.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/playground/playground.json) diff --git a/Docs/Layers/postboxes.md b/Docs/Layers/postboxes.md index 409ac7429..ef3f20058 100644 --- a/Docs/Layers/postboxes.md +++ b/Docs/Layers/postboxes.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) postboxes =========== @@ -74,4 +74,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/postboxes/postboxes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/postboxes/postboxes.json) \ No newline at end of file +This document is autogenerated from [assets/layers/postboxes/postboxes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/postboxes/postboxes.json) diff --git a/Docs/Layers/postoffices.md b/Docs/Layers/postoffices.md index 4f5e86624..7cbc81c27 100644 --- a/Docs/Layers/postoffices.md +++ b/Docs/Layers/postoffices.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) postoffices ============= @@ -265,4 +265,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/postoffices/postoffices.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/postoffices/postoffices.json) \ No newline at end of file +This document is autogenerated from [assets/layers/postoffices/postoffices.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/postoffices/postoffices.json) diff --git a/Docs/Layers/public_bookcase.md b/Docs/Layers/public_bookcase.md index 4aa291753..1f1ccf708 100644 --- a/Docs/Layers/public_bookcase.md +++ b/Docs/Layers/public_bookcase.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) public_bookcase ================= @@ -285,4 +285,4 @@ inside.1 | Binnen? | indoor=yes inside.2 | Buiten? | indoor=no\| -This document is autogenerated from [assets/layers/public_bookcase/public_bookcase.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/public_bookcase/public_bookcase.json) \ No newline at end of file +This document is autogenerated from [assets/layers/public_bookcase/public_bookcase.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/public_bookcase/public_bookcase.json) diff --git a/Docs/Layers/railway_platforms.md b/Docs/Layers/railway_platforms.md index 6dca4e670..8a7ff8179 100644 --- a/Docs/Layers/railway_platforms.md +++ b/Docs/Layers/railway_platforms.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) railway_platforms =================== @@ -91,4 +91,4 @@ This is rendered with `Located on the {level}th floor` - *Located on the first basement level* corresponds with `level=-1` -This document is autogenerated from [assets/layers/railway_platforms/railway_platforms.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/railway_platforms/railway_platforms.json) \ No newline at end of file +This document is autogenerated from [assets/layers/railway_platforms/railway_platforms.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/railway_platforms/railway_platforms.json) diff --git a/Docs/Layers/rainbow_crossing_high_zoom.md b/Docs/Layers/rainbow_crossing_high_zoom.md index 65badfe67..dcd1e19bf 100644 --- a/Docs/Layers/rainbow_crossing_high_zoom.md +++ b/Docs/Layers/rainbow_crossing_high_zoom.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) rainbow_crossing_high_zoom ============================ @@ -109,4 +109,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/themes/rainbow_crossings/rainbow_crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/rainbow_crossings/rainbow_crossings.json) \ No newline at end of file +This document is autogenerated from [assets/themes/rainbow_crossings/rainbow_crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/rainbow_crossings/rainbow_crossings.json) diff --git a/Docs/Layers/rainbow_crossings.md b/Docs/Layers/rainbow_crossings.md index 0a9c60aca..37cac2f73 100644 --- a/Docs/Layers/rainbow_crossings.md +++ b/Docs/Layers/rainbow_crossings.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) rainbow_crossings =================== @@ -85,4 +85,4 @@ The question is *Does this crossing has rainbow paintings?* This tagrendering is only visible in the popup if the following condition is met: `highway=crossing` -This document is autogenerated from [assets/layers/rainbow_crossings/rainbow_crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/rainbow_crossings/rainbow_crossings.json) \ No newline at end of file +This document is autogenerated from [assets/layers/rainbow_crossings/rainbow_crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/rainbow_crossings/rainbow_crossings.json) diff --git a/Docs/Layers/reception_desk.md b/Docs/Layers/reception_desk.md index 842b9d6c7..625bb3928 100644 --- a/Docs/Layers/reception_desk.md +++ b/Docs/Layers/reception_desk.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) reception_desk ================ @@ -108,7 +108,7 @@ This is rendered with `Located on the {level}th floor` -The question is *What is the height of the reception desk?
This is measured from the floor to the lowest usable part of the desk
* +The question is *What is the height of the reception desk? * This rendering asks information about the property [desk:height](https://wiki.openstreetmap.org/wiki/Key:desk:height) @@ -134,4 +134,4 @@ The question is *Does this place have an audio induction loop for people with r - *This place does not have an audio induction loop* corresponds with `hearing_loop=no` -This document is autogenerated from [assets/layers/reception_desk/reception_desk.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/reception_desk/reception_desk.json) \ No newline at end of file +This document is autogenerated from [assets/layers/reception_desk/reception_desk.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/reception_desk/reception_desk.json) diff --git a/Docs/Layers/recycling.md b/Docs/Layers/recycling.md index 0704c52d9..cd8726c3f 100644 --- a/Docs/Layers/recycling.md +++ b/Docs/Layers/recycling.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) recycling =========== @@ -67,6 +67,7 @@ attribute | type | values which are supported by this layer [](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | [](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | [](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [24/7](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7) +[](https://taginfo.openstreetmap.org/keys/access#values) [access](https://wiki.openstreetmap.org/wiki/Key:access) | [string](../SpecialInputElements.md#string) | [yes](https://wiki.openstreetmap.org/wiki/Tag:access%3Dyes) [residents](https://wiki.openstreetmap.org/wiki/Tag:access%3Dresidents) [private](https://wiki.openstreetmap.org/wiki/Tag:access%3Dprivate) @@ -301,6 +302,27 @@ This is rendered with `

Opening hours

{opening_hours_table(opening_hours +### access + + + +The question is *Who can use this recycling facility?* + +This rendering asks information about the property [access](https://wiki.openstreetmap.org/wiki/Key:access) + +This is rendered with `This recycling facility can be used by {access}` + + + + + + - *Everyone can use this recycling facility* corresponds with `access=yes` + - *Only residents can use this recycling facility* corresponds with `access=residents` + - *This recycling facility is only for private use* corresponds with `access=private` + + + + #### Filters @@ -336,6 +358,13 @@ recyclingType.16 | Recycling of plastic | recycling:plastic=yes recyclingType.17 | Recycling of scrap metal | recycling:scrap_metal=yes recyclingType.18 | Recycling of small electrical appliances | recycling:small_appliances=yes\|recycling:small_electrical_appliances=yes recyclingType.19 | Recycling of residual waste | recycling:waste=yes + + + + +id | question | osmTags +---- | ---------- | --------- +public-access.0 | Only public access | access=yes\| -This document is autogenerated from [assets/layers/recycling/recycling.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/recycling/recycling.json) \ No newline at end of file +This document is autogenerated from [assets/layers/recycling/recycling.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/recycling/recycling.json) diff --git a/Docs/Layers/school.md b/Docs/Layers/school.md index 985617397..837964634 100644 --- a/Docs/Layers/school.md +++ b/Docs/Layers/school.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) school ======== @@ -147,7 +147,7 @@ The question is *Which genders can enroll at this school?* -The question is *Does this school target students with a special need? Which structural facilities does this school have?
Ad-hoc * +The question is *Does this school target students with a special need? Which structural facilities does this school have?* This rendering asks information about the property [school:for](https://wiki.openstreetmap.org/wiki/Key:school:for) @@ -241,4 +241,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/layers/school/school.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/school/school.json) \ No newline at end of file +This document is autogenerated from [assets/layers/school/school.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/school/school.json) diff --git a/Docs/Layers/shelter.md b/Docs/Layers/shelter.md index 5b65b0da5..5137638de 100644 --- a/Docs/Layers/shelter.md +++ b/Docs/Layers/shelter.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) shelter ========= @@ -88,4 +88,4 @@ This is rendered with `Shelter type: {shelter_type}` - *This is a basic hut, providing basic shelter and sleeping facilities.* corresponds with `shelter_type=basic_hut` -This document is autogenerated from [assets/layers/shelter/shelter.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/shelter/shelter.json) \ No newline at end of file +This document is autogenerated from [assets/layers/shelter/shelter.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/shelter/shelter.json) diff --git a/Docs/Layers/shops.md b/Docs/Layers/shops.md index 10796c535..c7339e405 100644 --- a/Docs/Layers/shops.md +++ b/Docs/Layers/shops.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) shops ======= @@ -25,6 +25,7 @@ A shop + - [healthcare](https://mapcomplete.osm.be/healthcare) - [onwheels](https://mapcomplete.osm.be/onwheels) - [personal](https://mapcomplete.osm.be/personal) - [pets](https://mapcomplete.osm.be/pets) @@ -420,7 +421,7 @@ The question is *What paper formats does this shop offer?* - Unselecting this answer will add service:print:A0=no -This tagrendering is only visible in the popup if the following condition is met: `shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes` +This tagrendering is only visible in the popup if the following condition is met: `shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes` @@ -571,4 +572,4 @@ id | question | osmTags has_organic.0 | Has organic options | organic=yes\|organic=only -This document is autogenerated from [assets/layers/shops/shops.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/shops/shops.json) \ No newline at end of file +This document is autogenerated from [assets/layers/shops/shops.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/shops/shops.json) diff --git a/Docs/Layers/slow_roads.md b/Docs/Layers/slow_roads.md index b42ac8b51..a926dc6f3 100644 --- a/Docs/Layers/slow_roads.md +++ b/Docs/Layers/slow_roads.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) slow_roads ============ @@ -131,4 +131,4 @@ The question is *Is deze weg 's nachts verlicht?* - *Niet verlicht* corresponds with `lit=no` -This document is autogenerated from [assets/layers/slow_roads/slow_roads.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/slow_roads/slow_roads.json) \ No newline at end of file +This document is autogenerated from [assets/layers/slow_roads/slow_roads.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/slow_roads/slow_roads.json) diff --git a/Docs/Layers/speed_camera.md b/Docs/Layers/speed_camera.md index 32507876e..8d0e617b7 100644 --- a/Docs/Layers/speed_camera.md +++ b/Docs/Layers/speed_camera.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) speed_camera ============== @@ -90,4 +90,4 @@ This tagrendering has no question and is thus read-only This tagrendering is only visible in the popup if the following condition is met: `ref~.+` -This document is autogenerated from [assets/layers/speed_camera/speed_camera.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/speed_camera/speed_camera.json) \ No newline at end of file +This document is autogenerated from [assets/layers/speed_camera/speed_camera.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/speed_camera/speed_camera.json) diff --git a/Docs/Layers/speed_display.md b/Docs/Layers/speed_display.md index 1a5886db1..f453a3e5d 100644 --- a/Docs/Layers/speed_display.md +++ b/Docs/Layers/speed_display.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) speed_display =============== @@ -92,4 +92,4 @@ This is rendered with `The text on this speed display is {inscription}` -This document is autogenerated from [assets/layers/speed_display/speed_display.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/speed_display/speed_display.json) \ No newline at end of file +This document is autogenerated from [assets/layers/speed_display/speed_display.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/speed_display/speed_display.json) diff --git a/Docs/Layers/sport_pitch.md b/Docs/Layers/sport_pitch.md index b463b098f..0fce02a79 100644 --- a/Docs/Layers/sport_pitch.md +++ b/Docs/Layers/sport_pitch.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) sport_pitch ============= @@ -247,9 +247,27 @@ This tagrendering has no question and is thus read-only +id | question | osmTags +---- | ---------- | --------- +accessibility.0 | Publicly accessible | access=yes\|access=public| + + + + +id | question | osmTags +---- | ---------- | --------- +available_sports.0 | All sports (default) | +available_sports.1 | Basketball fields | sport=basketball +available_sports.2 | Soccer fields | sport=soccer +available_sports.3 | Ping-pong tables | sport=table_tennis +available_sports.4 | Tennis fields | sport=tennis + + + + id | question | osmTags ---- | ---------- | --------- open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/sport_pitch/sport_pitch.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/sport_pitch/sport_pitch.json) \ No newline at end of file +This document is autogenerated from [assets/layers/sport_pitch/sport_pitch.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/sport_pitch/sport_pitch.json) diff --git a/Docs/Layers/sport_places_without_etymology.md b/Docs/Layers/sport_places_without_etymology.md index ec3309a78..ea0a3a0b9 100644 --- a/Docs/Layers/sport_places_without_etymology.md +++ b/Docs/Layers/sport_places_without_etymology.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) sport_places_without_etymology ================================ @@ -106,7 +106,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *What is this object named after?
This might be written on the street name sign* +The question is *What is this object named after?* This rendering asks information about the property [name:etymology](https://wiki.openstreetmap.org/wiki/Key:name:etymology) @@ -171,4 +171,4 @@ This tagrendering has no question and is thus read-only This tagrendering is only visible in the popup if the following condition is met: `wikidata~.+` -This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) \ No newline at end of file +This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) diff --git a/Docs/Layers/sport_shops.md b/Docs/Layers/sport_shops.md index 1b77c81ba..12d2f0341 100644 --- a/Docs/Layers/sport_shops.md +++ b/Docs/Layers/sport_shops.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) sport_shops ============= @@ -417,7 +417,7 @@ The question is *What paper formats does this shop offer?* - Unselecting this answer will add service:print:A0=no -This tagrendering is only visible in the popup if the following condition is met: `shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes` +This tagrendering is only visible in the popup if the following condition is met: `shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes` @@ -592,4 +592,4 @@ id | question | osmTags has_organic.0 | Has organic options | organic=yes\|organic=only -This document is autogenerated from [assets/themes/sports/sports.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/sports/sports.json) \ No newline at end of file +This document is autogenerated from [assets/themes/sports/sports.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/sports/sports.json) diff --git a/Docs/Layers/sports_centre.md b/Docs/Layers/sports_centre.md index 4534c38a6..331c6429b 100644 --- a/Docs/Layers/sports_centre.md +++ b/Docs/Layers/sports_centre.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) sports_centre =============== @@ -184,4 +184,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/sports_centre/sports_centre.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/sports_centre/sports_centre.json) \ No newline at end of file +This document is autogenerated from [assets/layers/sports_centre/sports_centre.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/sports_centre/sports_centre.json) diff --git a/Docs/Layers/stairs.md b/Docs/Layers/stairs.md index a220f4222..5a208d727 100644 --- a/Docs/Layers/stairs.md +++ b/Docs/Layers/stairs.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) stairs ======== @@ -192,4 +192,4 @@ The question is *Is there a ramp at these stairs?* - Unselecting this answer will add -This document is autogenerated from [assets/layers/stairs/stairs.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/stairs/stairs.json) \ No newline at end of file +This document is autogenerated from [assets/layers/stairs/stairs.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/stairs/stairs.json) diff --git a/Docs/Layers/street_lamps.md b/Docs/Layers/street_lamps.md index 611b31b95..ecb3cc3a7 100644 --- a/Docs/Layers/street_lamps.md +++ b/Docs/Layers/street_lamps.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) street_lamps ============== @@ -239,4 +239,4 @@ This is rendered with `This lamp points towards {light:direction}` This tagrendering is only visible in the popup if the following condition is met: `light:count=1` -This document is autogenerated from [assets/layers/street_lamps/street_lamps.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/street_lamps/street_lamps.json) \ No newline at end of file +This document is autogenerated from [assets/layers/street_lamps/street_lamps.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/street_lamps/street_lamps.json) diff --git a/Docs/Layers/streets_without_etymology.md b/Docs/Layers/streets_without_etymology.md index c7924d132..15c77d4af 100644 --- a/Docs/Layers/streets_without_etymology.md +++ b/Docs/Layers/streets_without_etymology.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) streets_without_etymology =========================== @@ -107,7 +107,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *What is this object named after?
This might be written on the street name sign* +The question is *What is this object named after?* This rendering asks information about the property [name:etymology](https://wiki.openstreetmap.org/wiki/Key:name:etymology) @@ -172,4 +172,4 @@ This tagrendering has no question and is thus read-only This tagrendering is only visible in the popup if the following condition is met: `wikidata~.+` -This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) \ No newline at end of file +This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) diff --git a/Docs/Layers/surveillance_camera.md b/Docs/Layers/surveillance_camera.md index 7ab284a1f..d650e3a6a 100644 --- a/Docs/Layers/surveillance_camera.md +++ b/Docs/Layers/surveillance_camera.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) surveillance_camera ===================== @@ -235,4 +235,4 @@ This is rendered with `Mounting method: {camera:mount}` - *This camera is placed on a tree* corresponds with `camera:mount=tree` -This document is autogenerated from [assets/layers/surveillance_camera/surveillance_camera.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/surveillance_camera/surveillance_camera.json) \ No newline at end of file +This document is autogenerated from [assets/layers/surveillance_camera/surveillance_camera.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/surveillance_camera/surveillance_camera.json) diff --git a/Docs/Layers/tertiary_education.md b/Docs/Layers/tertiary_education.md index e16d8551e..b44e4af6c 100644 --- a/Docs/Layers/tertiary_education.md +++ b/Docs/Layers/tertiary_education.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) tertiary_education ==================== @@ -196,4 +196,4 @@ This is rendered with `{phone}` - This option cannot be chosen as answer -This document is autogenerated from [assets/layers/tertiary_education/tertiary_education.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/tertiary_education/tertiary_education.json) \ No newline at end of file +This document is autogenerated from [assets/layers/tertiary_education/tertiary_education.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/tertiary_education/tertiary_education.json) diff --git a/Docs/Layers/ticket_machine.md b/Docs/Layers/ticket_machine.md index 56e31abbc..0f1b2d106 100644 --- a/Docs/Layers/ticket_machine.md +++ b/Docs/Layers/ticket_machine.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) ticket_machine ================ @@ -52,6 +52,7 @@ attribute | type | values which are supported by this layer [](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) [](https://taginfo.openstreetmap.org/keys/operator#values) [operator](https://wiki.openstreetmap.org/wiki/Key:operator) | [string](../SpecialInputElements.md#string) | [Nederlandse Spoorwegen](https://wiki.openstreetmap.org/wiki/Tag:operator%3DNederlandse Spoorwegen) [](https://taginfo.openstreetmap.org/keys/payment:coins:denominations#values) [payment:coins:denominations](https://wiki.openstreetmap.org/wiki/Key:payment:coins:denominations) | Multiple choice | [0.01 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.01 EUR) [0.02 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.02 EUR) [0.05 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.05 EUR) [0.10 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.10 EUR) [0.20 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.20 EUR) [0.50 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.50 EUR) [1 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D1 EUR) [2 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D2 EUR) +[](https://taginfo.openstreetmap.org/keys/payment:notes:denominations#values) [payment:notes:denominations](https://wiki.openstreetmap.org/wiki/Key:payment:notes:denominations) | Multiple choice | [5 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D5 EUR) [10 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D10 EUR) [20 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D20 EUR) [50 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D50 EUR) [100 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D100 EUR) [200 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D200 EUR) [500 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D500 EUR) @@ -160,6 +161,29 @@ The question is *What coins can you use to pay here?* - *2 euro coins are accepted* corresponds with `payment:coins:denominations=2 EUR` -This tagrendering is only visible in the popup if the following condition is met: `payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk` +This tagrendering is only visible in the popup if the following condition is met: `payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk` -This document is autogenerated from [assets/layers/ticket_machine/ticket_machine.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/ticket_machine/ticket_machine.json) \ No newline at end of file + + +### denominations-notes + + + +The question is *what notes can you use to pay here?* + + + + + + - *5 euro notes are accepted* corresponds with `payment:notes:denominations=5 EUR` + - *10 euro notes are accepted* corresponds with `payment:notes:denominations=10 EUR` + - *20 euro notes are accepted* corresponds with `payment:notes:denominations=20 EUR` + - *50 euro notes are accepted* corresponds with `payment:notes:denominations=50 EUR` + - *100 euro notes are accepted* corresponds with `payment:notes:denominations=100 EUR` + - *200 euro notes are accepted* corresponds with `payment:notes:denominations=200 EUR` + - *500 euro notes are accepted* corresponds with `payment:notes:denominations=500 EUR` + + +This tagrendering is only visible in the popup if the following condition is met: `payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk` + +This document is autogenerated from [assets/layers/ticket_machine/ticket_machine.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/ticket_machine/ticket_machine.json) diff --git a/Docs/Layers/ticket_validator.md b/Docs/Layers/ticket_validator.md index ef86f6fcd..02ae2fea1 100644 --- a/Docs/Layers/ticket_validator.md +++ b/Docs/Layers/ticket_validator.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) ticket_validator ================== @@ -144,4 +144,4 @@ The question is *Which methods of payment are accepted here?* - Unselecting this answer will add payment:ov-chipkaart=no -This document is autogenerated from [assets/layers/ticket_validator/ticket_validator.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/ticket_validator/ticket_validator.json) \ No newline at end of file +This document is autogenerated from [assets/layers/ticket_validator/ticket_validator.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/ticket_validator/ticket_validator.json) diff --git a/Docs/Layers/toekomstige_fietsstraat.md b/Docs/Layers/toekomstige_fietsstraat.md index eae681472..a1c17d992 100644 --- a/Docs/Layers/toekomstige_fietsstraat.md +++ b/Docs/Layers/toekomstige_fietsstraat.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) toekomstige_fietsstraat ========================= @@ -158,4 +158,4 @@ This tagrendering has no question and is thus read-only -This document is autogenerated from [assets/themes/cyclestreets/cyclestreets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclestreets/cyclestreets.json) \ No newline at end of file +This document is autogenerated from [assets/themes/cyclestreets/cyclestreets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclestreets/cyclestreets.json) diff --git a/Docs/Layers/toilet.md b/Docs/Layers/toilet.md index ec72a6ef4..130ff8482 100644 --- a/Docs/Layers/toilet.md +++ b/Docs/Layers/toilet.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) toilet ======== @@ -348,7 +348,7 @@ The question is *Does one have to bring their own toilet paper to this toilet?* -The question is *Is there still something relevant you couldn't give in the previous questions? Add it here.
Don't repeat already stated facts* +The question is *Is there still something relevant you couldn't give in the previous questions? Add it here.* This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description) @@ -390,4 +390,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/toilet/toilet.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/toilet/toilet.json) \ No newline at end of file +This document is autogenerated from [assets/layers/toilet/toilet.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/toilet/toilet.json) diff --git a/Docs/Layers/toilet_at_amenity.md b/Docs/Layers/toilet_at_amenity.md index d2bb2667f..df443602c 100644 --- a/Docs/Layers/toilet_at_amenity.md +++ b/Docs/Layers/toilet_at_amenity.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) toilet_at_amenity =================== @@ -311,7 +311,7 @@ The question is *Does one have to bring their own toilet paper to this toilet?* -The question is *Is there still something relevant you couldn't give in the previous questions? Add it here.
Don't repeat already stated facts* +The question is *Is there still something relevant you couldn't give in the previous questions? Add it here.* This rendering asks information about the property [toilets:description](https://wiki.openstreetmap.org/wiki/Key:toilets:description) @@ -353,4 +353,4 @@ id | question | osmTags open_now.0 | Opened now | _isOpen=yes -This document is autogenerated from [assets/layers/toilet_at_amenity/toilet_at_amenity.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/toilet_at_amenity/toilet_at_amenity.json) \ No newline at end of file +This document is autogenerated from [assets/layers/toilet_at_amenity/toilet_at_amenity.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/toilet_at_amenity/toilet_at_amenity.json) diff --git a/Docs/Layers/toursistic_places_without_etymology.md b/Docs/Layers/toursistic_places_without_etymology.md index 70c9d19c7..ac50ea11c 100644 --- a/Docs/Layers/toursistic_places_without_etymology.md +++ b/Docs/Layers/toursistic_places_without_etymology.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) toursistic_places_without_etymology ===================================== @@ -106,7 +106,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *What is this object named after?
This might be written on the street name sign* +The question is *What is this object named after?* This rendering asks information about the property [name:etymology](https://wiki.openstreetmap.org/wiki/Key:name:etymology) @@ -171,4 +171,4 @@ This tagrendering has no question and is thus read-only This tagrendering is only visible in the popup if the following condition is met: `wikidata~.+` -This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) \ No newline at end of file +This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) diff --git a/Docs/Layers/trail.md b/Docs/Layers/trail.md index 06a3abe9d..c3cc2f638 100644 --- a/Docs/Layers/trail.md +++ b/Docs/Layers/trail.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) trail ======= @@ -166,4 +166,4 @@ The question is *Is deze wandeltocht toegankelijk met de buggy?* - *deze wandeltocht is niet toegankelijk met de buggy* corresponds with `pushchair=no` -This document is autogenerated from [assets/layers/trail/trail.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/trail/trail.json) \ No newline at end of file +This document is autogenerated from [assets/layers/trail/trail.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/trail/trail.json) diff --git a/Docs/Layers/transit_routes.md b/Docs/Layers/transit_routes.md index 22b1a3e46..2097edc06 100644 --- a/Docs/Layers/transit_routes.md +++ b/Docs/Layers/transit_routes.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) transit_routes ================ @@ -169,4 +169,4 @@ This is rendered with `This bus line is operated by {operator}` -This document is autogenerated from [assets/layers/transit_routes/transit_routes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/transit_routes/transit_routes.json) \ No newline at end of file +This document is autogenerated from [assets/layers/transit_routes/transit_routes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/transit_routes/transit_routes.json) diff --git a/Docs/Layers/transit_stops.md b/Docs/Layers/transit_stops.md index ad2c89063..38db6b0bb 100644 --- a/Docs/Layers/transit_stops.md +++ b/Docs/Layers/transit_stops.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) transit_stops =============== @@ -115,7 +115,7 @@ The question is *Does this stop have a shelter?* - *This stop has a shelter* corresponds with `shelter=yes` - - *This stop does not have a shelter* corresponds with `shelter=no` + - *This stop does not have a shelter* corresponds with `shelter=no` - *This stop has a shelter, that's separately mapped* corresponds with `shelter=separate` - This option cannot be chosen as answer @@ -133,7 +133,7 @@ The question is *Does this stop have a bench?* - *This stop has a bench* corresponds with `bench=yes` - - *This stop does not have a bench* corresponds with `bench=no` + - *This stop does not have a bench* corresponds with `bench=no` - *This stop has a bench, that's separately mapped* corresponds with `bench=separate` - This option cannot be chosen as answer @@ -151,7 +151,7 @@ The question is *Does this stop have a bin?* - *This stop has a bin* corresponds with `bin=yes` - - *This stop does not have a bin* corresponds with `bin=no` + - *This stop does not have a bin* corresponds with `bin=no` - *This stop has a bin, that's separately mapped* corresponds with `bin=separate` - This option cannot be chosen as answer @@ -187,7 +187,7 @@ The question is *Does this stop have tactile paving?* - *This stop has tactile paving* corresponds with `tactile_paving=yes` - - *This stop does not have tactile paving* corresponds with `tactile_paving=no` + - *This stop does not have tactile paving* corresponds with `tactile_paving=no` @@ -203,7 +203,7 @@ The question is *Is this stop lit?* - *This stop is lit* corresponds with `lit=yes` - - *This stop is not lit* corresponds with `lit=no` + - *This stop is not lit* corresponds with `lit=no` @@ -225,7 +225,7 @@ This tagrendering has no question and is thus read-only - This option cannot be chosen as answer - *This stop has a timetable showing regular departures* corresponds with `departures_board=timetable` - *This stop has a timetable containing just the interval between departures* corresponds with `departures_board=interval` - - *This stop does not have a departures board* corresponds with `departures_board=no` + - *This stop does not have a departures board* corresponds with `departures_board=no` @@ -274,4 +274,4 @@ id | question | osmTags tactile_paving.0 | With tactile paving | tactile_paving=yes -This document is autogenerated from [assets/layers/transit_stops/transit_stops.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/transit_stops/transit_stops.json) \ No newline at end of file +This document is autogenerated from [assets/layers/transit_stops/transit_stops.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/transit_stops/transit_stops.json) diff --git a/Docs/Layers/tree_node.md b/Docs/Layers/tree_node.md index e892b2c29..3c4ad44b2 100644 --- a/Docs/Layers/tree_node.md +++ b/Docs/Layers/tree_node.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) tree_node =========== @@ -126,7 +126,7 @@ This tagrendering is only visible in the popup if the following condition is met -The question is *What is the circumference of the tree trunk?

This is measured at a height of 1.30m

* +The question is *What is the circumference of the tree trunk?* This rendering asks information about the property [circumference](https://wiki.openstreetmap.org/wiki/Key:circumference) @@ -279,4 +279,4 @@ This is rendered with `100m away from the actual location. + + + +## Differences between the datasets + +The response on the datasets and the imports varied heavily by the type of the feature. + +The **benches and picnic tables** are relatively straightforward. Visiting the place - physically or virtually with aerial imagery or Mapillary - suffices to decide if the feature still exists. As such, those tasks got handled relatively quickly. Only where no Mapillary and no aerial imagery are available, the map notes remain. + +The other datasets proved to be harder. The **playgrounds** often needed some local knowledge - e.g. a playground might only be accessible to the members of the local youth organisation; or the administration eagerly labeled a patch of grass where kids could play some football as a proper playground. Some of them are hard to do remotely. + +The hardest dataset to handle are the **toilets**, especially toilets in municipality buildings and social facilities. They cannot be seen on aerial imagery by definition, neither is Mapillary available. Furthermore, these facilities are often subject to opening hours and the rules about use by the public might change. In other words, a survey is necessary for pretty much every feature to import. + +![](https://raw.githubusercontent.com/pietervdvn/MapComplete/develop/Docs/Reasonings/StatePie.png) + +## The reaction + +We had a few negative reactions on creating this amount of notes. The arguments mostly boiled down to either: + +- new people will not bother to create a new note if the map is already littered with open notes +- it breaks my workflow, I want to see and handle new notes. + +For the second complaint, you can use [this mapcomplete theme which shows notes and allows to filter them or create a new note](https://mapcomplete.osm.be/notes.html#filters). + +I don't agree with the first complaint as well, as the OpenStreetMap-website only shows a limited number of notes too. This can be easily seen by zooming out when the notes are open; you can see them disappear: https://imgur.com/a/PkwRe0h + +![Attempt for embedding a ](https://i.imgur.com/niZDR5E.mp4) + +## Conclusions + +In hindsight, the guided import was a success. By creating thousands of notes, the process was very discoverable and many people helped out, including two 'hero importers', but there are social limits to the amount of notes that can be created like this. For small datasets (<100 points in a single city), I would be tempted to create this kind of notes again. For bigger datasets (especially if >500 points), I'd probably opt to use MapRoulette to store the data and to mark it as 'done', as not to pollute the notes too much with such an import. + +Especially small datasets which can be armchair-mapped have good levels of completion. + +As there still is some activity on the notes, there is no reason to close them. On the other hand, there isn't _much_ activity anymore. As usual with this type of project, the last 10% is also the hardest to do and will probably take a long time before being handled. At the same time, there are only 79 notes remaining from the earliest import, so they don't bother many people. (The benches-dataset of Oostende still has 334 open notes, about one third of the dataset.) + +Please, [discuss this on this forum thread]( https://community.openstreetmap.org/t/should-the-import-notes-of-the-pin-je-punt-campaign-be-closed/9408). Remarks about the methodology or other musings are welcome here of course. + + +## The project in a nutshell + +> This is what I sent to the Belgian Mailing list on the 5th of february. Note that the actual launch was later, around the 4th of March + +Toerisme Vlaanderen will be launching an OpenStreetMap-based project on +the 14th of February. This is a rather big project which I'd like to +introduce to you with this email. The project consists of a few parts +which might have some impact: + +- A MapComplete theme with focus on some touristical POI's will be launched +- A guided survey/data import will be started +- Toerisme Vlaanderen will ask their partners to start mapping, so + hopefully we'll welcome a group of new mappers + + +This project will focus on the following POI's: + +- Benches and picnic tables +- (Public) toilets +- Playgrounds, +- electrical charging stations (with a focus on charging stations for + electrical bicycles) +- Bicycle pumps and repair stations +- and observation towers + + + *What is this project about?* + +/*Toerisme Vlaanderen*/ is a Flemish state agency which promotes tourism +in Flanders, together with the 5 provincial touristical offices and some +other organisations. +Historically, these 5 offices have each held their own small set of +geodata for typical items such as benches, public toilets, picnic +tables, playgrounds, ... to put those items on their maps. + +And of course, these offices have kept this data in their own +spreadsheets, in their own formats (except for one - which has been +using OSM for years now). + +Toerisme Vlaanderen would like to unify all these databases into +OpenStreetMap, increase the data quality of the items already there and +improve the surveying flow. + +This is where MapComplete comes in. *MapComplete* +is a web-app where one can show information about POI, can answer +questions about these POI and can add new points. Depending on the +chosen map, some categories of POI are shown. + +For this project, a theme showing (and asking information about) +benches, picnictables, playgrounds, charging stations, ... has been +created and will be launched on 14 februari/. (If you look around a bit, +you can already find a link to the theme, but another email will follow +when the project is live.)/ + + + A slow data import: methodology + +Of course, there is quite a bit of geodata laying around with the +provincial offices, which ideally ends up in OpenStreetMap too. + +For this, a slow data import has been started. Instead of dumping all +the data into OSM, a *map note* is created for every item that should be +checked. + +This map note is structured in such a way that a contributor can use it, +but MapComplete can also pick this up to show this to a contributor. +This contributor can then quickly add/import the new feature if they +found it, or they can mark the note as a duplicate or not existing +anymore - closing the note in at the same time. These notes also link to +both the wiki page and to the mapcomplete page where they can be easily +added. + +As with all things in life, this method has advantages and drawbacks: + +- The biggest advantage is exposure of the import to experienced + contributors. (Case in point: I've already had valuable response on a + few notes within 24hours of them going live) +- The import is tracked in OSM itself, containing a lot of information + and providing a flexible forum +- It is quick and easy to setup +- Others can make a similar note, which will be picked up by MapComplete + too! diff --git a/Docs/Reasonings/ReviewAnalysis.md b/Docs/Reasonings/ReviewAnalysis.md index 73d79ad0a..23e3f94e7 100644 --- a/Docs/Reasonings/ReviewAnalysis.md +++ b/Docs/Reasonings/ReviewAnalysis.md @@ -1,6 +1,6 @@ # Analysis a reviews on Mangrove.reviews -MapComplete has - for some thematic maps - the ability to leave a review on a entity. +MapComplete has - for some thematic maps - the ability to leave a review on an entity with Mangrove.Reviews.. Up till now, I had no idea how much this feature was used. However, due to technical reasons I had another look to the reviews module and discovered the ['download all'-option](https://api.mangrove.reviews/reviews) on [mangrove.reviews](https://mangrove.reviews) ## Mangrove Clients diff --git a/Docs/Reasonings/StatePie.png b/Docs/Reasonings/StatePie.png new file mode 100644 index 000000000..7b2196bc7 Binary files /dev/null and b/Docs/Reasonings/StatePie.png differ diff --git a/Docs/Schemas/FilterConfigJson.schema.json b/Docs/Schemas/FilterConfigJson.schema.json index d6557cac4..3158c033b 100644 --- a/Docs/Schemas/FilterConfigJson.schema.json +++ b/Docs/Schemas/FilterConfigJson.schema.json @@ -6,7 +6,7 @@ "type": "string" }, "options": { - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```", "type": "array", "items": { "type": "object", @@ -54,6 +54,10 @@ "question" ] } + }, + "#": { + "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer", + "type": "string" } }, "required": [ diff --git a/Docs/Schemas/FilterConfigJsonJSC.ts b/Docs/Schemas/FilterConfigJsonJSC.ts index 6030dd61d..2f41e9521 100644 --- a/Docs/Schemas/FilterConfigJsonJSC.ts +++ b/Docs/Schemas/FilterConfigJsonJSC.ts @@ -6,7 +6,7 @@ export default { "type": "string" }, "options": { - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```", "type": "array", "items": { "type": "object", @@ -54,6 +54,10 @@ export default { "question" ] } + }, + "#": { + "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer", + "type": "string" } }, "required": [ diff --git a/Docs/Schemas/LayerConfigJson.schema.json b/Docs/Schemas/LayerConfigJson.schema.json index c3dd69f6b..4f052337c 100644 --- a/Docs/Schemas/LayerConfigJson.schema.json +++ b/Docs/Schemas/LayerConfigJson.schema.json @@ -368,7 +368,7 @@ } }, "filter": { - "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter", + "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter or will try to parse it as `layername.filterid` and us that one", "anyOf": [ { "type": "array", @@ -437,6 +437,10 @@ "theme-only" ], "type": "string" + }, + "#": { + "description": "Used for comments and/or to disable some checks\n\nno-question-hint-check: disables a check in MiscTagRenderingChecks which complains about 'div', 'span' or 'class=subtle'-HTML elements in the tagRendering", + "type": "string" } }, "required": [ @@ -654,7 +658,6 @@ } }, "required": [ - "class", "path" ] }, @@ -703,7 +706,6 @@ } }, "required": [ - "class", "path" ] }, @@ -773,6 +775,10 @@ "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ @@ -1047,7 +1053,26 @@ "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -1143,7 +1168,26 @@ "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -1304,7 +1348,7 @@ "type": "string" }, "options": { - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```", "type": "array", "items": { "type": "object", @@ -1352,6 +1396,10 @@ "question" ] } + }, + "#": { + "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer", + "type": "string" } }, "required": [ diff --git a/Docs/Schemas/LayerConfigJsonJSC.ts b/Docs/Schemas/LayerConfigJsonJSC.ts index 1b16d8156..b03cc5a5d 100644 --- a/Docs/Schemas/LayerConfigJsonJSC.ts +++ b/Docs/Schemas/LayerConfigJsonJSC.ts @@ -368,7 +368,7 @@ export default { } }, "filter": { - "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter", + "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter or will try to parse it as `layername.filterid` and us that one", "anyOf": [ { "type": "array", @@ -437,6 +437,10 @@ export default { "theme-only" ], "type": "string" + }, + "#": { + "description": "Used for comments and/or to disable some checks\n\nno-question-hint-check: disables a check in MiscTagRenderingChecks which complains about 'div', 'span' or 'class=subtle'-HTML elements in the tagRendering", + "type": "string" } }, "required": [ @@ -650,7 +654,6 @@ export default { } }, "required": [ - "class", "path" ] }, @@ -697,7 +700,6 @@ export default { } }, "required": [ - "class", "path" ] }, @@ -767,6 +769,10 @@ export default { "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ @@ -1036,7 +1042,26 @@ export default { "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -1131,7 +1156,26 @@ export default { "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -1290,7 +1334,7 @@ export default { "type": "string" }, "options": { - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```", "type": "array", "items": { "type": "object", @@ -1338,6 +1382,10 @@ export default { "question" ] } + }, + "#": { + "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer", + "type": "string" } }, "required": [ diff --git a/Docs/Schemas/LayoutConfigJson.schema.json b/Docs/Schemas/LayoutConfigJson.schema.json index b1232b4e4..76889c941 100644 --- a/Docs/Schemas/LayoutConfigJson.schema.json +++ b/Docs/Schemas/LayoutConfigJson.schema.json @@ -488,7 +488,6 @@ } }, "required": [ - "class", "path" ] }, @@ -537,7 +536,6 @@ } }, "required": [ - "class", "path" ] }, @@ -607,6 +605,10 @@ "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ @@ -881,7 +883,26 @@ "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -977,7 +998,26 @@ "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -1138,7 +1178,7 @@ "type": "string" }, "options": { - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```", "type": "array", "items": { "type": "object", @@ -1186,6 +1226,10 @@ "question" ] } + }, + "#": { + "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer", + "type": "string" } }, "required": [ @@ -1724,7 +1768,7 @@ } }, "filter": { - "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter", + "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter or will try to parse it as `layername.filterid` and us that one", "anyOf": [ { "type": "array", @@ -1793,6 +1837,10 @@ "theme-only" ], "type": "string" + }, + "#": { + "description": "Used for comments and/or to disable some checks\n\nno-question-hint-check: disables a check in MiscTagRenderingChecks which complains about 'div', 'span' or 'class=subtle'-HTML elements in the tagRendering", + "type": "string" } }, "required": [ diff --git a/Docs/Schemas/LayoutConfigJsonJSC.ts b/Docs/Schemas/LayoutConfigJsonJSC.ts index 438720be2..2172da51d 100644 --- a/Docs/Schemas/LayoutConfigJsonJSC.ts +++ b/Docs/Schemas/LayoutConfigJsonJSC.ts @@ -484,7 +484,6 @@ export default { } }, "required": [ - "class", "path" ] }, @@ -531,7 +530,6 @@ export default { } }, "required": [ - "class", "path" ] }, @@ -601,6 +599,10 @@ export default { "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ @@ -870,7 +872,26 @@ export default { "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -965,7 +986,26 @@ export default { "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -1124,7 +1164,7 @@ export default { "type": "string" }, "options": { - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```", "type": "array", "items": { "type": "object", @@ -1172,6 +1212,10 @@ export default { "question" ] } + }, + "#": { + "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer", + "type": "string" } }, "required": [ @@ -1704,7 +1748,7 @@ export default { } }, "filter": { - "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter", + "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter or will try to parse it as `layername.filterid` and us that one", "anyOf": [ { "type": "array", @@ -1773,6 +1817,10 @@ export default { "theme-only" ], "type": "string" + }, + "#": { + "description": "Used for comments and/or to disable some checks\n\nno-question-hint-check: disables a check in MiscTagRenderingChecks which complains about 'div', 'span' or 'class=subtle'-HTML elements in the tagRendering", + "type": "string" } }, "required": [ diff --git a/Docs/Schemas/LineRenderingConfigJson.schema.json b/Docs/Schemas/LineRenderingConfigJson.schema.json index d2934b5a3..c76fd695f 100644 --- a/Docs/Schemas/LineRenderingConfigJson.schema.json +++ b/Docs/Schemas/LineRenderingConfigJson.schema.json @@ -297,7 +297,6 @@ } }, "required": [ - "class", "path" ] }, diff --git a/Docs/Schemas/LineRenderingConfigJsonJSC.ts b/Docs/Schemas/LineRenderingConfigJsonJSC.ts index 60c8989fc..ba475b1ce 100644 --- a/Docs/Schemas/LineRenderingConfigJsonJSC.ts +++ b/Docs/Schemas/LineRenderingConfigJsonJSC.ts @@ -293,7 +293,6 @@ export default { } }, "required": [ - "class", "path" ] }, diff --git a/Docs/Schemas/MappingConfigJson.schema.json b/Docs/Schemas/MappingConfigJson.schema.json index f05a0c7f4..2a33419bb 100644 --- a/Docs/Schemas/MappingConfigJson.schema.json +++ b/Docs/Schemas/MappingConfigJson.schema.json @@ -24,7 +24,6 @@ } }, "required": [ - "class", "path" ] }, @@ -94,6 +93,10 @@ "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ @@ -310,7 +313,6 @@ } }, "required": [ - "class", "path" ] }, diff --git a/Docs/Schemas/MappingConfigJsonJSC.ts b/Docs/Schemas/MappingConfigJsonJSC.ts index ee9704127..d7ae48b03 100644 --- a/Docs/Schemas/MappingConfigJsonJSC.ts +++ b/Docs/Schemas/MappingConfigJsonJSC.ts @@ -24,7 +24,6 @@ export default { } }, "required": [ - "class", "path" ] }, @@ -94,6 +93,10 @@ export default { "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ @@ -306,7 +309,6 @@ export default { } }, "required": [ - "class", "path" ] }, diff --git a/Docs/Schemas/PointRenderingConfigJson.schema.json b/Docs/Schemas/PointRenderingConfigJson.schema.json index 8359175c5..cb5fbcbf2 100644 --- a/Docs/Schemas/PointRenderingConfigJson.schema.json +++ b/Docs/Schemas/PointRenderingConfigJson.schema.json @@ -317,7 +317,6 @@ } }, "required": [ - "class", "path" ] }, diff --git a/Docs/Schemas/PointRenderingConfigJsonJSC.ts b/Docs/Schemas/PointRenderingConfigJsonJSC.ts index a6cae71be..0a63aafea 100644 --- a/Docs/Schemas/PointRenderingConfigJsonJSC.ts +++ b/Docs/Schemas/PointRenderingConfigJsonJSC.ts @@ -313,7 +313,6 @@ export default { } }, "required": [ - "class", "path" ] }, diff --git a/Docs/Schemas/QuestionableTagRenderingConfigJson.schema.json b/Docs/Schemas/QuestionableTagRenderingConfigJson.schema.json index a90b75702..f7529d6d2 100644 --- a/Docs/Schemas/QuestionableTagRenderingConfigJson.schema.json +++ b/Docs/Schemas/QuestionableTagRenderingConfigJson.schema.json @@ -3,7 +3,26 @@ "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -303,7 +322,6 @@ } }, "required": [ - "class", "path" ] }, @@ -352,7 +370,6 @@ } }, "required": [ - "class", "path" ] }, @@ -422,6 +439,10 @@ "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ diff --git a/Docs/Schemas/QuestionableTagRenderingConfigJsonJSC.ts b/Docs/Schemas/QuestionableTagRenderingConfigJsonJSC.ts index 433390afe..8db0039d6 100644 --- a/Docs/Schemas/QuestionableTagRenderingConfigJsonJSC.ts +++ b/Docs/Schemas/QuestionableTagRenderingConfigJsonJSC.ts @@ -3,7 +3,26 @@ export default { "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -299,7 +318,6 @@ export default { } }, "required": [ - "class", "path" ] }, @@ -346,7 +364,6 @@ export default { } }, "required": [ - "class", "path" ] }, @@ -416,6 +433,10 @@ export default { "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ diff --git a/Docs/Schemas/RewritableConfigJson.schema.json b/Docs/Schemas/RewritableConfigJson.schema.json index ce4f58302..477a3f981 100644 --- a/Docs/Schemas/RewritableConfigJson.schema.json +++ b/Docs/Schemas/RewritableConfigJson.schema.json @@ -242,7 +242,6 @@ } }, "required": [ - "class", "path" ] }, @@ -291,7 +290,6 @@ } }, "required": [ - "class", "path" ] }, @@ -361,6 +359,10 @@ "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ diff --git a/Docs/Schemas/RewritableConfigJsonJSC.ts b/Docs/Schemas/RewritableConfigJsonJSC.ts index b9b6318b8..6c1e7fac5 100644 --- a/Docs/Schemas/RewritableConfigJsonJSC.ts +++ b/Docs/Schemas/RewritableConfigJsonJSC.ts @@ -238,7 +238,6 @@ export default { } }, "required": [ - "class", "path" ] }, @@ -285,7 +284,6 @@ export default { } }, "required": [ - "class", "path" ] }, @@ -355,6 +353,10 @@ export default { "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ diff --git a/Docs/Schemas/TagRenderingConfigJson.schema.json b/Docs/Schemas/TagRenderingConfigJson.schema.json index 3c4eff055..1f09125f4 100644 --- a/Docs/Schemas/TagRenderingConfigJson.schema.json +++ b/Docs/Schemas/TagRenderingConfigJson.schema.json @@ -81,7 +81,6 @@ } }, "required": [ - "class", "path" ] }, diff --git a/Docs/Schemas/TagRenderingConfigJsonJSC.ts b/Docs/Schemas/TagRenderingConfigJsonJSC.ts index 135d71152..f3823873a 100644 --- a/Docs/Schemas/TagRenderingConfigJsonJSC.ts +++ b/Docs/Schemas/TagRenderingConfigJsonJSC.ts @@ -81,7 +81,6 @@ export default { } }, "required": [ - "class", "path" ] }, diff --git a/Docs/Schemas/TilesourceConfigJson.schema.json b/Docs/Schemas/TilesourceConfigJson.schema.json index 46c432e90..3fdd289d9 100644 --- a/Docs/Schemas/TilesourceConfigJson.schema.json +++ b/Docs/Schemas/TilesourceConfigJson.schema.json @@ -245,7 +245,6 @@ } }, "required": [ - "class", "path" ] }, @@ -294,7 +293,6 @@ } }, "required": [ - "class", "path" ] }, @@ -364,6 +362,10 @@ "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ @@ -638,7 +640,26 @@ "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -734,7 +755,26 @@ "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -895,7 +935,7 @@ "type": "string" }, "options": { - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```", "type": "array", "items": { "type": "object", @@ -943,6 +983,10 @@ "question" ] } + }, + "#": { + "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer", + "type": "string" } }, "required": [ diff --git a/Docs/Schemas/TilesourceConfigJsonJSC.ts b/Docs/Schemas/TilesourceConfigJsonJSC.ts index 6326bf5b6..36eda59d0 100644 --- a/Docs/Schemas/TilesourceConfigJsonJSC.ts +++ b/Docs/Schemas/TilesourceConfigJsonJSC.ts @@ -241,7 +241,6 @@ export default { } }, "required": [ - "class", "path" ] }, @@ -288,7 +287,6 @@ export default { } }, "required": [ - "class", "path" ] }, @@ -358,6 +356,10 @@ export default { "type": "string" } ] + }, + "#": { + "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", + "type": "string" } }, "required": [ @@ -627,7 +629,26 @@ export default { "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -722,7 +743,26 @@ export default { "type": "object", "properties": { "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "questionHint": { + "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] }, "freeform": { "description": "Allow freeform text input from the user", @@ -881,7 +921,7 @@ export default { "type": "string" }, "options": { - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```", "type": "array", "items": { "type": "object", @@ -929,6 +969,10 @@ export default { "question" ] } + }, + "#": { + "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer", + "type": "string" } }, "required": [ diff --git a/Docs/SpecialInputElements.md b/Docs/SpecialInputElements.md index aaddec9a4..ed4c9b0f4 100644 --- a/Docs/SpecialInputElements.md +++ b/Docs/SpecialInputElements.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) Available types for text fields ================================= @@ -43,7 +43,7 @@ A simple piece of text -A longer piece of text +A longer piece of text. Uses an textArea instead of a textField @@ -104,8 +104,8 @@ options | A JSON-object of type `{ removePrefixes: string[], removePostfixes: st subarg \| doc -------- | ----- -removePrefixes | remove these snippets of text from the start of the passed string to search. This is either a list OR a hash of languages to a list -removePostfixes | remove these snippets of text from the end of the passed string to search. This is either a list OR a hash of languages to a list +removePrefixes | remove these snippets of text from the start of the passed string to search. This is either a list OR a hash of languages to a list. The individual strings are interpreted as case ignoring regexes +removePostfixes | remove these snippets of text from the end of the passed string to search. This is either a list OR a hash of languages to a list. The individual strings are interpreted as case ignoring regexes. instanceOf | A list of Q-identifier which indicates that the search results _must_ be an entity of this type, e.g. [`Q5`](https://www.wikidata.org/wiki/Q5) for humans notInstanceof | A list of Q-identifiers which indicates that the search results _must not_ be an entity of this type, e.g. [`Q79007`](https://www.wikidata.org/wiki/Q79007) to filter away all streets from the search results @@ -129,7 +129,8 @@ notInstanceof | A list of Q-identifiers which indicates that the search results "square", "plaza", ], - "nl": ["straat","plein","pad","weg",laan"] + "nl": ["straat","plein","pad","weg",laan"], + "fr":["route (de|de la|de l'| de le)"] }, "#": "Remove streets and parks from the search results:" @@ -221,7 +222,7 @@ options | A JSON-object of type `{ prefix: string, postfix: string }`. subarg \| doc -------- | ----- -prefix | Piece of text that will always be added to the front of the generated opening hours. If the OSM-data does not start with this, it will fail to parse +prefix | Piece of text that will always be added to the front of the generated opening hours. If the OSM-data does not start with this, it will fail to parse. postfix | Piece of text that will always be added to the end of the generated opening hours @@ -254,4 +255,4 @@ postfix | Piece of text that will always be added to the end of the generated op Shows a color picker -This document is autogenerated from [UI/Input/ValidatedTextField.ts](https://github.com/pietervdvn/MapComplete/blob/develop/UI/Input/ValidatedTextField.ts) \ No newline at end of file +This document is autogenerated from [UI/Input/ValidatedTextField.ts](https://github.com/pietervdvn/MapComplete/blob/develop/UI/Input/ValidatedTextField.ts) diff --git a/Docs/SpecialRenderings.md b/Docs/SpecialRenderings.md index 0426ec8ea..29b377775 100644 --- a/Docs/SpecialRenderings.md +++ b/Docs/SpecialRenderings.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) Special tag renderings ======================== @@ -17,26 +17,32 @@ General usage is `{func_name()}`, `{func_name(arg, someotherarg)}` or `{func_nam Instead of using `{"render": {"en": "{some_special_visualisation(some_arg, some other really long message, more args)} , "nl": "{some_special_visualisation(some_arg, een boodschap in een andere taal, more args)}}`, one can also write -`{ + +``` +{ "render": { "special": { "type": "some_special_visualisation", - "before": { - "en": "Some text to prefix before the special element (e.g. a title)", - "nl": "Een tekst om voor het element te zetten (bv. een titel)" - }, - "after": { - "en": "Some text to put after the element, e.g. a footer" - }, "argname": "some_arg", "message": { "en": "some other really long message", "nl": "een boodschap in een andere taal" }, "other_arg_name": "more args" + }, + "before": { + "en": "Some text to prefix before the special element (e.g. a title)", + "nl": "Een tekst om voor het element te zetten (bv. een titel)" + }, + "after": { + "en": "Some text to put after the element, e.g. a footer" } } -}` +} +``` + + +In other words: use `{ "before": ..., "after": ..., "special": {"type": ..., "argname": ...argvalue...}`. The args are in the `special` block; an argvalue can be a string, a translation or another value. (Refer to class `RewriteSpecial` in case of problems) ## Table of contents @@ -112,6 +118,8 @@ Instead of using `{"render": {"en": "{some_special_visualisation(some_arg, some * [Example usage of title](#example-usage-of-title) + [maproulette_task](#maproulette_task) * [Example usage of maproulette_task](#example-usage-of-maproulette_task) + + [maproulette_set_status](#maproulette_set_status) + * [Example usage of maproulette_set_status](#example-usage-of-maproulette_set_status) + [statistics](#statistics) * [Example usage of statistics](#example-usage-of-statistics) + [send_email](#send_email) @@ -331,7 +339,7 @@ snap_onto_layers | _undefined_ | If a way of the given layer(s) is closeby, will max_snap_distance | 5 | The maximum distance that the imported point will be moved to snap onto a way in an already existing layer (in meters). This is previewed to the contributor, similar to the 'add new point'-action of MapComplete note_id | _undefined_ | If given, this key will be read. The corresponding note on OSM will be closed, stating 'imported' location_picker | photo | Chooses the background for the precise location picker, options are 'map', 'photo' or 'osmbasedmap' or 'none' if the precise input picker should be disabled -maproulette_id | _undefined_ | If given, the maproulette challenge will be marked as fixed +maproulette_id | _undefined_ | The property name of the maproulette_id - this is probably `mr_taskId`. If given, the maproulette challenge will be marked as fixed. Only use this if part of a maproulette-layer. #### Example usage of import_button @@ -779,7 +787,23 @@ Id-key | id | The property name where the ID of the note to close can be found #### Example usage of add_image_to_note - `{add_image_to_note(id)}` + The following example sets the status to '2' (false positive) + +```json +{ + "id": "mark_duplicate", + "render": { + "special": { + "type": "maproulette_set_status", + "message": { + "en": "Mark as not found or false positive" + }, + "status": "2", + "image": "close" + } + } +} +``` @@ -795,7 +819,9 @@ Id-key | id | The property name where the ID of the note to close can be found ### maproulette_task - Show details of a MapRoulette task + Fetches the metadata of MapRoulette campaign that this task is part of and shows those details (namely `title`, `description` and `instruction`). + +This reads the property `mr_challengeId` to detect the parent campaign. #### Example usage of maproulette_task @@ -803,6 +829,25 @@ Id-key | id | The property name where the ID of the note to close can be found +### maproulette_set_status + + Change the status of the given MapRoulette task + +name | default | description +------ | --------- | ------------- +message | _undefined_ | A message to show to the user +image | confirm | Image to show +message_confirm | _undefined_ | What to show when the task is closed, either by the user or was already closed. +status | 1 | A statuscode to apply when the button is clicked. 1 = `close`, 2 = `false_positive`, 3 = `skip`, 4 = `deleted`, 5 = `already fixed` (on the map, e.g. for duplicates), 6 = `too hard` +maproulette_id | mr_taskId | The property name containing the maproulette id + + +#### Example usage of maproulette_set_status + + `{maproulette_set_status(,confirm,,1,mr_taskId)}` + + + ### statistics Show general statistics about the elements currently in view. Intended to use on the `current_view`-layer @@ -849,8 +894,8 @@ tagrendering | _undefined_ | An entire tagRenderingConfig "special": { "type": "multi", "key": "_doors_from_building_properties", - "tagRendering": { - "render": "The building containing this feature has a door of width {entrance:width}" + "tagrendering": { + "en": "The building containing this feature has a door of width {entrance:width}" } } } @@ -883,4 +928,4 @@ icon | ./assets/svg/robot.svg | The icon to show on the button `{auto_apply(,,,,./assets/svg/robot.svg)}` -This document is autogenerated from [UI/SpecialVisualizations.ts](https://github.com/pietervdvn/MapComplete/blob/develop/UI/SpecialVisualizations.ts) \ No newline at end of file +This document is autogenerated from [UI/SpecialVisualizations.ts](https://github.com/pietervdvn/MapComplete/blob/develop/UI/SpecialVisualizations.ts) diff --git a/Docs/TagInfo/mapcomplete_blind_osm.json b/Docs/TagInfo/mapcomplete_blind_osm.json index 6aac398dd..8c2f5e3dd 100644 --- a/Docs/TagInfo/mapcomplete_blind_osm.json +++ b/Docs/TagInfo/mapcomplete_blind_osm.json @@ -846,7 +846,7 @@ }, { "key": "shelter", - "description": "Layer 'Transit Stops' shows shelter=no with a fixed text, namely 'This stop does not have a shelter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OSM for the blind')", + "description": "Layer 'Transit Stops' shows shelter=no with a fixed text, namely 'This stop does not have a shelter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OSM for the blind')", "value": "no" }, { @@ -861,7 +861,7 @@ }, { "key": "bench", - "description": "Layer 'Transit Stops' shows bench=no with a fixed text, namely 'This stop does not have a bench' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OSM for the blind')", + "description": "Layer 'Transit Stops' shows bench=no with a fixed text, namely 'This stop does not have a bench' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OSM for the blind')", "value": "no" }, { @@ -876,7 +876,7 @@ }, { "key": "bin", - "description": "Layer 'Transit Stops' shows bin=no with a fixed text, namely 'This stop does not have a bin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OSM for the blind')", + "description": "Layer 'Transit Stops' shows bin=no with a fixed text, namely 'This stop does not have a bin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OSM for the blind')", "value": "no" }, { @@ -911,7 +911,7 @@ }, { "key": "tactile_paving", - "description": "Layer 'Transit Stops' shows tactile_paving=no with a fixed text, namely 'This stop does not have tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OSM for the blind')", + "description": "Layer 'Transit Stops' shows tactile_paving=no with a fixed text, namely 'This stop does not have tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OSM for the blind')", "value": "no" }, { @@ -921,7 +921,7 @@ }, { "key": "lit", - "description": "Layer 'Transit Stops' shows lit=no with a fixed text, namely 'This stop is not lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OSM for the blind')", + "description": "Layer 'Transit Stops' shows lit=no with a fixed text, namely 'This stop is not lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OSM for the blind')", "value": "no" }, { @@ -951,7 +951,7 @@ }, { "key": "departures_board", - "description": "Layer 'Transit Stops' shows departures_board=no with a fixed text, namely 'This stop does not have a departures board' (in the MapComplete.osm.be theme 'OSM for the blind')", + "description": "Layer 'Transit Stops' shows departures_board=no with a fixed text, namely 'This stop does not have a departures board' (in the MapComplete.osm.be theme 'OSM for the blind')", "value": "no" }, { diff --git a/Docs/TagInfo/mapcomplete_cafes_and_pubs.json b/Docs/TagInfo/mapcomplete_cafes_and_pubs.json index 3ae5d8bcf..bd881af75 100644 --- a/Docs/TagInfo/mapcomplete_cafes_and_pubs.json +++ b/Docs/TagInfo/mapcomplete_cafes_and_pubs.json @@ -2,7 +2,7 @@ "data_format": 1, "project": { "name": "MapComplete Cafés and pubs", - "description": "Pubs and bars", + "description": "Coffeehouses, pubs and bars", "project_url": "https://mapcomplete.osm.be/cafes_and_pubs", "doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/", "icon_url": "https://mapcomplete.osm.be/assets/layers/cafe_pub/pub.svg", diff --git a/Docs/TagInfo/mapcomplete_clock.json b/Docs/TagInfo/mapcomplete_clock.json new file mode 100644 index 000000000..3db6a3ad2 --- /dev/null +++ b/Docs/TagInfo/mapcomplete_clock.json @@ -0,0 +1,169 @@ +{ + "data_format": 1, + "project": { + "name": "MapComplete Clocks", + "description": "Map showing all public clocks", + "project_url": "https://mapcomplete.osm.be/clock", + "doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/", + "icon_url": "https://mapcomplete.osm.be/assets/layers/clock/clock.svg", + "contact_name": "Pieter Vander Vennet", + "contact_email": "pietervdvn@posteo.net" + }, + "tags": [ + { + "key": "amenity", + "description": "The MapComplete theme Clocks has a layer Clocks showing features with this tag", + "value": "clock" + }, + { + "key": "image", + "description": "The layer 'Clocks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Clocks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Clocks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Clocks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "support", + "description": "Layer 'Clocks' shows support=pole with a fixed text, namely 'This clock is mounted on a pole' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "pole" + }, + { + "key": "support", + "description": "Layer 'Clocks' shows support=wall_mounted with a fixed text, namely 'This clock is mounted on a wall' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "wall_mounted" + }, + { + "key": "support", + "description": "Layer 'Clocks' shows support=billboard with a fixed text, namely 'This clock is part of a billboard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "billboard" + }, + { + "key": "support", + "description": "Layer 'Clocks' shows support=ground with a fixed text, namely 'This clock is on the ground' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "ground" + }, + { + "key": "display", + "description": "Layer 'Clocks' shows display=analog with a fixed text, namely 'This clock displays the time with hands' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "analog" + }, + { + "key": "display", + "description": "Layer 'Clocks' shows display=digital with a fixed text, namely 'This clock displays the time with digits' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "digital" + }, + { + "key": "display", + "description": "Layer 'Clocks' shows display=sundial with a fixed text, namely 'This clock displays the time with a sundial' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "sundial" + }, + { + "key": "display", + "description": "Layer 'Clocks' shows display=unorthodox with a fixed text, namely 'This clock displays the time in a non-standard way, e.g using binary, water or something else' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "unorthodox" + }, + { + "key": "visibility", + "description": "Layer 'Clocks' shows visibility=house with a fixed text, namely 'This clock is visible from about 5 meters away (small wall-mounted clock)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "house" + }, + { + "key": "visibility", + "description": "Layer 'Clocks' shows visibility=street with a fixed text, namely 'This clock is visible from about 20 meters away (medium size billboard clock)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "street" + }, + { + "key": "visibility", + "description": "Layer 'Clocks' shows visibility=area with a fixed text, namely 'This clock is visible from more than 20 meters away (church clock)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "area" + }, + { + "key": "date", + "description": "Layer 'Clocks' shows date=yes with a fixed text, namely 'This clock also displays the date' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "yes" + }, + { + "key": "date", + "description": "Layer 'Clocks' shows date=no with a fixed text, namely 'This clock does not display the date' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "no" + }, + { + "key": "date", + "description": "Layer 'Clocks' shows with a fixed text, namely 'This clock does probably not display the date' (in the MapComplete.osm.be theme 'Clocks') Picking this answer will delete the key date.", + "value": "" + }, + { + "key": "thermometer", + "description": "Layer 'Clocks' shows thermometer=yes with a fixed text, namely 'This clock also displays the temperature' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "yes" + }, + { + "key": "thermometer", + "description": "Layer 'Clocks' shows thermometer=no with a fixed text, namely 'This clock does not display the temperature' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "no" + }, + { + "key": "thermometer", + "description": "Layer 'Clocks' shows with a fixed text, namely 'This clock does probably not display the temperature' (in the MapComplete.osm.be theme 'Clocks') Picking this answer will delete the key thermometer.", + "value": "" + }, + { + "key": "barometer", + "description": "Layer 'Clocks' shows barometer=yes with a fixed text, namely 'This clock also displays the air pressure' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "yes" + }, + { + "key": "barometer", + "description": "Layer 'Clocks' shows barometer=no with a fixed text, namely 'This clock does not display the air pressure' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "no" + }, + { + "key": "barometer", + "description": "Layer 'Clocks' shows with a fixed text, namely 'This clock does probably not display the air pressure' (in the MapComplete.osm.be theme 'Clocks') Picking this answer will delete the key barometer.", + "value": "" + }, + { + "key": "hygrometer", + "description": "Layer 'Clocks' shows hygrometer=yes with a fixed text, namely 'This clock also displays the humidity' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "yes" + }, + { + "key": "hygrometer", + "description": "Layer 'Clocks' shows hygrometer=no with a fixed text, namely 'This clock does not display the humidity' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "no" + }, + { + "key": "hygrometer", + "description": "Layer 'Clocks' shows with a fixed text, namely 'This clock does probably not display the humidity' (in the MapComplete.osm.be theme 'Clocks') Picking this answer will delete the key hygrometer.", + "value": "" + }, + { + "key": "faces", + "description": "Layer 'Clocks' shows and asks freeform values for key 'faces' (in the MapComplete.osm.be theme 'Clocks')" + }, + { + "key": "faces", + "description": "Layer 'Clocks' shows faces=1 with a fixed text, namely 'This clock has one face' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "1" + }, + { + "key": "faces", + "description": "Layer 'Clocks' shows faces=2 with a fixed text, namely 'This clock has two faces' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "2" + }, + { + "key": "faces", + "description": "Layer 'Clocks' shows faces=4 with a fixed text, namely 'This clock has four faces' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Clocks')", + "value": "4" + } + ] +} \ No newline at end of file diff --git a/Docs/TagInfo/mapcomplete_cycle_infra.json b/Docs/TagInfo/mapcomplete_cycle_infra.json index 276e0b688..29a12cf98 100644 --- a/Docs/TagInfo/mapcomplete_cycle_infra.json +++ b/Docs/TagInfo/mapcomplete_cycle_infra.json @@ -591,12 +591,12 @@ }, { "key": "bicycle", - "description": "Layer 'Barriers' shows bicycle=yes with a fixed text, namely 'A cyclist can go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')", + "description": "Layer 'Barriers' shows bicycle=yes with a fixed text, namely 'A cyclist can go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure') (This is only shown if _referencing_ways~.+)", "value": "yes" }, { "key": "bicycle", - "description": "Layer 'Barriers' shows bicycle=no with a fixed text, namely 'A cyclist can not go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')", + "description": "Layer 'Barriers' shows bicycle=no with a fixed text, namely 'A cyclist can not go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure') (This is only shown if _referencing_ways~.+)", "value": "no" }, { @@ -656,7 +656,7 @@ }, { "key": "maxwidth:physical", - "description": "Layer 'Barriers' shows and asks freeform values for key 'maxwidth:physical' (in the MapComplete.osm.be theme 'Bicycle infrastructure') (This is only shown if cycle_barrier!=double&cycle_barrier!=triple)" + "description": "Layer 'Barriers' shows and asks freeform values for key 'maxwidth:physical' (in the MapComplete.osm.be theme 'Bicycle infrastructure') (This is only shown if cycle_barrier!=double&cycle_barrier!=triple&_referencing_ways~.+)" }, { "key": "width:separation", diff --git a/Docs/TagInfo/mapcomplete_cyclofix.json b/Docs/TagInfo/mapcomplete_cyclofix.json index 61b02998f..d1e360101 100644 --- a/Docs/TagInfo/mapcomplete_cyclofix.json +++ b/Docs/TagInfo/mapcomplete_cyclofix.json @@ -133,16 +133,6 @@ "description": "The MapComplete theme Cyclofix - an open map for cyclists has a layer Bike repair/shop showing features with this tag", "value": "bicycle" }, - { - "key": "amenity", - "description": "The MapComplete theme Cyclofix - an open map for cyclists has a layer Bike repair/shop showing features with this tag", - "value": "bicycle_rental" - }, - { - "key": "network", - "description": "The MapComplete theme Cyclofix - an open map for cyclists has a layer Bike repair/shop showing features with this tag", - "value": "" - }, { "key": "shop", "description": "The MapComplete theme Cyclofix - an open map for cyclists has a layer Bike repair/shop showing features with this tag", diff --git a/Docs/TagInfo/mapcomplete_education.json b/Docs/TagInfo/mapcomplete_education.json index a4a0c2f04..510ba3474 100644 --- a/Docs/TagInfo/mapcomplete_education.json +++ b/Docs/TagInfo/mapcomplete_education.json @@ -2,7 +2,7 @@ "data_format": 1, "project": { "name": "MapComplete Education", - "description": "On this map, you'll find information about all types of schools and eduction and can easily add more information", + "description": "On this map, you'll find information about all types of schools and education and can easily add more information", "project_url": "https://mapcomplete.osm.be/education", "doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/", "icon_url": "https://mapcomplete.osm.be/assets/layers/school/college.svg", diff --git a/Docs/TagInfo/mapcomplete_etymology.json b/Docs/TagInfo/mapcomplete_etymology.json index ad4a64d6c..1c0b0f737 100644 --- a/Docs/TagInfo/mapcomplete_etymology.json +++ b/Docs/TagInfo/mapcomplete_etymology.json @@ -12,56 +12,56 @@ "tags": [ { "key": "name:etymology:wikidata", - "description": "The MapComplete theme Open Etymology Map has a layer Has etymolgy showing features with this tag" + "description": "The MapComplete theme Open Etymology Map has a layer Has etymology showing features with this tag" }, { "key": "name:etymology", - "description": "The MapComplete theme Open Etymology Map has a layer Has etymolgy showing features with this tag" + "description": "The MapComplete theme Open Etymology Map has a layer Has etymology showing features with this tag" }, { "key": "image", - "description": "The layer 'Has etymolgy shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "mapillary", - "description": "The layer 'Has etymolgy shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikidata", - "description": "The layer 'Has etymolgy shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikipedia", - "description": "The layer 'Has etymolgy shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "name:etymology:wikidata", - "description": "Layer 'Has etymolgy' shows and asks freeform values for key 'name:etymology:wikidata' (in the MapComplete.osm.be theme 'Open Etymology Map') (This is only shown if name:etymology!=unknown)" + "description": "Layer 'Has etymology' shows and asks freeform values for key 'name:etymology:wikidata' (in the MapComplete.osm.be theme 'Open Etymology Map') (This is only shown if name:etymology!=unknown)" }, { "key": "name:etymology", - "description": "Layer 'Has etymolgy' shows and asks freeform values for key 'name:etymology' (in the MapComplete.osm.be theme 'Open Etymology Map') (This is only shown if name:etymology~.+|)" + "description": "Layer 'Has etymology' shows and asks freeform values for key 'name:etymology' (in the MapComplete.osm.be theme 'Open Etymology Map') (This is only shown if name:etymology~.+|)" }, { "key": "name:etymology", - "description": "Layer 'Has etymolgy' shows name:etymology=unknown with a fixed text, namely 'The origin of this name is unknown in all literature' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Etymology Map') (This is only shown if name:etymology~.+|)", + "description": "Layer 'Has etymology' shows name:etymology=unknown with a fixed text, namely 'The origin of this name is unknown in all literature' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Etymology Map') (This is only shown if name:etymology~.+|)", "value": "unknown" }, { "key": "image", - "description": "The layer 'Has etymolgy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "mapillary", - "description": "The layer 'Has etymolgy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikidata", - "description": "The layer 'Has etymolgy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikipedia", - "description": "The layer 'Has etymolgy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "name", diff --git a/Docs/TagInfo/mapcomplete_hailhydrant.json b/Docs/TagInfo/mapcomplete_hailhydrant.json index 43ef61eb7..4785c5fdf 100644 --- a/Docs/TagInfo/mapcomplete_hailhydrant.json +++ b/Docs/TagInfo/mapcomplete_hailhydrant.json @@ -19,11 +19,6 @@ "key": "colour", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'colour' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations')" }, - { - "key": "colour", - "description": "Layer 'Map of hydrants' shows with a fixed text, namely 'The hydrant color is unknown.' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations') Picking this answer will delete the key colour.", - "value": "" - }, { "key": "colour", "description": "Layer 'Map of hydrants' shows colour=yellow with a fixed text, namely 'The hydrant color is yellow.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations')", @@ -38,11 +33,6 @@ "key": "fire_hydrant:type", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'fire_hydrant:type' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations')" }, - { - "key": "fire_hydrant:type", - "description": "Layer 'Map of hydrants' shows with a fixed text, namely 'The hydrant type is unknown.' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations') Picking this answer will delete the key fire_hydrant:type.", - "value": "" - }, { "key": "fire_hydrant:type", "description": "Layer 'Map of hydrants' shows fire_hydrant:type=pillar with a fixed text, namely 'Pillar type.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations')", @@ -92,6 +82,10 @@ "key": "fire_hydrant:diameter", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'fire_hydrant:diameter' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations')" }, + { + "key": "couplings", + "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'couplings' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations')" + }, { "key": "couplings:type", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'couplings:type' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations')" diff --git a/Docs/TagInfo/mapcomplete_healthcare.json b/Docs/TagInfo/mapcomplete_healthcare.json index f29eb12e8..7557e015e 100644 --- a/Docs/TagInfo/mapcomplete_healthcare.json +++ b/Docs/TagInfo/mapcomplete_healthcare.json @@ -216,10 +216,25 @@ "description": "The MapComplete theme Healthcare has a layer Hospitals showing features with this tag", "value": "hospital" }, + { + "key": "amenity", + "description": "The MapComplete theme Healthcare has a layer Hospitals showing features with this tag", + "value": "clinic" + }, { "key": "name", "description": "Layer 'Hospitals' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Healthcare')" }, + { + "key": "amenity", + "description": "Layer 'Hospitals' shows amenity=clinic with a fixed text, namely 'This is a clinic - patients can not stay overnight' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "clinic" + }, + { + "key": "amenity", + "description": "Layer 'Hospitals' shows amenity=hospital with a fixed text, namely 'This is a hospital - patients can be admitted here for multiple days' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hospital" + }, { "key": "phone", "description": "Layer 'Hospitals' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Healthcare')" @@ -311,6 +326,1989 @@ "key": "wheelchair", "description": "Layer 'Pharmacies' shows wheelchair=limited with a fixed text, namely 'This pharmacy has limited access for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", "value": "limited" + }, + { + "key": "shop", + "description": "The MapComplete theme Healthcare has a layer Shop showing features with this tag" + }, + { + "key": "shop", + "description": "The MapComplete theme Healthcare has a layer Shop showing features with this tag", + "value": "medical_supply" + }, + { + "key": "shop", + "description": "The MapComplete theme Healthcare has a layer Shop showing features with this tag", + "value": "hearing_aids" + }, + { + "key": "shop", + "description": "The MapComplete theme Healthcare has a layer Shop showing features with this tag", + "value": "optician" + }, + { + "key": "image", + "description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "name", + "description": "Layer 'Shop' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows and asks freeform values for key 'shop' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=agrarian with a fixed text, namely 'Farm Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "agrarian" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=alcohol with a fixed text, namely 'Liquor Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "alcohol" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=anime with a fixed text, namely 'Anime / Manga Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "anime" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=antiques with a fixed text, namely 'Antiques Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "antiques" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=appliance with a fixed text, namely 'Appliance Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "appliance" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=art with a fixed text, namely 'Art Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "art" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=baby_goods with a fixed text, namely 'Baby Goods Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "baby_goods" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bag with a fixed text, namely 'Bag/Luggage Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bag" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bakery with a fixed text, namely 'Bakery' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bakery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bathroom_furnishing with a fixed text, namely 'Bathroom Furnishing Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bathroom_furnishing" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=beauty with a fixed text, namely 'Beauty Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "beauty" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bed with a fixed text, namely 'Bedding/Mattress Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bed" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=beverages with a fixed text, namely 'Beverage Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "beverages" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bicycle with a fixed text, namely 'Bicycle Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bicycle" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=boat with a fixed text, namely 'Boat Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "boat" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bookmaker with a fixed text, namely 'Bookmaker' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bookmaker" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=books with a fixed text, namely 'Book Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "books" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=brewing_supplies with a fixed text, namely 'Brewing Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "brewing_supplies" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=butcher with a fixed text, namely 'Butcher' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "butcher" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=camera with a fixed text, namely 'Camera Equipment Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "camera" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=candles with a fixed text, namely 'Candle Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "candles" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=cannabis with a fixed text, namely 'Cannabis Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "cannabis" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=car with a fixed text, namely 'Car Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "car" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=car_parts with a fixed text, namely 'Car Parts Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "car_parts" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=car_repair with a fixed text, namely 'Car Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "car_repair" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=caravan with a fixed text, namely 'RV Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "caravan" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=carpet with a fixed text, namely 'Carpet Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "carpet" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=catalogue with a fixed text, namely 'Catalog Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "catalogue" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=charity with a fixed text, namely 'Charity Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "charity" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=cheese with a fixed text, namely 'Cheese Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "cheese" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=chemist with a fixed text, namely 'Drugstore' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "chemist" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=chocolate with a fixed text, namely 'Chocolate Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "chocolate" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=clothes with a fixed text, namely 'Clothing Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "clothes" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=coffee with a fixed text, namely 'Coffee Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "coffee" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=collector with a fixed text, namely 'Collectibles Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "collector" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=computer with a fixed text, namely 'Computer Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "computer" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=confectionery with a fixed text, namely 'Candy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "confectionery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=convenience with a fixed text, namely 'Convenience Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "convenience" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=copyshop with a fixed text, namely 'Copy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "copyshop" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=cosmetics with a fixed text, namely 'Cosmetics Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "cosmetics" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=country_store with a fixed text, namely 'Country Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "country_store" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=craft with a fixed text, namely 'Arts & Crafts Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "craft" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=curtain with a fixed text, namely 'Curtain Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "curtain" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=dairy with a fixed text, namely 'Dairy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "dairy" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=deli with a fixed text, namely 'Deli' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "deli" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=department_store with a fixed text, namely 'Department Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "department_store" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=doityourself with a fixed text, namely 'DIY Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "doityourself" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=doors with a fixed text, namely 'Door Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "doors" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=dry_cleaning with a fixed text, namely 'Dry Cleaner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "dry_cleaning" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=e-cigarette with a fixed text, namely 'E-Cigarette Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "e-cigarette" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=electrical with a fixed text, namely 'Electrical Equipment Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "electrical" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=electronics with a fixed text, namely 'Electronics Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "electronics" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=erotic with a fixed text, namely 'Erotic Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "erotic" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=fabric with a fixed text, namely 'Fabric Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "fabric" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=farm with a fixed text, namely 'Produce Stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "farm" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=fashion_accessories with a fixed text, namely 'Fashion Accessories Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "fashion_accessories" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=fireplace with a fixed text, namely 'Fireplace Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "fireplace" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=fishing with a fixed text, namely 'Fishing Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "fishing" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=flooring with a fixed text, namely 'Flooring Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "flooring" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=florist with a fixed text, namely 'Florist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "florist" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=frame with a fixed text, namely 'Framing Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "frame" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=frozen_food with a fixed text, namely 'Frozen Food Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "frozen_food" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=fuel with a fixed text, namely 'Fuel Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "fuel" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=funeral_directors with a fixed text, namely 'Funeral Home' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "funeral_directors" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=furniture with a fixed text, namely 'Furniture Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "furniture" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=games with a fixed text, namely 'Tabletop Game Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "games" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=garden_centre with a fixed text, namely 'Garden Center' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "garden_centre" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=gas with a fixed text, namely 'Bottled Gas Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "gas" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=general with a fixed text, namely 'General Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "general" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=gift with a fixed text, namely 'Gift Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "gift" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=greengrocer with a fixed text, namely 'Greengrocer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "greengrocer" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hairdresser with a fixed text, namely 'Hairdresser' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hairdresser" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hairdresser_supply with a fixed text, namely 'Hairdresser Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hairdresser_supply" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hardware with a fixed text, namely 'Hardware Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hardware" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=health_food with a fixed text, namely 'Health Food Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "health_food" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hearing_aids with a fixed text, namely 'Hearing Aids Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hearing_aids" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=herbalist with a fixed text, namely 'Herbalist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "herbalist" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hifi with a fixed text, namely 'Hifi Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hifi" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hobby with a fixed text, namely 'Hobby Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hobby" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=household_linen with a fixed text, namely 'Household Linen Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "household_linen" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=houseware with a fixed text, namely 'Houseware Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "houseware" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hunting with a fixed text, namely 'Hunting Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hunting" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=interior_decoration with a fixed text, namely 'Interior Decoration Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "interior_decoration" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=jewelry with a fixed text, namely 'Jewelry Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "jewelry" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=kiosk with a fixed text, namely 'Kiosk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "kiosk" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=kitchen with a fixed text, namely 'Kitchen Design Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "kitchen" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=laundry with a fixed text, namely 'Laundry' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "laundry" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=leather with a fixed text, namely 'Leather Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "leather" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=lighting with a fixed text, namely 'Lighting Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "lighting" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=locksmith with a fixed text, namely 'Locksmith' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "locksmith" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=lottery with a fixed text, namely 'Lottery Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "lottery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=mall with a fixed text, namely 'Mall' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "mall" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=massage with a fixed text, namely 'Massage Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "massage" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=medical_supply with a fixed text, namely 'Medical Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "medical_supply" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=military_surplus with a fixed text, namely 'Military Surplus Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "military_surplus" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=mobile_phone with a fixed text, namely 'Mobile Phone Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "mobile_phone" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=model with a fixed text, namely 'Model Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "model" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=money_lender with a fixed text, namely 'Money Lender' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "money_lender" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=motorcycle with a fixed text, namely 'Motorcycle Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "motorcycle" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=motorcycle_repair with a fixed text, namely 'Motorcycle Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "motorcycle_repair" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=music with a fixed text, namely 'Music Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "music" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=musical_instrument with a fixed text, namely 'Musical Instrument Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "musical_instrument" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=newsagent with a fixed text, namely 'Newspaper/Magazine Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "newsagent" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=nutrition_supplements with a fixed text, namely 'Nutrition Supplements Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "nutrition_supplements" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=optician with a fixed text, namely 'Optician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "optician" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=outdoor with a fixed text, namely 'Outdoors Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "outdoor" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=outpost with a fixed text, namely 'Online Retailer Outpost' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "outpost" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=paint with a fixed text, namely 'Paint Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "paint" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=party with a fixed text, namely 'Party Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "party" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pastry with a fixed text, namely 'Pastry Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pastry" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pawnbroker with a fixed text, namely 'Pawn Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pawnbroker" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=perfumery with a fixed text, namely 'Perfume Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "perfumery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pet with a fixed text, namely 'Pet Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pet" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pet_grooming with a fixed text, namely 'Pet Grooming Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pet_grooming" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=photo with a fixed text, namely 'Photography Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "photo" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pottery with a fixed text, namely 'Pottery Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pottery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=printer_ink with a fixed text, namely 'Printer Ink Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "printer_ink" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=psychic with a fixed text, namely 'Psychic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "psychic" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pyrotechnics with a fixed text, namely 'Fireworks Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pyrotechnics" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=radiotechnics with a fixed text, namely 'Radio/Electronic Component Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "radiotechnics" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=religion with a fixed text, namely 'Religious Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "religion" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=rental with a fixed text, namely 'Rental Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "rental" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=repair with a fixed text, namely 'Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "repair" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=scuba_diving with a fixed text, namely 'Scuba Diving Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "scuba_diving" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=seafood with a fixed text, namely 'Seafood Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "seafood" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=second_hand with a fixed text, namely 'Consignment/Thrift Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "second_hand" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=sewing with a fixed text, namely 'Sewing Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "sewing" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=shoe_repair with a fixed text, namely 'Shoe Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "shoe_repair" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=shoes with a fixed text, namely 'Shoe Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "shoes" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=spices with a fixed text, namely 'Spice Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "spices" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=sports with a fixed text, namely 'Sporting Goods Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "sports" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=stationery with a fixed text, namely 'Stationery Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "stationery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=storage_rental with a fixed text, namely 'Storage Rental' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "storage_rental" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=supermarket with a fixed text, namely 'Supermarket' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "supermarket" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=swimming_pool with a fixed text, namely 'Pool Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "swimming_pool" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tailor with a fixed text, namely 'Tailor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tailor" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tattoo with a fixed text, namely 'Tattoo Parlor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tattoo" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tea with a fixed text, namely 'Tea Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tea" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=telecommunication with a fixed text, namely 'Telecom Retail Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "telecommunication" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=ticket with a fixed text, namely 'Ticket Seller' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "ticket" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tiles with a fixed text, namely 'Tile Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tiles" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tobacco with a fixed text, namely 'Tobacco Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tobacco" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tool_hire with a fixed text, namely 'Tool Rental' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tool_hire" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=toys with a fixed text, namely 'Toy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "toys" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=trade with a fixed text, namely 'Trade Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "trade" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=travel_agency with a fixed text, namely 'Travel Agency' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "travel_agency" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=trophy with a fixed text, namely 'Trophy Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "trophy" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tyres with a fixed text, namely 'Tire Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tyres" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=vacuum_cleaner with a fixed text, namely 'Vacuum Cleaner Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "vacuum_cleaner" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=variety_store with a fixed text, namely 'Variety Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "variety_store" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=video with a fixed text, namely 'Video Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "video" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=video_games with a fixed text, namely 'Video Game Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "video_games" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=watches with a fixed text, namely 'Watches Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "watches" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=water with a fixed text, namely 'Drinking Water Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "water" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=water_sports with a fixed text, namely 'Watersport/Swim Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "water_sports" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=weapons with a fixed text, namely 'Weapon Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "weapons" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=wholesale with a fixed text, namely 'Wholesale Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "wholesale" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=wigs with a fixed text, namely 'Wig Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "wigs" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=window_blind with a fixed text, namely 'Window Blind Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "window_blind" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=wine with a fixed text, namely 'Wine Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "wine" + }, + { + "key": "opening_hours", + "description": "Layer 'Shop' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "website", + "description": "Layer 'Shop' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "contact:website", + "description": "Layer 'Shop' shows contact:website~.+ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "email", + "description": "Layer 'Shop' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "contact:email", + "description": "Layer 'Shop' shows contact:email~.+ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "phone", + "description": "Layer 'Shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "contact:phone", + "description": "Layer 'Shop' shows contact:phone~.+ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "payment:cash", + "description": "Layer 'Shop' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "yes" + }, + { + "key": "payment:cards", + "description": "Layer 'Shop' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "yes" + }, + { + "key": "level", + "description": "Layer 'Shop' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "location", + "description": "Layer 'Shop' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Healthcare')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Shop' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Healthcare') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "-1" + }, + { + "key": "service:print:A4", + "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", + "value": "yes" + }, + { + "key": "service:print:A3", + "description": "Layer 'Shop' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", + "value": "yes" + }, + { + "key": "service:print:A2", + "description": "Layer 'Shop' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", + "value": "yes" + }, + { + "key": "service:print:A1", + "description": "Layer 'Shop' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", + "value": "yes" + }, + { + "key": "service:print:A0", + "description": "Layer 'Shop' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", + "value": "yes" + }, + { + "key": "internet_access", + "description": "Layer 'Shop' shows internet_access=wlan with a fixed text, namely 'This place offers wireless internet access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "wlan" + }, + { + "key": "internet_access", + "description": "Layer 'Shop' shows internet_access=no with a fixed text, namely 'This place does not offer internet access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "no" + }, + { + "key": "internet_access", + "description": "Layer 'Shop' shows internet_access=yes with a fixed text, namely 'This place offers internet access' (in the MapComplete.osm.be theme 'Healthcare')", + "value": "yes" + }, + { + "key": "internet_access", + "description": "Layer 'Shop' shows internet_access=terminal with a fixed text, namely 'This place offers internet access via a terminal or computer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "terminal" + }, + { + "key": "internet_access", + "description": "Layer 'Shop' shows internet_access=wired with a fixed text, namely 'This place offers wired internet access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "wired" + }, + { + "key": "internet_access:fee", + "description": "Layer 'Shop' shows internet_access:fee=yes with a fixed text, namely 'There is a fee for the internet access at this place' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if internet_access!=no&internet_access~.+)", + "value": "yes" + }, + { + "key": "internet_access:fee", + "description": "Layer 'Shop' shows internet_access:fee=no with a fixed text, namely 'Internet access is free at this place' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if internet_access!=no&internet_access~.+)", + "value": "no" + }, + { + "key": "internet_access:fee", + "description": "Layer 'Shop' shows internet_access:fee=customers with a fixed text, namely 'Internet access is free at this place, for customers only' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if internet_access!=no&internet_access~.+)", + "value": "customers" + }, + { + "key": "internet_access:ssid", + "description": "Layer 'Shop' shows and asks freeform values for key 'internet_access:ssid' (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if internet_access=wlan)" + }, + { + "key": "internet_access:ssid", + "description": "Layer 'Shop' shows internet_access:ssid=Telekom with a fixed text, namely 'Telekom' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if internet_access=wlan)", + "value": "Telekom" + }, + { + "key": "organic", + "description": "Layer 'Shop' shows organic=yes with a fixed text, namely 'This shop offers organic products' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop=supermarket|shop=convenience|shop=farm|shop=greengrocer|shop=health_food|shop=clothes|shop=shoes|shop=butcher|shop=cosmetics|shop=deli|shop=bakery|shop=alcohol|shop=seafood|shop=beverages|shop=florist)", + "value": "yes" + }, + { + "key": "organic", + "description": "Layer 'Shop' shows organic=only with a fixed text, namely 'This shop only offers organic products' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop=supermarket|shop=convenience|shop=farm|shop=greengrocer|shop=health_food|shop=clothes|shop=shoes|shop=butcher|shop=cosmetics|shop=deli|shop=bakery|shop=alcohol|shop=seafood|shop=beverages|shop=florist)", + "value": "only" + }, + { + "key": "organic", + "description": "Layer 'Shop' shows organic=no with a fixed text, namely 'This shop does not offer organic products' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop=supermarket|shop=convenience|shop=farm|shop=greengrocer|shop=health_food|shop=clothes|shop=shoes|shop=butcher|shop=cosmetics|shop=deli|shop=bakery|shop=alcohol|shop=seafood|shop=beverages|shop=florist)", + "value": "no" + }, + { + "key": "shop", + "description": "The MapComplete theme Healthcare has a layer Shop showing features with this tag" + }, + { + "key": "image", + "description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Shop allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "name", + "description": "Layer 'Shop' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows and asks freeform values for key 'shop' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=agrarian with a fixed text, namely 'Farm Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "agrarian" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=alcohol with a fixed text, namely 'Liquor Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "alcohol" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=anime with a fixed text, namely 'Anime / Manga Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "anime" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=antiques with a fixed text, namely 'Antiques Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "antiques" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=appliance with a fixed text, namely 'Appliance Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "appliance" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=art with a fixed text, namely 'Art Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "art" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=baby_goods with a fixed text, namely 'Baby Goods Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "baby_goods" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bag with a fixed text, namely 'Bag/Luggage Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bag" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bakery with a fixed text, namely 'Bakery' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bakery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bathroom_furnishing with a fixed text, namely 'Bathroom Furnishing Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bathroom_furnishing" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=beauty with a fixed text, namely 'Beauty Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "beauty" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bed with a fixed text, namely 'Bedding/Mattress Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bed" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=beverages with a fixed text, namely 'Beverage Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "beverages" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bicycle with a fixed text, namely 'Bicycle Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bicycle" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=boat with a fixed text, namely 'Boat Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "boat" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=bookmaker with a fixed text, namely 'Bookmaker' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "bookmaker" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=books with a fixed text, namely 'Book Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "books" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=brewing_supplies with a fixed text, namely 'Brewing Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "brewing_supplies" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=butcher with a fixed text, namely 'Butcher' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "butcher" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=camera with a fixed text, namely 'Camera Equipment Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "camera" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=candles with a fixed text, namely 'Candle Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "candles" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=cannabis with a fixed text, namely 'Cannabis Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "cannabis" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=car with a fixed text, namely 'Car Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "car" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=car_parts with a fixed text, namely 'Car Parts Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "car_parts" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=car_repair with a fixed text, namely 'Car Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "car_repair" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=caravan with a fixed text, namely 'RV Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "caravan" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=carpet with a fixed text, namely 'Carpet Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "carpet" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=catalogue with a fixed text, namely 'Catalog Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "catalogue" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=charity with a fixed text, namely 'Charity Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "charity" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=cheese with a fixed text, namely 'Cheese Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "cheese" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=chemist with a fixed text, namely 'Drugstore' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "chemist" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=chocolate with a fixed text, namely 'Chocolate Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "chocolate" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=clothes with a fixed text, namely 'Clothing Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "clothes" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=coffee with a fixed text, namely 'Coffee Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "coffee" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=collector with a fixed text, namely 'Collectibles Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "collector" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=computer with a fixed text, namely 'Computer Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "computer" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=confectionery with a fixed text, namely 'Candy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "confectionery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=convenience with a fixed text, namely 'Convenience Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "convenience" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=copyshop with a fixed text, namely 'Copy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "copyshop" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=cosmetics with a fixed text, namely 'Cosmetics Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "cosmetics" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=country_store with a fixed text, namely 'Country Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "country_store" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=craft with a fixed text, namely 'Arts & Crafts Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "craft" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=curtain with a fixed text, namely 'Curtain Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "curtain" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=dairy with a fixed text, namely 'Dairy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "dairy" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=deli with a fixed text, namely 'Deli' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "deli" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=department_store with a fixed text, namely 'Department Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "department_store" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=doityourself with a fixed text, namely 'DIY Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "doityourself" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=doors with a fixed text, namely 'Door Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "doors" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=dry_cleaning with a fixed text, namely 'Dry Cleaner' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "dry_cleaning" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=e-cigarette with a fixed text, namely 'E-Cigarette Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "e-cigarette" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=electrical with a fixed text, namely 'Electrical Equipment Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "electrical" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=electronics with a fixed text, namely 'Electronics Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "electronics" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=erotic with a fixed text, namely 'Erotic Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "erotic" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=fabric with a fixed text, namely 'Fabric Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "fabric" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=farm with a fixed text, namely 'Produce Stand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "farm" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=fashion_accessories with a fixed text, namely 'Fashion Accessories Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "fashion_accessories" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=fireplace with a fixed text, namely 'Fireplace Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "fireplace" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=fishing with a fixed text, namely 'Fishing Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "fishing" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=flooring with a fixed text, namely 'Flooring Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "flooring" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=florist with a fixed text, namely 'Florist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "florist" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=frame with a fixed text, namely 'Framing Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "frame" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=frozen_food with a fixed text, namely 'Frozen Food Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "frozen_food" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=fuel with a fixed text, namely 'Fuel Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "fuel" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=funeral_directors with a fixed text, namely 'Funeral Home' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "funeral_directors" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=furniture with a fixed text, namely 'Furniture Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "furniture" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=games with a fixed text, namely 'Tabletop Game Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "games" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=garden_centre with a fixed text, namely 'Garden Center' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "garden_centre" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=gas with a fixed text, namely 'Bottled Gas Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "gas" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=general with a fixed text, namely 'General Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "general" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=gift with a fixed text, namely 'Gift Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "gift" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=greengrocer with a fixed text, namely 'Greengrocer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "greengrocer" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hairdresser with a fixed text, namely 'Hairdresser' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hairdresser" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hairdresser_supply with a fixed text, namely 'Hairdresser Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hairdresser_supply" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hardware with a fixed text, namely 'Hardware Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hardware" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=health_food with a fixed text, namely 'Health Food Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "health_food" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hearing_aids with a fixed text, namely 'Hearing Aids Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hearing_aids" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=herbalist with a fixed text, namely 'Herbalist' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "herbalist" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hifi with a fixed text, namely 'Hifi Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hifi" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hobby with a fixed text, namely 'Hobby Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hobby" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=household_linen with a fixed text, namely 'Household Linen Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "household_linen" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=houseware with a fixed text, namely 'Houseware Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "houseware" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=hunting with a fixed text, namely 'Hunting Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "hunting" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=interior_decoration with a fixed text, namely 'Interior Decoration Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "interior_decoration" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=jewelry with a fixed text, namely 'Jewelry Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "jewelry" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=kiosk with a fixed text, namely 'Kiosk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "kiosk" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=kitchen with a fixed text, namely 'Kitchen Design Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "kitchen" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=laundry with a fixed text, namely 'Laundry' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "laundry" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=leather with a fixed text, namely 'Leather Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "leather" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=lighting with a fixed text, namely 'Lighting Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "lighting" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=locksmith with a fixed text, namely 'Locksmith' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "locksmith" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=lottery with a fixed text, namely 'Lottery Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "lottery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=mall with a fixed text, namely 'Mall' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "mall" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=massage with a fixed text, namely 'Massage Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "massage" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=medical_supply with a fixed text, namely 'Medical Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "medical_supply" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=military_surplus with a fixed text, namely 'Military Surplus Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "military_surplus" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=mobile_phone with a fixed text, namely 'Mobile Phone Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "mobile_phone" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=model with a fixed text, namely 'Model Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "model" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=money_lender with a fixed text, namely 'Money Lender' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "money_lender" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=motorcycle with a fixed text, namely 'Motorcycle Dealership' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "motorcycle" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=motorcycle_repair with a fixed text, namely 'Motorcycle Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "motorcycle_repair" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=music with a fixed text, namely 'Music Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "music" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=musical_instrument with a fixed text, namely 'Musical Instrument Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "musical_instrument" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=newsagent with a fixed text, namely 'Newspaper/Magazine Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "newsagent" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=nutrition_supplements with a fixed text, namely 'Nutrition Supplements Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "nutrition_supplements" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=optician with a fixed text, namely 'Optician' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "optician" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=outdoor with a fixed text, namely 'Outdoors Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "outdoor" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=outpost with a fixed text, namely 'Online Retailer Outpost' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "outpost" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=paint with a fixed text, namely 'Paint Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "paint" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=party with a fixed text, namely 'Party Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "party" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pastry with a fixed text, namely 'Pastry Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pastry" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pawnbroker with a fixed text, namely 'Pawn Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pawnbroker" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=perfumery with a fixed text, namely 'Perfume Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "perfumery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pet with a fixed text, namely 'Pet Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pet" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pet_grooming with a fixed text, namely 'Pet Grooming Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pet_grooming" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=photo with a fixed text, namely 'Photography Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "photo" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pottery with a fixed text, namely 'Pottery Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pottery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=printer_ink with a fixed text, namely 'Printer Ink Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "printer_ink" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=psychic with a fixed text, namely 'Psychic' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "psychic" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=pyrotechnics with a fixed text, namely 'Fireworks Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "pyrotechnics" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=radiotechnics with a fixed text, namely 'Radio/Electronic Component Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "radiotechnics" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=religion with a fixed text, namely 'Religious Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "religion" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=rental with a fixed text, namely 'Rental Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "rental" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=repair with a fixed text, namely 'Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "repair" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=scuba_diving with a fixed text, namely 'Scuba Diving Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "scuba_diving" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=seafood with a fixed text, namely 'Seafood Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "seafood" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=second_hand with a fixed text, namely 'Consignment/Thrift Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "second_hand" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=sewing with a fixed text, namely 'Sewing Supply Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "sewing" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=shoe_repair with a fixed text, namely 'Shoe Repair Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "shoe_repair" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=shoes with a fixed text, namely 'Shoe Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "shoes" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=spices with a fixed text, namely 'Spice Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "spices" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=sports with a fixed text, namely 'Sporting Goods Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "sports" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=stationery with a fixed text, namely 'Stationery Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "stationery" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=storage_rental with a fixed text, namely 'Storage Rental' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "storage_rental" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=supermarket with a fixed text, namely 'Supermarket' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "supermarket" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=swimming_pool with a fixed text, namely 'Pool Supply Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "swimming_pool" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tailor with a fixed text, namely 'Tailor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tailor" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tattoo with a fixed text, namely 'Tattoo Parlor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tattoo" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tea with a fixed text, namely 'Tea Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tea" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=telecommunication with a fixed text, namely 'Telecom Retail Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "telecommunication" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=ticket with a fixed text, namely 'Ticket Seller' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "ticket" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tiles with a fixed text, namely 'Tile Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tiles" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tobacco with a fixed text, namely 'Tobacco Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tobacco" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tool_hire with a fixed text, namely 'Tool Rental' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tool_hire" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=toys with a fixed text, namely 'Toy Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "toys" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=trade with a fixed text, namely 'Trade Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "trade" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=travel_agency with a fixed text, namely 'Travel Agency' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "travel_agency" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=trophy with a fixed text, namely 'Trophy Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "trophy" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=tyres with a fixed text, namely 'Tire Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "tyres" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=vacuum_cleaner with a fixed text, namely 'Vacuum Cleaner Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "vacuum_cleaner" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=variety_store with a fixed text, namely 'Variety Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "variety_store" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=video with a fixed text, namely 'Video Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "video" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=video_games with a fixed text, namely 'Video Game Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "video_games" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=watches with a fixed text, namely 'Watches Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "watches" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=water with a fixed text, namely 'Drinking Water Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "water" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=water_sports with a fixed text, namely 'Watersport/Swim Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "water_sports" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=weapons with a fixed text, namely 'Weapon Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "weapons" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=wholesale with a fixed text, namely 'Wholesale Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "wholesale" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=wigs with a fixed text, namely 'Wig Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "wigs" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=window_blind with a fixed text, namely 'Window Blind Store' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "window_blind" + }, + { + "key": "shop", + "description": "Layer 'Shop' shows shop=wine with a fixed text, namely 'Wine Shop' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "wine" + }, + { + "key": "opening_hours", + "description": "Layer 'Shop' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "website", + "description": "Layer 'Shop' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "contact:website", + "description": "Layer 'Shop' shows contact:website~.+ with a fixed text, namely '{contact:website}' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "email", + "description": "Layer 'Shop' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "contact:email", + "description": "Layer 'Shop' shows contact:email~.+ with a fixed text, namely '{contact:email}' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "phone", + "description": "Layer 'Shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "contact:phone", + "description": "Layer 'Shop' shows contact:phone~.+ with a fixed text, namely '{contact:phone}' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "payment:cash", + "description": "Layer 'Shop' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "yes" + }, + { + "key": "payment:cards", + "description": "Layer 'Shop' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "yes" + }, + { + "key": "level", + "description": "Layer 'Shop' shows and asks freeform values for key 'level' (in the MapComplete.osm.be theme 'Healthcare')" + }, + { + "key": "location", + "description": "Layer 'Shop' shows location=underground with a fixed text, namely 'Located underground' (in the MapComplete.osm.be theme 'Healthcare')", + "value": "underground" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=0 with a fixed text, namely 'Located on the ground floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "0" + }, + { + "key": "level", + "description": "Layer 'Shop' shows with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Healthcare') Picking this answer will delete the key level.", + "value": "" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=1 with a fixed text, namely 'Located on the first floor' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "1" + }, + { + "key": "level", + "description": "Layer 'Shop' shows level=-1 with a fixed text, namely 'Located on the first basement level' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "-1" + }, + { + "key": "service:print:A4", + "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", + "value": "yes" + }, + { + "key": "service:print:A3", + "description": "Layer 'Shop' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", + "value": "yes" + }, + { + "key": "service:print:A2", + "description": "Layer 'Shop' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", + "value": "yes" + }, + { + "key": "service:print:A1", + "description": "Layer 'Shop' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", + "value": "yes" + }, + { + "key": "service:print:A0", + "description": "Layer 'Shop' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", + "value": "yes" + }, + { + "key": "internet_access", + "description": "Layer 'Shop' shows internet_access=wlan with a fixed text, namely 'This place offers wireless internet access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "wlan" + }, + { + "key": "internet_access", + "description": "Layer 'Shop' shows internet_access=no with a fixed text, namely 'This place does not offer internet access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "no" + }, + { + "key": "internet_access", + "description": "Layer 'Shop' shows internet_access=yes with a fixed text, namely 'This place offers internet access' (in the MapComplete.osm.be theme 'Healthcare')", + "value": "yes" + }, + { + "key": "internet_access", + "description": "Layer 'Shop' shows internet_access=terminal with a fixed text, namely 'This place offers internet access via a terminal or computer' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "terminal" + }, + { + "key": "internet_access", + "description": "Layer 'Shop' shows internet_access=wired with a fixed text, namely 'This place offers wired internet access' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare')", + "value": "wired" + }, + { + "key": "internet_access:fee", + "description": "Layer 'Shop' shows internet_access:fee=yes with a fixed text, namely 'There is a fee for the internet access at this place' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if internet_access!=no&internet_access~.+)", + "value": "yes" + }, + { + "key": "internet_access:fee", + "description": "Layer 'Shop' shows internet_access:fee=no with a fixed text, namely 'Internet access is free at this place' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if internet_access!=no&internet_access~.+)", + "value": "no" + }, + { + "key": "internet_access:fee", + "description": "Layer 'Shop' shows internet_access:fee=customers with a fixed text, namely 'Internet access is free at this place, for customers only' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if internet_access!=no&internet_access~.+)", + "value": "customers" + }, + { + "key": "internet_access:ssid", + "description": "Layer 'Shop' shows and asks freeform values for key 'internet_access:ssid' (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if internet_access=wlan)" + }, + { + "key": "internet_access:ssid", + "description": "Layer 'Shop' shows internet_access:ssid=Telekom with a fixed text, namely 'Telekom' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if internet_access=wlan)", + "value": "Telekom" + }, + { + "key": "organic", + "description": "Layer 'Shop' shows organic=yes with a fixed text, namely 'This shop offers organic products' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop=supermarket|shop=convenience|shop=farm|shop=greengrocer|shop=health_food|shop=clothes|shop=shoes|shop=butcher|shop=cosmetics|shop=deli|shop=bakery|shop=alcohol|shop=seafood|shop=beverages|shop=florist)", + "value": "yes" + }, + { + "key": "organic", + "description": "Layer 'Shop' shows organic=only with a fixed text, namely 'This shop only offers organic products' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop=supermarket|shop=convenience|shop=farm|shop=greengrocer|shop=health_food|shop=clothes|shop=shoes|shop=butcher|shop=cosmetics|shop=deli|shop=bakery|shop=alcohol|shop=seafood|shop=beverages|shop=florist)", + "value": "only" + }, + { + "key": "organic", + "description": "Layer 'Shop' shows organic=no with a fixed text, namely 'This shop does not offer organic products' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Healthcare') (This is only shown if shop=supermarket|shop=convenience|shop=farm|shop=greengrocer|shop=health_food|shop=clothes|shop=shoes|shop=butcher|shop=cosmetics|shop=deli|shop=bakery|shop=alcohol|shop=seafood|shop=beverages|shop=florist)", + "value": "no" } ] } \ No newline at end of file diff --git a/Docs/TagInfo/mapcomplete_onwheels.json b/Docs/TagInfo/mapcomplete_onwheels.json index 000efd6a1..66d3fb3c6 100644 --- a/Docs/TagInfo/mapcomplete_onwheels.json +++ b/Docs/TagInfo/mapcomplete_onwheels.json @@ -2103,27 +2103,27 @@ }, { "key": "service:print:A4", - "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A3", - "description": "Layer 'Shop' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A2", - "description": "Layer 'Shop' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A1", - "description": "Layer 'Shop' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A0", - "description": "Layer 'Shop' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { @@ -2578,10 +2578,25 @@ "description": "The MapComplete theme OnWheels has a layer Hospitals showing features with this tag", "value": "hospital" }, + { + "key": "amenity", + "description": "The MapComplete theme OnWheels has a layer Hospitals showing features with this tag", + "value": "clinic" + }, { "key": "name", "description": "Layer 'Hospitals' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'OnWheels')" }, + { + "key": "amenity", + "description": "Layer 'Hospitals' shows amenity=clinic with a fixed text, namely 'This is a clinic - patients can not stay overnight' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "clinic" + }, + { + "key": "amenity", + "description": "Layer 'Hospitals' shows amenity=hospital with a fixed text, namely 'This is a hospital - patients can be admitted here for multiple days' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'OnWheels')", + "value": "hospital" + }, { "key": "phone", "description": "Layer 'Hospitals' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'OnWheels')" diff --git a/Docs/TagInfo/mapcomplete_parkings.json b/Docs/TagInfo/mapcomplete_parkings.json index c0f772d1f..df2fe01ed 100644 --- a/Docs/TagInfo/mapcomplete_parkings.json +++ b/Docs/TagInfo/mapcomplete_parkings.json @@ -233,6 +233,146 @@ "key": "capacity", "description": "Layer 'Parking Spaces' shows capacity=1 with a fixed text, namely 'This parking space has 1 space.' (in the MapComplete.osm.be theme 'Parking')", "value": "1" + }, + { + "key": "amenity", + "description": "The MapComplete theme Parking has a layer Parking Ticket Machines showing features with this tag", + "value": "vending_machine" + }, + { + "key": "vending", + "description": "The MapComplete theme Parking has a layer Parking Ticket Machines showing features with this tag", + "value": "parking_tickets" + }, + { + "key": "image", + "description": "The layer 'Parking Ticket Machines allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Parking Ticket Machines allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Parking Ticket Machines allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Parking Ticket Machines allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "payment:cash", + "description": "Layer 'Parking Ticket Machines' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' (in the MapComplete.osm.be theme 'Parking')", + "value": "yes" + }, + { + "key": "payment:cards", + "description": "Layer 'Parking Ticket Machines' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' (in the MapComplete.osm.be theme 'Parking')", + "value": "yes" + }, + { + "key": "payment:coins", + "description": "Layer 'Parking Ticket Machines' shows payment:coins=yes with a fixed text, namely 'Coins are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking')", + "value": "yes" + }, + { + "key": "payment:notes", + "description": "Layer 'Parking Ticket Machines' shows payment:notes=yes with a fixed text, namely 'Bank notes are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking')", + "value": "yes" + }, + { + "key": "payment:debit_cards", + "description": "Layer 'Parking Ticket Machines' shows payment:debit_cards=yes with a fixed text, namely 'Debit cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking')", + "value": "yes" + }, + { + "key": "payment:credit_cards", + "description": "Layer 'Parking Ticket Machines' shows payment:credit_cards=yes with a fixed text, namely 'Credit cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking')", + "value": "yes" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.01 EUR with a fixed text, namely '1 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.01 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.02 EUR with a fixed text, namely '2 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.02 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.05 EUR with a fixed text, namely '5 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.05 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.10 EUR with a fixed text, namely '10 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.10 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.20 EUR with a fixed text, namely '20 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.20 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.50 EUR with a fixed text, namely '50 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.50 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=1 EUR with a fixed text, namely '1 euro coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "1 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=2 EUR with a fixed text, namely '2 euro coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "2 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=5 EUR with a fixed text, namely '5 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "5 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=10 EUR with a fixed text, namely '10 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "10 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=20 EUR with a fixed text, namely '20 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "20 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=50 EUR with a fixed text, namely '50 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "50 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=100 EUR with a fixed text, namely '100 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "100 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=200 EUR with a fixed text, namely '200 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "200 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=500 EUR with a fixed text, namely '500 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "500 EUR" + }, + { + "key": "ref", + "description": "Layer 'Parking Ticket Machines' shows and asks freeform values for key 'ref' (in the MapComplete.osm.be theme 'Parking')" + }, + { + "key": "noref", + "description": "Layer 'Parking Ticket Machines' shows noref=yes with a fixed text, namely 'This parking ticket machine has no reference number' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Parking')", + "value": "yes" } ] } \ No newline at end of file diff --git a/Docs/TagInfo/mapcomplete_personal.json b/Docs/TagInfo/mapcomplete_personal.json index 3a4e94a56..6aca11dc9 100644 --- a/Docs/TagInfo/mapcomplete_personal.json +++ b/Docs/TagInfo/mapcomplete_personal.json @@ -460,12 +460,12 @@ }, { "key": "bicycle", - "description": "Layer 'Barriers' shows bicycle=yes with a fixed text, namely 'A cyclist can go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Barriers' shows bicycle=yes with a fixed text, namely 'A cyclist can go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if _referencing_ways~.+)", "value": "yes" }, { "key": "bicycle", - "description": "Layer 'Barriers' shows bicycle=no with a fixed text, namely 'A cyclist can not go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Barriers' shows bicycle=no with a fixed text, namely 'A cyclist can not go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if _referencing_ways~.+)", "value": "no" }, { @@ -525,7 +525,7 @@ }, { "key": "maxwidth:physical", - "description": "Layer 'Barriers' shows and asks freeform values for key 'maxwidth:physical' (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if cycle_barrier!=double&cycle_barrier!=triple)" + "description": "Layer 'Barriers' shows and asks freeform values for key 'maxwidth:physical' (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if cycle_barrier!=double&cycle_barrier!=triple&_referencing_ways~.+)" }, { "key": "width:separation", @@ -1789,16 +1789,6 @@ "description": "The MapComplete theme Personal theme has a layer Bike repair/shop showing features with this tag", "value": "bicycle" }, - { - "key": "amenity", - "description": "The MapComplete theme Personal theme has a layer Bike repair/shop showing features with this tag", - "value": "bicycle_rental" - }, - { - "key": "network", - "description": "The MapComplete theme Personal theme has a layer Bike repair/shop showing features with this tag", - "value": "" - }, { "key": "shop", "description": "The MapComplete theme Personal theme has a layer Bike repair/shop showing features with this tag", @@ -4263,6 +4253,161 @@ "key": "description", "description": "Layer 'Climbing routes' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'Personal theme')" }, + { + "key": "amenity", + "description": "The MapComplete theme Personal theme has a layer Clocks showing features with this tag", + "value": "clock" + }, + { + "key": "image", + "description": "The layer 'Clocks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Clocks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Clocks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Clocks allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "support", + "description": "Layer 'Clocks' shows support=pole with a fixed text, namely 'This clock is mounted on a pole' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "pole" + }, + { + "key": "support", + "description": "Layer 'Clocks' shows support=wall_mounted with a fixed text, namely 'This clock is mounted on a wall' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "wall_mounted" + }, + { + "key": "support", + "description": "Layer 'Clocks' shows support=billboard with a fixed text, namely 'This clock is part of a billboard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "billboard" + }, + { + "key": "support", + "description": "Layer 'Clocks' shows support=ground with a fixed text, namely 'This clock is on the ground' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "ground" + }, + { + "key": "display", + "description": "Layer 'Clocks' shows display=analog with a fixed text, namely 'This clock displays the time with hands' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "analog" + }, + { + "key": "display", + "description": "Layer 'Clocks' shows display=digital with a fixed text, namely 'This clock displays the time with digits' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "digital" + }, + { + "key": "display", + "description": "Layer 'Clocks' shows display=sundial with a fixed text, namely 'This clock displays the time with a sundial' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "sundial" + }, + { + "key": "display", + "description": "Layer 'Clocks' shows display=unorthodox with a fixed text, namely 'This clock displays the time in a non-standard way, e.g using binary, water or something else' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "unorthodox" + }, + { + "key": "visibility", + "description": "Layer 'Clocks' shows visibility=house with a fixed text, namely 'This clock is visible from about 5 meters away (small wall-mounted clock)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "house" + }, + { + "key": "visibility", + "description": "Layer 'Clocks' shows visibility=street with a fixed text, namely 'This clock is visible from about 20 meters away (medium size billboard clock)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "street" + }, + { + "key": "visibility", + "description": "Layer 'Clocks' shows visibility=area with a fixed text, namely 'This clock is visible from more than 20 meters away (church clock)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "area" + }, + { + "key": "date", + "description": "Layer 'Clocks' shows date=yes with a fixed text, namely 'This clock also displays the date' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "date", + "description": "Layer 'Clocks' shows date=no with a fixed text, namely 'This clock does not display the date' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "no" + }, + { + "key": "date", + "description": "Layer 'Clocks' shows with a fixed text, namely 'This clock does probably not display the date' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key date.", + "value": "" + }, + { + "key": "thermometer", + "description": "Layer 'Clocks' shows thermometer=yes with a fixed text, namely 'This clock also displays the temperature' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "thermometer", + "description": "Layer 'Clocks' shows thermometer=no with a fixed text, namely 'This clock does not display the temperature' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "no" + }, + { + "key": "thermometer", + "description": "Layer 'Clocks' shows with a fixed text, namely 'This clock does probably not display the temperature' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key thermometer.", + "value": "" + }, + { + "key": "barometer", + "description": "Layer 'Clocks' shows barometer=yes with a fixed text, namely 'This clock also displays the air pressure' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "barometer", + "description": "Layer 'Clocks' shows barometer=no with a fixed text, namely 'This clock does not display the air pressure' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "no" + }, + { + "key": "barometer", + "description": "Layer 'Clocks' shows with a fixed text, namely 'This clock does probably not display the air pressure' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key barometer.", + "value": "" + }, + { + "key": "hygrometer", + "description": "Layer 'Clocks' shows hygrometer=yes with a fixed text, namely 'This clock also displays the humidity' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "hygrometer", + "description": "Layer 'Clocks' shows hygrometer=no with a fixed text, namely 'This clock does not display the humidity' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "no" + }, + { + "key": "hygrometer", + "description": "Layer 'Clocks' shows with a fixed text, namely 'This clock does probably not display the humidity' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key hygrometer.", + "value": "" + }, + { + "key": "faces", + "description": "Layer 'Clocks' shows and asks freeform values for key 'faces' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "faces", + "description": "Layer 'Clocks' shows faces=1 with a fixed text, namely 'This clock has one face' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "1" + }, + { + "key": "faces", + "description": "Layer 'Clocks' shows faces=2 with a fixed text, namely 'This clock has two faces' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "2" + }, + { + "key": "faces", + "description": "Layer 'Clocks' shows faces=4 with a fixed text, namely 'This clock has four faces' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "4" + }, { "key": "highway", "description": "The MapComplete theme Personal theme has a layer Crossings showing features with this tag", @@ -5734,56 +5879,56 @@ }, { "key": "name:etymology:wikidata", - "description": "The MapComplete theme Personal theme has a layer Has etymolgy showing features with this tag" + "description": "The MapComplete theme Personal theme has a layer Has etymology showing features with this tag" }, { "key": "name:etymology", - "description": "The MapComplete theme Personal theme has a layer Has etymolgy showing features with this tag" + "description": "The MapComplete theme Personal theme has a layer Has etymology showing features with this tag" }, { "key": "image", - "description": "The layer 'Has etymolgy shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "mapillary", - "description": "The layer 'Has etymolgy shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikidata", - "description": "The layer 'Has etymolgy shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikipedia", - "description": "The layer 'Has etymolgy shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology shows images based on the keys image, image:0, image:1,... and wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "name:etymology:wikidata", - "description": "Layer 'Has etymolgy' shows and asks freeform values for key 'name:etymology:wikidata' (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if name:etymology!=unknown)" + "description": "Layer 'Has etymology' shows and asks freeform values for key 'name:etymology:wikidata' (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if name:etymology!=unknown)" }, { "key": "name:etymology", - "description": "Layer 'Has etymolgy' shows and asks freeform values for key 'name:etymology' (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if name:etymology~.+|)" + "description": "Layer 'Has etymology' shows and asks freeform values for key 'name:etymology' (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if name:etymology~.+|)" }, { "key": "name:etymology", - "description": "Layer 'Has etymolgy' shows name:etymology=unknown with a fixed text, namely 'The origin of this name is unknown in all literature' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if name:etymology~.+|)", + "description": "Layer 'Has etymology' shows name:etymology=unknown with a fixed text, namely 'The origin of this name is unknown in all literature' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if name:etymology~.+|)", "value": "unknown" }, { "key": "image", - "description": "The layer 'Has etymolgy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "mapillary", - "description": "The layer 'Has etymolgy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikidata", - "description": "The layer 'Has etymolgy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "wikipedia", - "description": "The layer 'Has etymolgy allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + "description": "The layer 'Has etymology allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" }, { "key": "emergency", @@ -6003,6 +6148,22 @@ "description": "The MapComplete theme Personal theme has a layer Fitness Stations showing features with this tag", "value": "fitness_station" }, + { + "key": "image", + "description": "The layer 'Fitness Stations allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Fitness Stations allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Fitness Stations allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Fitness Stations allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, { "key": "name", "description": "Layer 'Fitness Stations' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" @@ -6858,10 +7019,25 @@ "description": "The MapComplete theme Personal theme has a layer Hospitals showing features with this tag", "value": "hospital" }, + { + "key": "amenity", + "description": "The MapComplete theme Personal theme has a layer Hospitals showing features with this tag", + "value": "clinic" + }, { "key": "name", "description": "Layer 'Hospitals' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Personal theme')" }, + { + "key": "amenity", + "description": "Layer 'Hospitals' shows amenity=clinic with a fixed text, namely 'This is a clinic - patients can not stay overnight' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "clinic" + }, + { + "key": "amenity", + "description": "Layer 'Hospitals' shows amenity=hospital with a fixed text, namely 'This is a hospital - patients can be admitted here for multiple days' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "hospital" + }, { "key": "phone", "description": "Layer 'Hospitals' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Personal theme')" @@ -7013,11 +7189,6 @@ "key": "colour", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'colour' (in the MapComplete.osm.be theme 'Personal theme')" }, - { - "key": "colour", - "description": "Layer 'Map of hydrants' shows with a fixed text, namely 'The hydrant color is unknown.' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key colour.", - "value": "" - }, { "key": "colour", "description": "Layer 'Map of hydrants' shows colour=yellow with a fixed text, namely 'The hydrant color is yellow.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", @@ -7032,11 +7203,6 @@ "key": "fire_hydrant:type", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'fire_hydrant:type' (in the MapComplete.osm.be theme 'Personal theme')" }, - { - "key": "fire_hydrant:type", - "description": "Layer 'Map of hydrants' shows with a fixed text, namely 'The hydrant type is unknown.' (in the MapComplete.osm.be theme 'Personal theme') Picking this answer will delete the key fire_hydrant:type.", - "value": "" - }, { "key": "fire_hydrant:type", "description": "Layer 'Map of hydrants' shows fire_hydrant:type=pillar with a fixed text, namely 'Pillar type.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", @@ -7086,6 +7252,10 @@ "key": "fire_hydrant:diameter", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'fire_hydrant:diameter' (in the MapComplete.osm.be theme 'Personal theme')" }, + { + "key": "couplings", + "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'couplings' (in the MapComplete.osm.be theme 'Personal theme')" + }, { "key": "couplings:type", "description": "Layer 'Map of hydrants' shows and asks freeform values for key 'couplings:type' (in the MapComplete.osm.be theme 'Personal theme')" @@ -8096,6 +8266,146 @@ "description": "Layer 'Parking Spaces' shows capacity=1 with a fixed text, namely 'This parking space has 1 space.' (in the MapComplete.osm.be theme 'Personal theme')", "value": "1" }, + { + "key": "amenity", + "description": "The MapComplete theme Personal theme has a layer Parking Ticket Machines showing features with this tag", + "value": "vending_machine" + }, + { + "key": "vending", + "description": "The MapComplete theme Personal theme has a layer Parking Ticket Machines showing features with this tag", + "value": "parking_tickets" + }, + { + "key": "image", + "description": "The layer 'Parking Ticket Machines allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Parking Ticket Machines allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Parking Ticket Machines allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Parking Ticket Machines allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "payment:cash", + "description": "Layer 'Parking Ticket Machines' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "payment:cards", + "description": "Layer 'Parking Ticket Machines' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "payment:coins", + "description": "Layer 'Parking Ticket Machines' shows payment:coins=yes with a fixed text, namely 'Coins are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "payment:notes", + "description": "Layer 'Parking Ticket Machines' shows payment:notes=yes with a fixed text, namely 'Bank notes are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "payment:debit_cards", + "description": "Layer 'Parking Ticket Machines' shows payment:debit_cards=yes with a fixed text, namely 'Debit cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "payment:credit_cards", + "description": "Layer 'Parking Ticket Machines' shows payment:credit_cards=yes with a fixed text, namely 'Credit cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.01 EUR with a fixed text, namely '1 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.01 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.02 EUR with a fixed text, namely '2 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.02 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.05 EUR with a fixed text, namely '5 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.05 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.10 EUR with a fixed text, namely '10 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.10 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.20 EUR with a fixed text, namely '20 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.20 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=0.50 EUR with a fixed text, namely '50 cent coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "0.50 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=1 EUR with a fixed text, namely '1 euro coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "1 EUR" + }, + { + "key": "payment:coins:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:coins:denominations=2 EUR with a fixed text, namely '2 euro coins are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:coins=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "2 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=5 EUR with a fixed text, namely '5 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "5 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=10 EUR with a fixed text, namely '10 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "10 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=20 EUR with a fixed text, namely '20 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "20 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=50 EUR with a fixed text, namely '50 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "50 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=100 EUR with a fixed text, namely '100 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "100 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=200 EUR with a fixed text, namely '200 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "200 EUR" + }, + { + "key": "payment:notes:denominations", + "description": "Layer 'Parking Ticket Machines' shows payment:notes:denominations=500 EUR with a fixed text, namely '500 euro notes are accepted' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if payment:notes=yes|payment:cash=yes&_country=at|_country=be|_country=cy|_country=de|_country=ee|_country=es|_country=fi|_country=fr|_country=gr|_country=hr|_country=ie|_country=it|_country=lt|_country=lu|_country=lv|_country=mt|_country=nl|_country=pt|_country=si|_country=sk)", + "value": "500 EUR" + }, + { + "key": "ref", + "description": "Layer 'Parking Ticket Machines' shows and asks freeform values for key 'ref' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "noref", + "description": "Layer 'Parking Ticket Machines' shows noref=yes with a fixed text, namely 'This parking ticket machine has no reference number' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, { "key": "highway", "description": "The MapComplete theme Personal theme has a layer Pedestrian paths showing features with this tag", @@ -9092,6 +9402,25 @@ "description": "Layer 'Recycling' shows opening_hours=24/7 with a fixed text, namely '24/7 opened (including holidays)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "24/7" }, + { + "key": "access", + "description": "Layer 'Recycling' shows and asks freeform values for key 'access' (in the MapComplete.osm.be theme 'Personal theme')" + }, + { + "key": "access", + "description": "Layer 'Recycling' shows access=yes with a fixed text, namely 'Everyone can use this recycling facility' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "yes" + }, + { + "key": "access", + "description": "Layer 'Recycling' shows access=residents with a fixed text, namely 'Only residents can use this recycling facility' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "residents" + }, + { + "key": "access", + "description": "Layer 'Recycling' shows access=private with a fixed text, namely 'This recycling facility is only for private use' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "private" + }, { "key": "amenity", "description": "The MapComplete theme Personal theme has a layer Primary and secondary schools showing features with this tag", @@ -10174,27 +10503,27 @@ }, { "key": "service:print:A4", - "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A3", - "description": "Layer 'Shop' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A2", - "description": "Layer 'Shop' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A1", - "description": "Layer 'Shop' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A0", - "description": "Layer 'Shop' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { @@ -11564,7 +11893,7 @@ }, { "key": "shelter", - "description": "Layer 'Transit Stops' shows shelter=no with a fixed text, namely 'This stop does not have a shelter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Transit Stops' shows shelter=no with a fixed text, namely 'This stop does not have a shelter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "no" }, { @@ -11579,7 +11908,7 @@ }, { "key": "bench", - "description": "Layer 'Transit Stops' shows bench=no with a fixed text, namely 'This stop does not have a bench' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Transit Stops' shows bench=no with a fixed text, namely 'This stop does not have a bench' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "no" }, { @@ -11594,7 +11923,7 @@ }, { "key": "bin", - "description": "Layer 'Transit Stops' shows bin=no with a fixed text, namely 'This stop does not have a bin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Transit Stops' shows bin=no with a fixed text, namely 'This stop does not have a bin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "no" }, { @@ -11629,7 +11958,7 @@ }, { "key": "tactile_paving", - "description": "Layer 'Transit Stops' shows tactile_paving=no with a fixed text, namely 'This stop does not have tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Transit Stops' shows tactile_paving=no with a fixed text, namely 'This stop does not have tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "no" }, { @@ -11639,7 +11968,7 @@ }, { "key": "lit", - "description": "Layer 'Transit Stops' shows lit=no with a fixed text, namely 'This stop is not lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Transit Stops' shows lit=no with a fixed text, namely 'This stop is not lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", "value": "no" }, { @@ -11669,7 +11998,7 @@ }, { "key": "departures_board", - "description": "Layer 'Transit Stops' shows departures_board=no with a fixed text, namely 'This stop does not have a departures board' (in the MapComplete.osm.be theme 'Personal theme')", + "description": "Layer 'Transit Stops' shows departures_board=no with a fixed text, namely 'This stop does not have a departures board' (in the MapComplete.osm.be theme 'Personal theme')", "value": "no" }, { @@ -11951,6 +12280,32 @@ "description": "The MapComplete theme Personal theme has a layer Waste Disposal Bins showing features with this tag", "value": "waste_disposal" }, + { + "key": "image", + "description": "The layer 'Waste Disposal Bins allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Waste Disposal Bins allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Waste Disposal Bins allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Waste Disposal Bins allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "amenity", + "description": "Layer 'Waste Disposal Bins' shows amenity=waste_disposal with a fixed text, namely 'This is a medium to large bin for disposal of (household) waste' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "waste_disposal" + }, + { + "key": "amenity", + "description": "Layer 'Waste Disposal Bins' shows amenity=recycling with a fixed text, namely 'This is actually a recycling container' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Personal theme')", + "value": "recycling" + }, { "key": "access", "description": "Layer 'Waste Disposal Bins' shows and asks freeform values for key 'access' (in the MapComplete.osm.be theme 'Personal theme')" diff --git a/Docs/TagInfo/mapcomplete_pets.json b/Docs/TagInfo/mapcomplete_pets.json index 014f549d3..cc236be4c 100644 --- a/Docs/TagInfo/mapcomplete_pets.json +++ b/Docs/TagInfo/mapcomplete_pets.json @@ -1477,27 +1477,27 @@ }, { "key": "service:print:A4", - "description": "Layer 'Dog-friendly shops' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Dog-friendly shops' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A3", - "description": "Layer 'Dog-friendly shops' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Dog-friendly shops' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A2", - "description": "Layer 'Dog-friendly shops' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Dog-friendly shops' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A1", - "description": "Layer 'Dog-friendly shops' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Dog-friendly shops' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A0", - "description": "Layer 'Dog-friendly shops' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Dog-friendly shops' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { diff --git a/Docs/TagInfo/mapcomplete_shops.json b/Docs/TagInfo/mapcomplete_shops.json index 383ec50a6..088f16d1b 100644 --- a/Docs/TagInfo/mapcomplete_shops.json +++ b/Docs/TagInfo/mapcomplete_shops.json @@ -907,27 +907,27 @@ }, { "key": "service:print:A4", - "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A3", - "description": "Layer 'Shop' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A2", - "description": "Layer 'Shop' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A1", - "description": "Layer 'Shop' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A0", - "description": "Layer 'Shop' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Shop Map') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { diff --git a/Docs/TagInfo/mapcomplete_sports.json b/Docs/TagInfo/mapcomplete_sports.json index 7a4c83f13..b74d530df 100644 --- a/Docs/TagInfo/mapcomplete_sports.json +++ b/Docs/TagInfo/mapcomplete_sports.json @@ -273,6 +273,22 @@ "description": "The MapComplete theme Sports has a layer Fitness Stations showing features with this tag", "value": "fitness_station" }, + { + "key": "image", + "description": "The layer 'Fitness Stations allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Fitness Stations allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Fitness Stations allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Fitness Stations allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, { "key": "name", "description": "Layer 'Fitness Stations' shows and asks freeform values for key 'name' (in the MapComplete.osm.be theme 'Sports')" @@ -1382,27 +1398,27 @@ }, { "key": "service:print:A4", - "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A4=yes with a fixed text, namely 'This shop can print on papers of size A4' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A3", - "description": "Layer 'Shop' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A3=yes with a fixed text, namely 'This shop can print on papers of size A3' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A2", - "description": "Layer 'Shop' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A2=yes with a fixed text, namely 'This shop can print on papers of size A2' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A1", - "description": "Layer 'Shop' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A1=yes with a fixed text, namely 'This shop can print on papers of size A1' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { "key": "service:print:A0", - "description": "Layer 'Shop' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationary.*)$|service:print=yes)", + "description": "Layer 'Shop' shows service:print:A0=yes with a fixed text, namely 'This shop can print on papers of size A0' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Sports') (This is only shown if shop~^(.*copyshop.*)$|shop~^(.*stationery.*)$|service:print=yes)", "value": "yes" }, { diff --git a/Docs/TagInfo/mapcomplete_transit.json b/Docs/TagInfo/mapcomplete_transit.json index 37c60ed55..fabe4e638 100644 --- a/Docs/TagInfo/mapcomplete_transit.json +++ b/Docs/TagInfo/mapcomplete_transit.json @@ -52,7 +52,7 @@ }, { "key": "shelter", - "description": "Layer 'Transit Stops' shows shelter=no with a fixed text, namely 'This stop does not have a shelter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", + "description": "Layer 'Transit Stops' shows shelter=no with a fixed text, namely 'This stop does not have a shelter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", "value": "no" }, { @@ -67,7 +67,7 @@ }, { "key": "bench", - "description": "Layer 'Transit Stops' shows bench=no with a fixed text, namely 'This stop does not have a bench' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", + "description": "Layer 'Transit Stops' shows bench=no with a fixed text, namely 'This stop does not have a bench' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", "value": "no" }, { @@ -82,7 +82,7 @@ }, { "key": "bin", - "description": "Layer 'Transit Stops' shows bin=no with a fixed text, namely 'This stop does not have a bin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", + "description": "Layer 'Transit Stops' shows bin=no with a fixed text, namely 'This stop does not have a bin' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", "value": "no" }, { @@ -117,7 +117,7 @@ }, { "key": "tactile_paving", - "description": "Layer 'Transit Stops' shows tactile_paving=no with a fixed text, namely 'This stop does not have tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", + "description": "Layer 'Transit Stops' shows tactile_paving=no with a fixed text, namely 'This stop does not have tactile paving' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", "value": "no" }, { @@ -127,7 +127,7 @@ }, { "key": "lit", - "description": "Layer 'Transit Stops' shows lit=no with a fixed text, namely 'This stop is not lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", + "description": "Layer 'Transit Stops' shows lit=no with a fixed text, namely 'This stop is not lit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bus routes')", "value": "no" }, { @@ -157,7 +157,7 @@ }, { "key": "departures_board", - "description": "Layer 'Transit Stops' shows departures_board=no with a fixed text, namely 'This stop does not have a departures board' (in the MapComplete.osm.be theme 'Bus routes')", + "description": "Layer 'Transit Stops' shows departures_board=no with a fixed text, namely 'This stop does not have a departures board' (in the MapComplete.osm.be theme 'Bus routes')", "value": "no" }, { diff --git a/Docs/TagInfo/mapcomplete_waste.json b/Docs/TagInfo/mapcomplete_waste.json index 2ae981a43..5aa9a6317 100644 --- a/Docs/TagInfo/mapcomplete_waste.json +++ b/Docs/TagInfo/mapcomplete_waste.json @@ -303,11 +303,56 @@ "description": "Layer 'Recycling' shows opening_hours=24/7 with a fixed text, namely '24/7 opened (including holidays)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste')", "value": "24/7" }, + { + "key": "access", + "description": "Layer 'Recycling' shows and asks freeform values for key 'access' (in the MapComplete.osm.be theme 'Waste')" + }, + { + "key": "access", + "description": "Layer 'Recycling' shows access=yes with a fixed text, namely 'Everyone can use this recycling facility' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste')", + "value": "yes" + }, + { + "key": "access", + "description": "Layer 'Recycling' shows access=residents with a fixed text, namely 'Only residents can use this recycling facility' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste')", + "value": "residents" + }, + { + "key": "access", + "description": "Layer 'Recycling' shows access=private with a fixed text, namely 'This recycling facility is only for private use' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste')", + "value": "private" + }, { "key": "amenity", "description": "The MapComplete theme Waste has a layer Waste Disposal Bins showing features with this tag", "value": "waste_disposal" }, + { + "key": "image", + "description": "The layer 'Waste Disposal Bins allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "mapillary", + "description": "The layer 'Waste Disposal Bins allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikidata", + "description": "The layer 'Waste Disposal Bins allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "wikipedia", + "description": "The layer 'Waste Disposal Bins allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary" + }, + { + "key": "amenity", + "description": "Layer 'Waste Disposal Bins' shows amenity=waste_disposal with a fixed text, namely 'This is a medium to large bin for disposal of (household) waste' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste')", + "value": "waste_disposal" + }, + { + "key": "amenity", + "description": "Layer 'Waste Disposal Bins' shows amenity=recycling with a fixed text, namely 'This is actually a recycling container' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste')", + "value": "recycling" + }, { "key": "access", "description": "Layer 'Waste Disposal Bins' shows and asks freeform values for key 'access' (in the MapComplete.osm.be theme 'Waste')" diff --git a/Docs/Themes/aed.md b/Docs/Themes/aed.md index e42280473..412b84d10 100644 --- a/Docs/Themes/aed.md +++ b/Docs/Themes/aed.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Open AED Map ( aed) ---------------------- + Open AED Map ( [aed](https://mapcomplete.osm.be/aed) ) +-------------------------------------------------------- @@ -45,6 +45,7 @@ Available languages: - fil - da - cs + - zgh -This document is autogenerated from [assets/themes/aed/aed.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/aed/aed.json) \ No newline at end of file +This document is autogenerated from [assets/themes/aed/aed.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/aed/aed.json) diff --git a/Docs/Themes/artwork.md b/Docs/Themes/artwork.md index 242abe30c..f080b829d 100644 --- a/Docs/Themes/artwork.md +++ b/Docs/Themes/artwork.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Open Artwork Map ( artwork) ------------------------------ + Open Artwork Map ( [artwork](https://mapcomplete.osm.be/artwork) ) +-------------------------------------------------------------------- @@ -42,6 +42,8 @@ Available languages: - da - cs - pa_PK + - zgh + - es -This document is autogenerated from [assets/themes/artwork/artwork.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/artwork/artwork.json) \ No newline at end of file +This document is autogenerated from [assets/themes/artwork/artwork.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/artwork/artwork.json) diff --git a/Docs/Themes/atm.md b/Docs/Themes/atm.md index 8b9d06bd4..4e3f1f9de 100644 --- a/Docs/Themes/atm.md +++ b/Docs/Themes/atm.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - ATM Machines ( atm) ---------------------- + ATM Machines ( [atm](https://mapcomplete.osm.be/atm) ) +-------------------------------------------------------- @@ -31,6 +31,9 @@ Available languages: - nl - ca - es + - cs + - nb_NO + - zgh -This document is autogenerated from [assets/themes/atm/atm.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/atm/atm.json) \ No newline at end of file +This document is autogenerated from [assets/themes/atm/atm.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/atm/atm.json) diff --git a/Docs/Themes/bag.md b/Docs/Themes/bag.md index 0217fdd21..f64655199 100644 --- a/Docs/Themes/bag.md +++ b/Docs/Themes/bag.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - BAG import helper ( bag) --------------------------- + BAG import helper ( [bag](https://mapcomplete.osm.be/bag) ) +------------------------------------------------------------- @@ -33,6 +33,8 @@ Available languages: - fr - nb_NO - ca + - es + - cs -This document is autogenerated from [assets/themes/bag/bag.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/bag/bag.json) \ No newline at end of file +This document is autogenerated from [assets/themes/bag/bag.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/bag/bag.json) diff --git a/Docs/Themes/benches.md b/Docs/Themes/benches.md index b295a66f5..14b9b864c 100644 --- a/Docs/Themes/benches.md +++ b/Docs/Themes/benches.md @@ -1,11 +1,11 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Benches ( benches) --------------------- + Benches ( [benches](https://mapcomplete.osm.be/benches) ) +----------------------------------------------------------- -This map shows all benches that are recorded in OpenStreetMap: Individual benches, and benches belonging to public transport stops or shelters. With an OpenStreetMap account, you can map new benches or edit details of existing benches. +This map shows all benches that are recorded in OpenStreetMap: Individual benches, and benches belonging to public transport stops or shelters. This theme contains the following layers: @@ -42,6 +42,7 @@ Available languages: - zh_Hans - da - pa_PK + - cs -This document is autogenerated from [assets/themes/benches/benches.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/benches/benches.json) \ No newline at end of file +This document is autogenerated from [assets/themes/benches/benches.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/benches/benches.json) diff --git a/Docs/Themes/bicycle_rental.md b/Docs/Themes/bicycle_rental.md index 381f6ae15..923bcd139 100644 --- a/Docs/Themes/bicycle_rental.md +++ b/Docs/Themes/bicycle_rental.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Bicycle rental ( bicycle_rental) ----------------------------------- + Bicycle rental ( [bicycle_rental](https://mapcomplete.osm.be/bicycle_rental) ) +-------------------------------------------------------------------------------- @@ -33,6 +33,7 @@ Available languages: - nb_NO - da - pa_PK + - cs -This document is autogenerated from [assets/themes/bicycle_rental/bicycle_rental.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/bicycle_rental/bicycle_rental.json) \ No newline at end of file +This document is autogenerated from [assets/themes/bicycle_rental/bicycle_rental.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/bicycle_rental/bicycle_rental.json) diff --git a/Docs/Themes/bicyclelib.md b/Docs/Themes/bicyclelib.md index 81e8b6f39..d407578a5 100644 --- a/Docs/Themes/bicyclelib.md +++ b/Docs/Themes/bicyclelib.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Bicycle libraries ( bicyclelib) ---------------------------------- + Bicycle libraries ( [bicyclelib](https://mapcomplete.osm.be/bicyclelib) ) +--------------------------------------------------------------------------- @@ -39,6 +39,8 @@ Available languages: - ca - da - pa_PK + - cs + - es -This document is autogenerated from [assets/themes/bicyclelib/bicyclelib.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/bicyclelib/bicyclelib.json) \ No newline at end of file +This document is autogenerated from [assets/themes/bicyclelib/bicyclelib.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/bicyclelib/bicyclelib.json) diff --git a/Docs/Themes/binoculars.md b/Docs/Themes/binoculars.md index b4fd20937..6694ef1ce 100644 --- a/Docs/Themes/binoculars.md +++ b/Docs/Themes/binoculars.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Binoculars ( binoculars) --------------------------- + Binoculars ( [binoculars](https://mapcomplete.osm.be/binoculars) ) +-------------------------------------------------------------------- @@ -35,6 +35,7 @@ Available languages: - da - ca - pa_PK + - cs -This document is autogenerated from [assets/themes/binoculars/binoculars.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/binoculars/binoculars.json) \ No newline at end of file +This document is autogenerated from [assets/themes/binoculars/binoculars.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/binoculars/binoculars.json) diff --git a/Docs/Themes/blind_osm.md b/Docs/Themes/blind_osm.md index c54787e74..45c759bcf 100644 --- a/Docs/Themes/blind_osm.md +++ b/Docs/Themes/blind_osm.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - OSM for the blind ( blind_osm) --------------------------------- + OSM for the blind ( [blind_osm](https://mapcomplete.osm.be/blind_osm) ) +------------------------------------------------------------------------- @@ -34,6 +34,9 @@ Available languages: - fr - nb_NO - ca + - cs + - ru + - es -This document is autogenerated from [assets/themes/blind_osm/blind_osm.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/blind_osm/blind_osm.json) \ No newline at end of file +This document is autogenerated from [assets/themes/blind_osm/blind_osm.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/blind_osm/blind_osm.json) diff --git a/Docs/Themes/bookcases.md b/Docs/Themes/bookcases.md index fa4ebf961..bcbb926b8 100644 --- a/Docs/Themes/bookcases.md +++ b/Docs/Themes/bookcases.md @@ -1,11 +1,11 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Open Bookcase Map ( bookcases) --------------------------------- + Open Bookcase Map ( [bookcases](https://mapcomplete.osm.be/bookcases) ) +------------------------------------------------------------------------- -A public bookcase is a small streetside cabinet, box, old phone booth or some other objects where books are stored. Everyone can place or take a book. This map aims to collect all these bookcases. You can discover new bookcases nearby and, with a free OpenStreetMap account, quickly add your favourite bookcases. +A public bookcase is a small streetside cabinet, box, old phone booth or some other objects where books are stored. Everyone can place or take a book. This map aims to collect all these bookcases. This theme contains the following layers: @@ -37,6 +37,7 @@ Available languages: - ca - es - pa_PK + - cs -This document is autogenerated from [assets/themes/bookcases/bookcases.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/bookcases/bookcases.json) \ No newline at end of file +This document is autogenerated from [assets/themes/bookcases/bookcases.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/bookcases/bookcases.json) diff --git a/Docs/Themes/buurtnatuur.md b/Docs/Themes/buurtnatuur.md index e524c664c..65405502c 100644 --- a/Docs/Themes/buurtnatuur.md +++ b/Docs/Themes/buurtnatuur.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Breng jouw buurtnatuur in kaart ( buurtnatuur) ------------------------------------------------- + Breng jouw buurtnatuur in kaart ( [buurtnatuur](https://mapcomplete.osm.be/buurtnatuur) ) +------------------------------------------------------------------------------------------- @@ -29,4 +29,4 @@ Available languages: - nl -This document is autogenerated from [assets/themes/buurtnatuur/buurtnatuur.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/buurtnatuur/buurtnatuur.json) \ No newline at end of file +This document is autogenerated from [assets/themes/buurtnatuur/buurtnatuur.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/buurtnatuur/buurtnatuur.json) diff --git a/Docs/Themes/cafes_and_pubs.md b/Docs/Themes/cafes_and_pubs.md index e3a97b525..eb02d783d 100644 --- a/Docs/Themes/cafes_and_pubs.md +++ b/Docs/Themes/cafes_and_pubs.md @@ -1,11 +1,11 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Cafés and pubs ( cafes_and_pubs) ----------------------------------- + Cafés and pubs ( [cafes_and_pubs](https://mapcomplete.osm.be/cafes_and_pubs) ) +-------------------------------------------------------------------------------- -Pubs and bars +Coffeehouses, pubs and bars This theme contains the following layers: @@ -37,6 +37,7 @@ Available languages: - fr - da - pa_PK + - cs -This document is autogenerated from [assets/themes/cafes_and_pubs/cafes_and_pubs.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cafes_and_pubs/cafes_and_pubs.json) \ No newline at end of file +This document is autogenerated from [assets/themes/cafes_and_pubs/cafes_and_pubs.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cafes_and_pubs/cafes_and_pubs.json) diff --git a/Docs/Themes/campersite.md b/Docs/Themes/campersite.md index 308e0a696..90e6a5480 100644 --- a/Docs/Themes/campersite.md +++ b/Docs/Themes/campersite.md @@ -1,11 +1,11 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Campersites ( campersite) ---------------------------- + Campersites ( [campersite](https://mapcomplete.osm.be/campersite) ) +--------------------------------------------------------------------- -This site collects all official camper stopover places and places where you can dump grey and black water. You can add details about the services provided and the cost. Add pictures and reviews. This is a website and a webapp. The data is stored in OpenStreetMap, so it will be free forever and can be re-used by any app. +This site collects all official camper stopover places and places where you can dump grey and black water. You can add details about the services provided and the cost. Add pictures and reviews. This theme contains the following layers: @@ -38,6 +38,7 @@ Available languages: - es - da - pa_PK + - cs -This document is autogenerated from [assets/themes/campersite/campersite.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/campersite/campersite.json) \ No newline at end of file +This document is autogenerated from [assets/themes/campersite/campersite.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/campersite/campersite.json) diff --git a/Docs/Themes/charging_stations.md b/Docs/Themes/charging_stations.md index d225b7920..a51910133 100644 --- a/Docs/Themes/charging_stations.md +++ b/Docs/Themes/charging_stations.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Charging stations ( charging_stations) ----------------------------------------- + Charging stations ( [charging_stations](https://mapcomplete.osm.be/charging_stations) ) +----------------------------------------------------------------------------------------- @@ -38,6 +38,7 @@ Available languages: - es - da - pa_PK + - cs -This document is autogenerated from [assets/themes/charging_stations/charging_stations.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/charging_stations/charging_stations.json) \ No newline at end of file +This document is autogenerated from [assets/themes/charging_stations/charging_stations.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/charging_stations/charging_stations.json) diff --git a/Docs/Themes/climbing.md b/Docs/Themes/climbing.md index 67c5ac9f8..3d2b8ac89 100644 --- a/Docs/Themes/climbing.md +++ b/Docs/Themes/climbing.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Open Climbing Map ( climbing) -------------------------------- + Open Climbing Map ( [climbing](https://mapcomplete.osm.be/climbing) ) +----------------------------------------------------------------------- @@ -39,6 +39,8 @@ Available languages: - hu - ca - da + - cs + - es -This document is autogenerated from [assets/themes/climbing/climbing.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/climbing/climbing.json) \ No newline at end of file +This document is autogenerated from [assets/themes/climbing/climbing.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/climbing/climbing.json) diff --git a/Docs/Themes/clock.md b/Docs/Themes/clock.md new file mode 100644 index 000000000..b267d1552 --- /dev/null +++ b/Docs/Themes/clock.md @@ -0,0 +1,35 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) + + Clocks ( [clock](https://mapcomplete.osm.be/clock) ) +------------------------------------------------------ + + + +Map showing all public clocks + +This theme contains the following layers: + + + + - [walls_and_buildings](../Layers/walls_and_buildings.md) + - [clock](../Layers/clock.md) + - [selected_element](../Layers/selected_element.md) + - [gps_location](../Layers/gps_location.md) + - [gps_location_history](../Layers/gps_location_history.md) + - [home_location](../Layers/home_location.md) + - [gps_track](../Layers/gps_track.md) + + +Available languages: + + + + - en + - nl + - de + - es + - ca + - cs + + +This document is autogenerated from [assets/themes/clock/clock.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/clock/clock.json) diff --git a/Docs/Themes/cycle_highways.md b/Docs/Themes/cycle_highways.md index 87a954e70..0b52ab17e 100644 --- a/Docs/Themes/cycle_highways.md +++ b/Docs/Themes/cycle_highways.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Cycle highways ( cycle_highways) ----------------------------------- + Cycle highways ( [cycle_highways](https://mapcomplete.osm.be/cycle_highways) ) +-------------------------------------------------------------------------------- @@ -33,6 +33,7 @@ Available languages: - nb_NO - da - pa_PK + - cs -This document is autogenerated from [assets/themes/cycle_highways/cycle_highways.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cycle_highways/cycle_highways.json) \ No newline at end of file +This document is autogenerated from [assets/themes/cycle_highways/cycle_highways.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cycle_highways/cycle_highways.json) diff --git a/Docs/Themes/cycle_infra.md b/Docs/Themes/cycle_infra.md index 1b97f3856..1072bf2eb 100644 --- a/Docs/Themes/cycle_infra.md +++ b/Docs/Themes/cycle_infra.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Bicycle infrastructure ( cycle_infra) ---------------------------------------- + Bicycle infrastructure ( [cycle_infra](https://mapcomplete.osm.be/cycle_infra) ) +---------------------------------------------------------------------------------- @@ -38,6 +38,7 @@ Available languages: - fr - da - pa_PK + - cs -This document is autogenerated from [assets/themes/cycle_infra/cycle_infra.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cycle_infra/cycle_infra.json) \ No newline at end of file +This document is autogenerated from [assets/themes/cycle_infra/cycle_infra.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cycle_infra/cycle_infra.json) diff --git a/Docs/Themes/cyclenodes.md b/Docs/Themes/cyclenodes.md index 6b91df51c..91ecf714e 100644 --- a/Docs/Themes/cyclenodes.md +++ b/Docs/Themes/cyclenodes.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Cycle Node Networks ( cyclenodes) ------------------------------------ + Cycle Node Networks ( [cyclenodes](https://mapcomplete.osm.be/cyclenodes) ) +----------------------------------------------------------------------------- @@ -31,6 +31,7 @@ Available languages: - nl - fr - ca + - cs -This document is autogenerated from [assets/themes/cyclenodes/cyclenodes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclenodes/cyclenodes.json) \ No newline at end of file +This document is autogenerated from [assets/themes/cyclenodes/cyclenodes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclenodes/cyclenodes.json) diff --git a/Docs/Themes/cyclestreets.md b/Docs/Themes/cyclestreets.md index fb857e148..0aa3c02da 100644 --- a/Docs/Themes/cyclestreets.md +++ b/Docs/Themes/cyclestreets.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Cyclestreets ( cyclestreets) ------------------------------- + Cyclestreets ( [cyclestreets](https://mapcomplete.osm.be/cyclestreets) ) +-------------------------------------------------------------------------- @@ -38,6 +38,7 @@ Available languages: - fr - da - pa_PK + - cs -This document is autogenerated from [assets/themes/cyclestreets/cyclestreets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclestreets/cyclestreets.json) \ No newline at end of file +This document is autogenerated from [assets/themes/cyclestreets/cyclestreets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclestreets/cyclestreets.json) diff --git a/Docs/Themes/cyclofix.md b/Docs/Themes/cyclofix.md index cf7c0ebf0..88a5f52f9 100644 --- a/Docs/Themes/cyclofix.md +++ b/Docs/Themes/cyclofix.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Cyclofix - an open map for cyclists ( cyclofix) -------------------------------------------------- + Cyclofix - an open map for cyclists ( [cyclofix](https://mapcomplete.osm.be/cyclofix) ) +----------------------------------------------------------------------------------------- @@ -49,6 +49,7 @@ Available languages: - es - ca - da + - cs -This document is autogenerated from [assets/themes/cyclofix/cyclofix.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclofix/cyclofix.json) \ No newline at end of file +This document is autogenerated from [assets/themes/cyclofix/cyclofix.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/cyclofix/cyclofix.json) diff --git a/Docs/Themes/drinking_water.md b/Docs/Themes/drinking_water.md index 2858cb618..39cbb220e 100644 --- a/Docs/Themes/drinking_water.md +++ b/Docs/Themes/drinking_water.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Drinking Water ( drinking_water) ----------------------------------- + Drinking Water ( [drinking_water](https://mapcomplete.osm.be/drinking_water) ) +-------------------------------------------------------------------------------- @@ -37,6 +37,7 @@ Available languages: - es - da - pa_PK + - cs -This document is autogenerated from [assets/themes/drinking_water/drinking_water.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/drinking_water/drinking_water.json) \ No newline at end of file +This document is autogenerated from [assets/themes/drinking_water/drinking_water.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/drinking_water/drinking_water.json) diff --git a/Docs/Themes/education.md b/Docs/Themes/education.md index dc06a84ab..d8f5f89d8 100644 --- a/Docs/Themes/education.md +++ b/Docs/Themes/education.md @@ -1,11 +1,11 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Education ( education) ------------------------- + Education ( [education](https://mapcomplete.osm.be/education) ) +----------------------------------------------------------------- -On this map, you'll find information about all types of schools and eduction and can easily add more information +On this map, you'll find information about all types of schools and education and can easily add more information This theme contains the following layers: @@ -33,6 +33,8 @@ Available languages: - ca - da - pa_PK + - cs + - es -This document is autogenerated from [assets/themes/education/education.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/education/education.json) \ No newline at end of file +This document is autogenerated from [assets/themes/education/education.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/education/education.json) diff --git a/Docs/Themes/etymology.md b/Docs/Themes/etymology.md index 398a992a4..a9b25f871 100644 --- a/Docs/Themes/etymology.md +++ b/Docs/Themes/etymology.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Open Etymology Map ( etymology) ---------------------------------- + Open Etymology Map ( [etymology](https://mapcomplete.osm.be/etymology) ) +-------------------------------------------------------------------------- @@ -41,6 +41,8 @@ Available languages: - ca - da - nb_NO + - cs + - es -This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) \ No newline at end of file +This document is autogenerated from [assets/themes/etymology/etymology.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/etymology/etymology.json) diff --git a/Docs/Themes/facadegardens.md b/Docs/Themes/facadegardens.md index e18192714..21db11ee4 100644 --- a/Docs/Themes/facadegardens.md +++ b/Docs/Themes/facadegardens.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Facade gardens ( facadegardens) ---------------------------------- + Facade gardens ( [facadegardens](https://mapcomplete.osm.be/facadegardens) ) +------------------------------------------------------------------------------ @@ -34,6 +34,7 @@ Available languages: - ca - es - da + - cs -This document is autogenerated from [assets/themes/facadegardens/facadegardens.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/facadegardens/facadegardens.json) \ No newline at end of file +This document is autogenerated from [assets/themes/facadegardens/facadegardens.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/facadegardens/facadegardens.json) diff --git a/Docs/Themes/food.md b/Docs/Themes/food.md index dea99454f..6fce414d9 100644 --- a/Docs/Themes/food.md +++ b/Docs/Themes/food.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Restaurants and fast food ( food) ------------------------------------ + Restaurants and fast food ( [food](https://mapcomplete.osm.be/food) ) +----------------------------------------------------------------------- @@ -34,6 +34,8 @@ Available languages: - es - fr - da + - cs + - ru -This document is autogenerated from [assets/themes/food/food.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/food/food.json) \ No newline at end of file +This document is autogenerated from [assets/themes/food/food.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/food/food.json) diff --git a/Docs/Themes/fritures.md b/Docs/Themes/fritures.md index 590a93581..55ed3cd99 100644 --- a/Docs/Themes/fritures.md +++ b/Docs/Themes/fritures.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Fries shops ( fritures) -------------------------- + Fries shops ( [fritures](https://mapcomplete.osm.be/fritures) ) +----------------------------------------------------------------- @@ -31,6 +31,8 @@ Available languages: - ca - da - pa_PK + - cs + - es -This document is autogenerated from [assets/themes/fritures/fritures.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/fritures/fritures.json) \ No newline at end of file +This document is autogenerated from [assets/themes/fritures/fritures.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/fritures/fritures.json) diff --git a/Docs/Themes/fruit_trees.md b/Docs/Themes/fruit_trees.md index 045420226..54d72fc18 100644 --- a/Docs/Themes/fruit_trees.md +++ b/Docs/Themes/fruit_trees.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Open Boomgaardenkaart ( fruit_trees) --------------------------------------- + Open Boomgaardenkaart ( [fruit_trees](https://mapcomplete.osm.be/fruit_trees) ) +--------------------------------------------------------------------------------- @@ -27,4 +27,4 @@ Available languages: - nl -This document is autogenerated from [assets/themes/fruit_trees/fruit_trees.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/fruit_trees/fruit_trees.json) \ No newline at end of file +This document is autogenerated from [assets/themes/fruit_trees/fruit_trees.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/fruit_trees/fruit_trees.json) diff --git a/Docs/Themes/ghostbikes.md b/Docs/Themes/ghostbikes.md index 7d0195cbd..3f9581afa 100644 --- a/Docs/Themes/ghostbikes.md +++ b/Docs/Themes/ghostbikes.md @@ -1,11 +1,11 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Ghost bikes ( ghostbikes) ---------------------------- + Ghost bikes ( [ghostbikes](https://mapcomplete.osm.be/ghostbikes) ) +--------------------------------------------------------------------- -A ghost bike is a memorial for a cyclist who died in a traffic accident, in the form of a white bicycle placed permanently near the accident location.

On this map, one can see all the ghost bikes which are known by OpenStreetMap. Is a ghost bike missing? Everyone can add or update information here - you only need to have a (free) OpenStreetMap account. +A ghost bike is a memorial for a cyclist who died in a traffic accident, in the form of a white bicycle placed permanently near the accident location.

On this map, one can see all the ghost bikes which are known by OpenStreetMap. Is a ghost bike missing? Everyone can add or update information here - you only need to have a (free) OpenStreetMap account.

There exists an automated account on Mastodon which posts a monthly overview of ghost bikes worldwide

This theme contains the following layers: @@ -42,6 +42,7 @@ Available languages: - sv - da - ca + - cs -This document is autogenerated from [assets/themes/ghostbikes/ghostbikes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ghostbikes/ghostbikes.json) \ No newline at end of file +This document is autogenerated from [assets/themes/ghostbikes/ghostbikes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ghostbikes/ghostbikes.json) diff --git a/Docs/Themes/grb.md b/Docs/Themes/grb.md index 79b1a531e..24383d6e5 100644 --- a/Docs/Themes/grb.md +++ b/Docs/Themes/grb.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - GRB import helper ( grb) --------------------------- + GRB import helper ( [grb](https://mapcomplete.osm.be/grb) ) +------------------------------------------------------------- @@ -34,4 +34,4 @@ Available languages: - nl -This document is autogenerated from [assets/themes/grb/grb.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/grb/grb.json) \ No newline at end of file +This document is autogenerated from [assets/themes/grb/grb.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/grb/grb.json) diff --git a/Docs/Themes/grb_fixme.md b/Docs/Themes/grb_fixme.md index fc0850e53..df16092b3 100644 --- a/Docs/Themes/grb_fixme.md +++ b/Docs/Themes/grb_fixme.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - GRB Fixup ( grb_fixme) ------------------------- + GRB Fixup ( [grb_fixme](https://mapcomplete.osm.be/grb_fixme) ) +----------------------------------------------------------------- @@ -29,4 +29,4 @@ Available languages: - nl -This document is autogenerated from [assets/themes/grb_fixme/grb_fixme.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/grb_fixme/grb_fixme.json) \ No newline at end of file +This document is autogenerated from [assets/themes/grb_fixme/grb_fixme.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/grb_fixme/grb_fixme.json) diff --git a/Docs/Themes/hackerspaces.md b/Docs/Themes/hackerspaces.md index 697dfcac6..4074f4399 100644 --- a/Docs/Themes/hackerspaces.md +++ b/Docs/Themes/hackerspaces.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Hackerspaces ( hackerspaces) ------------------------------- + Hackerspaces ( [hackerspaces](https://mapcomplete.osm.be/hackerspaces) ) +-------------------------------------------------------------------------- @@ -34,6 +34,8 @@ Available languages: - da - ca - pa_PK + - cs + - es -This document is autogenerated from [assets/themes/hackerspaces/hackerspaces.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/hackerspaces/hackerspaces.json) \ No newline at end of file +This document is autogenerated from [assets/themes/hackerspaces/hackerspaces.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/hackerspaces/hackerspaces.json) diff --git a/Docs/Themes/hailhydrant.md b/Docs/Themes/hailhydrant.md index b10d83fdc..22fed0054 100644 --- a/Docs/Themes/hailhydrant.md +++ b/Docs/Themes/hailhydrant.md @@ -1,16 +1,12 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Hydrants, Extinguishers, Fire stations, and Ambulance stations ( hailhydrant) -------------------------------------------------------------------------------- + Hydrants, Extinguishers, Fire stations, and Ambulance stations ( [hailhydrant](https://mapcomplete.osm.be/hailhydrant) ) +-------------------------------------------------------------------------------------------------------------------------- On this map you can find and update hydrants, fire stations, ambulance stations, and extinguishers in your favorite neighborhoods. -You can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide additional details by answering available questions. - -All changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others. - This theme contains the following layers: @@ -43,6 +39,7 @@ Available languages: - es - ca - da + - cs -This document is autogenerated from [assets/themes/hailhydrant/hailhydrant.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/hailhydrant/hailhydrant.json) \ No newline at end of file +This document is autogenerated from [assets/themes/hailhydrant/hailhydrant.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/hailhydrant/hailhydrant.json) diff --git a/Docs/Themes/healthcare.md b/Docs/Themes/healthcare.md index e5a43b8d7..67c769a70 100644 --- a/Docs/Themes/healthcare.md +++ b/Docs/Themes/healthcare.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Healthcare ( healthcare) --------------------------- + Healthcare ( [healthcare](https://mapcomplete.osm.be/healthcare) ) +-------------------------------------------------------------------- @@ -16,6 +16,8 @@ This theme contains the following layers: - [dentist](../Layers/dentist.md) - [hospital](../Layers/hospital.md) - [pharmacy](../Layers/pharmacy.md) + - [medical-shops](../Layers/medical-shops.md) + - [shops](../Layers/shops.md) - [selected_element](../Layers/selected_element.md) - [gps_location](../Layers/gps_location.md) - [gps_location_history](../Layers/gps_location_history.md) @@ -34,6 +36,10 @@ Available languages: - da - nl - pa_PK + - cs + - nb_NO + - ru + - es -This document is autogenerated from [assets/themes/healthcare/healthcare.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/healthcare/healthcare.json) \ No newline at end of file +This document is autogenerated from [assets/themes/healthcare/healthcare.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/healthcare/healthcare.json) diff --git a/Docs/Themes/hotels.md b/Docs/Themes/hotels.md index 0db174f82..fc072e535 100644 --- a/Docs/Themes/hotels.md +++ b/Docs/Themes/hotels.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Hotels ( hotels) ------------------- + Hotels ( [hotels](https://mapcomplete.osm.be/hotels) ) +-------------------------------------------------------- @@ -31,6 +31,8 @@ Available languages: - nl - pa_PK - fr + - cs + - es -This document is autogenerated from [assets/themes/hotels/hotels.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/hotels/hotels.json) \ No newline at end of file +This document is autogenerated from [assets/themes/hotels/hotels.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/hotels/hotels.json) diff --git a/Docs/Themes/indoors.md b/Docs/Themes/indoors.md index 2532e72b1..c347bcdcd 100644 --- a/Docs/Themes/indoors.md +++ b/Docs/Themes/indoors.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Indoors ( indoors) --------------------- + Indoors ( [indoors](https://mapcomplete.osm.be/indoors) ) +----------------------------------------------------------- @@ -35,6 +35,8 @@ Available languages: - nl - ca - pa_PK + - cs + - es -This document is autogenerated from [assets/themes/indoors/indoors.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/indoors/indoors.json) \ No newline at end of file +This document is autogenerated from [assets/themes/indoors/indoors.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/indoors/indoors.json) diff --git a/Docs/Themes/kerbs_and_crossings.md b/Docs/Themes/kerbs_and_crossings.md index 8f2b0329c..2fb2d34de 100644 --- a/Docs/Themes/kerbs_and_crossings.md +++ b/Docs/Themes/kerbs_and_crossings.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Kerbs and crossings ( kerbs_and_crossings) --------------------------------------------- + Kerbs and crossings ( [kerbs_and_crossings](https://mapcomplete.osm.be/kerbs_and_crossings) ) +----------------------------------------------------------------------------------------------- @@ -30,6 +30,10 @@ Available languages: - de - fr - da + - cs + - nb_NO + - ru + - es -This document is autogenerated from [assets/themes/kerbs_and_crossings/kerbs_and_crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/kerbs_and_crossings/kerbs_and_crossings.json) \ No newline at end of file +This document is autogenerated from [assets/themes/kerbs_and_crossings/kerbs_and_crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/kerbs_and_crossings/kerbs_and_crossings.json) diff --git a/Docs/Themes/mapcomplete-changes.md b/Docs/Themes/mapcomplete-changes.md index cd756f707..5b69e7f18 100644 --- a/Docs/Themes/mapcomplete-changes.md +++ b/Docs/Themes/mapcomplete-changes.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Changes made with MapComplete ( mapcomplete-changes) ------------------------------------------------------- + Changes made with MapComplete ( [mapcomplete-changes](https://mapcomplete.osm.be/mapcomplete-changes) ) +--------------------------------------------------------------------------------------------------------- @@ -27,4 +27,4 @@ Available languages: - en -This document is autogenerated from [assets/themes/mapcomplete-changes/mapcomplete-changes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/mapcomplete-changes/mapcomplete-changes.json) \ No newline at end of file +This document is autogenerated from [assets/themes/mapcomplete-changes/mapcomplete-changes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/mapcomplete-changes/mapcomplete-changes.json) diff --git a/Docs/Themes/maproulette.md b/Docs/Themes/maproulette.md index 8ce21e37b..5d43c32c3 100644 --- a/Docs/Themes/maproulette.md +++ b/Docs/Themes/maproulette.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - MapRoulette Tasks ( maproulette) ----------------------------------- + MapRoulette Tasks ( [maproulette](https://mapcomplete.osm.be/maproulette) ) +----------------------------------------------------------------------------- @@ -30,6 +30,8 @@ Available languages: - ca - pa_PK - nl + - es + - cs -This document is autogenerated from [assets/themes/maproulette/maproulette.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/maproulette/maproulette.json) \ No newline at end of file +This document is autogenerated from [assets/themes/maproulette/maproulette.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/maproulette/maproulette.json) diff --git a/Docs/Themes/maps.md b/Docs/Themes/maps.md index 0d03a5e81..4fd08f1a4 100644 --- a/Docs/Themes/maps.md +++ b/Docs/Themes/maps.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - A map of maps ( maps) ------------------------ + A map of maps ( [maps](https://mapcomplete.osm.be/maps) ) +----------------------------------------------------------- @@ -35,6 +35,7 @@ Available languages: - nb_NO - ca - es + - cs -This document is autogenerated from [assets/themes/maps/maps.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/maps/maps.json) \ No newline at end of file +This document is autogenerated from [assets/themes/maps/maps.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/maps/maps.json) diff --git a/Docs/Themes/maxspeed.md b/Docs/Themes/maxspeed.md index dcabaf055..840ab76c3 100644 --- a/Docs/Themes/maxspeed.md +++ b/Docs/Themes/maxspeed.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Maxspeed ( maxspeed) ----------------------- + Maxspeed ( [maxspeed](https://mapcomplete.osm.be/maxspeed) ) +-------------------------------------------------------------- @@ -33,6 +33,8 @@ Available languages: - da - nl - pa_PK + - cs + - ru -This document is autogenerated from [assets/themes/maxspeed/maxspeed.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/maxspeed/maxspeed.json) \ No newline at end of file +This document is autogenerated from [assets/themes/maxspeed/maxspeed.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/maxspeed/maxspeed.json) diff --git a/Docs/Themes/nature.md b/Docs/Themes/nature.md index b3b9e2ae6..b848ea574 100644 --- a/Docs/Themes/nature.md +++ b/Docs/Themes/nature.md @@ -1,11 +1,11 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Into nature ( nature) ------------------------ + Into nature ( [nature](https://mapcomplete.osm.be/nature) ) +------------------------------------------------------------- -On this map, one can find interesting infromation for tourists and nature lovers, such as +On this map, one can find interesting information for tourists and nature lovers. This theme contains the following layers: @@ -37,6 +37,8 @@ Available languages: - fr - da - nb_NO + - cs + - es -This document is autogenerated from [assets/themes/nature/nature.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/nature/nature.json) \ No newline at end of file +This document is autogenerated from [assets/themes/nature/nature.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/nature/nature.json) diff --git a/Docs/Themes/natuurpunt.md b/Docs/Themes/natuurpunt.md index 76849239b..d819447ea 100644 --- a/Docs/Themes/natuurpunt.md +++ b/Docs/Themes/natuurpunt.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - The map of Natuurpunt ( natuurpunt) -------------------------------------- + The map of Natuurpunt ( [natuurpunt](https://mapcomplete.osm.be/natuurpunt) ) +------------------------------------------------------------------------------- @@ -36,4 +36,4 @@ Available languages: - nl -This document is autogenerated from [assets/themes/natuurpunt/natuurpunt.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/natuurpunt/natuurpunt.json) \ No newline at end of file +This document is autogenerated from [assets/themes/natuurpunt/natuurpunt.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/natuurpunt/natuurpunt.json) diff --git a/Docs/Themes/notes.md b/Docs/Themes/notes.md index d0f6c648a..9196f6b91 100644 --- a/Docs/Themes/notes.md +++ b/Docs/Themes/notes.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Notes on OpenStreetMap ( notes) ---------------------------------- + Notes on OpenStreetMap ( [notes](https://mapcomplete.osm.be/notes) ) +---------------------------------------------------------------------- @@ -32,6 +32,7 @@ Available languages: - nb_NO - fr - da + - cs -This document is autogenerated from [assets/themes/notes/notes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/notes/notes.json) \ No newline at end of file +This document is autogenerated from [assets/themes/notes/notes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/notes/notes.json) diff --git a/Docs/Themes/observation_towers.md b/Docs/Themes/observation_towers.md index e9cf84e74..06e5ae7cd 100644 --- a/Docs/Themes/observation_towers.md +++ b/Docs/Themes/observation_towers.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Observation towers ( observation_towers) ------------------------------------------- + Observation towers ( [observation_towers](https://mapcomplete.osm.be/observation_towers) ) +-------------------------------------------------------------------------------------------- @@ -35,6 +35,7 @@ Available languages: - fr - nb_NO - da + - cs -This document is autogenerated from [assets/themes/observation_towers/observation_towers.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/observation_towers/observation_towers.json) \ No newline at end of file +This document is autogenerated from [assets/themes/observation_towers/observation_towers.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/observation_towers/observation_towers.json) diff --git a/Docs/Themes/onwheels.md b/Docs/Themes/onwheels.md index 3388996bf..58ff97bdc 100644 --- a/Docs/Themes/onwheels.md +++ b/Docs/Themes/onwheels.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - OnWheels ( onwheels) ----------------------- + OnWheels ( [onwheels](https://mapcomplete.osm.be/onwheels) ) +-------------------------------------------------------------- @@ -50,6 +50,8 @@ Available languages: - nb_NO - ca - pa_PK + - es + - cs -This document is autogenerated from [assets/themes/onwheels/onwheels.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/onwheels/onwheels.json) \ No newline at end of file +This document is autogenerated from [assets/themes/onwheels/onwheels.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/onwheels/onwheels.json) diff --git a/Docs/Themes/openwindpowermap.md b/Docs/Themes/openwindpowermap.md index 07ab9da3d..dc9370507 100644 --- a/Docs/Themes/openwindpowermap.md +++ b/Docs/Themes/openwindpowermap.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - OpenWindPowerMap ( openwindpowermap) --------------------------------------- + OpenWindPowerMap ( [openwindpowermap](https://mapcomplete.osm.be/openwindpowermap) ) +-------------------------------------------------------------------------------------- @@ -35,6 +35,8 @@ Available languages: - ca - nb_NO - pa_PK + - es + - cs -This document is autogenerated from [assets/themes/openwindpowermap/openwindpowermap.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/openwindpowermap/openwindpowermap.json) \ No newline at end of file +This document is autogenerated from [assets/themes/openwindpowermap/openwindpowermap.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/openwindpowermap/openwindpowermap.json) diff --git a/Docs/Themes/osm_community_index.md b/Docs/Themes/osm_community_index.md index c3e271c5a..fbccf84f5 100644 --- a/Docs/Themes/osm_community_index.md +++ b/Docs/Themes/osm_community_index.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - OSM Community Index ( osm_community_index) --------------------------------------------- + OSM Community Index ( [osm_community_index](https://mapcomplete.osm.be/osm_community_index) ) +----------------------------------------------------------------------------------------------- @@ -26,6 +26,10 @@ Available languages: - en - de - nl + - fr + - es + - ca + - cs -This document is autogenerated from [assets/themes/osm_community_index/osm_community_index.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/osm_community_index/osm_community_index.json) \ No newline at end of file +This document is autogenerated from [assets/themes/osm_community_index/osm_community_index.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/osm_community_index/osm_community_index.json) diff --git a/Docs/Themes/parkings.md b/Docs/Themes/parkings.md index 0915329ad..3e3600700 100644 --- a/Docs/Themes/parkings.md +++ b/Docs/Themes/parkings.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Parking ( parkings) ---------------------- + Parking ( [parkings](https://mapcomplete.osm.be/parkings) ) +------------------------------------------------------------- @@ -13,6 +13,7 @@ This theme contains the following layers: - [parking](../Layers/parking.md) - [parking_spaces](../Layers/parking_spaces.md) + - [parking_ticket_machine](../Layers/parking_ticket_machine.md) - [selected_element](../Layers/selected_element.md) - [gps_location](../Layers/gps_location.md) - [gps_location_history](../Layers/gps_location_history.md) @@ -38,6 +39,7 @@ Available languages: - da - pa_PK - ca + - cs -This document is autogenerated from [assets/themes/parkings/parkings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/parkings/parkings.json) \ No newline at end of file +This document is autogenerated from [assets/themes/parkings/parkings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/parkings/parkings.json) diff --git a/Docs/Themes/personal.md b/Docs/Themes/personal.md index ea90d6ed7..611d61820 100644 --- a/Docs/Themes/personal.md +++ b/Docs/Themes/personal.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Personal theme ( personal) ----------------------------- + Personal theme ( [personal](https://mapcomplete.osm.be/personal) ) +-------------------------------------------------------------------- @@ -36,6 +36,7 @@ This theme contains the following layers: - [climbing_gym](../Layers/climbing_gym.md) - [climbing_opportunity](../Layers/climbing_opportunity.md) - [climbing_route](../Layers/climbing_route.md) + - [clock](../Layers/clock.md) - [crossings](../Layers/crossings.md) - [cycleways_and_roads](../Layers/cycleways_and_roads.md) - [defibrillator](../Layers/defibrillator.md) @@ -70,6 +71,7 @@ This theme contains the following layers: - [parcel_lockers](../Layers/parcel_lockers.md) - [parking](../Layers/parking.md) - [parking_spaces](../Layers/parking_spaces.md) + - [parking_ticket_machine](../Layers/parking_ticket_machine.md) - [pedestrian_path](../Layers/pedestrian_path.md) - [pharmacy](../Layers/pharmacy.md) - [physiotherapist](../Layers/physiotherapist.md) @@ -127,6 +129,7 @@ Available languages: - id - da - pa_PK + - cs -This document is autogenerated from [assets/themes/personal/personal.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/personal/personal.json) \ No newline at end of file +This document is autogenerated from [assets/themes/personal/personal.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/personal/personal.json) diff --git a/Docs/Themes/pets.md b/Docs/Themes/pets.md index d2c4b99b1..c626724be 100644 --- a/Docs/Themes/pets.md +++ b/Docs/Themes/pets.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Veterinarians, dog parks and other pet-amenities ( pets) ----------------------------------------------------------- + Veterinarians, dog parks and other pet-amenities ( [pets](https://mapcomplete.osm.be/pets) ) +---------------------------------------------------------------------------------------------- @@ -35,6 +35,8 @@ Available languages: - nl - fr - ca + - es + - cs -This document is autogenerated from [assets/themes/pets/pets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/pets/pets.json) \ No newline at end of file +This document is autogenerated from [assets/themes/pets/pets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/pets/pets.json) diff --git a/Docs/Themes/play_forests.md b/Docs/Themes/play_forests.md index 0f6597e2b..c6894c1b0 100644 --- a/Docs/Themes/play_forests.md +++ b/Docs/Themes/play_forests.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Speelbossen ( play_forests) ------------------------------ + Speelbossen ( [play_forests](https://mapcomplete.osm.be/play_forests) ) +------------------------------------------------------------------------- @@ -26,4 +26,4 @@ Available languages: - nl -This document is autogenerated from [assets/themes/play_forests/play_forests.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/play_forests/play_forests.json) \ No newline at end of file +This document is autogenerated from [assets/themes/play_forests/play_forests.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/play_forests/play_forests.json) diff --git a/Docs/Themes/playgrounds.md b/Docs/Themes/playgrounds.md index 077b85b15..54da48de6 100644 --- a/Docs/Themes/playgrounds.md +++ b/Docs/Themes/playgrounds.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Playgrounds ( playgrounds) ----------------------------- + Playgrounds ( [playgrounds](https://mapcomplete.osm.be/playgrounds) ) +----------------------------------------------------------------------- @@ -37,6 +37,7 @@ Available languages: - ca - es - da + - cs -This document is autogenerated from [assets/themes/playgrounds/playgrounds.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/playgrounds/playgrounds.json) \ No newline at end of file +This document is autogenerated from [assets/themes/playgrounds/playgrounds.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/playgrounds/playgrounds.json) diff --git a/Docs/Themes/postal_codes.md b/Docs/Themes/postal_codes.md index fa88065b6..95db8d2e4 100644 --- a/Docs/Themes/postal_codes.md +++ b/Docs/Themes/postal_codes.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Postal codes ( postal_codes) ------------------------------- + Postal codes ( [postal_codes](https://mapcomplete.osm.be/postal_codes) ) +-------------------------------------------------------------------------- @@ -36,6 +36,7 @@ Available languages: - fr - da - pa_PK + - cs -This document is autogenerated from [assets/themes/postal_codes/postal_codes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/postal_codes/postal_codes.json) \ No newline at end of file +This document is autogenerated from [assets/themes/postal_codes/postal_codes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/postal_codes/postal_codes.json) diff --git a/Docs/Themes/postboxes.md b/Docs/Themes/postboxes.md index 05dd75394..ab61d0ba8 100644 --- a/Docs/Themes/postboxes.md +++ b/Docs/Themes/postboxes.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Postbox and Post Office Map ( postboxes) ------------------------------------------- + Postbox and Post Office Map ( [postboxes](https://mapcomplete.osm.be/postboxes) ) +----------------------------------------------------------------------------------- @@ -35,6 +35,8 @@ Available languages: - fr - da - ca + - es + - cs -This document is autogenerated from [assets/themes/postboxes/postboxes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/postboxes/postboxes.json) \ No newline at end of file +This document is autogenerated from [assets/themes/postboxes/postboxes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/postboxes/postboxes.json) diff --git a/Docs/Themes/rainbow_crossings.md b/Docs/Themes/rainbow_crossings.md index 0fa1fca9e..33a4a84c0 100644 --- a/Docs/Themes/rainbow_crossings.md +++ b/Docs/Themes/rainbow_crossings.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Rainbow pedestrian crossings ( rainbow_crossings) ---------------------------------------------------- + Rainbow pedestrian crossings ( [rainbow_crossings](https://mapcomplete.osm.be/rainbow_crossings) ) +---------------------------------------------------------------------------------------------------- @@ -30,6 +30,10 @@ Available languages: - fr - da - nl + - ru + - ca + - es + - cs -This document is autogenerated from [assets/themes/rainbow_crossings/rainbow_crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/rainbow_crossings/rainbow_crossings.json) \ No newline at end of file +This document is autogenerated from [assets/themes/rainbow_crossings/rainbow_crossings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/rainbow_crossings/rainbow_crossings.json) diff --git a/Docs/Themes/shops.md b/Docs/Themes/shops.md index edf6a1890..aa91e6e32 100644 --- a/Docs/Themes/shops.md +++ b/Docs/Themes/shops.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Open Shop Map ( shops) ------------------------- + Open Shop Map ( [shops](https://mapcomplete.osm.be/shops) ) +------------------------------------------------------------- @@ -36,6 +36,8 @@ Available languages: - nl - ca - da + - es + - cs -This document is autogenerated from [assets/themes/shops/shops.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/shops/shops.json) \ No newline at end of file +This document is autogenerated from [assets/themes/shops/shops.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/shops/shops.json) diff --git a/Docs/Themes/sidewalks.md b/Docs/Themes/sidewalks.md index a17af1014..bded59a2a 100644 --- a/Docs/Themes/sidewalks.md +++ b/Docs/Themes/sidewalks.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Sidewalks ( sidewalks) ------------------------- + Sidewalks ( [sidewalks](https://mapcomplete.osm.be/sidewalks) ) +----------------------------------------------------------------- @@ -34,6 +34,7 @@ Available languages: - it - da - pa_PK + - cs -This document is autogenerated from [assets/themes/sidewalks/sidewalks.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/sidewalks/sidewalks.json) \ No newline at end of file +This document is autogenerated from [assets/themes/sidewalks/sidewalks.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/sidewalks/sidewalks.json) diff --git a/Docs/Themes/speelplekken.md b/Docs/Themes/speelplekken.md index 5c89efc5a..ce897e1de 100644 --- a/Docs/Themes/speelplekken.md +++ b/Docs/Themes/speelplekken.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Welkom bij de groendoener! ( speelplekken) --------------------------------------------- + Welkom bij de groendoener! ( [speelplekken](https://mapcomplete.osm.be/speelplekken) ) +---------------------------------------------------------------------------------------- @@ -33,4 +33,4 @@ Available languages: - nl -This document is autogenerated from [assets/themes/speelplekken/speelplekken.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/speelplekken/speelplekken.json) \ No newline at end of file +This document is autogenerated from [assets/themes/speelplekken/speelplekken.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/speelplekken/speelplekken.json) diff --git a/Docs/Themes/sport_pitches.md b/Docs/Themes/sport_pitches.md index 251862038..116814d3f 100644 --- a/Docs/Themes/sport_pitches.md +++ b/Docs/Themes/sport_pitches.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Sport pitches ( sport_pitches) --------------------------------- + Sport pitches ( [sport_pitches](https://mapcomplete.osm.be/sport_pitches) ) +----------------------------------------------------------------------------- @@ -35,6 +35,7 @@ Available languages: - ca - es - da + - cs -This document is autogenerated from [assets/themes/sport_pitches/sport_pitches.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/sport_pitches/sport_pitches.json) \ No newline at end of file +This document is autogenerated from [assets/themes/sport_pitches/sport_pitches.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/sport_pitches/sport_pitches.json) diff --git a/Docs/Themes/sports.md b/Docs/Themes/sports.md index 3a5177a50..cbe9933ba 100644 --- a/Docs/Themes/sports.md +++ b/Docs/Themes/sports.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Sports ( sports) ------------------- + Sports ( [sports](https://mapcomplete.osm.be/sports) ) +-------------------------------------------------------- @@ -33,6 +33,8 @@ Available languages: - pa_PK - fr - ca + - es + - cs -This document is autogenerated from [assets/themes/sports/sports.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/sports/sports.json) \ No newline at end of file +This document is autogenerated from [assets/themes/sports/sports.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/sports/sports.json) diff --git a/Docs/Themes/stations.md b/Docs/Themes/stations.md index 6e0b2cb9d..977f96a22 100644 --- a/Docs/Themes/stations.md +++ b/Docs/Themes/stations.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Train Stations ( stations) ----------------------------- + Train Stations ( [stations](https://mapcomplete.osm.be/stations) ) +-------------------------------------------------------------------- @@ -46,6 +46,11 @@ Available languages: - en - de - nl + - nb_NO + - fr + - ca + - es + - cs -This document is autogenerated from [assets/themes/stations/stations.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/stations/stations.json) \ No newline at end of file +This document is autogenerated from [assets/themes/stations/stations.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/stations/stations.json) diff --git a/Docs/Themes/street_lighting.md b/Docs/Themes/street_lighting.md index c281851c0..3b57edfd7 100644 --- a/Docs/Themes/street_lighting.md +++ b/Docs/Themes/street_lighting.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Street Lighting ( street_lighting) ------------------------------------- + Street Lighting ( [street_lighting](https://mapcomplete.osm.be/street_lighting) ) +----------------------------------------------------------------------------------- @@ -36,6 +36,8 @@ Available languages: - nb_NO - da - pa_PK + - es + - cs -This document is autogenerated from [assets/themes/street_lighting/street_lighting.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/street_lighting/street_lighting.json) \ No newline at end of file +This document is autogenerated from [assets/themes/street_lighting/street_lighting.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/street_lighting/street_lighting.json) diff --git a/Docs/Themes/street_lighting_assen.md b/Docs/Themes/street_lighting_assen.md index 668b15152..9b9ff8721 100644 --- a/Docs/Themes/street_lighting_assen.md +++ b/Docs/Themes/street_lighting_assen.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Straatverlichting - Assen ( street_lighting_assen) ----------------------------------------------------- + Straatverlichting - Assen ( [street_lighting_assen](https://mapcomplete.osm.be/street_lighting_assen) ) +--------------------------------------------------------------------------------------------------------- @@ -28,4 +28,4 @@ Available languages: - nl -This document is autogenerated from [assets/themes/street_lighting_assen/street_lighting_assen.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/street_lighting_assen/street_lighting_assen.json) \ No newline at end of file +This document is autogenerated from [assets/themes/street_lighting_assen/street_lighting_assen.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/street_lighting_assen/street_lighting_assen.json) diff --git a/Docs/Themes/surveillance.md b/Docs/Themes/surveillance.md index e7e04f1af..1ef6a8b03 100644 --- a/Docs/Themes/surveillance.md +++ b/Docs/Themes/surveillance.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Surveillance under Surveillance ( surveillance) -------------------------------------------------- + Surveillance under Surveillance ( [surveillance](https://mapcomplete.osm.be/surveillance) ) +--------------------------------------------------------------------------------------------- @@ -36,6 +36,8 @@ Available languages: - ca - nb_NO - da + - es + - cs -This document is autogenerated from [assets/themes/surveillance/surveillance.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/surveillance/surveillance.json) \ No newline at end of file +This document is autogenerated from [assets/themes/surveillance/surveillance.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/surveillance/surveillance.json) diff --git a/Docs/Themes/toerisme_vlaanderen.md b/Docs/Themes/toerisme_vlaanderen.md index 7770aa81a..e98be92f8 100644 --- a/Docs/Themes/toerisme_vlaanderen.md +++ b/Docs/Themes/toerisme_vlaanderen.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Pin je punt ( toerisme_vlaanderen) ------------------------------------- + Pin je punt ( [toerisme_vlaanderen](https://mapcomplete.osm.be/toerisme_vlaanderen) ) +--------------------------------------------------------------------------------------- @@ -35,4 +35,4 @@ Available languages: - nl -This document is autogenerated from [assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json) \ No newline at end of file +This document is autogenerated from [assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json) diff --git a/Docs/Themes/toilets.md b/Docs/Themes/toilets.md index c2d0f1538..5cd93e089 100644 --- a/Docs/Themes/toilets.md +++ b/Docs/Themes/toilets.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Open Toilet Map ( toilets) ----------------------------- + Open Toilet Map ( [toilets](https://mapcomplete.osm.be/toilets) ) +------------------------------------------------------------------- @@ -37,6 +37,8 @@ Available languages: - hu - ca - da + - es + - cs -This document is autogenerated from [assets/themes/toilets/toilets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/toilets/toilets.json) \ No newline at end of file +This document is autogenerated from [assets/themes/toilets/toilets.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/toilets/toilets.json) diff --git a/Docs/Themes/transit.md b/Docs/Themes/transit.md index d25f76126..f8d0b2606 100644 --- a/Docs/Themes/transit.md +++ b/Docs/Themes/transit.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Bus routes ( transit) ------------------------ + Bus routes ( [transit](https://mapcomplete.osm.be/transit) ) +-------------------------------------------------------------- @@ -35,6 +35,8 @@ Available languages: - ca - pa_PK - nl + - es + - cs -This document is autogenerated from [assets/themes/transit/transit.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/transit/transit.json) \ No newline at end of file +This document is autogenerated from [assets/themes/transit/transit.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/transit/transit.json) diff --git a/Docs/Themes/trees.md b/Docs/Themes/trees.md index 6deaccca5..803745347 100644 --- a/Docs/Themes/trees.md +++ b/Docs/Themes/trees.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Trees ( trees) ----------------- + Trees ( [trees](https://mapcomplete.osm.be/trees) ) +----------------------------------------------------- @@ -39,6 +39,7 @@ Available languages: - es - da - pa_PK + - cs -This document is autogenerated from [assets/themes/trees/trees.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/trees/trees.json) \ No newline at end of file +This document is autogenerated from [assets/themes/trees/trees.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/trees/trees.json) diff --git a/Docs/Themes/uk_addresses.md b/Docs/Themes/uk_addresses.md index 51dc228f3..852e601a7 100644 --- a/Docs/Themes/uk_addresses.md +++ b/Docs/Themes/uk_addresses.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Addresses in Great Britain ( uk_addresses) --------------------------------------------- + Addresses in Great Britain ( [uk_addresses](https://mapcomplete.osm.be/uk_addresses) ) +---------------------------------------------------------------------------------------- @@ -29,4 +29,4 @@ Available languages: - en -This document is autogenerated from [assets/themes/uk_addresses/uk_addresses.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/uk_addresses/uk_addresses.json) \ No newline at end of file +This document is autogenerated from [assets/themes/uk_addresses/uk_addresses.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/uk_addresses/uk_addresses.json) diff --git a/Docs/Themes/walls_and_buildings.md b/Docs/Themes/walls_and_buildings.md index 02ce4d7b3..5bafc44fd 100644 --- a/Docs/Themes/walls_and_buildings.md +++ b/Docs/Themes/walls_and_buildings.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Walls and buildings ( walls_and_buildings) --------------------------------------------- + Walls and buildings ( [walls_and_buildings](https://mapcomplete.osm.be/walls_and_buildings) ) +----------------------------------------------------------------------------------------------- @@ -32,6 +32,9 @@ Available languages: - da - nb_NO - nl + - ca + - es + - cs -This document is autogenerated from [assets/themes/walls_and_buildings/walls_and_buildings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/walls_and_buildings/walls_and_buildings.json) \ No newline at end of file +This document is autogenerated from [assets/themes/walls_and_buildings/walls_and_buildings.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/walls_and_buildings/walls_and_buildings.json) diff --git a/Docs/Themes/waste.md b/Docs/Themes/waste.md index 24b7d8524..5551ccedd 100644 --- a/Docs/Themes/waste.md +++ b/Docs/Themes/waste.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Waste ( waste) ----------------- + Waste ( [waste](https://mapcomplete.osm.be/waste) ) +----------------------------------------------------- @@ -34,6 +34,8 @@ Available languages: - it - da - es + - ru + - cs -This document is autogenerated from [assets/themes/waste/waste.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/waste/waste.json) \ No newline at end of file +This document is autogenerated from [assets/themes/waste/waste.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/waste/waste.json) diff --git a/Docs/Themes/waste_assen.md b/Docs/Themes/waste_assen.md index 91ba3061f..7a6ab99ce 100644 --- a/Docs/Themes/waste_assen.md +++ b/Docs/Themes/waste_assen.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Afval - Assen ( waste_assen) ------------------------------- + Afval - Assen ( [waste_assen](https://mapcomplete.osm.be/waste_assen) ) +------------------------------------------------------------------------- @@ -30,4 +30,4 @@ Available languages: - nl -This document is autogenerated from [assets/themes/waste_assen/waste_assen.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/waste_assen/waste_assen.json) \ No newline at end of file +This document is autogenerated from [assets/themes/waste_assen/waste_assen.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/waste_assen/waste_assen.json) diff --git a/Docs/Themes/waste_basket.md b/Docs/Themes/waste_basket.md index 16ad079bf..f60723696 100644 --- a/Docs/Themes/waste_basket.md +++ b/Docs/Themes/waste_basket.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Waste Basket ( waste_basket) ------------------------------- + Waste Basket ( [waste_basket](https://mapcomplete.osm.be/waste_basket) ) +-------------------------------------------------------------------------- @@ -35,6 +35,8 @@ Available languages: - nb_NO - da - pa_PK + - es + - cs -This document is autogenerated from [assets/themes/waste_basket/waste_basket.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/waste_basket/waste_basket.json) \ No newline at end of file +This document is autogenerated from [assets/themes/waste_basket/waste_basket.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/waste_basket/waste_basket.json) diff --git a/Docs/Themes/width.md b/Docs/Themes/width.md index e06daf1bf..b62479576 100644 --- a/Docs/Themes/width.md +++ b/Docs/Themes/width.md @@ -1,7 +1,7 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - - Straatbreedtes ( width) -------------------------- + Straatbreedtes ( [width](https://mapcomplete.osm.be/width) ) +-------------------------------------------------------------- @@ -26,4 +26,4 @@ Available languages: - nl -This document is autogenerated from [assets/themes/width/width.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/width/width.json) \ No newline at end of file +This document is autogenerated from [assets/themes/width/width.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/width/width.json) diff --git a/Docs/URL_Parameters.md b/Docs/URL_Parameters.md index a600a4ca7..c9c10727f 100644 --- a/Docs/URL_Parameters.md +++ b/Docs/URL_Parameters.md @@ -1,4 +1,4 @@ - +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) URL-parameters and URL-hash ============================= @@ -18,6 +18,7 @@ - [fs-filter](#fs-filter) - [fs-add-new](#fs-add-new) - [fs-welcome-message](#fs-welcome-message) + - [fs-community-index](#fs-community-index) - [fs-iframe-popout](#fs-iframe-popout) - [fs-more-quests](#fs-more-quests) - [fs-share-screen](#fs-share-screen) @@ -126,6 +127,13 @@ Finally, the URL-hash is the part after the `#`. It is `node/1234` in this case. + fs-community-index +-------------------- + + Disables/enables the button to get in touch with the community The default value is _true_ + + + fs-iframe-popout ------------------ @@ -243,4 +251,4 @@ Finally, the URL-hash is the part after the `#`. It is `node/1234` in this case. Wether or not the layer with id is shown The default value is _true_ -This document is autogenerated from [Logic/Web/QueryParameters.ts](https://github.com/pietervdvn/MapComplete/blob/develop/Logic/Web/QueryParameters.ts), [UI/QueryParameterDocumentation.ts](https://github.com/pietervdvn/MapComplete/blob/develop/UI/QueryParameterDocumentation.ts) \ No newline at end of file +This document is autogenerated from [Logic/Web/QueryParameters.ts](https://github.com/pietervdvn/MapComplete/blob/develop/Logic/Web/QueryParameters.ts), [UI/QueryParameterDocumentation.ts](https://github.com/pietervdvn/MapComplete/blob/develop/UI/QueryParameterDocumentation.ts) diff --git a/Docs/UserTests/2023-01-02 Ad Hoc - cyclestreets.md b/Docs/UserTests/2023-01-02 Ad Hoc - cyclestreets.md index 8fa3528fc..5d725fa5b 100644 --- a/Docs/UserTests/2023-01-02 Ad Hoc - cyclestreets.md +++ b/Docs/UserTests/2023-01-02 Ad Hoc - cyclestreets.md @@ -5,6 +5,7 @@ Tech Skills: basic computer skills Demography: F, 50-60 yo Language: Dutch Medium: Android phone(s), DuckDuckGo browser + Fennec Browser +User interface language: Dutch ## Task diff --git a/Docs/UserTests/2023-01-06 Ad Hoc user study - adding a facade garden.md b/Docs/UserTests/2023-01-06 Ad Hoc user study - adding a facade garden.md new file mode 100644 index 000000000..1e604531a --- /dev/null +++ b/Docs/UserTests/2023-01-06 Ad Hoc user study - adding a facade garden.md @@ -0,0 +1,58 @@ +# Ad Hoc User study + +Subject: K Vs +Tech Skills: basic computer skills +Demography: F, 50-60 yo +Language: Dutch +Medium: Android phone(s), Fennec Browser +User interface language: Dutch + +## Task + +- Switch to the 'facade garden'-theme +- add a facade garden + +## How it went + +The tester is still on the cyclestreet-theme as they [just finished a previous user test](2023-01-06%20Followup%20-%20cyclestreets.md) + +They indicate that they want to add a facade garden nearby. +The first challenge is to switch to the facade-garden-map. + +She first presses the 'layers'-button on the bottom left, where she doesn't find any switch-map functionality. (1) +She closes this popup again. + +She swipes back without success, swipes down from the top of the screen opening the notifications area of Android, which she closes again. + +She asks the examinator if the controls of the browser (URL-bar, ...) would help her. + +She then opens the '?'-button and sees the theme introduction panel. She scrolls down, and sees the 'Discover more maps'-option which she picks. +This takes her to the map selection tab, where she browses until she finds and opens the facade garden map. + +While she is reading the welcome message, the welcome message automatically closes. (2) + +Once on the facade garden map, she wants to add a new facade garden. +As this is a very small 'garden' (5cm by 5cm), the accurate placing is very important; +the garden is placed on the edge between two houses, where a map view with housenumbers is thus important. + +The tester taps the map more or less where the facade garden is, but complains that this is not accurate enough. +The examinator hints that there is a way to switch backgrounds. (3) +This clues her to use the quick background switcher at the bottom left, where she uses the GRB-background layer (which is appropriate) even though she isn't familiar with it. (4) + +She taps the add-new-point marker to an appropriate location, reads the text 'tap here to add a new point' to confirm that she needs to tap, +and taps it to open the dialog. +She selects the (only) category 'geveltuintje' (facade garden) to add. +In the next step, she is greeted by the location input map, showing a particularly dim and shadowy aerial picture with a lot of roofs. +The test subject moves this map a lot, as she is confused - up to the allowed boundaries. +It is hinted that she can use the GRB-map again (5, 3) which she selects. +With this, she adds a new facade garden. She is greeted by the infoscreen for the new point. +She answers the various questions successfully, but skips the 'how is this garden oriented' as it looks to complicated at first glance. + + +## To improve + +1. Add a subtle 'go back to the theme overview' in the layer selection at the bottom +2. While she was reading the welcome message, the GPS-sensor found a fix and moved the map to it. This triggers the automatic-close functionality. Todo: disable this +3. Derive a way to hint users what to do, e.g. a tooltip or aggressive tooltip? +4. It might also be interesting to show a "you just switched to background" as tooltip +5. Use "map" as default background for the preset diff --git a/Docs/UserTests/2023-01-06 Followup - cyclestreets.md b/Docs/UserTests/2023-01-06 Followup - cyclestreets.md new file mode 100644 index 000000000..466eb0d5f --- /dev/null +++ b/Docs/UserTests/2023-01-06 Followup - cyclestreets.md @@ -0,0 +1,90 @@ +# Follow-up user test + +This user test was conducted with the same test subject as [2023-01-02 Ad Hoc - cyclestreets.md]. +This test consists of the _same_ task as the previous user test to validate that [improvements made based on this usertest](https://github.com/pietervdvn/MapComplete/issues/1219) actually improve the situation. + + +Subject: K Vs +Tech Skills: basic computer skills +Demography: F, 50-60 yo +Language: Dutch +Medium: Android phone(s), Fennec Browser +User interface language: Dutch + +## Task + +- Login with OSM +- Split a road and mark a part of the road as cyclestreet + + +## How it went + +The test subject gets a phone with MapComplete open, but no user account is logged in. + +Searching for the desired theme ("fietstraten en fietszones") happens manually, by scrolling through all the themes. +Upon asking why the 'search a theme'-functionality is not used, the tester replies that "it is to small and won't do what she wants it to do anyway" (1) + +Once she spots the correct theme, she glosses over it, but upon scrolling back up she picks it right away. + +The test subject lands on the home page, showing (from top to bottom): + +- the tabs of the welcome panel +- the theme introduction on top +- the user survey invitation +- then the 'To the map' ("naar de kaart") and the "login with OpenStreetMap to change the map" buttons +- the language selector +- a dashed line +- and the various "other actions"-buttons, such as "ontdek meer kaarten" (discover more maps), "support MapComplete financially", "Report an error in the software" ... + + +The first hurdle is the untranslated "user survey invitation", which is clearly hindering the task (2). + +When scrolling through to the "to the map" and the "Login with OpenStreetMap"-buttons, this is a first tough point as it is unclear which button should be pressed first: +should we first login or should we first visit the map? + +"Open de kaart" is also felt as being to vague, "raadpleeg de kaart" is mentioned to be a better alternative (3) + +She decides to try to login first. As the phone is still logged in on OpenStreetMap.org (but not on mapcomplete.osm.be), the "Authorize access to your accounts" is shown right away (in English instead of Dutch). +This proves to be scary and a big hurdle to take. The tester reads all the granted permissions and reluctantly presses "Grant access". (4) + +She gets back to the welcome screen, where she is a bit surprised to only see one button anymore: the "open the map" which she presses. + +As the street which has to be turned into a cyclestreet is closeby, this street is already in view. (Note that this street is not a cyclestreet in real life. MapComplete was in Testing-mode during the entire excercise). + +She taps the "scissor"-button (which is actually the edit pencil) on the street to open the infoscreen of this street. + +The infoscreen opens, containing the title and a big image of the street which fills about half of the screen. (The street has a link to wikipedia, which has images attached. This was not the case with the street in the previous test). +Below this big image is the button "Add an image", the "don't upload copyrighted pictures"-warning message and the license picker. +The test subject is confused about the picture and closes the info screen again. She was expecting to be able to cut the street straight away. +She opens up the infobox again, to be confused by the image again, closing the popup once more. +At last she opens up the info box of another street (which has similar images as well), where she again closes the the infobox. (5, 6, 7) + +The examinator steps in and shows that they can scroll down. + +The tester scrolls down and passes the "this street is not a cyclestreet"-text with the edit button. +She already taps the "edit"-pencil, which opens up the question. She selects "this street will become a cyclestreet soon"-option. (Technically, to fulfill the task completely, she should have taken "this street is a cyclestreet" option). +She doesn't find the 'Save'-button right away, but quickly scrolls up to discover the 'save'-button (8) + +With the street set into "will become a cyclestreet soon", she scrolls down to split the street into multiple parts. +She cuts the street at the desired location and confirms the cuts. +This goes relatively easy - validating the improvements that have been made earlier. + +Upon confirming the cut, the popup closes showing the basemap again. This successfully forces the tester to pick the right part to make further modifications. + +However, one part of the street colours bright blue, the other part is gray. Ironically, the part that was intended to be a cyclestreet is marked as not a cyclestreet. (9) + +The test subject opens the infobox of the target part, marks it as cycle street; opens the info about other segment and marks it as not a cyclestreet, completing the assigned task. + +The tester indicates that they now want to add a facade garden they spotted nearby - [see the next user study](2023-01-06%20Ad%20Hoc%20user%20study%20-%20adding%20a%20facade%20garden.md) + +## To improve + +1. Make the search bar bigger +2. Remove the user survey invitation again (non issue as it is temporary in the first place) +3. Change "Open de kaart" into "raadpleeg de kaart" +4. Improving the login flow is very hard, as this is not under control of MapComplete +5. The image block takes up a lot of space, esp. on mobile. It should be made smaller +6. Should the image-block always be on top, in every theme? Might it be more appropriate to move it down in the infobox on some occasions? +7. Is there some way to indicate to the user that they can scroll down and that there is more content below? +8. When the 'edit'-mode of a tagrendering is activated, it should scrollIntoView +9. It turns out that changed properties are not applied onto the object if the road gets split; this is a bug diff --git a/Docs/UserTests/2023-01-07 Ad hoc user study - adding a wheelchair accessible toilet.md b/Docs/UserTests/2023-01-07 Ad hoc user study - adding a wheelchair accessible toilet.md new file mode 100644 index 000000000..c09c58b8a --- /dev/null +++ b/Docs/UserTests/2023-01-07 Ad hoc user study - adding a wheelchair accessible toilet.md @@ -0,0 +1,68 @@ +# Ad Hoc User test + +Subject: Lydia +Tech Skills: Low +Demography: F, 60-70 +Language: Dutch +Medium: Android phone(s), Fennec Browser +User interface language: Dutch + +## Task + +- experimenting with onWheels +- Adding a wheelchair accessible toilet + +## How it went + + +The contributor showed interest during a conversation into a wheelchair-friendliness-app. +As such, the onwheels app was demoed. +Initially, the app loaded very slowly as a city with thousands of shops was loaded first. + +The local area was however better, after which the tester wanted to add a wheelchair-accessible toilet. +She moved the map successfully to the target location, tapped the 'add' marker and found (with some scrolling) the correct preset. +Upon being presented with the input location, she first scrolled in various directions, often hitting the boundaries. + +WHen she however realised that she was looking to a roof, she correctly located the crosshair at the location of the toilets, after which she attempted to confirm by tapping the crosshair. The examinator stepped in to show the _actual_ confirm button. (1) + +Answering the various questions about the toilet went smoothly. The Opening Hours were a bit more challenging. Dragging the input element added a few opening hours into the table. +The test subject muttered that she "wanted to scroll down", after which she spontanously used the hours on the side to grab and move everything up. +Adding the correct hours was quickly done, but deleting a few 'spots' of accidentally placed hours was unclear, until pointed out that she could tap the 'trash'-icon. (2) + +She went through all the questions, but arriving at the end was a bit boring. The possiblity to get recuperate unanswered questions is unknown as well. (3,4) + +## User interview + +After the user study, an in-depth interview was conducted. + +As the partner of the tester is wheelchair-dependent, visiting a restaurant can be a bit tricky. + +Following information would be useful for them to have: + +(As the interviewed people were not familiar with MapComplete/OnWheels or OpenStreetMap, many suggestions are either already in OnWheels or very hard to implement. ) + +- Is it possible and/or necessary to make a reservation beforehand? (5) +- Is it a classy restaurant, or more accessible "luch place"? (Hard/tagging issue) +- Is it wheelchair-accessible? (OK) +- Is the toilet wheelchair-accessible? (OK) +- Are dogs and pets allowed? (OK) +- Is it child friendly? (tagging issue) +- Are they familiar with mentally disabled people (e.g. someone with Downs syndrome)? Do they space for them? (tagging issue) +- Do they serve hot or cold dishes? (OK via 'cuisine'-tag) +- Is there a parking nearby? Is there a parking with priority for disabled people nearby? (OK) +- Is it easy to get on/off the sidewalk? (More or less OK with 'kerbs'-layer) +- Is there outdoor seating in the summer? It the outdoor seating wheelchair accessible? Does the outdoor-seating block entering the restaurant? (HARD) +- Is the staff friendly and will they come over to help, e.g. to get the wheelchair-user over the entrance kerb? (Hard/tagging issue/very volatile and subjective) +- On sidewalks, are there street cabinets and other obstacles? How much space is there? (Hard/tagging issues) + + > My partner has two wheelchairs, of which one is slighly wider then the other. There is a sidewalk down the road with a small electrical cabin in the middle of it. The small wheelchair can pass, the other is too wide. + + + +## To improve + +1. Tapping the crosshair in the location input should trigger a hint or a confirm option, to be tested. +2. Improve the trash icon +3. Add a 'all questions finished - thank you' notice +4. Add a 'unhide all questions'-button +5. Add a 'reservation'-question to 'restaurants' diff --git a/Docs/UserTests/_template.md b/Docs/UserTests/_template.md new file mode 100644 index 000000000..c919deb5a --- /dev/null +++ b/Docs/UserTests/_template.md @@ -0,0 +1,16 @@ +# Ad Hoc User test + +Subject: +Tech Skills: +Demography: F/M/X, age range +Language: +Medium: Android phone(s), DuckDuckGo browser + Fennec Browser +User interface language: + +## Task + + +## How it went + + +## To improve diff --git a/Docs/wikiIndex.txt b/Docs/wikiIndex.txt index ee59ab124..dfe7f8b19 100644 --- a/Docs/wikiIndex.txt +++ b/Docs/wikiIndex.txt @@ -4,7 +4,7 @@ {{service_item |name= [https://mapcomplete.osm.be/personal personal] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:gl|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:it|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:gl|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:it|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Create a personal theme based on all the available layers of all themes |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -13,7 +13,7 @@ {{service_item |name= [https://mapcomplete.osm.be/cyclofix cyclofix] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:gl|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:gl|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: The goal of this map is to present cyclists with an easy-to-use solution to find the appropriate infrastructure for their needs |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -22,7 +22,7 @@ {{service_item |name= [https://mapcomplete.osm.be/waste waste] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:ca|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Map showing waste baskets and recycling facilities |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -31,7 +31,7 @@ {{service_item |name= [https://mapcomplete.osm.be/etymology etymology] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: What is the origin of a toponym? |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -40,7 +40,7 @@ {{service_item |name= [https://mapcomplete.osm.be/food food] |region= Worldwide -|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:nb_NO|en}}, {{#language:fr|en}}, {{#language:da|en}} +|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:nb_NO|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Restaurants and fast food |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -49,8 +49,8 @@ {{service_item |name= [https://mapcomplete.osm.be/cafes_and_pubs cafes_and_pubs] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:pa_PK|en}} -|descr= A MapComplete theme: Pubs and bars +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:pa_PK|en}}, {{#language:cs|en}}, {{#language:it|en}} +|descr= A MapComplete theme: Coffeehouses, pubs and bars |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png |genre= POI, editor, cafes_and_pubs @@ -58,7 +58,7 @@ {{service_item |name= [https://mapcomplete.osm.be/playgrounds playgrounds] |region= Worldwide -|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:id|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}} +|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:id|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map with playgrounds |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -67,7 +67,7 @@ {{service_item |name= [https://mapcomplete.osm.be/hailhydrant hailhydrant] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:nl|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Map to show hydrants, extinguishers, fire stations, and ambulance stations. |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -76,7 +76,7 @@ {{service_item |name= [https://mapcomplete.osm.be/toilets toilets] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:pl|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:nb_NO|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:pl|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map of public toilets |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -85,7 +85,7 @@ {{service_item |name= [https://mapcomplete.osm.be/aed aed] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:id|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:sv|en}}, {{#language:pl|en}}, {{#language:pt_BR|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:sl|en}}, {{#language:zh_Hans|en}}, {{#language:da|en}}, {{#language:fil|en}}, {{#language:cs|en}} +|lang= {{#language:en|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:id|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:sv|en}}, {{#language:pl|en}}, {{#language:pt_BR|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:sl|en}}, {{#language:zh_Hans|en}}, {{#language:da|en}}, {{#language:fil|en}}, {{#language:cs|en}}, {{#language:zgh|en}} |descr= A MapComplete theme: On this map, one can find and mark nearby defibrillators |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -94,7 +94,7 @@ {{service_item |name= [https://mapcomplete.osm.be/bookcases bookcases] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:ca|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A public bookcase is a small streetside cabinet, box, old phone booth or some other objects where books are stored |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -103,7 +103,7 @@ {{service_item |name= [https://mapcomplete.osm.be/artwork artwork] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:id|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:es|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:pl|en}}, {{#language:ca|en}}, {{#language:zh_Hans|en}}, {{#language:fil|en}}, {{#language:da|en}}, {{#language:cs|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:id|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:es|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:pl|en}}, {{#language:ca|en}}, {{#language:zh_Hans|en}}, {{#language:fil|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:zgh|en}} |descr= A MapComplete theme: An open map of statues, busts, graffitis and other artwork all over the world |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -112,7 +112,7 @@ {{service_item |name= [https://mapcomplete.osm.be/atm atm] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:ca|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:nb_NO|en}}, {{#language:es|en}} |descr= A MapComplete theme: This map shows ATMs to withdraw or deposit money |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -121,7 +121,7 @@ {{service_item |name= [https://mapcomplete.osm.be/benches benches] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:nb_NO|en}}, {{#language:pt_BR|en}}, {{#language:hu|en}}, {{#language:id|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:zh_Hans|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:nb_NO|en}}, {{#language:pt_BR|en}}, {{#language:hu|en}}, {{#language:id|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:zh_Hans|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map of benches |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -130,7 +130,7 @@ {{service_item |name= [https://mapcomplete.osm.be/bicycle_rental bicycle_rental] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:id|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:id|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map with bicycle rental stations and bicycle rental shops |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -139,7 +139,7 @@ {{service_item |name= [https://mapcomplete.osm.be/bicyclelib bicyclelib] |region= Worldwide -|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:fr|en}}, {{#language:zh_Hant|en}}, {{#language:de|en}}, {{#language:hu|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:da|en}} +|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:fr|en}}, {{#language:zh_Hant|en}}, {{#language:de|en}}, {{#language:hu|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}} |descr= A MapComplete theme: A bicycle library is a place where bicycles can be lent, often for a small yearly fee |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -148,7 +148,7 @@ {{service_item |name= [https://mapcomplete.osm.be/binoculars binoculars] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map with fixed binoculars |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -157,7 +157,7 @@ {{service_item |name= [https://mapcomplete.osm.be/blind_osm blind_osm] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:ca|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:nb_NO|en}}, {{#language:es|en}} |descr= A MapComplete theme: Help to map features relevant for the blind |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -166,7 +166,7 @@ {{service_item |name= [https://mapcomplete.osm.be/campersite campersite] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:fr|en}}, {{#language:zh_Hant|en}}, {{#language:nl|en}}, {{#language:pt_BR|en}}, {{#language:de|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:ca|en}} +|lang= {{#language:en|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:fr|en}}, {{#language:zh_Hant|en}}, {{#language:nl|en}}, {{#language:pt_BR|en}}, {{#language:de|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Find sites to spend the night with your camper |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -175,7 +175,7 @@ {{service_item |name= [https://mapcomplete.osm.be/charging_stations charging_stations] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:it|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:nb_NO|en}}, {{#language:ru|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:ca|en}} +|lang= {{#language:en|en}}, {{#language:it|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:nb_NO|en}}, {{#language:ru|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A worldwide map of charging stations |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -184,16 +184,25 @@ {{service_item |name= [https://mapcomplete.osm.be/climbing climbing] |region= Worldwide -|lang= {{#language:nl|en}}, {{#language:de|en}}, {{#language:en|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:nb_NO|en}}, {{#language:da|en}} +|lang= {{#language:nl|en}}, {{#language:de|en}}, {{#language:en|en}}, {{#language:ru|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:ca|en}}, {{#language:es|en}} |descr= A MapComplete theme: On this map you will find various climbing opportunities such as climbing gyms, bouldering halls and rocks in nature |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png |genre= POI, editor, climbing }} {{service_item +|name= [https://mapcomplete.osm.be/clock clock] +|region= Worldwide +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:ca|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:cs|en}} +|descr= A MapComplete theme: Map showing all public clocks +|material= {{yes|[https://mapcomplete.osm.be/ Yes]}} +|image= MapComplete_Screenshot.png +|genre= POI, editor, clock +}} +{{service_item |name= [https://mapcomplete.osm.be/cycle_infra cycle_infra] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:ca|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map where you can view and edit things related to the bicycle infrastructure. |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -202,7 +211,7 @@ {{service_item |name= [https://mapcomplete.osm.be/cyclestreets cyclestreets] |region= Worldwide -|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:nb_NO|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}} +|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:nb_NO|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map of cyclestreets |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -211,7 +220,7 @@ {{service_item |name= [https://mapcomplete.osm.be/drinking_water drinking_water] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: On this map, publicly accessible drinking water spots are shown and can be easily added |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -220,8 +229,8 @@ {{service_item |name= [https://mapcomplete.osm.be/education education] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:ca|en}}, {{#language:da|en}} -|descr= A MapComplete theme: On this map, you'll find information about all types of schools and eduction and can easily add more information +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:ca|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}} +|descr= A MapComplete theme: On this map, you'll find information about all types of schools and education and can easily add more information |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png |genre= POI, editor, education @@ -229,7 +238,7 @@ {{service_item |name= [https://mapcomplete.osm.be/facadegardens facadegardens] |region= Worldwide -|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}} +|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:it|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:ca|en}} |descr= A MapComplete theme: This map shows facade gardens with pictures and useful info about orientation, sunshine and plant types. |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -238,7 +247,7 @@ {{service_item |name= [https://mapcomplete.osm.be/fritures fritures] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:ca|en}}, {{#language:es|en}} |descr= A MapComplete theme: On this map, you'll find your favourite fries shop! |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -247,7 +256,7 @@ {{service_item |name= [https://mapcomplete.osm.be/ghostbikes ghostbikes] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}} |descr= A MapComplete theme: A ghost bike is a memorial for a cyclist who died in a traffic accident, in the form of a white bicycle placed permanently near the accident location |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -256,7 +265,7 @@ {{service_item |name= [https://mapcomplete.osm.be/hackerspaces hackerspaces] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}} |descr= A MapComplete theme: A map of hackerspaces |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -265,7 +274,7 @@ {{service_item |name= [https://mapcomplete.osm.be/healthcare healthcare] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:ca|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}} +|lang= {{#language:en|en}}, {{#language:ca|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:cs|en}}, {{#language:es|en}} |descr= A MapComplete theme: On this map, various healthcare related items are shown |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -274,7 +283,7 @@ {{service_item |name= [https://mapcomplete.osm.be/hotels hotels] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:nl|en}}, {{#language:fr|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:cs|en}}, {{#language:es|en}} |descr= A MapComplete theme: On this map, you'll find hotels in your area |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -283,7 +292,7 @@ {{service_item |name= [https://mapcomplete.osm.be/indoors indoors] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:cs|en}}, {{#language:nb_NO|en}}, {{#language:es|en}} |descr= A MapComplete theme: On this map, publicly accessible indoor places are shown |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -292,7 +301,7 @@ {{service_item |name= [https://mapcomplete.osm.be/kerbs_and_crossings kerbs_and_crossings] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:nb_NO|en}}, {{#language:es|en}} |descr= A MapComplete theme: A map showing kerbs and crossings |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -301,7 +310,7 @@ {{service_item |name= [https://mapcomplete.osm.be/maps maps] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: This theme shows all (touristic) maps that OpenStreetMap knows of |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -310,7 +319,7 @@ {{service_item |name= [https://mapcomplete.osm.be/maxspeed maxspeed] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}} |descr= A MapComplete theme: This map shows the legally allowed maximum speed on every road. |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -319,7 +328,7 @@ {{service_item |name= [https://mapcomplete.osm.be/nature nature] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map for nature lovers, with interesting POI's |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -328,7 +337,7 @@ {{service_item |name= [https://mapcomplete.osm.be/notes notes] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:hu|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:hu|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A note is a pin on the map with some text to indicate something wrong |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -337,7 +346,7 @@ {{service_item |name= [https://mapcomplete.osm.be/observation_towers observation_towers] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:ca|en}} |descr= A MapComplete theme: Publicly accessible towers to enjoy the view |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -346,7 +355,7 @@ {{service_item |name= [https://mapcomplete.osm.be/onwheels onwheels] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:cs|en}}, {{#language:es|en}} |descr= A MapComplete theme: On this map, publicly weelchair accessible places are shown and can be easily added |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -355,7 +364,7 @@ {{service_item |name= [https://mapcomplete.osm.be/openwindpowermap openwindpowermap] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:nb_NO|en}} +|lang= {{#language:en|en}}, {{#language:fr|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:cs|en}}, {{#language:ca|en}} |descr= A MapComplete theme: A map for showing and editing wind turbines |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -364,7 +373,7 @@ {{service_item |name= [https://mapcomplete.osm.be/osm_community_index osm_community_index] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:nl|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: An index of community resources for OpenStreetMap. |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -373,7 +382,7 @@ {{service_item |name= [https://mapcomplete.osm.be/parkings parkings] |region= Worldwide -|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:zh_Hant|en}}, {{#language:id|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}} +|lang= {{#language:nl|en}}, {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:nb_NO|en}}, {{#language:zh_Hant|en}}, {{#language:id|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: This map shows different parking spots |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -382,7 +391,7 @@ {{service_item |name= [https://mapcomplete.osm.be/pets pets] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:da|en}}, {{#language:de|en}}, {{#language:nl|en}}, {{#language:fr|en}} +|lang= {{#language:en|en}}, {{#language:da|en}}, {{#language:de|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: On this map, you'll find various interesting places for you pets: veterinarians, dog parks, pet shops, dog-friendly restaurants, |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -391,7 +400,7 @@ {{service_item |name= [https://mapcomplete.osm.be/postboxes postboxes] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map showing postboxes and post offices |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -400,7 +409,7 @@ {{service_item |name= [https://mapcomplete.osm.be/rainbow_crossings rainbow_crossings] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: On this map, rainbow-painted pedestrian crossings are shown and can be easily added |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -409,7 +418,7 @@ {{service_item |name= [https://mapcomplete.osm.be/shops shops] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:fr|en}}, {{#language:ja|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:nl|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: An editable map with basic shop information |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -418,7 +427,7 @@ {{service_item |name= [https://mapcomplete.osm.be/sport_pitches sport_pitches] |region= Worldwide -|lang= {{#language:nl|en}}, {{#language:fr|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}} +|lang= {{#language:nl|en}}, {{#language:fr|en}}, {{#language:en|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map showing sport pitches |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -427,7 +436,7 @@ {{service_item |name= [https://mapcomplete.osm.be/sports sports] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Map showing sport facilities. |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -436,7 +445,7 @@ {{service_item |name= [https://mapcomplete.osm.be/street_lighting street_lighting] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:ca|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:nb_NO|en}}, {{#language:cs|en}} |descr= A MapComplete theme: On this map you can find everything about street lighting |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -445,7 +454,7 @@ {{service_item |name= [https://mapcomplete.osm.be/surveillance surveillance] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:fr|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:hu|en}}, {{#language:da|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Surveillance cameras and other means of surveillance |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -454,7 +463,7 @@ {{service_item |name= [https://mapcomplete.osm.be/transit transit] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:nb_NO|en}} +|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:fr|en}}, {{#language:da|en}}, {{#language:nl|en}}, {{#language:nb_NO|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Plan your trip with the help of the public transport system |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -463,7 +472,7 @@ {{service_item |name= [https://mapcomplete.osm.be/trees trees] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:fr|en}}, {{#language:it|en}}, {{#language:ja|en}}, {{#language:zh_Hant|en}}, {{#language:ru|en}}, {{#language:pl|en}}, {{#language:de|en}}, {{#language:nb_NO|en}}, {{#language:hu|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:da|en}}, {{#language:cs|en}} |descr= A MapComplete theme: Map all the trees |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png @@ -472,7 +481,7 @@ {{service_item |name= [https://mapcomplete.osm.be/waste_basket waste_basket] |region= Worldwide -|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}} +|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:zh_Hant|en}}, {{#language:hu|en}}, {{#language:fr|en}}, {{#language:nb_NO|en}}, {{#language:da|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:cs|en}} |descr= A MapComplete theme: A map with waste baskets |material= {{yes|[https://mapcomplete.osm.be/ Yes]}} |image= MapComplete_Screenshot.png diff --git a/Logic/Actors/GeoLocationHandler.ts b/Logic/Actors/GeoLocationHandler.ts index 6f702b768..a5f51959e 100644 --- a/Logic/Actors/GeoLocationHandler.ts +++ b/Logic/Actors/GeoLocationHandler.ts @@ -2,8 +2,10 @@ import { QueryParameters } from "../Web/QueryParameters" import { BBox } from "../BBox" import Constants from "../../Models/Constants" import { GeoLocationPointProperties, GeoLocationState } from "../State/GeoLocationState" -import State from "../../State" import { UIEventSource } from "../UIEventSource" +import Loc from "../../Models/Loc" +import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig" +import SimpleFeatureSource from "../FeatureSource/Sources/SimpleFeatureSource" /** * The geolocation-handler takes a map-location and a geolocation state. @@ -12,12 +14,24 @@ import { UIEventSource } from "../UIEventSource" */ export default class GeoLocationHandler { public readonly geolocationState: GeoLocationState - private readonly _state: State + private readonly _state: { + currentUserLocation: SimpleFeatureSource + layoutToUse: LayoutConfig + locationControl: UIEventSource + selectedElement: UIEventSource + leafletMap?: UIEventSource + } public readonly mapHasMoved: UIEventSource = new UIEventSource(false) constructor( geolocationState: GeoLocationState, - state: State // { locationControl: UIEventSource, selectedElement: UIEventSource, leafletMap?: UIEventSource }) + state: { + locationControl: UIEventSource + currentUserLocation: SimpleFeatureSource + layoutToUse: LayoutConfig + selectedElement: UIEventSource + leafletMap?: UIEventSource + } ) { this.geolocationState = geolocationState this._state = state @@ -45,13 +59,10 @@ export default class GeoLocationHandler { (new Date().getTime() - geolocationState.requestMoment.data?.getTime() ?? 0) / 1000 if (!this.mapHasMoved.data) { // The map hasn't moved yet; we received our first coordinates, so let's move there! - console.log( - "Moving the map to an initial location; time since last request is", - timeSinceLastRequest - ) - if (timeSinceLastRequest < Constants.zoomToLocationTimeout) { - self.MoveMapToCurrentLocation() - } + self.MoveMapToCurrentLocation() + } + if (timeSinceLastRequest < Constants.zoomToLocationTimeout) { + self.MoveMapToCurrentLocation() } if (this.geolocationState.isLocked.data) { @@ -109,11 +120,12 @@ export default class GeoLocationHandler { } mapLocation.setData({ - zoom: mapLocation.data.zoom, + zoom: Math.max(mapLocation.data.zoom, 16), lon: newLocation.longitude, lat: newLocation.latitude, }) this.mapHasMoved.setData(true) + this.geolocationState.requestMoment.setData(undefined) } private CopyGeolocationIntoMapstate() { diff --git a/Logic/Actors/SelectedFeatureHandler.ts b/Logic/Actors/SelectedFeatureHandler.ts index db6776fec..3591bc4eb 100644 --- a/Logic/Actors/SelectedFeatureHandler.ts +++ b/Logic/Actors/SelectedFeatureHandler.ts @@ -90,12 +90,12 @@ export default class SelectedFeatureHandler { if (feature === undefined) { return } - const currentlySeleced = state.selectedElement.data - if (currentlySeleced === undefined) { + const currentlySelected = state.selectedElement.data + if (currentlySelected === undefined) { state.selectedElement.setData(feature) return } - if (currentlySeleced.properties?.id === feature.properties.id) { + if (currentlySelected.properties?.id === feature.properties.id) { // We already have the right feature return } diff --git a/Logic/BBox.ts b/Logic/BBox.ts index abb0e3711..9f1cbceab 100644 --- a/Logic/BBox.ts +++ b/Logic/BBox.ts @@ -1,6 +1,7 @@ import * as turf from "@turf/turf" import { TileRange, Tiles } from "../Models/TileRange" import { GeoOperations } from "./GeoOperations" +import { Feature, Polygon } from "geojson" export class BBox { static global: BBox = new BBox([ @@ -185,22 +186,26 @@ export class BBox { ] } - asGeoJson(properties: any): any { + public asGeoJson(properties: T): Feature { return { type: "Feature", properties: properties, - geometry: { - type: "Polygon", - coordinates: [ - [ - [this.minLon, this.minLat], - [this.maxLon, this.minLat], - [this.maxLon, this.maxLat], - [this.minLon, this.maxLat], - [this.minLon, this.minLat], - ], + geometry: this.asGeometry(), + } + } + + public asGeometry(): Polygon { + return { + type: "Polygon", + coordinates: [ + [ + [this.minLon, this.minLat], + [this.maxLon, this.minLat], + [this.maxLon, this.maxLat], + [this.minLon, this.maxLat], + [this.minLon, this.minLat], ], - }, + ], } } diff --git a/Logic/DetermineLayout.ts b/Logic/DetermineLayout.ts index ffc69b4be..020467758 100644 --- a/Logic/DetermineLayout.ts +++ b/Logic/DetermineLayout.ts @@ -12,9 +12,9 @@ import LZString from "lz-string" import { FixLegacyTheme } from "../Models/ThemeConfig/Conversion/LegacyJsonConvert" import { LayerConfigJson } from "../Models/ThemeConfig/Json/LayerConfigJson" import SharedTagRenderings from "../Customizations/SharedTagRenderings" -import * as known_layers from "../assets/generated/known_layers.json" +import known_layers from "../assets/generated/known_layers.json" import { PrepareTheme } from "../Models/ThemeConfig/Conversion/PrepareTheme" -import * as licenses from "../assets/generated/license_info.json" +import licenses from "../assets/generated/license_info.json" import TagRenderingConfig from "../Models/ThemeConfig/TagRenderingConfig" import { FixImages } from "../Models/ThemeConfig/Conversion/FixImages" import Svg from "../Svg" @@ -30,7 +30,7 @@ export default class DetermineLayout { /** * Gets the correct layout for this website */ - public static async GetLayout(): Promise { + public static async GetLayout(): Promise { const loadCustomThemeParam = QueryParameters.GetQueryParameter( "userlayout", "false", @@ -194,8 +194,7 @@ export default class DetermineLayout { let { errors } = new ValidateThemeAndLayers( new DoesImageExist(new Set(), (_) => true), "", - false, - SharedTagRenderings.SharedTagRendering + false ).convert(json, "validation") if (errors.length > 0) { throw "Detected errors: " + errors.join("\n") diff --git a/Logic/GeoOperations.ts b/Logic/GeoOperations.ts index 86a717007..2ceb9b2d4 100644 --- a/Logic/GeoOperations.ts +++ b/Logic/GeoOperations.ts @@ -10,11 +10,16 @@ import { MultiPolygon, Polygon, } from "@turf/turf" -import { GeoJSON, LineString, Point } from "geojson" +import { GeoJSON, LineString, Point, Position } from "geojson" import togpx from "togpx" import Constants from "../Models/Constants" export class GeoOperations { + /** + * Create a union between two features + */ + static union = turf.union + static intersect = turf.intersect private static readonly _earthRadius = 6378137 private static readonly _originShift = (2 * Math.PI * GeoOperations._earthRadius) / 2 @@ -46,7 +51,7 @@ export class GeoOperations { * @param lonlat0 * @param lonlat1 */ - static distanceBetween(lonlat0: [number, number], lonlat1: [number, number]) { + static distanceBetween(lonlat0: [number, number], lonlat1: [number, number] | Position) { return turf.distance(lonlat0, lonlat1, { units: "meters" }) } @@ -158,35 +163,6 @@ export class GeoOperations { return result } - /** - * Helper function which does the heavy lifting for 'inside' - */ - private static pointInPolygonCoordinates( - x: number, - y: number, - coordinates: [number, number][][] - ) { - const inside = GeoOperations.pointWithinRing( - x, - y, - /*This is the outer ring of the polygon */ coordinates[0] - ) - if (!inside) { - return false - } - for (let i = 1; i < coordinates.length; i++) { - const inHole = GeoOperations.pointWithinRing( - x, - y, - coordinates[i] /* These are inner rings, aka holes*/ - ) - if (inHole) { - return false - } - } - return true - } - /** * Detect wether or not the given point is located in the feature * @@ -209,16 +185,20 @@ export class GeoOperations { * GeoOperations.inside([1.42822265625, 48.61838518688487], multiPolygon) // => false * GeoOperations.inside([4.02099609375, 47.81315451752768], multiPolygon) // => false */ - public static inside(pointCoordinate, feature): boolean { + public static inside( + pointCoordinate: [number, number] | Feature, + feature: Feature + ): boolean { // ray-casting algorithm based on // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html if (feature.geometry.type === "Point") { + // The feature that should 'contain' pointCoordinate is a point itself, so it cannot contain anything return false } - if (pointCoordinate.geometry !== undefined) { - pointCoordinate = pointCoordinate.geometry.coordinates + if (pointCoordinate["geometry"] !== undefined) { + pointCoordinate = pointCoordinate["geometry"].coordinates } const x: number = pointCoordinate[0] @@ -227,6 +207,7 @@ export class GeoOperations { if (feature.geometry.type === "MultiPolygon") { const coordinatess = feature.geometry.coordinates for (const coordinates of coordinatess) { + // @ts-ignore const inThisPolygon = GeoOperations.pointInPolygonCoordinates(x, y, coordinates) if (inThisPolygon) { return true @@ -236,6 +217,7 @@ export class GeoOperations { } if (feature.geometry.type === "Polygon") { + // @ts-ignore return GeoOperations.pointInPolygonCoordinates(x, y, feature.geometry.coordinates) } @@ -252,10 +234,11 @@ export class GeoOperations { }) } - static bbox(feature: any) { + static bbox(feature: any): Feature { const [lon, lat, lon0, lat0] = turf.bbox(feature) return { type: "Feature", + properties: {}, geometry: { type: "LineString", coordinates: [ @@ -620,6 +603,113 @@ export class GeoOperations { return copy } + /** + * Takes two points and finds the geographic bearing between them, i.e. the angle measured in degrees from the north line (0 degrees) + */ + public static bearing(a: Coord, b: Coord): number { + return turf.bearing(a, b) + } + + /** + * Returns 'true' if one feature contains the other feature + * + * const pond: Feature = { + * "type": "Feature", + * "properties": {"natural":"water","water":"pond"}, + * "geometry": { + * "type": "Polygon", + * "coordinates": [[ + * [4.362924098968506,50.8435422298544 ], + * [4.363272786140442,50.8435219059949 ], + * [4.363213777542114,50.8437420806679 ], + * [4.362924098968506,50.8435422298544 ] + * ]]}} + * const park: Feature = { + * "type": "Feature", + * "properties": {"leisure":"park"}, + * "geometry": { + * "type": "Polygon", + * "coordinates": [[ + * [ 4.36073541641235,50.84323737103244 ], + * [ 4.36469435691833, 50.8423905305197 ], + * [ 4.36659336090087, 50.8458997374786 ], + * [ 4.36254858970642, 50.8468007074916 ], + * [ 4.36073541641235, 50.8432373710324 ] + * ]]}} + * GeoOperations.completelyWithin(pond, park) // => true + * GeoOperations.completelyWithin(park, pond) // => false + */ + static completelyWithin( + feature: Feature, + possiblyEncloingFeature: Feature + ): boolean { + return booleanWithin(feature, possiblyEncloingFeature) + } + + /** + * Create an intersection between two features. + * A new feature is returned based on 'toSplit', which'll have a geometry that is completely withing boundary + */ + public static clipWith(toSplit: Feature, boundary: Feature): Feature[] { + if (toSplit.geometry.type === "Point") { + const p = >toSplit + if (GeoOperations.inside(<[number, number]>p.geometry.coordinates, boundary)) { + return [p] + } else { + return [] + } + } + + if (toSplit.geometry.type === "LineString") { + const splitup = turf.lineSplit(>toSplit, boundary) + const kept = [] + for (const f of splitup.features) { + const ls = >f + if (!GeoOperations.inside(GeoOperations.centerpointCoordinates(f), boundary)) { + continue + } + f.properties = { ...toSplit.properties } + kept.push(f) + } + return kept + } + if (toSplit.geometry.type === "Polygon" || toSplit.geometry.type == "MultiPolygon") { + const splitup = turf.intersect(>toSplit, boundary) + splitup.properties = { ...toSplit.properties } + return [splitup] + } + throw "Invalid geometry type with GeoOperations.clipWith: " + toSplit.geometry.type + } + + /** + * Helper function which does the heavy lifting for 'inside' + */ + private static pointInPolygonCoordinates( + x: number, + y: number, + coordinates: [number, number][][] + ): boolean { + const inside = GeoOperations.pointWithinRing( + x, + y, + /*This is the outer ring of the polygon */ coordinates[0] + ) + if (!inside) { + return false + } + for (let i = 1; i < coordinates.length; i++) { + const inHole = GeoOperations.pointWithinRing( + x, + y, + coordinates[i] /* These are inner rings, aka holes*/ + ) + if (inHole) { + return false + } + } + return true + } + private static pointWithinRing(x: number, y: number, ring: [number, number][]) { let inside = false for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) { @@ -740,57 +830,4 @@ export class GeoOperations { } throw "CalculateIntersection fallthrough: can not calculate an intersection between features" } - - /** - * Takes two points and finds the geographic bearing between them, i.e. the angle measured in degrees from the north line (0 degrees) - */ - public static bearing(a: Coord, b: Coord): number { - return turf.bearing(a, b) - } - - /** - * Returns 'true' if one feature contains the other feature - * - * const pond: Feature = { - * "type": "Feature", - * "properties": {"natural":"water","water":"pond"}, - * "geometry": { - * "type": "Polygon", - * "coordinates": [[ - * [4.362924098968506,50.8435422298544 ], - * [4.363272786140442,50.8435219059949 ], - * [4.363213777542114,50.8437420806679 ], - * [4.362924098968506,50.8435422298544 ] - * ]]}} - * const park: Feature = { - * "type": "Feature", - * "properties": {"leisure":"park"}, - * "geometry": { - * "type": "Polygon", - * "coordinates": [[ - * [ 4.36073541641235,50.84323737103244 ], - * [ 4.36469435691833, 50.8423905305197 ], - * [ 4.36659336090087, 50.8458997374786 ], - * [ 4.36254858970642, 50.8468007074916 ], - * [ 4.36073541641235, 50.8432373710324 ] - * ]]}} - * GeoOperations.completelyWithin(pond, park) // => true - * GeoOperations.completelyWithin(park, pond) // => false - */ - static completelyWithin( - feature: Feature, - possiblyEncloingFeature: Feature - ): boolean { - return booleanWithin(feature, possiblyEncloingFeature) - } - - /** - * Create a union between two features - */ - static union = turf.union - - /** - * Create an intersection between two features - */ - static intersect = turf.intersect } diff --git a/Logic/Maproulette.ts b/Logic/Maproulette.ts index abaf9e65b..15e11ccba 100644 --- a/Logic/Maproulette.ts +++ b/Logic/Maproulette.ts @@ -1,7 +1,27 @@ import Constants from "../Models/Constants" export default class Maproulette { - /** + public static readonly STATUS_OPEN = 0 + public static readonly STATUS_FIXED = 1 + public static readonly STATUS_FALSE_POSITIVE = 2 + public static readonly STATUS_SKIPPED = 3 + public static readonly STATUS_DELETED = 4 + public static readonly STATUS_ALREADY_FIXED = 5 + public static readonly STATUS_TOO_HARD = 6 + public static readonly STATUS_DISABLED = 9 + + public static readonly STATUS_MEANING = { + 0: "Open", + 1: "Fixed", + 2: "False positive", + 3: "Skipped", + 4: "Deleted", + 5: "Already fixed", + 6: "Too hard", + 9: "Disabled", + } + + /* * The API endpoint to use */ endpoint: string @@ -21,19 +41,34 @@ export default class Maproulette { } /** - * Close a task + * Close a task; might throw an error + * + * Also see:https://maproulette.org/docs/swagger-ui/index.html?url=/assets/swagger.json&docExpansion=none#/Task/setTaskStatus * @param taskId The task to close + * @param status A number indicating the status. Use MapRoulette.STATUS_* + * @param options Additional settings to pass. Refer to the API-docs for more information */ - async closeTask(taskId: number): Promise { - const response = await fetch(`${this.endpoint}/task/${taskId}/1`, { + async closeTask( + taskId: number, + status = Maproulette.STATUS_FIXED, + options?: { + comment?: string + tags?: string + requestReview?: boolean + completionResponses?: Record + } + ): Promise { + const response = await fetch(`${this.endpoint}/task/${taskId}/${status}`, { method: "PUT", headers: { "Content-Type": "application/json", apiKey: this.apiKey, }, + body: options !== undefined ? JSON.stringify(options) : undefined, }) - if (response.status !== 304) { + if (response.status !== 204) { console.log(`Failed to close task: ${response.status}`) + throw `Failed to close task: ${response.status}` } } } diff --git a/Logic/MetaTagging.ts b/Logic/MetaTagging.ts index 10d5c285c..47d698ac0 100644 --- a/Logic/MetaTagging.ts +++ b/Logic/MetaTagging.ts @@ -234,7 +234,6 @@ export default class MetaTagging { for (const f of functions) { f(feature) } - state?.allElements?.getEventSourceById(feature.properties.id)?.ping() } catch (e) { console.error("Invalid syntax in calculated tags or some other error: ", e) } diff --git a/Logic/Osm/OsmConnection.ts b/Logic/Osm/OsmConnection.ts index dece748dd..f4b5c323c 100644 --- a/Logic/Osm/OsmConnection.ts +++ b/Logic/Osm/OsmConnection.ts @@ -161,9 +161,12 @@ export class OsmConnection { public GetPreference( key: string, defaultValue: string = undefined, - prefix: string = "mapcomplete-" + options?: { + documentation?: string + prefix?: string + } ): UIEventSource { - return this.preferencesHandler.GetPreference(key, defaultValue, prefix) + return this.preferencesHandler.GetPreference(key, defaultValue, options) } public GetLongPreference(key: string, prefix: string = "mapcomplete-"): UIEventSource { diff --git a/Logic/Osm/OsmObject.ts b/Logic/Osm/OsmObject.ts index 7b1a729c1..298277894 100644 --- a/Logic/Osm/OsmObject.ts +++ b/Logic/Osm/OsmObject.ts @@ -1,5 +1,5 @@ import { Utils } from "../../Utils" -import * as polygon_features from "../../assets/polygon-features.json" +import polygon_features from "../../assets/polygon-features.json" import { Store, UIEventSource } from "../UIEventSource" import { BBox } from "../BBox" import OsmToGeoJson from "osmtogeojson" @@ -290,7 +290,7 @@ export abstract class OsmObject { { values: Set; blacklist: boolean } > { const result = new Map; blacklist: boolean }>() - for (const polygonFeature of polygon_features["default"] ?? polygon_features) { + for (const polygonFeature of polygon_features) { const key = polygonFeature.key if (polygonFeature.polygon === "all") { diff --git a/Logic/Osm/OsmPreferences.ts b/Logic/Osm/OsmPreferences.ts index 794bba784..cd10b414f 100644 --- a/Logic/Osm/OsmPreferences.ts +++ b/Logic/Osm/OsmPreferences.ts @@ -1,8 +1,6 @@ import { UIEventSource } from "../UIEventSource" import UserDetails, { OsmConnection } from "./OsmConnection" import { Utils } from "../../Utils" -import { DomEvent } from "leaflet" -import preventDefault = DomEvent.preventDefault export class OsmPreferences { public preferences = new UIEventSource>({}, "all-osm-preferences") @@ -33,8 +31,9 @@ export class OsmPreferences { this.longPreferences[prefix + key] = source const allStartWith = prefix + key + "-combined" + const subOptions = { prefix: "" } // Gives the number of combined preferences - const length = this.GetPreference(allStartWith + "-length", "", "") + const length = this.GetPreference(allStartWith + "-length", "", subOptions) if ((allStartWith + "-length").length > 255) { throw ( @@ -56,9 +55,9 @@ export class OsmPreferences { let count = parseInt(length.data) for (let i = 0; i < count; i++) { // Delete all the preferences - self.GetPreference(allStartWith + "-" + i, "", "").setData("") + self.GetPreference(allStartWith + "-" + i, "", subOptions).setData("") } - self.GetPreference(allStartWith + "-length", "", "").setData("") + self.GetPreference(allStartWith + "-length", "", subOptions).setData("") return } @@ -70,7 +69,9 @@ export class OsmPreferences { if (i > 100) { throw "This long preference is getting very long... " } - self.GetPreference(allStartWith + "-" + i, "", "").setData(str.substr(0, 255)) + self.GetPreference(allStartWith + "-" + i, "", subOptions).setData( + str.substr(0, 255) + ) str = str.substr(255) i++ } @@ -116,8 +117,12 @@ export class OsmPreferences { public GetPreference( key: string, defaultValue: string = undefined, - prefix: string = "mapcomplete-" + options?: { + documentation?: string + prefix?: string + } ): UIEventSource { + const prefix: string = options?.prefix ?? "mapcomplete-" if (key.startsWith(prefix) && prefix !== "") { console.trace( "A preference was requested which has a duplicate prefix in its key. This is probably a bug" @@ -173,7 +178,7 @@ export class OsmPreferences { const matches = prefixes.some((prefix) => key.startsWith(prefix)) if (matches) { console.log("Clearing ", key) - self.GetPreference(key, "", "").setData("") + self.GetPreference(key, "", { prefix: "" }).setData("") } } isRunning = false diff --git a/Logic/SimpleMetaTagger.ts b/Logic/SimpleMetaTagger.ts index 5a978f7bd..fba7308e9 100644 --- a/Logic/SimpleMetaTagger.ts +++ b/Logic/SimpleMetaTagger.ts @@ -33,6 +33,10 @@ export class SimpleMetaTagger { docs: { keys: string[] doc: string + /** + * Set this flag if the data is volatile or date-based. + * It'll _won't_ be cached in this case + */ includesDates?: boolean isLazy?: boolean cleanupRetagger?: boolean @@ -54,6 +58,49 @@ export class SimpleMetaTagger { } } +export class ReferencingWaysMetaTagger extends SimpleMetaTagger { + /** + * Disable this metatagger, e.g. for caching or tests + * This is a bit a work-around + */ + public static enabled = true + constructor() { + super( + { + keys: ["_referencing_ways"], + isLazy: true, + doc: "_referencing_ways contains - for a node - which ways use this this node as point in their geometry. If the preset has 'snapToLayer' defined, the icon will be calculated based on the preset tags with `_referencing_ways=[way/-1]` added.", + }, + (feature, _, __, state) => { + if (!ReferencingWaysMetaTagger.enabled) { + return false + } + //this function has some extra code to make it work in SimpleAddUI.ts to also work for newly added points + const id = feature.properties.id + if (!id.startsWith("node/")) { + return false + } + console.trace("Downloading referencing ways for", feature.properties.id) + OsmObject.DownloadReferencingWays(id).then((referencingWays) => { + const currentTagsSource = state.allElements?.getEventSourceById(id) ?? [] + const wayIds = referencingWays.map((w) => "way/" + w.id) + wayIds.sort() + const wayIdsStr = wayIds.join(";") + if ( + wayIdsStr !== "" && + currentTagsSource.data["_referencing_ways"] !== wayIdsStr + ) { + currentTagsSource.data["_referencing_ways"] = wayIdsStr + currentTagsSource.ping() + } + }) + + return true + } + ) + } +} + export class CountryTagger extends SimpleMetaTagger { private static readonly coder = new CountryCoder( Constants.countryCoderEndpoint, @@ -118,6 +165,7 @@ export default class SimpleMetaTaggers { /*Note: also called by 'UpdateTagsFromOsmAPI'*/ const tgs = feature.properties + let movedSomething = false function move(src: string, target: string) { if (tgs[src] === undefined) { @@ -125,6 +173,7 @@ export default class SimpleMetaTaggers { } tgs[target] = tgs[src] delete tgs[src] + movedSomething = true } move("user", "_last_edit:contributor") @@ -132,7 +181,7 @@ export default class SimpleMetaTaggers { move("changeset", "_last_edit:changeset") move("timestamp", "_last_edit:timestamp") move("version", "_version_number") - return true + return movedSomething } ) public static country = new CountryTagger() @@ -486,31 +535,7 @@ export default class SimpleMetaTaggers { } ) - public static referencingWays = new SimpleMetaTagger( - { - keys: ["_referencing_ways"], - isLazy: true, - doc: "_referencing_ways contains - for a node - which ways use this this node as point in their geometry.", - }, - (feature, _, __, state) => { - const id = feature.properties.id - if (!id.startsWith("node/")) { - return false - } - OsmObject.DownloadReferencingWays(id).then((referencingWays) => { - const currentTagsSource = state.allElements.getEventSourceById(id) - const wayIds = referencingWays.map((w) => "way/" + w.id) - wayIds.sort() - const wayIdsStr = wayIds.join(";") - if (wayIdsStr !== "" && currentTagsSource.data["_referencing_ways"] !== wayIdsStr) { - currentTagsSource.data["_referencing_ways"] = wayIdsStr - currentTagsSource.ping() - } - }) - - return true - } - ) + public static referencingWays = new ReferencingWaysMetaTagger() public static metatags: SimpleMetaTagger[] = [ SimpleMetaTaggers.latlon, diff --git a/Logic/State/FeatureSwitchState.ts b/Logic/State/FeatureSwitchState.ts index e690307d0..d012ef3de 100644 --- a/Logic/State/FeatureSwitchState.ts +++ b/Logic/State/FeatureSwitchState.ts @@ -18,6 +18,7 @@ export default class FeatureSwitchState { public readonly featureSwitchBackgroundSelection: UIEventSource public readonly featureSwitchAddNew: UIEventSource public readonly featureSwitchWelcomeMessage: UIEventSource + public readonly featureSwitchCommunityIndex: UIEventSource public readonly featureSwitchExtraLinkEnabled: UIEventSource public readonly featureSwitchMoreQuests: UIEventSource public readonly featureSwitchShareScreen: UIEventSource @@ -91,6 +92,11 @@ export default class FeatureSwitchState { () => true, "Disables/enables the help menu or welcome message" ) + this.featureSwitchCommunityIndex = featSw( + "fs-community-index", + () => true, + "Disables/enables the button to get in touch with the community" + ) this.featureSwitchExtraLinkEnabled = featSw( "fs-iframe-popout", (_) => true, diff --git a/Logic/State/GeoLocationState.ts b/Logic/State/GeoLocationState.ts index c010d1b78..b6bd13e24 100644 --- a/Logic/State/GeoLocationState.ts +++ b/Logic/State/GeoLocationState.ts @@ -1,5 +1,6 @@ import { UIEventSource } from "../UIEventSource" import { LocalStorageSource } from "../Web/LocalStorageSource" +import { QueryParameters } from "../Web/QueryParameters" type GeolocationState = "prompt" | "requested" | "granted" | "denied" @@ -11,8 +12,6 @@ export interface GeoLocationPointProperties extends GeolocationCoordinates { /** * An abstract representation of the current state of the geolocation. - * - * */ export class GeoLocationState { /** @@ -21,10 +20,12 @@ export class GeoLocationState { * 'requested' means the user tapped the 'locate me' button at least once * 'granted' means that it is granted * 'denied' means that we don't have access - * */ public readonly permission: UIEventSource = new UIEventSource("prompt") + /** + * Important to determine e.g. if we move automatically on fix or not + */ public readonly requestMoment: UIEventSource = new UIEventSource(undefined) /** * If true: the map will center (and re-center) to this location @@ -79,6 +80,11 @@ export class GeoLocationState { // We set the flag to false again. If the user only wanted to share their location once, we are not gonna keep bothering them this._previousLocationGrant.setData("false") console.log("Requesting access to GPS as this was previously granted") + const latLonGivenViaUrl = + QueryParameters.wasInitialized("lat") || QueryParameters.wasInitialized("lon") + if (!latLonGivenViaUrl) { + this.requestMoment.setData(new Date()) + } this.requestPermission() } window["geolocation_state"] = this @@ -120,7 +126,7 @@ export class GeoLocationState { // Hence that we continue the flow if it is "requested" return } - this.requestMoment.setData(new Date()) + this.permission.setData("requested") try { navigator?.permissions diff --git a/Logic/State/UserRelatedState.ts b/Logic/State/UserRelatedState.ts index 2db745d20..cbd0d889a 100644 --- a/Logic/State/UserRelatedState.ts +++ b/Logic/State/UserRelatedState.ts @@ -1,7 +1,7 @@ import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig" import { OsmConnection } from "../Osm/OsmConnection" import { MangroveIdentity } from "../Web/MangroveReviews" -import { Store } from "../UIEventSource" +import { Store, UIEventSource } from "../UIEventSource" import { QueryParameters } from "../Web/QueryParameters" import Locale from "../../UI/i18n/Locale" import ElementsState from "./ElementsState" @@ -9,7 +9,6 @@ import SelectedElementTagsUpdater from "../Actors/SelectedElementTagsUpdater" import { Changes } from "../Osm/Changes" import ChangeToElementsActor from "../Actors/ChangeToElementsActor" import PendingChangesUploader from "../Actors/PendingChangesUploader" -import * as translators from "../../assets/translators.json" import Maproulette from "../Maproulette" /** @@ -35,10 +34,10 @@ export default class UserRelatedState extends ElementsState { */ public maprouletteConnection: Maproulette - public readonly isTranslator: Store - public readonly installedUserThemes: Store + public readonly showAllQuestionsAtOnce: UIEventSource + constructor(layoutToUse: LayoutConfig, options?: { attemptLogin: true | boolean }) { super(layoutToUse) @@ -53,32 +52,33 @@ export default class UserRelatedState extends ElementsState { osmConfiguration: <"osm" | "osm-test">this.featureSwitchApiURL.data, attemptLogin: options?.attemptLogin, }) - const translationMode = this.osmConnection.GetPreference("translation-mode").sync( - (str) => (str === undefined ? undefined : str === "true"), - [], - (b) => (b === undefined ? undefined : b + "") - ) - - translationMode.syncWith(Locale.showLinkToWeblate) - - this.isTranslator = this.osmConnection.userDetails.map((ud) => { - if (!ud.loggedIn) { - return false - } - const name = ud.name.toLowerCase().replace(/\s+/g, "") - return translators.contributors.some( - (c) => c.contributor.toLowerCase().replace(/\s+/g, "") === name - ) - }) - - this.isTranslator.addCallbackAndRunD((ud) => { - if (ud) { - Locale.showLinkToWeblate.setData(true) - } - }) + { + const translationMode: UIEventSource = + this.osmConnection.GetPreference("translation-mode") + translationMode.addCallbackAndRunD((mode) => { + mode = mode.toLowerCase() + if (mode === "true" || mode === "yes") { + Locale.showLinkOnMobile.setData(false) + Locale.showLinkToWeblate.setData(true) + } else if (mode === "false" || mode === "no") { + Locale.showLinkToWeblate.setData(false) + } else if (mode === "mobile") { + Locale.showLinkOnMobile.setData(true) + Locale.showLinkToWeblate.setData(true) + } else { + Locale.showLinkOnMobile.setData(false) + Locale.showLinkToWeblate.setData(false) + } + }) + } this.changes = new Changes(this, layoutToUse?.isLeftRightSensitive() ?? false) - + this.showAllQuestionsAtOnce = UIEventSource.asBoolean( + this.osmConnection.GetPreference("show-all-questions", "false", { + documentation: + "Either 'true' or 'false'. If set, all questions will be shown all at once", + }) + ) new ChangeToElementsActor(this.changes, this.allElements) new PendingChangesUploader(this.changes, this.selectedElement) @@ -117,41 +117,6 @@ export default class UserRelatedState extends ElementsState { this.installedUserThemes = this.InitInstalledUserThemes() } - private InitializeLanguage() { - const layoutToUse = this.layoutToUse - Locale.language.syncWith(this.osmConnection.GetPreference("language")) - Locale.language.addCallback((currentLanguage) => { - if (layoutToUse === undefined) { - return - } - if (Locale.showLinkToWeblate.data) { - return true // Disable auto switching as we are in translators mode - } - if (this.layoutToUse.language.indexOf(currentLanguage) < 0) { - console.log( - "Resetting language to", - layoutToUse.language[0], - "as", - currentLanguage, - " is unsupported" - ) - // The current language is not supported -> switch to a supported one - Locale.language.setData(layoutToUse.language[0]) - } - }) - Locale.language.ping() - } - - private InitInstalledUserThemes(): Store { - const prefix = "mapcomplete-unofficial-theme-" - const postfix = "-combined-length" - return this.osmConnection.preferencesHandler.preferences.map((prefs) => - Object.keys(prefs) - .filter((k) => k.startsWith(prefix) && k.endsWith(postfix)) - .map((k) => k.substring(prefix.length, k.length - postfix.length)) - ) - } - public GetUnofficialTheme(id: string): | { id: string @@ -193,4 +158,39 @@ export default class UserRelatedState extends ElementsState { return undefined } } + + private InitializeLanguage() { + const layoutToUse = this.layoutToUse + Locale.language.syncWith(this.osmConnection.GetPreference("language")) + Locale.language.addCallback((currentLanguage) => { + if (layoutToUse === undefined) { + return + } + if (Locale.showLinkToWeblate.data) { + return true // Disable auto switching as we are in translators mode + } + if (this.layoutToUse.language.indexOf(currentLanguage) < 0) { + console.log( + "Resetting language to", + layoutToUse.language[0], + "as", + currentLanguage, + " is unsupported" + ) + // The current language is not supported -> switch to a supported one + Locale.language.setData(layoutToUse.language[0]) + } + }) + Locale.language.ping() + } + + private InitInstalledUserThemes(): Store { + const prefix = "mapcomplete-unofficial-theme-" + const postfix = "-combined-length" + return this.osmConnection.preferencesHandler.preferences.map((prefs) => + Object.keys(prefs) + .filter((k) => k.startsWith(prefix) && k.endsWith(postfix)) + .map((k) => k.substring(prefix.length, k.length - postfix.length)) + ) + } } diff --git a/Logic/Tags/Tag.ts b/Logic/Tags/Tag.ts index d2feda2d0..945bd49b2 100644 --- a/Logic/Tags/Tag.ts +++ b/Logic/Tags/Tag.ts @@ -18,12 +18,6 @@ export class Tag extends TagsFilter { if (value === "*") { console.warn(`Got suspicious tag ${key}=* ; did you mean ${key}~* ?`) } - if (value.indexOf("&") >= 0) { - const tags = (key + "=" + value).split("&") - throw `Invalid value for a tag: it contains '&'. You probably meant to use '{"and":[${tags - .map((kv) => '"' + kv + '"') - .join(", ")}]}'` - } } /** diff --git a/Logic/Tags/TagUtils.ts b/Logic/Tags/TagUtils.ts index b66828692..b0cc2989b 100644 --- a/Logic/Tags/TagUtils.ts +++ b/Logic/Tags/TagUtils.ts @@ -7,13 +7,13 @@ import { RegexTag } from "./RegexTag" import SubstitutingTag from "./SubstitutingTag" import { Or } from "./Or" import { TagConfigJson } from "../../Models/ThemeConfig/Json/TagConfigJson" -import * as key_counts from "../../assets/key_totals.json" +import key_counts from "../../assets/key_totals.json" type Tags = Record export type UploadableTag = Tag | SubstitutingTag | And export class TagUtils { - private static keyCounts: { keys: any; tags: any } = key_counts["default"] ?? key_counts + private static keyCounts: { keys: any; tags: any } = key_counts private static comparators: [string, (a: number, b: number) => boolean][] = [ ["<=", (a, b) => a <= b], [">=", (a, b) => a >= b], diff --git a/Logic/UIEventSource.ts b/Logic/UIEventSource.ts index f9d49b9a0..b161f262b 100644 --- a/Logic/UIEventSource.ts +++ b/Logic/UIEventSource.ts @@ -1,4 +1,5 @@ import { Utils } from "../Utils" +import { Readable, Subscriber, Unsubscriber, Updater, Writable } from "svelte/store" /** * Various static utils @@ -88,7 +89,7 @@ export class Stores { } } -export abstract class Store { +export abstract class Store implements Readable { abstract readonly data: T /** @@ -113,6 +114,18 @@ export abstract class Store { abstract map(f: (t: T) => J): Store abstract map(f: (t: T) => J, extraStoresToWatch: Store[]): Store + public mapD(f: (t: T) => J, extraStoresToWatch?: Store[]): Store { + return this.map((t) => { + if (t === undefined) { + return undefined + } + if (t === null) { + return null + } + return f(t) + }, extraStoresToWatch) + } + /** * Add a callback function which will run on future data changes */ @@ -258,6 +271,17 @@ export abstract class Store { } }) } + + /** + * Same as 'addCallbackAndRun', added to be compatible with Svelte + * @param run + * @param invalidate + */ + public subscribe(run: Subscriber & ((value: T) => void), invalidate?): Unsubscriber { + // We don't need to do anything with 'invalidate', see + // https://github.com/sveltejs/svelte/issues/3859 + return this.addCallbackAndRun(run) + } } export class ImmutableStore extends Store { @@ -518,7 +542,7 @@ class MappedStore extends Store { } } -export class UIEventSource extends Store { +export class UIEventSource extends Store implements Writable { public data: T _callbacks: ListenerTracker = new ListenerTracker() @@ -754,4 +778,20 @@ export class UIEventSource extends Store { } return this } + + static asBoolean(stringUIEventSource: UIEventSource) { + return stringUIEventSource.sync( + (str) => str === "true", + [], + (b) => "" + b + ) + } + + set(value: T): void { + this.setData(value) + } + + update(f: Updater & ((value: T) => T)): void { + this.setData(f(this.data)) + } } diff --git a/Logic/Web/MangroveReviews.ts b/Logic/Web/MangroveReviews.ts index 763b7fa66..a0076e027 100644 --- a/Logic/Web/MangroveReviews.ts +++ b/Logic/Web/MangroveReviews.ts @@ -87,21 +87,23 @@ export default class FeatureReviews { if (feature.geometry.type === "Point") { this._uncertainty = options?.uncertaintyRadius ?? 10 } else { - let coords: Position[][] + let coordss: Position[][] if (feature.geometry.type === "LineString") { - coords = [feature.geometry.coordinates] + coordss = [feature.geometry.coordinates] } else if ( feature.geometry.type === "MultiLineString" || feature.geometry.type === "Polygon" ) { - coords = feature.geometry.coordinates + coordss = feature.geometry.coordinates } let maxDistance = 0 - for (const coord of coords) { - maxDistance = Math.max( - maxDistance, - GeoOperations.distanceBetween(centerLonLat, coord) - ) + for (const coords of coordss) { + for (const coord of coords) { + maxDistance = Math.max( + maxDistance, + GeoOperations.distanceBetween(centerLonLat, coord) + ) + } } this._uncertainty = options?.uncertaintyRadius ?? maxDistance diff --git a/Logic/Web/QueryParameters.ts b/Logic/Web/QueryParameters.ts index ac885184c..29726ae97 100644 --- a/Logic/Web/QueryParameters.ts +++ b/Logic/Web/QueryParameters.ts @@ -40,10 +40,8 @@ export class QueryParameters { deflt: boolean, documentation?: string ): UIEventSource { - return QueryParameters.GetQueryParameter(key, "" + deflt, documentation).sync( - (str) => str === "true", - [], - (b) => "" + b + return UIEventSource.asBoolean( + QueryParameters.GetQueryParameter(key, "" + deflt, documentation) ) } diff --git a/Models/BaseLayer.ts b/Models/BaseLayer.ts index dd249998b..1e4c2a933 100644 --- a/Models/BaseLayer.ts +++ b/Models/BaseLayer.ts @@ -1,9 +1,7 @@ -import { TileLayer } from "leaflet" - export default interface BaseLayer { id: string name: string - layer: () => TileLayer + layer: () => any /*leaflet.TileLayer - not importing as it breaks scripts*/ max_zoom: number min_zoom: number feature: any diff --git a/Models/Constants.ts b/Models/Constants.ts index 73d99d66a..fe4f4f594 100644 --- a/Models/Constants.ts +++ b/Models/Constants.ts @@ -1,7 +1,7 @@ import { Utils } from "../Utils" export default class Constants { - public static vNumber = "0.26.0" + public static vNumber = "0.27.0" public static ImgurApiKey = "7070e7167f0a25a" public static readonly mapillary_client_token_v4 = @@ -106,7 +106,7 @@ export default class Constants { * * In seconds */ - static zoomToLocationTimeout = 60 + static zoomToLocationTimeout = 15 static countryCoderEndpoint: string = "https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/latlon2country" public static readonly OsmPreferenceKeyPicturesLicense = "pictures-license" diff --git a/Models/Denomination.ts b/Models/Denomination.ts index cddd0ac7d..f3466515b 100644 --- a/Models/Denomination.ts +++ b/Models/Denomination.ts @@ -31,7 +31,7 @@ export class Denomination { this.alternativeDenominations = json.alternativeDenomination?.map((v) => v.trim()) ?? [] - if (json["default"] !== undefined) { + if (json["default" /* @code-quality: ignore*/] !== undefined) { throw `${context} uses the old 'default'-key. Use "useIfNoUnitGiven" or "useAsDefaultInput" instead` } this.useIfNoUnitGiven = json.useIfNoUnitGiven diff --git a/Models/ThemeConfig/Conversion/FixImages.ts b/Models/ThemeConfig/Conversion/FixImages.ts index fbd7d07c2..e6116c90c 100644 --- a/Models/ThemeConfig/Conversion/FixImages.ts +++ b/Models/ThemeConfig/Conversion/FixImages.ts @@ -1,36 +1,44 @@ import { Conversion, DesugaringStep } from "./Conversion" import { LayoutConfigJson } from "../Json/LayoutConfigJson" import { Utils } from "../../../Utils" -import * as metapaths from "../../../assets/layoutconfigmeta.json" -import * as tagrenderingmetapaths from "../../../assets/questionabletagrenderingconfigmeta.json" +import metapaths from "../../../assets/layoutconfigmeta.json" +import tagrenderingmetapaths from "../../../assets/questionabletagrenderingconfigmeta.json" import Translations from "../../../UI/i18n/Translations" -export class ExtractImages extends Conversion { +export class ExtractImages extends Conversion< + LayoutConfigJson, + { path: string; context: string }[] +> { private _isOfficial: boolean - private _sharedTagRenderings: Map + private _sharedTagRenderings: Set - private static readonly layoutMetaPaths = (metapaths["default"] ?? metapaths).filter( + private static readonly layoutMetaPaths = metapaths.filter( (mp) => - ExtractImages.mightBeTagRendering(mp) || - (mp.typeHint !== undefined && (mp.typeHint === "image" || mp.typeHint === "icon")) + ExtractImages.mightBeTagRendering(mp) || + (mp.typeHint !== undefined && + (mp.typeHint === "image" || + mp.typeHint === "icon" || + mp.typeHint === "image[]" || + mp.typeHint === "icon[]")) ) - private static readonly tagRenderingMetaPaths = - tagrenderingmetapaths["default"] ?? tagrenderingmetapaths + private static readonly tagRenderingMetaPaths = tagrenderingmetapaths - constructor(isOfficial: boolean, sharedTagRenderings: Map) { + constructor(isOfficial: boolean, sharedTagRenderings: Set) { super("Extract all images from a layoutConfig using the meta paths.", [], "ExctractImages") this._isOfficial = isOfficial this._sharedTagRenderings = sharedTagRenderings } - public static mightBeTagRendering(metapath: { type: string | string[] }): boolean { + public static mightBeTagRendering(metapath: { type?: string | string[] }): boolean { if (!Array.isArray(metapath.type)) { return false } - return metapath.type.some( - (t) => - t["$ref"] == "#/definitions/TagRenderingConfigJson" || - t["$ref"] == "#/definitions/QuestionableTagRenderingConfigJson" + return ( + metapath.type?.some( + (t) => + t["$ref"] == "#/definitions/TagRenderingConfigJson" || + t["$ref"] == "#/definitions/QuestionableTagRenderingConfigJson" + ) ?? false ) } @@ -63,27 +71,27 @@ export class ExtractImages extends Conversion { * ] * } * ] - * }, "test").result; + * }, "test").result.map(i => i.path); * images.length // => 2 - * images.findIndex(img => img == "./assets/layers/bike_parking/staple.svg") // => 0 - * images.findIndex(img => img == "./assets/layers/bike_parking/bollard.svg") // => 1 + * images.findIndex(img => img == "./assets/layers/bike_parking/staple.svg") >= 0 // => true + * images.findIndex(img => img == "./assets/layers/bike_parking/bollard.svg") >= 0 // => true * * // should not pickup rotation, should drop color - * const images = new ExtractImages(true, new Map()).convert({"layers": [{mapRendering: [{"location": ["point", "centroid"],"icon": "pin:black",rotation: 180,iconSize: "40,40,center"}]}] + * const images = new ExtractImages(true, new Set()).convert({"layers": [{mapRendering: [{"location": ["point", "centroid"],"icon": "pin:black",rotation: 180,iconSize: "40,40,center"}]}] * }, "test").result * images.length // => 1 - * images[0] // => "pin" + * images[0].path // => "pin" * */ convert( json: LayoutConfigJson, context: string - ): { result: string[]; errors: string[]; warnings: string[] } { - const allFoundImages: string[] = [] + ): { result: { path: string; context: string }[]; errors: string[]; warnings: string[] } { + const allFoundImages: { path: string; context: string }[] = [] const errors = [] const warnings = [] for (const metapath of ExtractImages.layoutMetaPaths) { - const mightBeTr = ExtractImages.mightBeTagRendering(metapath) + const mightBeTr = ExtractImages.mightBeTagRendering(metapath) const allRenderedValuesAreImages = metapath.typeHint === "icon" || metapath.typeHint === "image" const found = Utils.CollectPath(metapath.path, json) @@ -107,7 +115,7 @@ export class ExtractImages extends Conversion { continue } - allFoundImages.push(foundImage) + allFoundImages.push({ path: foundImage, context: context + "." + path }) } else { // This is a tagRendering. // Either every rendered value might be an icon @@ -136,7 +144,10 @@ export class ExtractImages extends Conversion { JSON.stringify(img.leaf) ) } else { - allFoundImages.push(img.leaf) + allFoundImages.push({ + path: img.leaf, + context: context + "." + path, + }) } } if (!allRenderedValuesAreImages && isImage) { @@ -145,7 +156,12 @@ export class ExtractImages extends Conversion { ...Translations.T( img.leaf, "extract_images from " + img.path.join(".") - ).ExtractImages(false) + ) + .ExtractImages(false) + .map((path) => ({ + path, + context: context + "." + path, + })) ) } } @@ -160,20 +176,30 @@ export class ExtractImages extends Conversion { ) continue } - allFoundImages.push(foundElement.leaf) + if (typeof foundElement.leaf !== "string") { + continue + } + allFoundImages.push({ + context: context + "." + foundElement.path.join("."), + path: foundElement.leaf, + }) } } } - const splitParts = [] - .concat( - ...Utils.NoNull(allFoundImages) - .map((img) => img["path"] ?? img) - .map((img) => img.split(";")) + const cleanedImages: { path: string; context: string }[] = [] + + for (const foundImage of allFoundImages) { + // Split "circle:white;./assets/layers/.../something.svg" into ["circle", "./assets/layers/.../something.svg"] + const allPaths = Utils.NoNull( + Utils.NoEmpty(foundImage.path?.split(";")?.map((part) => part.split(":")[0])) ) - .map((img) => img.split(":")[0]) - .filter((img) => img !== "") - return { result: Utils.Dedup(splitParts), errors, warnings } + for (const path of allPaths) { + cleanedImages.push({ path, context: foundImage.context }) + } + } + + return { result: cleanedImages, errors, warnings } } } @@ -271,14 +297,11 @@ export class FixImages extends DesugaringStep { json = Utils.Clone(json) - let paths = metapaths["default"] ?? metapaths - let trpaths = tagrenderingmetapaths["default"] ?? tagrenderingmetapaths - - for (const metapath of paths) { + for (const metapath of metapaths) { if (metapath.typeHint !== "image" && metapath.typeHint !== "icon") { continue } - const mightBeTr = ExtractImages.mightBeTagRendering(metapath) + const mightBeTr = ExtractImages.mightBeTagRendering(metapath) Utils.WalkPath(metapath.path, json, (leaf, path) => { if (typeof leaf === "string") { return replaceString(leaf) @@ -287,7 +310,7 @@ export class FixImages extends DesugaringStep { if (mightBeTr) { // We might have reached a tagRenderingConfig containing icons // lets walk every rendered value and fix the images in there - for (const trpath of trpaths) { + for (const trpath of tagrenderingmetapaths) { if (trpath.typeHint !== "rendered") { continue } diff --git a/Models/ThemeConfig/Conversion/PrepareLayer.ts b/Models/ThemeConfig/Conversion/PrepareLayer.ts index 134a74067..aaf84bc3a 100644 --- a/Models/ThemeConfig/Conversion/PrepareLayer.ts +++ b/Models/ThemeConfig/Conversion/PrepareLayer.ts @@ -16,12 +16,29 @@ import RewritableConfigJson from "../Json/RewritableConfigJson" import SpecialVisualizations from "../../../UI/SpecialVisualizations" import Translations from "../../../UI/i18n/Translations" import { Translation } from "../../../UI/i18n/Translation" -import * as tagrenderingconfigmeta from "../../../assets/tagrenderingconfigmeta.json" +import tagrenderingconfigmeta from "../../../assets/tagrenderingconfigmeta.json" import { AddContextToTranslations } from "./AddContextToTranslations" import FilterConfigJson from "../Json/FilterConfigJson" -import * as predifined_filters from "../../../assets/layers/filters/filters.json" +import predifined_filters from "../../../assets/layers/filters/filters.json" +import { TagConfigJson } from "../Json/TagConfigJson" +import PointRenderingConfigJson from "../Json/PointRenderingConfigJson" +import LineRenderingConfigJson from "../Json/LineRenderingConfigJson" +import { type } from "os" +import exp from "constants" class ExpandFilter extends DesugaringStep { + private static readonly predefinedFilters = ExpandFilter.load_filters() + private _state: DesugaringContext + + constructor(state: DesugaringContext) { + super( + "Expands filters: replaces a shorthand by the value found in 'filters.json'. If the string is formatted 'layername.filtername, it will be looked up into that layer instead", + ["filter"], + "ExpandFilter" + ) + this._state = state + } + private static load_filters(): Map { let filters = new Map() for (const filter of predifined_filters.filter) { @@ -30,16 +47,6 @@ class ExpandFilter extends DesugaringStep { return filters } - private static readonly predefinedFilters = ExpandFilter.load_filters() - - constructor() { - super( - "Expands filters: replaces a shorthand by the value found in 'filters.json'", - ["filter"], - "ExpandFilter" - ) - } - convert( json: LayerConfigJson, context: string @@ -59,6 +66,31 @@ class ExpandFilter extends DesugaringStep { newFilters.push(filter) continue } + if (filter.indexOf(".") > 0) { + if (this._state.sharedLayers.size > 0) { + const split = filter.split(".") + if (split.length > 2) { + errors.push( + context + + ": invalid filter name: " + + filter + + ", expected `layername.filterid`" + ) + } + const layer = this._state.sharedLayers.get(split[0]) + if (layer === undefined) { + errors.push(context + ": layer '" + split[0] + "' not found") + } + const expectedId = split[1] + const expandedFilter = (<(FilterConfigJson | string)[]>layer.filter).find( + (f) => typeof f !== "string" && f.id === expectedId + ) + newFilters.push(expandedFilter) + } else { + // This is a bootstrapping-run, we can safely ignore this + } + continue + } // Search for the filter: const found = ExpandFilter.predefinedFilters.get(filter) if (found === undefined) { @@ -96,12 +128,13 @@ class ExpandTagRendering extends Conversion< private readonly _options: { /* If true, will copy the 'osmSource'-tags into the condition */ applyCondition?: true | boolean + noHardcodedStrings?: false | boolean } constructor( state: DesugaringContext, self: LayerConfigJson, - options?: { applyCondition?: true | boolean } + options?: { applyCondition?: true | boolean; noHardcodedStrings?: false | boolean } ) { super( "Converts a tagRenderingSpec into the full tagRendering, e.g. by substituting the tagRendering by the shared-question", @@ -127,7 +160,38 @@ class ExpandTagRendering extends Conversion< } } - private lookup(name: string): TagRenderingConfigJson[] { + private lookup(name: string): TagRenderingConfigJson[] | undefined { + const direct = this.directLookup(name) + if (direct === undefined) { + return undefined + } + const result: TagRenderingConfigJson[] = [] + for (const tagRenderingConfigJson of direct) { + if (tagRenderingConfigJson["builtin"] !== undefined) { + let nm: string | string[] = tagRenderingConfigJson["builtin"] + let indirect: TagRenderingConfigJson[] + if (typeof nm === "string") { + indirect = this.lookup(nm) + } else { + indirect = [].concat(...nm.map((n) => this.lookup(n))) + } + for (let foundTr of indirect) { + foundTr = Utils.Clone(foundTr) + Utils.Merge(tagRenderingConfigJson["override"] ?? {}, foundTr) + foundTr.id = tagRenderingConfigJson.id ?? foundTr.id + result.push(foundTr) + } + } else { + result.push(tagRenderingConfigJson) + } + } + return result + } + + /** + * Looks up a tagRendering or group of tagRenderings based on the name. + */ + private directLookup(name: string): TagRenderingConfigJson[] | undefined { const state = this._state if (state.tagRenderings.has(name)) { return [state.tagRenderings.get(name)] @@ -158,7 +222,7 @@ class ExpandTagRendering extends Conversion< const id_ = id.substring(1) matchingTrs = layerTrs.filter((tr) => tr.group === id_ || tr.labels?.indexOf(id_) >= 0) } else { - matchingTrs = layerTrs.filter((tr) => tr.id === id) + matchingTrs = layerTrs.filter((tr) => tr.id === id || tr.labels?.indexOf(id) >= 0) } const contextWriter = new AddContextToTranslations("layers:") @@ -202,9 +266,25 @@ class ExpandTagRendering extends Conversion< const lookup = this.lookup(tr) if (lookup === undefined) { const isTagRendering = ctx.indexOf("On(mapRendering") < 0 - if (isTagRendering) { - warnings.push(ctx + "A literal rendering was detected: " + tr) + if (isTagRendering && this._state.sharedLayers.size > 0) { + warnings.push( + `${ctx}: A literal rendering was detected: ${tr} + Did you perhaps forgot to add a layer name as 'layername.${tr}'? ` + + Array.from(state.sharedLayers.keys()).join(", ") + ) } + + if (this._options?.noHardcodedStrings && this._state.sharedLayers.size > 0) { + errors.push( + ctx + + "Detected an invocation to a builtin tagRendering, but this tagrendering was not found: " + + tr + + " \n Did you perhaps forget to add the layer as prefix, such as `icons." + + tr + + "`? " + ) + } + return [ { render: tr, @@ -730,8 +810,7 @@ export class RewriteSpecial extends DesugaringStep { } { const errors = [] json = Utils.Clone(json) - const paths: { path: string[]; type?: any; typeHint?: string }[] = - tagrenderingconfigmeta["default"] ?? tagrenderingconfigmeta + const paths: { path: string[]; type?: any; typeHint?: string }[] = tagrenderingconfigmeta for (const path of paths) { if (path.typeHint !== "rendered") { continue @@ -748,6 +827,79 @@ export class RewriteSpecial extends DesugaringStep { } } +class ExpandIconBadges extends DesugaringStep { + private _state: DesugaringContext + private _layer: LayerConfigJson + private _expand: ExpandTagRendering + + constructor(state: DesugaringContext, layer: LayerConfigJson) { + super("Expands shorthand properties on iconBadges", ["iconBadges"], "ExpandIconBadges") + this._state = state + this._layer = layer + this._expand = new ExpandTagRendering(state, layer) + } + + convert( + json: PointRenderingConfigJson | LineRenderingConfigJson, + context: string + ): { + result: PointRenderingConfigJson | LineRenderingConfigJson + errors?: string[] + warnings?: string[] + information?: string[] + } { + if (!json["iconBadges"]) { + return { result: json } + } + const badgesJson = (json).iconBadges + + const iconBadges: { if: TagConfigJson; then: string | TagRenderingConfigJson }[] = [] + + const errs: string[] = [] + const warns: string[] = [] + for (let i = 0; i < badgesJson.length; i++) { + const iconBadge: { if: TagConfigJson; then: string | TagRenderingConfigJson } = + badgesJson[i] + const { errors, result, warnings } = this._expand.convert( + iconBadge.then, + context + ".iconBadges[" + i + "]" + ) + errs.push(...errors) + warns.push(...warnings) + if (result === undefined) { + iconBadges.push(iconBadge) + continue + } + + iconBadges.push( + ...result.map((resolved) => ({ + if: iconBadge.if, + then: resolved, + })) + ) + } + + return { + result: { ...json, iconBadges }, + errors: errs, + warnings: warns, + } + } +} + +class PreparePointRendering extends Fuse { + constructor(state: DesugaringContext, layer: LayerConfigJson) { + super( + "Prepares point renderings by expanding 'icon' and 'iconBadges'", + new On( + "icon", + new FirstOf(new ExpandTagRendering(state, layer, { applyCondition: false })) + ), + new ExpandIconBadges(state, layer) + ) + } +} + export class PrepareLayer extends Fuse { constructor(state: DesugaringContext) { super( @@ -756,21 +908,17 @@ export class PrepareLayer extends Fuse { new On("tagRenderings", new Concat(new ExpandRewrite()).andThenF(Utils.Flatten)), new On("tagRenderings", (layer) => new Concat(new ExpandTagRendering(state, layer))), new On("mapRendering", new Concat(new ExpandRewrite()).andThenF(Utils.Flatten)), - new On( + new On<(PointRenderingConfigJson | LineRenderingConfigJson)[], LayerConfigJson>( "mapRendering", - (layer) => - new Each( - new On( - "icon", - new FirstOf( - new ExpandTagRendering(state, layer, { applyCondition: false }) - ) - ) - ) + (layer) => new Each(new PreparePointRendering(state, layer)) ), - new SetDefault("titleIcons", ["defaults"]), - new On("titleIcons", (layer) => new Concat(new ExpandTagRendering(state, layer))), - new ExpandFilter() + new SetDefault("titleIcons", ["icons.defaults"]), + new On( + "titleIcons", + (layer) => + new Concat(new ExpandTagRendering(state, layer, { noHardcodedStrings: true })) + ), + new ExpandFilter(state) ) } } diff --git a/Models/ThemeConfig/Conversion/Validation.ts b/Models/ThemeConfig/Conversion/Validation.ts index 9fec8d940..5e5a92d34 100644 --- a/Models/ThemeConfig/Conversion/Validation.ts +++ b/Models/ThemeConfig/Conversion/Validation.ts @@ -3,19 +3,18 @@ import { LayerConfigJson } from "../Json/LayerConfigJson" import LayerConfig from "../LayerConfig" import { Utils } from "../../../Utils" import Constants from "../../Constants" -import { Translation } from "../../../UI/i18n/Translation" +import { Translation, TypedTranslation } from "../../../UI/i18n/Translation" import { LayoutConfigJson } from "../Json/LayoutConfigJson" import LayoutConfig from "../LayoutConfig" import { TagRenderingConfigJson } from "../Json/TagRenderingConfigJson" import { TagUtils } from "../../../Logic/Tags/TagUtils" import { ExtractImages } from "./FixImages" -import ScriptUtils from "../../../scripts/ScriptUtils" import { And } from "../../../Logic/Tags/And" import Translations from "../../../UI/i18n/Translations" import Svg from "../../../Svg" -import { QuestionableTagRenderingConfigJson } from "../Json/QuestionableTagRenderingConfigJson" import FilterConfigJson from "../Json/FilterConfigJson" import DeleteConfig from "../DeleteConfig" +import { QuestionableTagRenderingConfigJson } from "../Json/QuestionableTagRenderingConfigJson" class ValidateLanguageCompleteness extends DesugaringStep { private readonly _languages: string[] @@ -61,13 +60,16 @@ class ValidateLanguageCompleteness extends DesugaringStep { export class DoesImageExist extends DesugaringStep { private readonly _knownImagePaths: Set + private readonly _ignore?: Set private readonly doesPathExist: (path: string) => boolean = undefined constructor( knownImagePaths: Set, - checkExistsSync: (path: string) => boolean = undefined + checkExistsSync: (path: string) => boolean = undefined, + ignore?: Set ) { super("Checks if an image exists", [], "DoesImageExist") + this._ignore = ignore this._knownImagePaths = knownImagePaths this.doesPathExist = checkExistsSync } @@ -76,6 +78,10 @@ export class DoesImageExist extends DesugaringStep { image: string, context: string ): { result: string; errors?: string[]; warnings?: string[]; information?: string[] } { + if (this._ignore?.has(image)) { + return { result: image } + } + const errors = [] const warnings = [] const information = [] @@ -125,20 +131,23 @@ class ValidateTheme extends DesugaringStep { */ private readonly _path?: string private readonly _isBuiltin: boolean - private _sharedTagRenderings: Map + //private readonly _sharedTagRenderings: Map private readonly _validateImage: DesugaringStep + private readonly _extractImages: ExtractImages = undefined constructor( doesImageExist: DoesImageExist, path: string, isBuiltin: boolean, - sharedTagRenderings: Map + sharedTagRenderings?: Set ) { super("Doesn't change anything, but emits warnings and errors", [], "ValidateTheme") this._validateImage = doesImageExist this._path = path this._isBuiltin = isBuiltin - this._sharedTagRenderings = sharedTagRenderings + if (sharedTagRenderings) { + this._extractImages = new ExtractImages(this._isBuiltin, sharedTagRenderings) + } } convert( @@ -170,13 +179,10 @@ class ValidateTheme extends DesugaringStep { } } } - if (this._isBuiltin) { + if (this._isBuiltin && this._extractImages !== undefined) { // Check images: are they local, are the licenses there, is the theme icon square, ... - const images = new ExtractImages( - this._isBuiltin, - this._sharedTagRenderings - ).convertStrict(json, "validation") - const remoteImages = images.filter((img) => img.indexOf("http") == 0) + const images = this._extractImages.convertStrict(json, "validation") + const remoteImages = images.filter((img) => img.path.indexOf("http") == 0) for (const remoteImage of remoteImages) { errors.push( "Found a remote image: " + @@ -188,8 +194,8 @@ class ValidateTheme extends DesugaringStep { } for (const image of images) { this._validateImage.convertJoin( - image, - context === undefined ? "" : ` in a layer defined in the theme ${context}`, + image.path, + context === undefined ? "" : ` in the theme ${context} at ${image.context}`, errors, warnings, information @@ -269,7 +275,7 @@ export class ValidateThemeAndLayers extends Fuse { doesImageExist: DoesImageExist, path: string, isBuiltin: boolean, - sharedTagRenderings: Map + sharedTagRenderings?: Set ) { super( "Validates a theme and the contained layers", @@ -365,7 +371,7 @@ export class PrevalidateTheme extends Fuse { } } -export class DetectShadowedMappings extends DesugaringStep { +export class DetectShadowedMappings extends DesugaringStep { private readonly _calculatedTagNames: string[] constructor(layerConfig?: LayerConfigJson) { @@ -425,9 +431,9 @@ export class DetectShadowedMappings extends DesugaringStep= 0 // => true */ convert( - json: QuestionableTagRenderingConfigJson, + json: TagRenderingConfigJson, context: string - ): { result: QuestionableTagRenderingConfigJson; errors?: string[]; warnings?: string[] } { + ): { result: TagRenderingConfigJson; errors?: string[]; warnings?: string[] } { const errors = [] const warnings = [] if (json.mappings === undefined || json.mappings.length === 0) { @@ -441,12 +447,9 @@ export class DetectShadowedMappings extends DesugaringStep { const ctx = `${context}.mappings[${i}]` const ifTags = TagUtils.Tag(m.if, ctx) - if ( - m.hideInAnswer !== undefined && - m.hideInAnswer !== false && - m.hideInAnswer !== true - ) { - let conditionTags = TagUtils.Tag(m.hideInAnswer) + const hideInAnswer = m["hideInAnswer"] + if (hideInAnswer !== undefined && hideInAnswer !== false && hideInAnswer !== true) { + let conditionTags = TagUtils.Tag(hideInAnswer) // Merge the condition too! return new And([conditionTags, ifTags]) } @@ -467,8 +470,8 @@ export class DetectShadowedMappings extends DesugaringStep { - constructor() { - super("Miscellanious checks on the tagrendering", ["special"], "MiscTagREnderingChecksRew") + private _options: { noQuestionHintCheck: boolean } + constructor(options: { noQuestionHintCheck: boolean }) { + super("Miscellaneous checks on the tagrendering", ["special"], "MiscTagRenderingChecks") + this._options = options } convert( - json: TagRenderingConfigJson, + json: TagRenderingConfigJson | QuestionableTagRenderingConfigJson, context: string ): { result: TagRenderingConfigJson @@ -603,6 +608,7 @@ class MiscTagRenderingChecks extends DesugaringStep { warnings?: string[] information?: string[] } { + const warnings = [] const errors = [] if (json["special"] !== undefined) { errors.push( @@ -611,19 +617,45 @@ class MiscTagRenderingChecks extends DesugaringStep { ': detected `special` on the top level. Did you mean `{"render":{ "special": ... }}`' ) } + if (json["question"] && !this._options?.noQuestionHintCheck) { + const question = Translations.T( + new TypedTranslation(json["question"]), + context + ".question" + ) + for (const lng of question.SupportedLanguages()) { + const html = document.createElement("p") + html.innerHTML = question.textFor(lng) + const divs = Array.from(html.getElementsByTagName("div")) + const spans = Array.from(html.getElementsByTagName("span")) + const brs = Array.from(html.getElementsByTagName("br")) + const subtles = Array.from(html.getElementsByClassName("subtle")) + if (divs.length + spans.length + brs.length + subtles.length > 0) { + warnings.push( + `At ${context}: the question for ${lng} contains a div, a span, a br or an element with class 'subtle'. Please, use a \`questionHint\` instead. + The question is: ${question.textFor(lng)}` + ) + } + } + } return { result: json, errors, + warnings, } } } export class ValidateTagRenderings extends Fuse { - constructor(layerConfig?: LayerConfigJson, doesImageExist?: DoesImageExist) { + constructor( + layerConfig?: LayerConfigJson, + doesImageExist?: DoesImageExist, + options?: { noQuestionHintCheck: boolean } + ) { super( "Various validation on tagRenderingConfigs", new DetectShadowedMappings(layerConfig), - new DetectMappingsWithImages(doesImageExist) + new DetectMappingsWithImages(doesImageExist), + new MiscTagRenderingChecks(options) ) } } @@ -688,7 +720,6 @@ export class ValidateLayer extends DesugaringStep { `At ${context}: minzoom is ${json.minzoom}, this should be at most ${Constants.userJourney.minZoomLevelToAddNewPoints} as a preset is set. Why? Selecting the pin for a new item will zoom in to level before adding the point. Having a greater minzoom will hide the points, resulting in possible duplicates` ) } - { // duplicate ids in tagrenderings check const duplicates = Utils.Dedup( @@ -810,7 +841,11 @@ export class ValidateLayer extends DesugaringStep { if (json.tagRenderings !== undefined) { const r = new On( "tagRenderings", - new Each(new ValidateTagRenderings(json, this._doesImageExist)) + new Each( + new ValidateTagRenderings(json, this._doesImageExist, { + noQuestionHintCheck: json["#"]?.indexOf("no-question-hint-check") >= 0, + }) + ) ).convert(json, context) warnings.push(...(r.warnings ?? [])) errors.push(...(r.errors ?? [])) @@ -882,53 +917,6 @@ export class DetectDuplicateFilters extends DesugaringStep<{ ) } - /** - * Add all filter options into 'perOsmTag' - */ - private addLayerFilters( - layer: LayerConfigJson, - perOsmTag: Map< - string, - { - layer: LayerConfigJson - layout: LayoutConfigJson | undefined - filter: FilterConfigJson - }[] - >, - layout?: LayoutConfigJson | undefined - ): void { - if (layer.filter === undefined || layer.filter === null) { - return - } - if (layer.filter["sameAs"] !== undefined) { - return - } - for (const filter of <(string | FilterConfigJson)[]>layer.filter) { - if (typeof filter === "string") { - continue - } - - if (filter["#"]?.indexOf("ignore-possible-duplicate") >= 0) { - continue - } - - for (const option of filter.options) { - if (option.osmTags === undefined) { - continue - } - const key = JSON.stringify(option.osmTags) - if (!perOsmTag.has(key)) { - perOsmTag.set(key, []) - } - perOsmTag.get(key).push({ - layer, - filter, - layout, - }) - } - } - } - convert( json: { layers: LayerConfigJson[]; themes: LayoutConfigJson[] }, context: string @@ -995,4 +983,51 @@ export class DetectDuplicateFilters extends DesugaringStep<{ information, } } + + /** + * Add all filter options into 'perOsmTag' + */ + private addLayerFilters( + layer: LayerConfigJson, + perOsmTag: Map< + string, + { + layer: LayerConfigJson + layout: LayoutConfigJson | undefined + filter: FilterConfigJson + }[] + >, + layout?: LayoutConfigJson | undefined + ): void { + if (layer.filter === undefined || layer.filter === null) { + return + } + if (layer.filter["sameAs"] !== undefined) { + return + } + for (const filter of <(string | FilterConfigJson)[]>layer.filter) { + if (typeof filter === "string") { + continue + } + + if (filter["#"]?.indexOf("ignore-possible-duplicate") >= 0) { + continue + } + + for (const option of filter.options) { + if (option.osmTags === undefined) { + continue + } + const key = JSON.stringify(option.osmTags) + if (!perOsmTag.has(key)) { + perOsmTag.set(key, []) + } + perOsmTag.get(key).push({ + layer, + filter, + layout, + }) + } + } + } } diff --git a/Models/ThemeConfig/Json/FilterConfigJson.ts b/Models/ThemeConfig/Json/FilterConfigJson.ts index dda710b14..4b0e137e3 100644 --- a/Models/ThemeConfig/Json/FilterConfigJson.ts +++ b/Models/ThemeConfig/Json/FilterConfigJson.ts @@ -10,6 +10,28 @@ export default interface FilterConfigJson { * If there are multiple options these will be a list of radio buttons * If there is only one option this will be a checkbox * Filtering is done based on the given osmTags that are compared to the objects in that layer. + * + * An example which searches by name: + * + * ``` + * { + * "id": "shop-name", + * "options": [ + * { + * "fields": [ + * { + * "name": "search", + * "type": "string" + * } + * ], + * "osmTags": "name~i~.*{search}.*", + * "question": { + * "en": "Only show shops with name {search}", + * } + * } + * ] + * } + * ``` */ options: { question: string | any @@ -23,4 +45,11 @@ export default interface FilterConfigJson { type?: string | "string" }[] }[] + + /** + * Used for comments or to disable a check + * + * "ignore-possible-duplicate": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer + */ + "#"?: string | "ignore-possible-duplicate" } diff --git a/Models/ThemeConfig/Json/LayerConfigJson.ts b/Models/ThemeConfig/Json/LayerConfigJson.ts index fd80dc4b5..69e132e8a 100644 --- a/Models/ThemeConfig/Json/LayerConfigJson.ts +++ b/Models/ThemeConfig/Json/LayerConfigJson.ts @@ -317,7 +317,7 @@ export interface LayerConfigJson { /** * All the extra questions for filtering. - * If a string is given, mapComplete will search in 'filters.json' for the appropriate filter + * If a string is given, mapComplete will search in 'filters.json' for the appropriate filter or will try to parse it as `layername.filterid` and us that one */ filter?: (FilterConfigJson | string)[] | { sameAs: string } @@ -402,4 +402,11 @@ export interface LayerConfigJson { * global: all layers with this ID will be synced accross all themes */ syncSelection?: "no" | "local" | "theme-only" | "global" + + /** + * Used for comments and/or to disable some checks + * + * no-question-hint-check: disables a check in MiscTagRenderingChecks which complains about 'div', 'span' or 'class=subtle'-HTML elements in the tagRendering + */ + "#"?: string | "no-question-hint-check" } diff --git a/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson.ts b/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson.ts index a435d0502..0d1db2595 100644 --- a/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson.ts +++ b/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson.ts @@ -26,7 +26,7 @@ export interface MappingConfigJson { /** * Size of the image */ - class: "small" | "medium" | "large" | string + class?: "small" | "medium" | "large" | string } /** @@ -128,6 +128,13 @@ export interface MappingConfigJson { * Use this sparingly */ priorityIf?: TagConfigJson + + /** + * Used for comments or to disable a validation + * + * ignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed + */ + "#"?: string | "ignore-image-in-then" } /** @@ -139,7 +146,13 @@ export interface QuestionableTagRenderingConfigJson extends TagRenderingConfigJs * If it turns out that this tagRendering doesn't match _any_ value, then we show this question. * If undefined, the question is never asked and this tagrendering is read-only */ - question?: string | any + question?: string | Record + + /** + * A hint which is shown in subtle text under the question. + * This can give some extra information on what the answer should ook like + */ + questionHint?: string | Record /** * Allow freeform text input from the user diff --git a/Models/ThemeConfig/Json/TagRenderingConfigJson.ts b/Models/ThemeConfig/Json/TagRenderingConfigJson.ts index 460fa1be2..9f9a6a9af 100644 --- a/Models/ThemeConfig/Json/TagRenderingConfigJson.ts +++ b/Models/ThemeConfig/Json/TagRenderingConfigJson.ts @@ -125,7 +125,7 @@ export interface TagRenderingConfigJson { * A hint to mapcomplete on how to render this icon within the mapping. * This is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged) */ - class: "small" | "medium" | "large" | string + class?: "small" | "medium" | "large" | string } }[] } diff --git a/Models/ThemeConfig/LayoutConfig.ts b/Models/ThemeConfig/LayoutConfig.ts index 6c63525d8..4763169de 100644 --- a/Models/ThemeConfig/LayoutConfig.ts +++ b/Models/ThemeConfig/LayoutConfig.ts @@ -7,8 +7,23 @@ import TilesourceConfig from "./TilesourceConfig" import { ExtractImages } from "./Conversion/FixImages" import ExtraLinkConfig from "./ExtraLinkConfig" import { Utils } from "../../Utils" -import * as used_languages from "../../assets/generated/used_languages.json" -export default class LayoutConfig { +import LanguageUtils from "../../Utils/LanguageUtils" + +/** + * Minimal information about a theme + **/ +export class LayoutInformation { + id: string + icon: string + title: any + shortDescription: any + definition?: any + mustHaveLanguage?: boolean + hideFromOverview?: boolean + keywords?: any[] +} + +export default class LayoutConfig implements LayoutInformation { public static readonly defaultSocialImage = "assets/SocialImage.png" public readonly id: string public readonly credits?: string @@ -82,10 +97,12 @@ export default class LayoutConfig { this.credits = json.credits this.language = json.mustHaveLanguage ?? Object.keys(json.title) this.usedImages = Array.from( - new ExtractImages(official, undefined).convertStrict( - json, - "while extracting the images of " + json.id + " " + context ?? "" - ) + new ExtractImages(official, undefined) + .convertStrict( + json, + "while extracting the images of " + json.id + " " + context ?? "" + ) + .map((i) => i.path) ).sort() { if (typeof json.title === "string") { @@ -237,13 +254,11 @@ export default class LayoutConfig { } public missingTranslations(): { - completeness: Map untranslated: Map total: number } { const layout = this let total = 0 - const completeness = new Map() const untranslated = new Map() Utils.WalkObject( @@ -259,18 +274,26 @@ export default class LayoutConfig { } total++ - used_languages.languages.forEach((ln) => { + LanguageUtils.usedLanguagesSorted.forEach((ln) => { const trans = translation.translations if (trans["*"] !== undefined) { return } + if (translation.context.indexOf(":") < 0) { + return + } if (trans[ln] === undefined) { if (!untranslated.has(ln)) { untranslated.set(ln, []) } - untranslated.get(ln).push(translation.context) - } else { - completeness.set(ln, 1 + (completeness.get(ln) ?? 0)) + untranslated + .get(ln) + .push( + translation.context.replace( + /^note_import_[a-zA-Z0-9_]*/, + "note_import" + ) + ) } }) }, @@ -282,7 +305,7 @@ export default class LayoutConfig { } ) - return { completeness, untranslated, total } + return { untranslated, total } } public getMatchingLayer(tags: any): LayerConfig | undefined { if (tags === undefined) { diff --git a/Models/ThemeConfig/PointRenderingConfig.ts b/Models/ThemeConfig/PointRenderingConfig.ts index 03242f33c..8183ab032 100644 --- a/Models/ThemeConfig/PointRenderingConfig.ts +++ b/Models/ThemeConfig/PointRenderingConfig.ts @@ -1,18 +1,16 @@ import PointRenderingConfigJson from "./Json/PointRenderingConfigJson" import TagRenderingConfig from "./TagRenderingConfig" import { TagsFilter } from "../../Logic/Tags/TagsFilter" -import SharedTagRenderings from "../../Customizations/SharedTagRenderings" import { TagUtils } from "../../Logic/Tags/TagUtils" import { Utils } from "../../Utils" import Svg from "../../Svg" import WithContextLoader from "./WithContextLoader" -import { UIEventSource } from "../../Logic/UIEventSource" +import { Store, UIEventSource } from "../../Logic/UIEventSource" import BaseUIElement from "../../UI/BaseUIElement" import { FixedUiElement } from "../../UI/Base/FixedUiElement" import Img from "../../UI/Base/Img" import Combine from "../../UI/Base/Combine" import { VariableUiElement } from "../../UI/Base/VariableUIElement" -import { TagRenderingConfigJson } from "./Json/TagRenderingConfigJson" export default class PointRenderingConfig extends WithContextLoader { private static readonly allowed_location_codes = new Set([ @@ -37,6 +35,10 @@ export default class PointRenderingConfig extends WithContextLoader { constructor(json: PointRenderingConfigJson, context: string) { super(json, context) + if (json === undefined || json === null) { + throw "Invalid PointRenderingConfig: undefined or null" + } + if (typeof json.location === "string") { json.location = [json.location] } @@ -69,18 +71,9 @@ export default class PointRenderingConfig extends WithContextLoader { } this.cssClasses = this.tr("cssClasses", undefined) this.iconBadges = (json.iconBadges ?? []).map((overlay, i) => { - let tr: TagRenderingConfig - if ( - typeof overlay.then === "string" && - SharedTagRenderings.SharedIcons.get(overlay.then) !== undefined - ) { - tr = SharedTagRenderings.SharedIcons.get(overlay.then) - } else { - tr = new TagRenderingConfig(overlay.then, `iconBadges.${i}`) - } return { if: TagUtils.Tag(overlay.if), - then: tr, + then: new TagRenderingConfig(overlay.then, `iconBadges.${i}`), } }) @@ -171,7 +164,7 @@ export default class PointRenderingConfig extends WithContextLoader { return PointRenderingConfig.FromHtmlMulti(htmlDefs, rotation, false, defaultPin) } - public GetSimpleIcon(tags: UIEventSource): BaseUIElement { + public GetSimpleIcon(tags: Store): BaseUIElement { const self = this if (this.icon === undefined) { return undefined @@ -182,7 +175,7 @@ export default class PointRenderingConfig extends WithContextLoader { } public GenerateLeafletStyle( - tags: UIEventSource, + tags: Store, clickable: boolean, options?: { noSize?: false | boolean @@ -279,7 +272,7 @@ export default class PointRenderingConfig extends WithContextLoader { } } - private GetBadges(tags: UIEventSource): BaseUIElement { + private GetBadges(tags: Store): BaseUIElement { if (this.iconBadges.length === 0) { return undefined } @@ -311,7 +304,7 @@ export default class PointRenderingConfig extends WithContextLoader { ).SetClass("absolute bottom-0 right-1/3 h-1/2 w-0") } - private GetLabel(tags: UIEventSource): BaseUIElement { + private GetLabel(tags: Store): BaseUIElement { if (this.label === undefined) { return undefined } diff --git a/Models/ThemeConfig/TagRenderingConfig.ts b/Models/ThemeConfig/TagRenderingConfig.ts index dbbe10675..a20011d74 100644 --- a/Models/ThemeConfig/TagRenderingConfig.ts +++ b/Models/ThemeConfig/TagRenderingConfig.ts @@ -47,6 +47,7 @@ export default class TagRenderingConfig { public readonly group: string public readonly render?: TypedTranslation public readonly question?: TypedTranslation + public readonly questionhint?: TypedTranslation public readonly condition?: TagsFilter public readonly description?: Translation @@ -119,6 +120,7 @@ export default class TagRenderingConfig { this.labels = json.labels ?? [] this.render = Translations.T(json.render, translationKey + ".render") this.question = Translations.T(json.question, translationKey + ".question") + this.questionhint = Translations.T(json.questionHint, translationKey + ".questionHint") this.description = Translations.T(json.description, translationKey + ".description") this.condition = TagUtils.Tag(json.condition ?? { and: [] }, `${context}.condition`) if (json.freeform) { diff --git a/UI/AllTagsPanel.svelte b/UI/AllTagsPanel.svelte new file mode 100644 index 000000000..4eab95c50 --- /dev/null +++ b/UI/AllTagsPanel.svelte @@ -0,0 +1,54 @@ + + +
+ +
+ + diff --git a/UI/AllTagsPanel.ts b/UI/AllTagsPanel.ts deleted file mode 100644 index 32b8a2c84..000000000 --- a/UI/AllTagsPanel.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { VariableUiElement } from "./Base/VariableUIElement" -import { UIEventSource } from "../Logic/UIEventSource" -import Table from "./Base/Table" - -export class AllTagsPanel extends VariableUiElement { - constructor(tags: UIEventSource, state?) { - const calculatedTags = [].concat( - // SimpleMetaTagger.lazyTags, - ...(state?.layoutToUse?.layers?.map((l) => l.calculatedTags?.map((c) => c[0]) ?? []) ?? - []) - ) - - super( - tags.map((tags) => { - const parts = [] - for (const key in tags) { - if (!tags.hasOwnProperty(key)) { - continue - } - let v = tags[key] - if (v === "") { - v = "empty string" - } - parts.push([key, v ?? "undefined"]) - } - - for (const key of calculatedTags) { - const value = tags[key] - if (value === undefined) { - continue - } - let type = "" - if (typeof value !== "string") { - type = " " + typeof value + "" - } - parts.push(["" + key + "", value]) - } - - return new Table(["key", "value"], parts) - .SetStyle( - "border: 1px solid black; border-radius: 1em;padding:1em;display:block;" - ) - .SetClass("zebra-table") - }) - ) - } -} diff --git a/UI/AllThemesGui.ts b/UI/AllThemesGui.ts index 68cb52ddb..a56d18de0 100644 --- a/UI/AllThemesGui.ts +++ b/UI/AllThemesGui.ts @@ -10,12 +10,10 @@ import IndexText from "./BigComponents/IndexText" import FeaturedMessage from "./BigComponents/FeaturedMessage" import { ImportViewerLinks } from "./BigComponents/UserInformation" import { LoginToggle } from "./Popup/LoginButton" -import UserSurveyPanel from "./UserSurveyPanel" export default class AllThemesGui { setup() { try { - new FixedUiElement("").AttachTo("centermessage") const state = new UserRelatedState(undefined) const intro = new Combine([ new LanguagePicker1(Translations.t.index.title.SupportedLanguages(), "").SetClass( @@ -26,7 +24,6 @@ export default class AllThemesGui { new Combine([ intro, new FeaturedMessage().SetClass("mb-4 block"), - new Combine([new UserSurveyPanel()]).SetClass("flex justify-center"), new MoreScreen(state, true), new LoginToggle(undefined, Translations.t.index.logIn, state), new ImportViewerLinks(state.osmConnection), @@ -37,14 +34,14 @@ export default class AllThemesGui { ]) .SetClass("block m-5 lg:w-3/4 lg:ml-40") .SetStyle("pointer-events: all;") - .AttachTo("topleft-tools") + .AttachTo("top-left") } catch (e) { console.error(">>>> CRITICAL", e) new FixedUiElement( "Seems like no layers are compiled - check the output of `npm run generate:layeroverview`. Is this visible online? Contact pietervdvn immediately!" ) .SetClass("alert") - .AttachTo("centermessage") + .AttachTo("top-left") } } } diff --git a/UI/AutomatonGui.ts b/UI/AutomatonGui.ts index 8a0233d86..1a8b446a8 100644 --- a/UI/AutomatonGui.ts +++ b/UI/AutomatonGui.ts @@ -27,7 +27,7 @@ import { QueryParameters } from "../Logic/Web/QueryParameters" import { SubstitutedTranslation } from "./SubstitutedTranslation" import { AutoAction } from "./Popup/AutoApplyButton" import DynamicGeoJsonTileSource from "../Logic/FeatureSource/TiledFeatureSource/DynamicGeoJsonTileSource" -import * as themeOverview from "../assets/generated/theme_overview.json" +import themeOverview from "../assets/generated/theme_overview.json" class AutomationPanel extends Combine { private static readonly openChangeset = new UIEventSource(undefined) diff --git a/UI/Base/FixedUiElement.ts b/UI/Base/FixedUiElement.ts index c3cd33c87..aa8e41c27 100644 --- a/UI/Base/FixedUiElement.ts +++ b/UI/Base/FixedUiElement.ts @@ -14,6 +14,9 @@ export class FixedUiElement extends BaseUIElement { AsMarkdown(): string { if (this.HasClass("code")) { + if (this.content.indexOf("\n") > 0 || this.HasClass("block")) { + return "\n```\n" + this.content + "\n```\n" + } return "`" + this.content + "`" } if (this.HasClass("font-bold")) { diff --git a/UI/Base/LinkToWeblate.ts b/UI/Base/LinkToWeblate.ts index e6bc59a90..f7f1b8653 100644 --- a/UI/Base/LinkToWeblate.ts +++ b/UI/Base/LinkToWeblate.ts @@ -21,7 +21,7 @@ export default class LinkToWeblate extends VariableUiElement { return undefined } const icon = Svg.translate_svg().SetClass( - "rounded-full border border-gray-400 inline-block w-4 h-4 m-1 weblate-link self-center" + "rounded-full inline-block w-3 h-3 ml-1 weblate-link self-center" ) if (availableTranslations[ln] === undefined) { icon.SetClass("bg-red-400") @@ -31,7 +31,15 @@ export default class LinkToWeblate extends VariableUiElement { [Locale.showLinkToWeblate] ) ) - this.SetClass("enable-links hidden-on-mobile") + this.SetClass("enable-links") + const self = this + Locale.showLinkOnMobile.addCallbackAndRunD((showOnMobile) => { + if (showOnMobile) { + self.RemoveClass("hidden-on-mobile") + } else { + self.SetClass("hidden-on-mobile") + } + }) } /** diff --git a/UI/Base/Minimap.ts b/UI/Base/Minimap.ts index b7dccbe4e..13ac4b5f7 100644 --- a/UI/Base/Minimap.ts +++ b/UI/Base/Minimap.ts @@ -3,7 +3,6 @@ import Loc from "../../Models/Loc" import BaseLayer from "../../Models/BaseLayer" import { UIEventSource } from "../../Logic/UIEventSource" import { BBox } from "../../Logic/BBox" -import { deprecate } from "util" export interface MinimapOptions { background?: UIEventSource diff --git a/UI/Base/MinimapImplementation.ts b/UI/Base/MinimapImplementation.ts index 22972f35f..271bd7253 100644 --- a/UI/Base/MinimapImplementation.ts +++ b/UI/Base/MinimapImplementation.ts @@ -23,7 +23,7 @@ import StrayClickHandler from "../../Logic/Actors/StrayClickHandler" * The stray-click-hanlders adds a marker to the map if no feature was clicked. * Shows the given uiToShow-element in the messagebox */ -export class StrayClickHandlerImplementation { +class StrayClickHandlerImplementation { private _lastMarker constructor( @@ -91,6 +91,7 @@ export class StrayClickHandlerImplementation { }) } } + export default class MinimapImplementation extends BaseUIElement implements MinimapObj { private static _nextId = 0 public readonly leafletMap: UIEventSource diff --git a/UI/Base/ScrollableFullScreen.ts b/UI/Base/ScrollableFullScreen.ts index 9dd6a83c8..6a9261d94 100644 --- a/UI/Base/ScrollableFullScreen.ts +++ b/UI/Base/ScrollableFullScreen.ts @@ -143,7 +143,7 @@ export default class ScrollableFullScreen { ) const contentWrapper = new Combine([content]).SetClass( - "block p-2 md:pt-4 w-full h-full overflow-y-auto desktop:max-h-65vh" + "block p-2 md:pt-4 w-full h-full overflow-y-auto" ) this._resetScrollSignal.addCallback((_) => { @@ -159,7 +159,7 @@ export default class ScrollableFullScreen { // We add an ornament which takes around 5em. This is in order to make sure the Web UI doesn't hide ]).SetClass("flex flex-col h-full relative bg-white"), ]).SetClass( - "fixed top-0 left-0 right-0 h-screen w-screen desktop:max-h-65vh md:w-auto md:relative z-above-controls md:rounded-xl overflow-hidden" + "fixed top-0 left-0 right-0 h-screen w-screen md:w-auto md:relative z-above-controls md:rounded-xl overflow-hidden" ) } diff --git a/UI/Base/SubtleButton.svelte b/UI/Base/SubtleButton.svelte new file mode 100644 index 000000000..edd897372 --- /dev/null +++ b/UI/Base/SubtleButton.svelte @@ -0,0 +1,82 @@ + + + + + {#if imageUrl !== undefined} + {#if typeof imageUrl === "string"} + + {:else} +