diff --git a/assets/themes/blind_osm/blind_osm.json b/assets/themes/blind_osm/blind_osm.json index 8669e40968..a2e25824d5 100644 --- a/assets/themes/blind_osm/blind_osm.json +++ b/assets/themes/blind_osm/blind_osm.json @@ -46,7 +46,7 @@ { "builtin": "crossings", "override": { - "mapRendering": [ + "pointRendering": [ { "iconBadges": [ { @@ -69,7 +69,7 @@ "builtin": "kerbs", "override": { "minzoom": 18, - "mapRendering": [ + "pointRendering": [ { "iconBadges": [ { @@ -88,7 +88,7 @@ { "builtin": "transit_stops", "override": { - "mapRendering": [ + "pointRendering": [ { "iconBadges": [ { diff --git a/assets/themes/buurtnatuur/buurtnatuur.json b/assets/themes/buurtnatuur/buurtnatuur.json index 1a62d6cf66..f652658d1e 100644 --- a/assets/themes/buurtnatuur/buurtnatuur.json +++ b/assets/themes/buurtnatuur/buurtnatuur.json @@ -88,9 +88,55 @@ } } ], - "pointRendering": [], + "pointRendering": [ + { + "marker": [ + { + "icon": "circle", + "color": "#ffffff" + }, + { + "icon": "./assets/themes/buurtnatuur/nature_reserve.svg" + } + ], + "iconSize": "50,50", + "location": [ + "point" + ], + "anchor": "center" + } + ], "lineRendering": [ - {} + { + "color": { + "render": "#3c3", + "mappings": [ + { + "if": { + "and": [ + "name=", + "noname=", + "operator=", + "access=", + "access:description=", + "leisure=park" + ] + }, + "then": "#cc1100" + }, + { + "if": { + "and": [ + "name=", + "noname=" + ] + }, + "then": "#fccb37" + } + ] + }, + "width": "5" + } ] }, { @@ -159,9 +205,42 @@ } } ], - "pointRendering": [], + "pointRendering": [ + { + "marker": [ + { + "icon": "circle", + "color": "#ffffff" + }, + { + "icon": "./assets/themes/buurtnatuur/park.svg" + } + ], + "iconSize": "40,40", + "location": [ + "point" + ], + "anchor": "center" + } + ], "lineRendering": [ - {} + { + "color": { + "render": "#3c3", + "mappings": [ + { + "if": { + "and": [ + "name=", + "noname=" + ] + }, + "then": "#fccb37" + } + ] + }, + "width": "5" + } ] }, { @@ -231,9 +310,61 @@ } } ], - "pointRendering": [], + "pointRendering": [ + { + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/themes/buurtnatuur/forest.svg" + } + ], + "iconSize": "40,40", + "location": [ + "point" + ], + "anchor": "center" + } + ], "lineRendering": [ - {} + { + "color": { + "render": "#3a3", + "mappings": [ + { + "if": { + "and": [ + "operator=", + "access=", + "access:description=" + ] + }, + "then": "#cc1100" + }, + { + "if": { + "and": [ + "operator=" + ] + }, + "then": "#cccc00" + }, + { + "if": { + "and": [ + "name=", + "noname=" + ] + }, + "then": "#fccb37" + } + ] + }, + "width": "5" + } + ] }, "viewpoint" @@ -500,4 +631,4 @@ "enableMoreQuests": false, "widenFactor": 1.2, "#dont-translate": "*" -} \ No newline at end of file +} diff --git a/assets/themes/climbing/climbing.json b/assets/themes/climbing/climbing.json index 3526c7fa77..426c72999d 100644 --- a/assets/themes/climbing/climbing.json +++ b/assets/themes/climbing/climbing.json @@ -491,7 +491,7 @@ ], "override": { "minzoom": 15, - "mapRendering": [ + "pointRendering": [ { "iconSize": "30,30" } diff --git a/assets/themes/cyclofix/cyclofix.json b/assets/themes/cyclofix/cyclofix.json index a26ddb2c95..02b1f98f44 100644 --- a/assets/themes/cyclofix/cyclofix.json +++ b/assets/themes/cyclofix/cyclofix.json @@ -50,9 +50,11 @@ "id": "bicycle_rental_non_docking", "minzoom": 14, "=presets": [], - "=mapRendering": [ + "=pointRendering": [ { - "icon": "pin:#ba2792;./assets/themes/cyclofix/key.svg", + "marker":[{ + "icon": "pin:#ba2792;./assets/themes/cyclofix/key.svg" + }], "iconSize": "40,40", "anchor": "bottom", "location": [ @@ -79,9 +81,11 @@ "sameAs": "bicycle_rental_non_docking" }, "minzoom": 18, - "=mapRendering": [ + "=pointRendering": [ { - "icon": "pin:#ba2792;./assets/themes/cyclofix/key.svg", + "marker":[{ + "icon": "pin:#ba2792;./assets/themes/cyclofix/key.svg" + }], "iconSize": "40,40", "anchor": "bottom", "location": [ diff --git a/assets/themes/grb/grb.json b/assets/themes/grb/grb.json index 1d8512e4b7..8712d62dc6 100644 --- a/assets/themes/grb/grb.json +++ b/assets/themes/grb/grb.json @@ -234,7 +234,47 @@ ], "pointRendering": [], "lineRendering": [ - {} + { + "width": { + "render": "2", + "mappings": [ + { + "if": "fixme~*", + "then": "5" + } + ] + }, + "color": { + "render": "#00c", + "mappings": [ + { + "if": "fixme~*", + "then": "#ff00ff" + }, + { + "if": "building=house", + "then": "#a00" + }, + { + "if": "building=shed", + "then": "#563e02" + }, + { + "if": { + "or": [ + "building=garage", + "building=garages" + ] + }, + "then": "#f9bfbb" + }, + { + "if": "building=yes", + "then": "#0774f2" + } + ] + } + } ] }, { @@ -441,9 +481,63 @@ "_imported_osm_still_fresh!=true" ] }, - "pointRendering": [], - "lineRendering": [ - {} + "pointRendering": [ { + "label": { + "render": "
{addr:housenumber}
", + "condition": "addr:housenumber~*" + }, + "iconSize": "50,50", + "marker":[{ + "icon": { + "mappings": [ + { + "if": "_intersects_with_other_features~*", + "then": "./assets/themes/grb/warning.svg" + }, + { + "if": "addr:housenumber~*", + "then": "./assets/themes/grb/housenumber_blank.svg" + } + ] + } + }], + + "location": [ + "point", + "centroid" + ], + "anchor": "center" + }], + "lineRendering":[ + { + "width": { + "render": 5, + "mappings": [ + { + "if": "_imported=yes", + "then": "1" + } + ] + }, + "color": { + "render": "#00a", + "mappings": [ + { + "if": "_imported=yes", + "then": "#00ff00" + }, + { + "if": { + "and": [ + "_imported_osm_object_found=true", + "_imported_osm_still_fresh=true" + ] + }, + "then": "#0f0" + } + ] + } + } ] }, { @@ -456,8 +550,10 @@ "title": "Service road", "tagRenderings": [], "pointRendering": [], - "lineRendering": [ - {} + "lineRendering": [ { + "width": 4, + "color": "#888888" + } ] }, { @@ -500,7 +596,11 @@ ], "pointRendering": [], "lineRendering": [ - {} + { + "color": "#ccc", + "width": "1", + "fill": "no" + } ] }, "address", @@ -664,12 +764,14 @@ "render": "{auto_apply(grb, _applicable_conflate, Import-button, Conflate all non-conflicting buildings in view)}" } ], - "+mapRendering": [ + "+pointRendering": [ { "location": [ "point" ], - "icon": "./assets/svg/robot.svg", + "marker":[{ + "icon": "./assets/svg/robot.svg" + }], "iconSize": "15,15" } ] @@ -685,4 +787,4 @@ "clustering": { "maxZoom": 15 } -} \ No newline at end of file +} diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json deleted file mode 100644 index 6d893730df..0000000000 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ /dev/null @@ -1,770 +0,0 @@ -{ - "id": "mapcomplete-changes", - "title": { - "en": "Changes made with MapComplete", - "ca": "Canvis fets amb MapComplete", - "de": "Mit MapComplete erstellte Änderungen", - "fr": "Changements faits avec MapComplete", - "nl": "Wijzigingen gemaakt met MapComplete", - "cs": "Změny provedené pomocí MapComplete", - "es": "Cambios realizados con MapComplete", - "pl": "Zmiany wprowadzone za pomocą MapComplete" - }, - "description": { - "en": "This maps shows all the changes made with MapComplete", - "ca": "Aquest mapa mostra tots els canvis fets amb MapComplete", - "de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen", - "fr": "Cette carte montre tous les changements faits avec MapComplete", - "nl": "Deze kaart toont alle wijzigingen die met MapComplete gemaakt werden", - "pl": "Ta mapa pokazuje wszystkie zmiany wprowadzone za pomocą MapComplete", - "cs": "Tato mapa zobrazuje všechny změny provedené pomocí MapComplete", - "es": "Este mapa muestra todos los cambios realizados con MapComplete" - }, - "shortDescription": { - "en": "Show changes made with MapComplete", - "ca": "Mostra els canvis fets amb MapComplete", - "de": "Mit MapComplete erstellte Änderungen anzeigen", - "nl": "Toon wijzigingen gemaakt met MapComplete", - "cs": "Zobrazení změn provedených pomocí nástroje MapComplete", - "es": "Mostrar cambios realizados con MapComplete", - "pl": "Pokaż zmiany wprowadzone za pomocą MapComplete" - }, - "icon": "./assets/svg/logo.svg", - "hideFromOverview": true, - "layers": [ - { - "id": "mapcomplete-changes", - "name": { - "en": "Changeset centers", - "ca": "Centre del conjunt de canvis", - "de": "Zentrum der Änderungssätze", - "nl": "Centerpunt van changeset", - "es": "Centro del conjunto de cambios", - "pl": "Centra zmian", - "cs": "Centrum změn" - }, - "minzoom": 0, - "source": { - "osmTags": "editor~*", - "geoJson": "https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/mapcomplete-changes/tile_{z}_{x}_{y}.geojson", - "geoJsonZoomLevel": 8, - "maxCacheAge": 0 - }, - "title": { - "render": { - "en": "Changeset for {theme}", - "ca": "Conjunt de canvis per a {theme}", - "de": "Änderungssatz für {theme}", - "fr": "Groupe de modifications pour {theme}", - "es": "Conjunto de cambios para {theme}", - "pl": "Zestaw zmian dla {theme}", - "cs": "Změna pro {theme}" - } - }, - "description": { - "en": "Show all MapComplete changes", - "ca": "Mostra tots els canvis de MapComplete", - "de": "Alle MapComplete-Änderungen anzeigen", - "pl": "Wyświetl wszystkie zmiany MapComplete", - "nl": "Toon alle MapComplete wijzigingen", - "cs": "Zobrazit všechny změny MapComplete", - "es": "Mostrar todos los cambios de MapComplete" - }, - "tagRenderings": [ - { - "id": "show_changeset_id", - "render": { - "en": "Changeset {id}", - "ca": "Conjunt de canvi {id}", - "de": "Änderungssatz {id}", - "fr": "Groupe de modifications {id}", - "es": "Conjunto de cambios {id}", - "pl": "Zestaw zmian {id}", - "cs": "Změny {id}" - } - }, - { - "id": "contributor", - "question": { - "en": "Which contributor made this change?", - "ca": "Quin col·laborador va fer aquest canvi?", - "de": "Wer hat diese Änderung vorgenommen?", - "fr": "Quel contributeur a fait cette modification ?", - "nl": "Welke bijdrager maakte deze wijziging?", - "cs": "Který přispěvatel tuto změnu provedl?", - "es": "¿Qué contribuidor hizo este cambio?", - "pl": "Który współautor dokonał tej zmiany?" - }, - "freeform": { - "key": "user" - }, - "render": { - "en": "Change made by {user}", - "ca": "Canvi fet per {user}", - "de": "Änderung von {user}", - "fr": "Modification faite par {user}", - "nl": "Wijziging gemaakt door {user}", - "cs": "Změna provedená {user}", - "es": "Cambio realizado por {user}", - "pl": "Zmiana dokonana przez {user}" - } - }, - { - "id": "theme-id", - "question": { - "en": "What theme was used to make this change?", - "ca": "Quin tema es va utilitzar per fer aquest canvi?", - "de": "Welches Thema wurde für diese Änderung verwendet?", - "fr": "Quel thème a été utilisé pour faire cette modification ?", - "cs": "Jaké téma bylo použito k provedení této změny?", - "es": "¿Qué tema se utilizó para realizar este cambio?", - "pl": "Jakiego tematu użyto do wprowadzenia tej zmiany?" - }, - "freeform": { - "key": "theme" - }, - "render": { - "en": "Change with theme {theme}", - "ca": "Canvi amb el tema {theme}", - "de": "Geändert mit Thema {theme}", - "fr": "Modifié avec le thème {theme}", - "cs": "Změna s motivem {theme}", - "es": "Cambio con tema {theme}", - "pl": "Zmiana za pomocą motywu {theme}" - } - }, - { - "id": "locale", - "freeform": { - "key": "locale" - }, - "question": { - "en": "What locale (language) was this change made in?", - "ca": "Amb quina configuració regional (idioma) s'ha fet aquest canvi?", - "de": "In welcher Benutzersprache wurde diese Änderung vorgenommen?", - "fr": "En quelle langue est-ce que ce changement a été fait ?", - "nl": "In welke locale (taal) werd deze wijziging gemaakt?", - "cs": "V jakém národním prostředí (jazyce) byla tato změna provedena?", - "es": "¿En qué configuración regional (idioma) se realizó este cambio?", - "pl": "W jakim języku wprowadzono tę zmianę?" - }, - "render": { - "en": "User locale is {locale}", - "ca": "La configuració regional de l'usuari és {locale}", - "de": "Benutzersprache {locale}", - "nl": "De gebruikerstaal is {locale}", - "cs": "Uživatelské prostředí je {locale}", - "es": "La configuración regional del usuario es {locale}", - "pl": "Ustawienia regionalne użytkownika to {locale}" - } - }, - { - "id": "host", - "render": { - "en": "Change made with {host}", - "ca": "Canviat fet amb {host}", - "de": "Geändert über {host}", - "fr": "Modification faite avec {host}", - "nl": "Wijziging gemaakt met {host}", - "cs": "Změna provedená pomocí {host}", - "es": "Cambio realizado con {host}", - "pl": "Zmiana dokonana w {host}" - }, - "question": { - "en": "What host (website) was this change made with?", - "ca": "Amb quin amfitrió (lloc web) es va fer aquest canvi?", - "de": "Über welchen Host (Webseite) wurde diese Änderung vorgenommen?", - "nl": "Met welke host (website) werd deze wijziging gemaakt?", - "cs": "U jakého hostitele (webové stránky) byla tato změna provedena?", - "es": "¿Con qué host (página web) se realizó este cambio?", - "pl": "Na jakim hoście (stronie internetowej) dokonano tej zmiany?" - }, - "freeform": { - "key": "host" - }, - "mappings": [ - { - "if": "host=www.waldbrand-app.de", - "then": "waldbrand-app.de", - "hideInAnswer": true - }, - { - "if": "host~https://pietervdvn.github.io/mc/develop/.*", - "then": "Develop", - "hideInAnswer": true - } - ] - }, - { - "id": "version", - "question": { - "en": "What version of MapComplete was used to make this change?", - "ca": "Quina versió de MapComplete es va utilitzar per fer aquest canvi?", - "de": "Mit welcher Version von MapComplete wurde diese Änderung gemacht?", - "pl": "Która wersja MapComplete została wykorzystana, aby zrobić tę zmianę?", - "fr": "Quelle version de MapComplete a été utilisée pour faire cette modification ?", - "cs": "Jaká verze aplikace MapComplete byla použita k provedení této změny?", - "es": "¿Qué versión de MapComplete se usó para realizar este cambio?" - }, - "render": { - "en": "Made with {editor}", - "ca": "Fet amb {editor}", - "de": "Erstellt mit {editor}", - "pl": "Zrobione za pomocą {editor}", - "fr": "Fait avec {editor}", - "cs": "Vyrobeno pomocí {editor}", - "es": "Realizado con {editor}" - }, - "freeform": { - "key": "editor" - } - } - ], - "pointRendering": [ - { - "location": [ - "point", - "centroid" - ], - "iconSize": "30,30", - "anchor": "center", - "marker": [ - { - "icon": { - "render": "teardrop:#00cc00", - "mappings": [ - { - "if": "theme=advertising", - "then": "./assets/themes/advertising/icon.svg" - }, - { - "if": "theme=aed", - "then": "./assets/themes/aed/aed.svg" - }, - { - "if": "theme=artwork", - "then": "./assets/themes/artwork/artwork.svg" - }, - { - "if": "theme=atm", - "then": "./assets/themes/atm/logo.svg" - }, - { - "if": "theme=bag", - "then": "./assets/themes/bag/logo.svg" - }, - { - "if": "theme=benches", - "then": "./assets/themes/benches/bench_poi.svg" - }, - { - "if": "theme=bicycle_rental", - "then": "./assets/themes/bicycle_rental/logo.svg" - }, - { - "if": "theme=bicyclelib", - "then": "./assets/themes/bicyclelib/logo.svg" - }, - { - "if": "theme=binoculars", - "then": "./assets/layers/binocular/telescope.svg" - }, - { - "if": "theme=blind_osm", - "then": "./assets/themes/blind_osm/Blindicon.svg" - }, - { - "if": "theme=bookcases", - "then": "./assets/themes/bookcases/bookcase.svg" - }, - { - "if": "theme=buurtnatuur", - "then": "./assets/themes/buurtnatuur/logo.svg" - }, - { - "if": "theme=cafes_and_pubs", - "then": "./assets/layers/cafe_pub/pub.svg" - }, - { - "if": "theme=campersite", - "then": "./assets/themes/campersite/caravan.svg" - }, - { - "if": "theme=charging_stations", - "then": "./assets/themes/charging_stations/logo.svg" - }, - { - "if": "theme=climbing", - "then": "./assets/themes/climbing/climbing_icon.svg" - }, - { - "if": "theme=clock", - "then": "./assets/layers/clock/clock.svg" - }, - { - "if": "theme=cycle_highways", - "then": "./assets/themes/cycle_highways/fietssnelwegen-logo.svg" - }, - { - "if": "theme=cycle_infra", - "then": "./assets/themes/cycle_infra/cycle-infra.svg" - }, - { - "if": "theme=cyclenodes", - "then": "./assets/themes/cyclenodes/logo.svg" - }, - { - "if": "theme=cyclestreets", - "then": "./assets/themes/cyclestreets/logo.svg" - }, - { - "if": "theme=cyclofix", - "then": "./assets/themes/cyclofix/logo.svg" - }, - { - "if": "theme=drinking_water", - "then": "./assets/themes/drinking_water/logo.svg" - }, - { - "if": "theme=education", - "then": "./assets/layers/school/college.svg" - }, - { - "if": "theme=elongated_coin", - "then": "./assets/themes/elongated_coin/penny.svg" - }, - { - "if": "theme=etymology", - "then": "./assets/layers/etymology/logo.svg" - }, - { - "if": "theme=facadegardens", - "then": "./assets/themes/facadegardens/geveltuin.svg" - }, - { - "if": "theme=food", - "then": "./assets/layers/food/restaurant.svg" - }, - { - "if": "theme=fritures", - "then": "./assets/themes/fritures/logo.svg" - }, - { - "if": "theme=fruit_trees", - "then": "./assets/themes/fruit_trees/fruit_tree.svg" - }, - { - "if": "theme=ghostbikes", - "then": "./assets/themes/ghostbikes/logo.svg" - }, - { - "if": "theme=grb", - "then": "./assets/themes/grb/logo.svg" - }, - { - "if": "theme=grb_fixme", - "then": "./assets/svg/bug.svg" - }, - { - "if": "theme=hackerspaces", - "then": "./assets/themes/hackerspaces/glider.svg" - }, - { - "if": "theme=hailhydrant", - "then": "./assets/themes/hailhydrant/logo.svg" - }, - { - "if": "theme=healthcare", - "then": "./assets/layers/doctors/doctors.svg" - }, - { - "if": "theme=hotels", - "then": "./assets/layers/hotel/hotel.svg" - }, - { - "if": "theme=indoors", - "then": "./assets/layers/entrance/entrance.svg" - }, - { - "if": "theme=kerbs_and_crossings", - "then": "./assets/layers/kerbs/KerbIcon.svg" - }, - { - "if": "theme=maproulette", - "then": "./assets/layers/maproulette/logomark.svg" - }, - { - "if": "theme=maps", - "then": "./assets/themes/maps/logo.svg" - }, - { - "if": "theme=maxspeed", - "then": "./assets/themes/maxspeed/maxspeed_logo.svg" - }, - { - "if": "theme=nature", - "then": "./assets/themes/nature/logo.svg" - }, - { - "if": "theme=notes", - "then": "./assets/themes/notes/logo.svg" - }, - { - "if": "theme=observation_towers", - "then": "./assets/layers/observation_tower/Tower_observation.svg" - }, - { - "if": "theme=onwheels", - "then": "./assets/themes/onwheels/crest.svg" - }, - { - "if": "theme=openwindpowermap", - "then": "./assets/themes/openwindpowermap/logo.svg" - }, - { - "if": "theme=osm_community_index", - "then": "./assets/themes/osm_community_index/osm.svg" - }, - { - "if": "theme=parkings", - "then": "./assets/themes/parkings/parkings.svg" - }, - { - "if": "theme=personal", - "then": "./assets/svg/addSmall.svg" - }, - { - "if": "theme=pets", - "then": "./assets/layers/dogpark/dog-park.svg" - }, - { - "if": "theme=play_forests", - "then": "./assets/layers/play_forest/icon.svg" - }, - { - "if": "theme=playgrounds", - "then": "./assets/themes/playgrounds/playground.svg" - }, - { - "if": "theme=postal_codes", - "then": "./assets/themes/postal_codes/townhall.svg" - }, - { - "if": "theme=postboxes", - "then": "./assets/layers/postboxes/postbox.svg" - }, - { - "if": "theme=rainbow_crossings", - "then": "./assets/themes/rainbow_crossings/logo.svg" - }, - { - "if": "theme=shops", - "then": "./assets/themes/shops/shop.svg" - }, - { - "if": "theme=sidewalks", - "then": "./assets/svg/bug.svg" - }, - { - "if": "theme=speelplekken", - "then": "./assets/themes/speelplekken/logo.svg" - }, - { - "if": "theme=sport_pitches", - "then": "./assets/layers/sport_pitch/table_tennis.svg" - }, - { - "if": "theme=sports", - "then": "./assets/themes/sports/sport.svg" - }, - { - "if": "theme=stations", - "then": "./assets/themes/stations/rail-light.svg" - }, - { - "if": "theme=street_lighting", - "then": "./assets/layers/street_lamps/street_lamp.svg" - }, - { - "if": "theme=street_lighting_assen", - "then": "./assets/layers/street_lamps/street_lamp.svg" - }, - { - "if": "theme=surveillance", - "then": "./assets/themes/surveillance/logo.svg" - }, - { - "if": "theme=toerisme_vlaanderen", - "then": "./assets/themes/toerisme_vlaanderen/logo.svg" - }, - { - "if": "theme=toilets", - "then": "./assets/themes/toilets/toilets.svg" - }, - { - "if": "theme=transit", - "then": "./assets/layers/transit_stops/bus_stop.svg" - }, - { - "if": "theme=trees", - "then": "./assets/themes/trees/logo.svg" - }, - { - "if": "theme=uk_addresses", - "then": "./assets/themes/uk_addresses/housenumber_unknown.svg" - }, - { - "if": "theme=vending_machine", - "then": "./assets/layers/vending_machine/vending_machine.svg" - }, - { - "if": "theme=walls_and_buildings", - "then": "./assets/layers/walls_and_buildings/walls_and_buildings.png" - }, - { - "if": "theme=waste", - "then": "./assets/layers/recycling/recycling-14.svg" - }, - { - "if": "theme=waste_assen", - "then": "./assets/layers/recycling/recycling-14.svg" - }, - { - "if": "theme=waste_basket", - "then": "./assets/themes/waste_basket/waste_basket.svg" - }, - { - "if": "theme=width", - "then": "./assets/themes/width/icon.svg" - } - ] - } - } - ] - } - ], - "filter": [ - { - "id": "theme-search", - "options": [ - { - "osmTags": "theme~i~.*{search}.*", - "fields": [ - { - "name": "search" - } - ], - "question": { - "en": "Theme name contains {search}", - "ca": "El nom del tema conté {search}", - "de": "Themenname enthält {search}", - "nl": "Themenaam bevat {search}", - "cs": "Název motivu obsahuje {search}", - "es": "El nombre del tema contiene {search}", - "pl": "Nazwa tematu zawiera {search}" - } - } - ] - }, - { - "id": "created_by", - "options": [ - { - "osmTags": "user~i~.*{search}.*", - "fields": [ - { - "name": "search" - } - ], - "question": { - "en": "Made by contributor {search}", - "ca": "Fet pel col·laborador {search}", - "de": "Erstellt von {search}", - "nl": "Gemaakt door bijdrager {search}", - "cs": "Vytvořil přispěvatel {search}", - "es": "Hecho por el colaborador {search}", - "pl": "Wykonane przez współautora {search}" - } - } - ] - }, - { - "id": "not_created_by", - "options": [ - { - "osmTags": "user!~i~.*{search}.*", - "fields": [ - { - "name": "search" - } - ], - "question": { - "en": "Not made by contributor {search}", - "ca": "No fet pel col·laborador {search}", - "de": "Nicht erstellt von {search}", - "nl": "Niet gemaakt door bijdrager {search}", - "cs": "Není vytvořeno přispěvatelem {search}", - "es": "No hecho por el colaborador {search}", - "pl": "Nie wykonane przez współautora {search}" - } - } - ] - }, - { - "id": "made_before", - "options": [ - { - "osmTags": "date<{search}", - "fields": [ - { - "name": "search", - "type": "date" - } - ], - "question": { - "en": "Made before {search}", - "ca": "Fet abans de {search}", - "de": "Erstellt vor {search}", - "pl": "Stworzone przed {search}", - "nl": "Gemaakt voor {search}", - "cs": "Vytvořeno před {search}", - "es": "Hecho antes de {search}" - } - } - ] - }, - { - "id": "made_after", - "options": [ - { - "osmTags": "date>{search}", - "fields": [ - { - "name": "search", - "type": "date" - } - ], - "question": { - "en": "Made after {search}", - "ca": "Fet després de {search}", - "de": "Erstellt nach {search}", - "pl": "Stworzone po {search}", - "nl": "Gemaakt na {search}", - "cs": "Vytvořeno po {search}", - "es": "Hecho después de {search}" - } - } - ] - }, - { - "id": "locale-filter", - "options": [ - { - "osmTags": "locale~i~.*{search}.*", - "fields": [ - { - "name": "search" - } - ], - "question": { - "en": "User language (iso-code) {search}", - "ca": "Idioma de l'usuari (codi iso) {search}", - "de": "Benutzersprache (ISO-Code) {search}", - "fr": "Langage utilisateur (code-ISO) {search}", - "nl": "De taal van de bijdrager is {search}", - "pl": "Język użytkownika (kod iso) {search}", - "cs": "Jazyk uživatele (iso-kód) {search}", - "es": "Use idioma (ISO-code) {search}" - } - } - ] - }, - { - "id": "host_name", - "options": [ - { - "osmTags": "host~i~.*{search}.*", - "fields": [ - { - "name": "search" - } - ], - "question": { - "en": "Made with host {search}", - "ca": "Fet amb l'amfitrió {search}", - "de": "Erstellt mit Host {search}", - "nl": "Gemaakt met host {search}", - "cs": "Vytvořeno pomocí hostitele {search}", - "es": "Hecho con el host {search}", - "pl": "Wykonane z hostem {search}" - } - } - ] - }, - { - "id": "added-image", - "options": [ - { - "osmTags": "add-image>0", - "question": { - "en": "Changeset added at least one image", - "ca": "El conjunt de canvis ha afegit almenys una imatge", - "de": "Im Änderungssatz wurde mindestens ein Bild hinzugefügt", - "fr": "Le groupe de modifications a ajouté au moins une image", - "nl": "Changeset bevat minstens één afbeelding", - "pl": "Zestaw zmian dodał co najmniej jedno zdjęcie", - "cs": "Sada změn přidala alespoň jeden obrázek", - "es": "El conjunto de cambios ha añadido al menos una imagen" - } - } - ] - } - ] - }, - { - "builtin": "current_view", - "override": { - "title": "Statistics on changesets in the current view", - "tagRenderings+": [ - { - "id": "link_to_more", - "render": { - "en": "More statistics can be found here", - "ca": "Es pot trobar més estadística aquí", - "de": "Mehr Statistiken gibt es hier", - "fr": "D'autres statistiques sont disponibles ici", - "cs": "Další statistiky najdete here", - "es": "Puede encontrar más estadísticas aquí", - "pl": "Więcej statystyk można znaleźć tutaj" - } - }, - { - "id": "hist_themes", - "render": "{histogram(_embedded_cs:themes, Themename, Number of changesets)}" - }, - { - "id": "hist_users", - "render": "{histogram(_embedded_cs:users, Contributor, Number of changesets)}" - } - ], - "calculatedTags": [ - "_embedded_cs=overlapWith(feat)('mapcomplete-changes').map(f => f.feat.properties)", - "_embedded_cs:themes=feat.get('_embedded_cs').map(cs => cs.theme)", - "_embedded_cs:users=feat.get('_embedded_cs').map(cs => cs['_last_edit:contributor'])" - ], - "+mapRendering": [ - { - "location": [ - "point" - ], - "icon": "statistics:black", - "iconSize": "30,30", - "anchor": "center" - } - ] - } - } - ], - "widenFactor": 0.05, - "clustering": false -} diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 4a0ed1e5b0..a32ec3c3d5 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -59,9 +59,13 @@ "builtin": "cafe_pub", "override": { "minzoom": 15, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/onwheels/cafe.svg", + "=marker": [ + { + "icon": "./assets/themes/onwheels/cafe.svg" + } + ], "iconSize": "40,40", "anchor": "bottom", "label": null @@ -73,9 +77,13 @@ "builtin": "entrance", "override": { "minzoom": 18, - "mapRendering": [ + "pointRendering": [ { - "icon": "circle:white;./assets/themes/onwheels/entrance.svg" + "=marker": [ + { + "icon": "circle:white;./assets/themes/onwheels/entrance.svg" + } + ] } ], "syncSelection": "theme-only", @@ -120,9 +128,13 @@ "builtin": "food", "override": { "minzoom": 15, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/onwheels/restaurant.svg", + "marker": [ + { + "icon": "./assets/themes/onwheels/restaurant.svg" + } + ], "iconSize": "40,40", "anchor": "bottom", "label": null @@ -135,11 +147,13 @@ "override": { "minzoom": 18, "syncSelection": "theme-only", - "mapRendering": [ + "pointRendering": [ { - "icon": { - "render": "./assets/themes/onwheels/cone.svg" - } + "=marker": [ + { + "icon": "./assets/themes/onwheels/cone.svg" + } + ] } ], "=filter": [ @@ -210,9 +224,18 @@ "builtin": "parking", "override": { "minzoom": 15, - "mapRendering": [ + "lineRendering": [ { - "icon": "./assets/themes/onwheels/parking.svg", + "color": "#225f92" + } + ], + "pointRendering": [ + { + "marker": [ + { + "icon": "./assets/themes/onwheels/parking.svg" + } + ], "anchor": "bottom", "=iconSize": { "render": "20,20", @@ -228,9 +251,6 @@ } ] } - }, - { - "color": "#225f92" } ] } @@ -241,11 +261,13 @@ "source": { "osmTags": "parking_space=disabled" }, - "mapRendering": [ + "pointRendering": [ { - "icon": { - "mappings": null - }, + "marker": [ + { + "mappings": null + } + ], "iconSize": "40,40", "anchor": "center", "iconBadges": [ @@ -276,13 +298,19 @@ "builtin": "shops", "override": { "minzoom": 15, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/onwheels/shop.svg", + "=marker": [ + { + "icon": "./assets/themes/onwheels/shop.svg" + } + ], "iconSize": "40,40", "anchor": "bottom", "label": null - }, + } + ], + "lineRendering": [ { "color": "#ea4a94" } @@ -294,9 +322,13 @@ "override": { "minzoom": 18, "syncSelection": "theme-only", - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/onwheels/toilet.svg", + "=marker": [ + { + "icon": "./assets/themes/onwheels/toilet.svg" + } + ], "iconSize": "40,40", "anchor": "bottom" } @@ -308,9 +340,13 @@ "override": { "minzoom": 15, "shownByDefault": false, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/onwheels/pharmacy.svg", + "=marker": [ + { + "icon": "./assets/themes/onwheels/pharmacy.svg" + } + ], "iconSize": "40,40", "anchor": "bottom", "label": null @@ -323,9 +359,13 @@ "shownByDefault": false, "override": { "minzoom": 15, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/onwheels/doctor.svg", + "=marker": [ + { + "icon": "./assets/themes/onwheels/doctor.svg" + } + ], "iconSize": "40,40", "anchor": "bottom" } @@ -337,12 +377,18 @@ "override": { "minzoom": 15, "shownByDefault": false, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/onwheels/hospital.svg", + "=marker": [ + { + "icon": "./assets/themes/onwheels/hospital.svg" + } + ], "iconSize": "40,40", "anchor": "bottom" - }, + } + ], + "lineRendering": [ { "color": "#dd463b" } @@ -362,9 +408,13 @@ "override": { "minzoom": 18, "syncSelection": "theme-only", - "mapRendering": [ + "pointRendering": [ { - "icon": "circle:white;./assets/themes/onwheels/elevator.svg", + "=marker": [ + { + "icon": "circle:white;./assets/themes/onwheels/elevator.svg" + } + ], "iconSize": "40,40", "anchor": "bottom" } @@ -376,9 +426,13 @@ "override": { "minzoom": 15, "shownByDefault": false, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/onwheels/hotel.svg", + "=marker": [ + { + "icon": "./assets/themes/onwheels/hotel.svg" + } + ], "iconSize": "40,40", "anchor": "bottom" } @@ -389,9 +443,13 @@ "builtin": "governments", "override": { "minzoom": 15, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/onwheels/government.svg", + "=marker": [ + { + "icon": "./assets/themes/onwheels/government.svg" + } + ], "iconSize": "40,40", "anchor": "bottom" } @@ -401,13 +459,17 @@ { "builtin": "current_view", "override": { - "+mapRendering": [ + "+pointRendering": [ { "location": [ "point", "centroid" ], - "icon": "statistics" + "marker": [ + { + "icon": "statistics" + } + ] } ], "=title": { diff --git a/assets/themes/pets/pets.json b/assets/themes/pets/pets.json index 691a7e4793..d42879302d 100644 --- a/assets/themes/pets/pets.json +++ b/assets/themes/pets/pets.json @@ -49,13 +49,17 @@ "zh_Hant": "寵物友善餐廳", "pl": "Restauracje przyjazne psom" }, - "mapRendering": [ + "pointRendering": [ { "location": [ "point", "centroid" ], - "icon": "./assets/themes/pets/dog-food.svg", + "marker": [ + { + "icon": "./assets/themes/pets/dog-food.svg" + } + ], "iconSize": "30,30" } ], @@ -124,33 +128,37 @@ } ] }, - "mapRendering": [ + "pointRendering": [ { "location": [ "point", "centroid" ], - "icon": { - "render": "./assets/themes/pets/dogshop.svg", - "+mappings": [ - { - "if": { - "and": [ - "shop=pet" - ] - }, - "then": "./assets/themes/pets/petshop.svg" + "marker": [{}, + { + "icon": { + "render": "./assets/themes/pets/dogshop.svg", + "+mappings": [ + { + "if": { + "and": [ + "shop=pet" + ] + }, + "then": "./assets/themes/pets/petshop.svg" + } + ] } - ] - }, + } + ], "iconSize": "30,30" - }, - { - "#": "Rendering of a line", - "color": "#ff0", - "width": 5 } ], + "=lineRendering":[ { + "#": "Rendering of a line", + "color": "#ff0", + "width": 5 + }], "=presets": [], "source": { "=osmTags": { diff --git a/assets/themes/sports/sports.json b/assets/themes/sports/sports.json index 2daf563047..abd74caf36 100644 --- a/assets/themes/sports/sports.json +++ b/assets/themes/sports/sports.json @@ -80,12 +80,17 @@ } ], "minzoom": 12, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/layers/id_presets/maki-shop.svg" + "marker": [ + {}, + { + "icon": "./assets/layers/id_presets/maki-shop.svg" + } + ] } ] } } ] -} \ No newline at end of file +} diff --git a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json index e118e86fd2..f94ea61d9d 100644 --- a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json +++ b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json @@ -50,13 +50,17 @@ } }, "filter": null, - "=mapRendering": [ + "=pointRendering": [ { "location": [ "point", "centroid" ], - "icon": "./assets/themes/toerisme_vlaanderen/charging_station_ebike.svg" + "marker": [ + { + "icon": "./assets/themes/toerisme_vlaanderen/charging_station_ebike.svg" + } + ] } ], "=presets": [ @@ -89,8 +93,9 @@ "builtin": "toilet", "override": { "minzoom": 14, - "mapRendering": [ + "pointRendering": [ { + "=marker":[{ "icon": { "render": "./assets/themes/toerisme_vlaanderen/toilets.svg", "=mappings": [ @@ -101,16 +106,20 @@ ] } } - ] + ]}] } }, { "builtin": "bench", "override": { "minzoom": 14, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/toerisme_vlaanderen/bench.svg" + "=marker": [ + { + "icon": "./assets/themes/toerisme_vlaanderen/bench.svg" + } + ] } ] } @@ -119,9 +128,13 @@ "builtin": "picnic_table", "override": { "minzoom": 14, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/toerisme_vlaanderen/picnic_table.svg" + "=marker": [ + { + "icon": "./assets/themes/toerisme_vlaanderen/picnic_table.svg" + } + ] } ] } @@ -130,9 +143,13 @@ "builtin": "observation_tower", "override": { "minzoom": 14, - "mapRendering": [ + "pointRendering": [ { - "icon": "./assets/themes/toerisme_vlaanderen/observation_tower.svg" + "=marker": [ + { + "icon": "./assets/themes/toerisme_vlaanderen/observation_tower.svg" + } + ] } ] } @@ -141,35 +158,39 @@ "builtin": "bike_repair_station", "override": { "minzoom": 14, - "=mapRendering": [ + "=pointRendering": [ { "location": [ "point", "centroid" ], - "icon": { - "render": "./assets/themes/toerisme_vlaanderen/cycle_pump.svg", - "mappings": [ - { - "if": { - "and": [ - "service:bicycle:tools=yes", - "service:bicycle:pump=yes" - ] - }, - "then": "./assets/themes/toerisme_vlaanderen/cycle_repair_and_pump.svg" - }, - { - "if": { - "and": [ - "service:bicycle:tools=yes", - "service:bicycle:pump=no" - ] - }, - "then": "./assets/themes/toerisme_vlaanderen/cycle_repair.svg" + "=marker": [ + { + "icon": { + "render": "./assets/themes/toerisme_vlaanderen/cycle_pump.svg", + "mappings": [ + { + "if": { + "and": [ + "service:bicycle:tools=yes", + "service:bicycle:pump=yes" + ] + }, + "then": "./assets/themes/toerisme_vlaanderen/cycle_repair_and_pump.svg" + }, + { + "if": { + "and": [ + "service:bicycle:tools=yes", + "service:bicycle:pump=no" + ] + }, + "then": "./assets/themes/toerisme_vlaanderen/cycle_repair.svg" + } + ] } - ] - }, + } + ], "iconBadges": [ { "if": "service:bicycle:pump:operational_status=broken", @@ -225,9 +246,12 @@ "builtin": "playground", "override": { "minzoom": 14, - "mapRendering": [ + "pointRendering": [ { + "=marker":[{ + "icon": "./assets/themes/toerisme_vlaanderen/playground.svg" + }] } ] }, @@ -241,4 +265,4 @@ "enableShareScreen": false, "enableMoreQuests": false, "widenFactor": 1.5 -} \ No newline at end of file +} diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts index dc7779fd6f..438e0f1e0d 100644 --- a/scripts/generateLayerOverview.ts +++ b/scripts/generateLayerOverview.ts @@ -395,10 +395,11 @@ class LayerOverviewUtils extends Script { JSON.stringify({ layers: Array.from(sharedLayers.values()) }) ) + const mcChangesPath = "./assets/themes/mapcomplete-changes/mapcomplete-changes.json" if ( recompiledThemes.length > 0 && !(recompiledThemes.length === 1 && recompiledThemes[0] === "mapcomplete-changes") && - args.indexOf("--generate-change-map") >= 0 + (args.indexOf("--generate-change-map") >= 0 || !existsSync(mcChangesPath)) ) { // mapcomplete-changes shows an icon for each corresponding mapcomplete-theme const iconsPerTheme = Array.from(sharedThemes.values()).map((th) => ({ @@ -415,10 +416,7 @@ class LayerOverviewUtils extends Script { ) const rendering = protolayer.pointRendering[0] rendering.marker[0].icon["mappings"] = iconsPerTheme - writeFileSync( - "./assets/themes/mapcomplete-changes/mapcomplete-changes.json", - JSON.stringify(proto, null, " ") - ) + writeFileSync(mcChangesPath, JSON.stringify(proto, null, " ")) } this.checkAllSvgs() diff --git a/src/Models/ThemeConfig/Conversion/Validation.ts b/src/Models/ThemeConfig/Conversion/Validation.ts index a46dfc4125..24191d093c 100644 --- a/src/Models/ThemeConfig/Conversion/Validation.ts +++ b/src/Models/ThemeConfig/Conversion/Validation.ts @@ -1061,10 +1061,20 @@ export class PrevalidateLayer extends DesugaringStep { "'" ) } + if (json["pointRenderings"]?.length > 0) { + context + .enter("pointRenderings") + .err("Detected a 'pointRenderingS', it is written singular") + } if (!(json.pointRendering?.length > 0)) { // context.enter("pointRendering").err("There are no pointRenderings at all") } + + if (json["mapRendering"]) { + context.enter("mapRendering").err("This layer has a legacy 'mapRendering'") + } + if (json.presets?.length > 0) { if (!(json.pointRendering?.length > 0)) { context.enter("presets").warn("A preset is defined, but there is no pointRendering") diff --git a/src/Models/ThemeConfig/PointRenderingConfig.ts b/src/Models/ThemeConfig/PointRenderingConfig.ts index b43bbe5afc..ef237eb614 100644 --- a/src/Models/ThemeConfig/PointRenderingConfig.ts +++ b/src/Models/ThemeConfig/PointRenderingConfig.ts @@ -85,6 +85,12 @@ export default class PointRenderingConfig extends WithContextLoader { throw `At ${context}: A point rendering should define at least an marker or a label` } + if (json["markers"]) { + throw `At ${context}.markers: detected a field 'markerS' in pointRendering. It is written as a singular case` + } + if (json.marker && !Array.isArray(json.marker)) { + throw `At ${context}.marker: the marker in a pointRendering should be an array` + } if (this.location.size == 0) { throw ( "A pointRendering should have at least one 'location' to defined where it should be rendered. (At " +