diff --git a/buildings-entrances.json b/buildings-entrances.json new file mode 100644 index 0000000..513cef0 --- /dev/null +++ b/buildings-entrances.json @@ -0,0 +1,27 @@ +{ + "type": "overpass", + "name": { + "de": "Eingänge", + "en": "Entrances", + "fr": "Entrées", + "pt-br": "Acessos" + }, + "query": { + "16": [ + "(", + " node[entrance];", + " node[building=entrance];", + ")" + ] + }, + "feature": { + "description": [ + "{% if tags.entrance == 'yes' or (not tags.entrance and tags.building == 'entrance') %}", + "{{ keyTrans('entrance') }}", + "{% else %}", + "{{ tagTrans('entrance', tags.entrance) }}", + "{% endif %}" + ], + "styles": "" + } +} diff --git a/buildings-figure-ground.json b/buildings-figure-ground.json new file mode 100644 index 0000000..72a3ae6 --- /dev/null +++ b/buildings-figure-ground.json @@ -0,0 +1,40 @@ +{ + "type": "overpass", + "name": { + "de": "Schwarzplan", + "en": "Figure-ground diagram", + "fr": "Empreintes", + "pt-br": "Cheios e vazios" + }, + "query": { + "16": [ + "(", + " way[building];", + " relation[building];", + ")" + ] + }, + "feature": { + "markerSymbol": "", + "listMarkerSymbol": "{{ markerPolygon({fillColor: \"#000000\", fillOpacity: 1 })|raw }}", + "priority": [ + "{% set p = 100 %}", + "{% if tags.name %}{% set p = p - 10 %}{% endif %}", + "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}", + "{% if tags.historic %}{% set p = p - 1 %}{% endif %}", + "{% if tags.culture %}{% set p = p - 1 %}{% endif %}", + "{% if tags.highway %}{% set p = p - 1 %}{% endif %}", + "{% if tags.railway %}{% set p = p - 1 %}{% endif %}", + "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}", + "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}", + "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}", + "{{ p }}" + ], + "style": { + "width": "0", + "color": "#000000", + "fillColor": "#000000", + "fillOpacity": "1" + } + } +} diff --git a/buildings-height.json b/buildings-height.json new file mode 100644 index 0000000..6e3851a --- /dev/null +++ b/buildings-height.json @@ -0,0 +1,106 @@ +{ + "type": "overpass", + "name": { + "de": "Gebäudehöhen", + "en": "Building height", + "fr": "Hauteur", + "pt-br": "Altura" + }, + "query": { + "16": [ + "(", + " way[building];", + " relation[building];", + ")" + ] + }, + "feature": { + "pre": [ + "{% if tags.height is defined %}", + "{% set approxHeight = tags.height %}", + "{% elseif attribute(tags, 'building:levels') is defined %}", + "{% set approxHeight = attribute(tags, 'building:levels') * 3.5 %}", + "{% endif %}", + "", + "{% if approxHeight <= 50 %}", + "{% set color = colorInterpolate(['green', 'red'], approxHeight / 50) %}", + "{% elseif approxHeight %}", + "{% set color = colorInterpolate(['red', 'yellow'], (approxHeight - 50) / 250) %} ", + "{% else %}", + "{% set color = '#7f7f7f' %}", + "{% endif %}" + ], + "description": [ + "{% if tags.height is defined %}", + "{{ tags.height }}m", + "{% endif %}", + "", + "{% if attribute(tags, 'building:levels') is defined %}", + "{{ attribute(tags, 'building:levels') }} {{ keyTrans('building:levels') }}", + "{% endif %}" + ], + "markerSymbol": null, + "listMarkerSymbol": "{{ markerPolygon({\"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}", + "priority": "{{ (approxHeight|default(0)) * -1 }}", + "style": { + "width": "1", + "color": "#000000", + "fillColor": "{{ color }}", + "fillOpacity": "1" + } + }, + "info": [ + "
", + "{{ tagTrans('height') }}", + "", + " ", + " ", + " ", + " ", + "{% for i in range(0, 50, 10) %}", + " ", + " ", + " ", + " ", + "{% endfor %}", + "{% for i in range(100, 250, 50) %}", + " ", + " ", + " ", + " ", + "{% endfor %}", + " ", + " ", + " ", + " ", + "
{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}{{ trans('unknown') }}
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}{{ i }}m
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}{{ i }}m
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": \"300\" }))|raw }}≥300m
", + "
", + "", + "
", + "{{ tagTrans('building:levels') }}", + "", + " ", + " ", + " ", + " ", + "{% for i in range(0, 12, 3) %}", + " ", + " ", + " ", + " ", + "{% endfor %}", + "{% for i in range(15, 84, 15) %}", + " ", + " ", + " ", + " ", + "{% endfor %}", + " ", + " ", + " ", + " ", + "
{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}{{ trans('unknown') }}
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}{{ i }}
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}{{ i }}
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": \"85\" }))|raw }}≥85
", + "", + "
" + ] +} diff --git a/buildings-start_date.json b/buildings-start_date.json new file mode 100644 index 0000000..d2c3ffe --- /dev/null +++ b/buildings-start_date.json @@ -0,0 +1,131 @@ +{ + "type": "overpass", + "name": { + "de": "Gebäudealter", + "en": "Building age", + "fr": "Date de construction", + "pt-br": "Idade" + }, + "query": { + "16": [ + "(", + " way[building];", + " relation[building];", + ")" + ] + }, + "feature": { + "pre": [ + "{% if tags.start_date %}", + " {% set value = tags.start_date|osmParseDate %}", + " {% if value and value[0] and value[1] %}", + " {% set value = (value[1] - value[0]) / 2 + value[0] %}", + " {% elseif value and value[0] %}", + " {% set value = value[0] %}", + " {% elseif value and value[1] %}", + " {% set value = value[1] %}", + " {% else %}", + " {% set value = 'error' %}", + " {% endif %}", + "", + " {% if value == 'error' %}", + " {% set color = '#ff0000' %}", + " {% elseif value < 1500 %}", + " {% set color = '#0000ff' %}", + " {% elseif value < 1900 %}", + " {% set color = colorInterpolate([ '#0000ff', '#ff00ff' ], (value - 1500.0) / 400) %}", + " {% elseif value < 2000 %}", + " {% set color = colorInterpolate([ '#ff00ff', '#ffff00' ], (value - 1900.0) / 100) %}", + " {% else %}", + " {% set color = colorInterpolate([ '#ffff00', '#00ff00' ], (value - 2000.0) / 50) %}", + " {% endif %}", + "{% else %}", + "{% set color = '#7f7f7f' %}", + "{% endif %}" + ], + "description": [ + "{% if tags.start_date %}", + "{{ tags.start_date|osmFormatDate({ format: 'short' }) }}", + "{% else %}", + "{{ trans('unknown') }}", + "{% endif %}" + ], + "popupDescription": [ + "{% if tags.start_date %}", + "{{ tags.start_date|osmFormatDate }}", + "{% else %}", + "{{ trans('unknown') }}", + "{% endif %}" + ], + "markerSymbol": null, + "listMarkerSymbol": "{{ markerPolygon({ \"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}", + "priority": [ + "{% set p = 100 %}", + "{% if tags.start_date %}{% set p = p - 20 %}{% endif %}", + "{% if tags.name %}{% set p = p - 10 %}{% endif %}", + "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}", + "{% if tags.historic %}{% set p = p - 1 %}{% endif %}", + "{% if tags.culture %}{% set p = p - 1 %}{% endif %}", + "{% if tags.highway %}{% set p = p - 1 %}{% endif %}", + "{% if tags.railway %}{% set p = p - 1 %}{% endif %}", + "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}", + "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}", + "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}", + "{{ p }}" + ], + "style": { + "width": "1", + "color": "#000000", + "fillColor": "{{ color }}", + "fillOpacity": "0.8" + } + }, + "info": [ + "", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + "
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1400\" }))|raw }}<1500
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1500\" }))|raw }}1500
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1600\" }))|raw }}1600
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1700\" }))|raw }}1700
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1800\" }))|raw }}1800
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1900\" }))|raw }}1900
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1950\" }))|raw }}1950
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"2000\" }))|raw }}2000
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"2020\" }))|raw }}2020
{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"xxx\" }))|raw }}{{ repoTrans('date format not understood') }}
{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}{{ trans('unknown') }}
" + ] +} diff --git a/buildings-type.json b/buildings-type.json new file mode 100644 index 0000000..c7c2d85 --- /dev/null +++ b/buildings-type.json @@ -0,0 +1,241 @@ +{ + "type": "overpass", + "name": { + "de": "Gebäudearten", + "en": "Building types", + "fr": "Type", + "pt-br": "Tipologias" + }, + "query": { + "16": [ + "(", + " way[building][building!=no];", + " relation[building][building!=no];", + ")" + ] + }, + "feature": { + "pre": [ + "{% set type = tags.building|split(';')[0] %}", + "{% set color = const.other.color %}", + "{% for cat, data in const %}", + " {% if type in data.types %}", + " {% set color = data.color %}", + " {% endif %}", + "{% endfor %}" + ], + "description": [ + "{% if tags.building == 'yes' %}", + "{{ keyTrans('building') }}", + "{% else %}", + "{{ tagTransList('building', tags.building) }}", + "{% endif %}", + "{% if tags.building == 'construction' and tags.construction %}", + "({{ tagTransList('building', tags.construction) }})", + "{% endif %}" + ], + "markerSymbol": "", + "listMarkerSymbol": "{{ markerPolygon({\"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}", + "priority": [ + "{% set p = 100 %}", + "{% if tags.name %}{% set p = p - 10 %}{% endif %}", + "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}", + "{% if tags.historic %}{% set p = p - 1 %}{% endif %}", + "{% if tags.culture %}{% set p = p - 1 %}{% endif %}", + "{% if tags.highway %}{% set p = p - 1 %}{% endif %}", + "{% if tags.railway %}{% set p = p - 1 %}{% endif %}", + "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}", + "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}", + "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}", + "{{ p }}" + ], + "style": { + "width": "1", + "color": "#000000", + "fillColor": "{{ color }}", + "fillOpacity": "0.8" + } + }, + "info": [ + "", + "{% for cat, data in const %}", + " ", + " ", + " ", + " ", + "{% endfor %}", + "
{{ markerPolygon({ \"fillColor\": data.color, \"fillOpacity\": \"0.8\", \"width\": 1, \"color\": \"#000000\" })|raw }}{{ trans(data.name) }}:", + " {% for i, type in data.types %}{% if i > 0 %}, {% endif %}{{ tagTrans('building', type) }}{% endfor %}", + " ", + "", + "
" + ], + "const": { + "residential": { + "name": "tag:building=residential", + "color": "#25a000", + "types": [ + "house", + "apartments", + "block", + "flats", + "farm", + "detached", + "dormitory", + "terrace", + "houseboat", + "bungalow", + "static_caravan", + "residential", + "semidetached_house", + "ger", + "trullo" + ] + }, + "tourism": { + "name": "tag:tourism", + "color": "#814ce2", + "types": [ + "hotel", + "ruins", + "conservatory" + ] + }, + "commercial": { + "name": "tag:building=commercial", + "color": "#ec5bcf", + "types": [ + "commercial", + "office", + "industrial", + "retail", + "supermarket", + "warehouse", + "kiosk", + "mall", + "shop" + ] + }, + "religious": { + "name": "tag:building=religious", + "color": "#af29cc", + "types": [ + "religious", + "cathedral", + "chapel", + "church", + "mosque", + "temple", + "synagogue", + "shrine", + "monastery" + ] + }, + "amenity": { + "name": "tag:amenity", + "color": "#2935cc", + "types": [ + "kindergarten", + "civic", + "government", + "hospital", + "school", + "university", + "grandstand", + "public", + "toilets", + "college" + ] + }, + "agriculture": { + "name": "tag:landuse=agriculture", + "color": "#92e934", + "types": [ + "bakehouse", + "barn", + "cowshed", + "farm_auxiliary", + "greenhouse", + "stable", + "sty", + "kitchen", + "slurry_tank", + "silo" + ] + }, + "industrial": { + "name": "tag:landuse=industrial", + "color": "#e2da1b", + "types": [ + "construction", + "garbage_shed", + "transformer_tower", + "service", + "water_tower", + "industrial", + "warehouse", + "storage_tank" + ] + }, + "transportation": { + "name": "tag:building=transportation", + "color": "#1bb5e2", + "types": [ + "carport", + "garage", + "garages", + "bridge", + "hangar", + "parking", + "train_station", + "transportation" + ] + }, + "sport": { + "name": "tag:sport", + "color": "#e21b66", + "types": [ + "pavilion", + "riding_hall", + "stadium", + "sports_hall" + ] + }, + "roof": { + "name": "tag:building=roof", + "color": "#afafaf7f", + "types": [ + "roof" + ] + }, + "shelter": { + "name": "tag:amenity=shelter", + "color": "#cc8725", + "types": [ + "cabin", + "hut", + "shed" + ] + }, + "military": { + "name": "tag:military", + "color": "#4a7300", + "types": [ + "bunker" + ] + }, + "unspecified": { + "name": "tag:building=generic", + "color": "#7f7f7f", + "types": [ + "yes", + "generic" + ] + }, + "other": { + "name": "other", + "color": "#ff0000", + "types": [] + } + } +} diff --git a/buildings.json b/buildings.json index 5dacc6f..673cf29 100644 --- a/buildings.json +++ b/buildings.json @@ -1,5 +1,5 @@ { - "type": "overpass", + "type": "index", "name": { "de": "Gebäude", "en": "Buildings", @@ -8,33 +8,21 @@ "pt": "Edifícios", "pt-br": "Edificações" }, - "query": { - "16": [ - "(", - " way[building];", - " relation[building];", - ")" - ] - }, - "feature": { - "markerSymbol": null, - "priority": [ - "{% set p = 100 %}", - "{% if tags.name %}{% set p = p - 10 %}{% endif %}", - "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}", - "{% if tags.historic %}{% set p = p - 1 %}{% endif %}", - "{% if tags.culture %}{% set p = p - 1 %}{% endif %}", - "{% if tags.highway %}{% set p = p - 1 %}{% endif %}", - "{% if tags.railway %}{% set p = p - 1 %}{% endif %}", - "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}", - "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}", - "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}", - "{{ p }}" - ], - "style": { - "width": "1", - "color": "#000000", - "fillColor": "#000000" + "subCategories": [ + { + "id": "buildings-type" + }, + { + "id": "buildings-figure-ground" + }, + { + "id": "buildings-height" + }, + { + "id": "buildings-start_date" + }, + { + "id": "buildings-entrances" } - } + ] } diff --git a/car_maxspeed.json b/car_maxspeed.json index 0b50d60..6c11f5a 100644 --- a/car_maxspeed.json +++ b/car_maxspeed.json @@ -16,36 +16,67 @@ }, "feature": { "pre": [ - "{% if tags.maxspeed is not defined %}", "{% set maxspeedKmh = null %}", "{% set maxspeed = null %}", "{% set unit = null %}", - "{% else %}", "", - "{% if tags.maxspeed|matches(\"^[0-9]+$\") %}", - "{% set maxspeedKmh = tags.maxspeed %}", - "{% set maxspeed = tags.maxspeed %}", - "{% set unit = \"km/h\" %}", + "{% if tags.maxspeed is defined %}", + " {% if tags.maxspeed|matches(\"^[0-9]+$\") %}", + " {% set maxspeedKmh = tags.maxspeed %}", + " {% set maxspeed = tags.maxspeed %}", + " {% set unit = \"km/h\" %}", + " {% elseif tags.maxspeed|matches( \"(^[0-9]+) mph$\") %}", + " {% set m = tags.maxspeed|matches(\"(^[0-9]+) mph$\") %}", + " {% set maxspeedKmh = m[1] * 1.60934 %}", + " {% set maxspeed = m[1] %}", + " {% set unit = \"mph\" %}", + " {% endif %}", "{% endif %}", "", - "", - "{% set m = tags.maxspeed|matches(\"(^[0-9]+) mph$\") %}", - "{% if m %}", - "{% set maxspeedKmh = m[1] * 1.60934 %}", - "{% set maxspeed = m[1] %}", - "{% set unit = \"mph\" %}", + "{% if attribute(tags, 'maxspeed:forward') is defined %}", + " {% if attribute(tags, 'maxspeed:forward')|matches(\"^[0-9]+$\") %}", + " {% set maxspeedFKmh = attribute(tags, 'maxspeed:forward') %}", + " {% set maxspeedF = attribute(tags, 'maxspeed:forward') %}", + " {% set unit = \"km/h\" %}", + " {% elseif attribute(tags, 'maxspeed:forward')|matches(\"^[0-9]+ mph$\") %}", + " {% set m = attribute(tags, 'maxspeed:forward')|matches(\"(^[0-9]+) mph$\") %}", + " {% set maxspeedFKmh = m[1] * 1.60934 %}", + " {% set maxspeedF = m[1] %}", + " {% set unit = \"mph\" %}", + " {% endif %}", "{% endif %}", "", + "{% if attribute(tags, 'maxspeed:backward') is defined %}", + " {% if attribute(tags, 'maxspeed:backward')|matches(\"^[0-9]+$\") %}", + " {% set maxspeedBKmh = attribute(tags, 'maxspeed:backward') %}", + " {% set maxspeedB = attribute(tags, 'maxspeed:backward') %}", + " {% set unit = \"km/h\" %}", + " {% elseif attribute(tags, 'maxspeed:backward')|matches(\"^[0-9]+ mph$\") %}", + " {% set m = attribute(tags, 'maxspeed:backward')|matches(\"(^[0-9]+) mph$\") %}", + " {% set maxspeedBKmh = m[1] * 1.60934 %}", + " {% set maxspeedB = m[1] %}", + " {% set unit = \"mph\" %}", + " {% endif %}", "{% endif %}", "", "{% if not maxspeedKmh %}", "{% set color = \"#404040\" %}", "{% else %}", "{% set color = colorInterpolate(const.colorMap, (maxspeedKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}", + "{% endif %}", + "", + "{% if maxspeedFKmh %}", + "{% set colorF = colorInterpolate(const.colorMap, (maxspeedFKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}", + "{% endif %}", + "", + "{% if maxspeedBKmh %}", + "{% set colorB = colorInterpolate(const.colorMap, (maxspeedBKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}", "{% endif %}" ], "description": [ - "{% if maxspeed %}", + "{% if maxspeedF or maxspeedB %}", + "{{ maxspeedB|default(trans('unknown')) }} / {{ maxspeedF|default(trans('unknown')) }} {{ unit }}", + "{% elseif maxspeed %}", "{{ maxspeed }} {{ unit }}", "{% elseif tags.maxspeed %}", "{{ tags.maxspeed }}", @@ -53,11 +84,32 @@ "{{ trans('unknown') }}", "{% endif %}" ], - "markerSymbol": null, + "markerSymbol": "", "listMarkerSymbol": "line", + "styles": "{% if maxspeedB or maxspeedF %}left,right,default{% else %}default{% endif %}", "style": { - "width": "3", - "color": "{{ color }}" + "width": "{% if maxspeedB or maxspeedF %}0{% else %}4{% endif %}", + "color": "{{ color }}", + "text": [ + "{% if maxspeedB or maxspeedF %}", + " {% if maxspeedB %}🡸 {{ maxspeedB }} {% endif %}|{% if maxspeedF %} {{ maxspeedF }} 🡺{% endif %} ", + "{% else %}", + " {{ maxspeed }} ", + "{% endif %}" + ], + "textRepeat": "1", + "textOffset": "4", + "textFontWeight": "bold" + }, + "style:left": { + "width": "2", + "color": "{{ colorB|default('#404040') }}", + "offset": "-1" + }, + "style:right": { + "width": "2", + "color": "{{ colorF|default('#404040') }}", + "offset": "1" } }, "const": { diff --git a/car_routes.json b/car_routes.json index f30b89e..d1c7734 100644 --- a/car_routes.json +++ b/car_routes.json @@ -2,6 +2,7 @@ "type": "overpass", "name": { "en": "Car routes", + "fr": "Itinéraires auto", "hu": "Főútvonalak", "pt-br": "Rotas rodoviárias" }, @@ -22,7 +23,9 @@ "{% set refs = [] %}", "{% set color = '#d41d8c' %}", "{% if tags.ref %}", - " {% set refs = refs|merge([ tags.ref ]) %}", + " {% for ref in tags.ref|split(';') %}", + " {% set refs = refs|merge([ ref|trim ]) %}", + " {% endfor %}", "{% endif %}", "", "{% for master in masters %}", @@ -32,7 +35,9 @@ " {% if master.tags.ref %}", " {% set refs = refs|merge([ master.tags.ref ]) %}", " {% endif %}", - "{% endfor %}" + "{% endfor %}", + "", + "{% set refs = refs|unique|natsort({ insensitive: true }) %}" ], "body": [ "

Routes

", @@ -52,7 +57,7 @@ "color": "{{ color }}", "width": 4, "opacity": 1, - "text": "{{ refs|join(' ') }} ", + "text": "{{ refs|join(' · ') }} ", "textRepeat": "1", "textOffset": "12", "textFontWeight": "bold" diff --git a/children.json b/children.json index e814ed1..69fc913 100644 --- a/children.json +++ b/children.json @@ -37,7 +37,7 @@ "{% elseif tags.shop=='baby_goods' or tags.shop=='toys' %}", "{{ keyTrans('shop') }}: {{ tagTrans('shop', tags.shop) }}", "{% elseif tags.amenity=='toilets' and tags.diaper %}", - "{{ tagTrans('amenity', 'toilets') }} with diaper changing table", + "{{ tagTrans('amenity', 'toilets diaper=yes') }}", "{% endif %}" ], "markerSign": [ @@ -78,7 +78,7 @@ " ", " ", " {{ markerCircle({})|raw }}
🚽🚼
", - " {{ tagTrans('amenity', 'toilets') }} with diaper changing table", + " {{ tagTrans('amenity', 'toilets diaper=yes') }}", " ", "" ] diff --git a/coal.json b/coal.json new file mode 100644 index 0000000..3b044d0 --- /dev/null +++ b/coal.json @@ -0,0 +1,44 @@ +{ + "type": "overpass", + "name": { + "de": "Kohle", + "en": "Coal", + "fr": "Charbon", + "hu": "Kőszén", + "pt-br": "Carvão" + }, + "query": { + "11": [ + "(", + "node[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];", + "way[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];", + "relation[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];", + "node[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];", + "way[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];", + "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal)(|;.*)$\"];", + "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal)(|;.*)$\"];", + "node[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal)(|;.*)$\"];", + "way[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal)(|;.*)$\"];", + "relation[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal)(|;.*)$\"];", + ")" + ] + }, + "feature": { + "description": [ + "{% if tags.man_made == 'pipeline' %}", + "{{ tagTrans('man_made', 'pipeline') }} ({{ tagTrans('substance', tags.substance) }})", + "{% elseif tags.man_made %}", + "{{ tagTrans('man_made', tags.man_made) }}", + "{% elseif tags.power == 'plant' %}", + "{{ tagTrans('power', 'plant') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}", + "{% elseif tags.power == 'generator' %}", + "{{ tagTrans('power', 'generator') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}", + "{% elseif tags.landuse == 'quarry' %}", + "{{ tagTrans('landuse', tags.landuse) }} {% if tags.resource %}({{ tagTrans('resource', tags.resource) }}){% endif %}", + "{% elseif tags.landuse == 'industrial' %}", + "{{ tagTrans('landuse', tags.landuse) }} ({{ tagTrans('industrial', tags.industrial) }})", + "{% endif %}" + ], + "markerSymbol": null + } +} diff --git a/communication.json b/communication.json index 27f8372..83a90d3 100644 --- a/communication.json +++ b/communication.json @@ -25,21 +25,38 @@ "node[amenity~'^(post_office|internet_cafe)$'];", "way[amenity~'^(post_office|internet_cafe)$'];", "relation[amenity~'^(post_office|internet_cafe)$'];", + "nwr[office~\"^(telecommunication|it|newspaper|publisher|advertising_agency)$\"];", ");" ], "16": [ "(node[amenity~'^(post_office|internet_cafe|post_box|telephone)$'];", "way[amenity~'^(post_office|internet_cafe)$'];", "relation[amenity~'^(post_office|internet_cafe)$'];", + "nwr[office~\"^(telecommunication|it|newspaper|publisher|advertising_agency)$\"];", ");" ] }, "feature": { + "pre": [ + "{% if tags.amenity %}", + " {% set key = 'amenity' %}", + " {% set value = tags.amenity %}", + "{% else %}", + " {% set key = 'office' %}", + " {% set value = tags.office %}", + "{% endif %}" + ], "title": "{{ localizedTag(tags, 'name') |default(localizedTag(tags, 'operator')) |default(tagTrans('amenity', tags.amenity)) }}", - "description": "{{ tagTrans('amenity', tags.amenity) }}", + "description": [ + "{% if key == 'office' %}", + " {{ keyTrans('office') }} ({{ tagTrans('office', tags.office) }})", + "{% else %}", + " {{ tagTrans(key, value) }}", + "{% endif %}" + ], "body": "{% if tags.operator %}{{ keyTrans('operator') }}: {{ localizedTag(tags, 'operator') }}
{% endif %}", "markerSign": [ - "{% set data = const[tags.amenity] %}", + "{% set data = const[key ~ '=' ~ value] %}", "{% if data %}", "{{ data.sign|raw }}", "{% endif %}" @@ -47,30 +64,69 @@ }, "info": [ "", - "{% for value, data in const %}", + "{% for kv, data in const %}", "{% if data.zoom <= map.zoom %}", " ", " ", - " ", + " ", " ", "{% endif %}", "{% endfor %}", "
{{ markerCircle({})|raw }}
{{ data.sign|raw }}
{{ tagTrans('amenity', value) }}", + " {% if kv|split('=')[0] == 'office' %}", + " {{ keyTrans('office') }}", + " ({{ tagTrans('office', kv|split('=')[1]) }})", + " {% else %}", + " {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}", + " {% endif %}", + "
" ], "const": { - "post_office": { + "amenity=post_office": { "sign": "", "zoom": 13 }, - "post_box": { + "amenity=post_box": { "sign": "", "zoom": 16 }, - "internet_cafe": { + "amenity=internet_cafe": { "sign": "", "zoom": 13 }, - "telephone": { + "office=telecommunication": { + "sign": "", + "zoom": 13 + }, + "office=it": { + "sign": "", + "zoom": 13 + }, + "office=newspaper": { + "sign": "", + "zoom": 13 + }, + "office=publisher": { + "sign": "", + "zoom": 13 + }, + "office=advertising_agency": { + "sign": "", + "zoom": 13 + }, + "office=public_relations": { + "sign": "", + "zoom": 13 + }, + "office=audiovisual_production": { + "sign": "", + "zoom": 13 + }, + "office=film_production": { + "sign": "", + "zoom": 13 + }, + "amenity=telephone": { "sign": "", "zoom": 16 } diff --git a/culture.json b/culture.json index 9fd02fc..630f375 100644 --- a/culture.json +++ b/culture.json @@ -30,6 +30,7 @@ "node[tourism~\"^(artwork|gallery|museum|theme_park)$\"];", "way[tourism~\"^(artwork|gallery|museum|theme_park)$\"];", "relation[tourism~\"^(artwork|gallery|museum|theme_park)$\"];", + "nwr[shop~\"^(art)$\"];", ")" ] }, @@ -41,28 +42,81 @@ "{% elseif tags.tourism %}", "{% set key = 'tourism' %}", "{% set value = tags.tourism %}", + "{% elseif tags.shop %}", + "{% set key = 'shop' %}", + "{% set value = tags.shop %}", "{% endif %}" ], - "description": "{{ tagTrans(key, value) }}", - "markerSign": "{{ attribute(const, key ~ '=' ~ value) }}" + "description": [ + "{% if key == 'shop' %}", + " {{ keyTrans(key) }} ({{ tagTrans(key, value) }})", + "{% else %}", + " {{ tagTrans(key, value) }}", + "{% endif %}", + "", + "{% if tags.tourism == 'museum' and tags.museum %}", + "({{ tagTrans('museum', tags.museum) }})", + "{% endif %}", + "{% if tags.amenity == 'theatre' and attribute(tags, 'theatre:genre') %}", + "({{ tagTrans('theatre:genre', attribute(tags, 'theatre:genre')) }})", + "{% endif %}", + "{% if tags.amenity == 'community_centre' and tags.community_centre %}", + "({{ tagTrans('community_centre', tags.community_centre) }})", + "{% endif %}" + ], + "body": [ + "" + ], + "markerSign": "{{ attribute(const, key ~ '=' ~ value)|raw }}" }, "const": { "amenity=arts_centre": "🎨", "amenity=cinema": "🎦", - "amenity=community_centre": "", + "amenity=community_centre": "", "amenity=fountain": "⛲", - "amenity=studio": "", + "amenity=studio": "", "amenity=theatre": "🎭", "tourism=artwork": "🎨 ", "tourism=gallery": "🖼", "tourism=museum": "🏛 ", - "tourism=theme_park": "" + "tourism=theme_park": "", + "shop=art": "" }, "info": [ "", "{% for value, sign in const %}", " ", - " ", + " ", " ", " ", "{% endfor %}", diff --git a/culture_religion.json b/culture_religion.json index 52cc1a5..17c8e16 100644 --- a/culture_religion.json +++ b/culture_religion.json @@ -9,7 +9,7 @@ "en": "Culture and Religion", "es": "Cultura y religión", "et": "Kultuur ja religioon", - "fr": "Culture et Religion", + "fr": "Culture et religion", "hu": "Kultúra és vallás", "it": "Cultura", "ja": "文化", diff --git a/cycle_routes.json b/cycle_routes.json index c12c47d..2cb57ed 100644 --- a/cycle_routes.json +++ b/cycle_routes.json @@ -16,18 +16,28 @@ }, "members": true, "feature": { - "priority": "{{ const[tags.network].priority|default(4) }}", + "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}", "description": "{{ tagTrans('network', tags.network) }}", + "markerSymbol": "", "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': const[tags.network].color|default(const[''].color) })|raw }}", - "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}", + "priority": "{{ const[tags.network].priority|default(4) }}", "styles": "", - "markerSymbol": "" + "style:hover": { + "width": "0" + }, + "style:selected": { + "width": "0" + } }, "memberFeature": { "pre": [ "{% set priority = 4 %}", "{% set network = '' %}", "{% set refs = [] %}", + "{% set dirForward = false %}", + "{% set dirBackward = false %}", + "{% set hover = false %}", + "{% set selected = false %}", "", "{% for master in masters %}", " {% set _p = const[master.tags.network].priority|default(4) %}", @@ -38,6 +48,12 @@ " {% if master.tags.ref %}", " {% set refs = refs|merge([ master.tags.ref ]) %}", " {% endif %}", + " {% if master.role == 'forward' %}{% set dirForward = true %}", + " {% elseif master.role == 'backward' %}{% set dirBackward = true %}", + " {% else %}{% set dirForward = true %}{% set dirBackward = true %}", + " {% endif %}", + " {% if master.flags.hover %}{% set hover = master.role|default('both') %}{% endif %}", + " {% if master.flags.selected %}{% set selected = master.role|default('both') %}{% endif %}", "{% endfor %}" ], "title": "", @@ -54,14 +70,64 @@ "" ], "listExclude": "1", + "styles": "default{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}", "style": { + "width": "4", "color": "{{ const[network].color }}", - "width": 4, - "opacity": 1, - "text": "{{ refs|join(' ') }} ", + "opacity": "1", + "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}", + "dashArray": "{% if not dirForward or not dirBackward %}27,8{% endif %}", + "dashOffset": "{% if dirBackward %}28{% else %}0{% endif %}", + "noClip": "{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}", + "text": "{{ refs|join(' · ') }} ", "textRepeat": "1", "textOffset": "12", + "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}", + "pattern-offset": "{% if dirBackward %}4{% else %}30.5{% endif %}", + "pattern-repeat": "35", + "pattern-polygon": "true", + "pattern-pixelSize": "9", + "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}", + "pattern-path-width": "0", + "pattern-path-color": "{{ const[network].color }}", + "pattern-path-fillOpacity": "1", "textFontWeight": "bold" + }, + "style:hover": { + "pane": "hover", + "width": "4", + "color": "black", + "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}", + "dashArray": "{% if hover == 'forward' or hover == 'backward' %}27,8{% endif %}", + "dashOffset": "{% if hover == 'backward' %}28{% else %}0{% endif %}", + "noClip": "{% if hover == 'forward' or hover == 'backward' %}true{% else %}false{% endif %}", + "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}", + "pattern-offset": "{% if hover == 'backward' %}4{% else %}30.5{% endif %}", + "pattern-repeat": "35", + "pattern-polygon": "true", + "pattern-pixelSize": "9", + "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}", + "pattern-path-width": "0", + "pattern-path-color": "black", + "pattern-path-fillOpacity": "1" + }, + "style:selected": { + "pane": "selected", + "width": "4", + "color": "#3f3f3f", + "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}", + "dashArray": "{% if selected == 'forward' or selected == 'backward' %}27,8{% endif %}", + "dashOffset": "{% if selected == 'backward' %}28{% else %}0{% endif %}", + "noClip": "{% if selected == 'forward' or selected == 'backward' %}true{% else %}false{% endif %}", + "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}", + "pattern-offset": "{% if selected == 'backward' %}4{% else %}30.5{% endif %}", + "pattern-repeat": "35", + "pattern-polygon": "true", + "pattern-pixelSize": "9", + "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}", + "pattern-path-width": "0", + "pattern-path-color": "#3f3f3f", + "pattern-path-fillOpacity": "1" } }, "const": { diff --git a/detailsBody.html b/detailsBody.html index 6b8d180..ca0b27f 100644 --- a/detailsBody.html +++ b/detailsBody.html @@ -1,4 +1,12 @@ diff --git a/education.json b/education.json index c366e82..5b4772d 100644 --- a/education.json +++ b/education.json @@ -32,6 +32,7 @@ "node[amenity~'^(college|university|library|school|kindergarten|language_school)$'];", "way[amenity~'^(college|university|library|school|kindergarten|language_school)$'];", "relation[amenity~'^(college|university|library|school|kindergarten|language_school)$'];", + "nwr[office~\"^(educational_institution|research)$\"];", ")" ], "16": [ @@ -39,20 +40,30 @@ "node[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];", "way[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];", "relation[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];", + "nwr[office~\"^(educational_institution|research)$\"];", ")" ] }, "feature": { - "description": "{{ tagTrans('amenity', tags.amenity) }}", + "pre": [ + "{% if tags.office == 'educational_institution' or tags.office == 'research' %}", + " {% set key = 'office' %}", + " {% set value = tags.office %}", + "{% else %}", + " {% set key = 'amenity' %}", + " {% set value = tags.amenity %}", + "{% endif %}" + ], + "description": "{{ tagTrans(key, value) }}", "body": "{% if tags.operator %}{{ keyTrans('operator') }}: {{ tags.operator }}
{% endif %}", "markerSign": [ - "{% set data = const[tags.amenity] %}", + "{% set data = const[key ~ '=' ~ value] %}", "{% if data %}", - "{{ data.sign }}", + "{{ data.sign|raw }}", "{% endif %}" ], "priority": [ - "{% set data = const[tags.amenity] %}", + "{% set data = const[key ~ '=' ~ value] %}", "{% if data %}", "{{ data.priority }}", "{% endif %}" @@ -60,51 +71,63 @@ }, "info": [ "
{{ markerCircle({})|raw }}
{{ sign }}
{{ markerCircle({})|raw }}
{{ sign|raw }}
{{ tagTrans(value|split('=')[0], value|split('=')[1]) }}
", - "{% for value, data in const %}", + "{% for kv, data in const %}", "{% if data.zoom <= map.zoom %}", " ", - " ", - " ", + " ", + " ", " ", "{% endif %}", "{% endfor %}", "
{{ markerCircle({})|raw }}
{{ data.sign }}
{{ tagTrans('amenity', value) }}{{ markerCircle({})|raw }}
{{ data.sign|raw }}
", + " {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}", + "
" ], "const": { - "university": { + "amenity=university": { "priority": 0, "sign": "🎓", "zoom": 11 }, - "college": { + "amenity=college": { "priority": 1, "sign": "🎓", "zoom": 11 }, - "library": { + "amenity=library": { "priority": 2, "sign": "🕮", "zoom": 11 }, - "school": { + "amenity=school": { "priority": 3, "sign": "🏫", "zoom": 14 }, - "language_school": { + "amenity=language_school": { "priority": 3, "sign": "🏫", "zoom": 14 }, - "kindergarten": { + "amenity=kindergarten": { "priority": 4, "sign": "⛹", "zoom": 14 }, - "public_bookcase": { + "amenity=public_bookcase": { "priority": 5, "sign": "📚", "zoom": 16 + }, + "office=educational_institution": { + "priority": 3, + "sign": "🏢", + "zoom": 14 + }, + "office=research": { + "priority": 3, + "sign": "", + "zoom": 14 } } } diff --git a/power.json b/electric_power.json similarity index 92% rename from power.json rename to electric_power.json index 4be4028..e2cee97 100644 --- a/power.json +++ b/electric_power.json @@ -3,16 +3,16 @@ "name": { "ast": "Enerxía", "cs": "Elektřina", - "de": "Energie", - "en": "Power", + "de": "Elektrischer Strom", + "en": "Electric Power", "et": "Elekter", - "fr": "Énergie", + "fr": "Production/transport électrique", "hu": "Áramellátás", "it": "Energia", "ja": "電力", "nl": "Stroomvoorziening", "pt": "Eletricidade", - "pt-br": "Energia", + "pt-br": "Energia elétrica", "ro": "Energie", "ru": "Энергетика" }, diff --git a/emergency.json b/emergency.json index 64ef840..73b606d 100644 --- a/emergency.json +++ b/emergency.json @@ -34,6 +34,7 @@ "way[amenity~\"^(fire_station|hospital|police)$\"];", "relation[amenity~\"^(fire_station|hospital|police)$\"];", "node[emergency~\"^(phone)$\"];", + "node[highway=emergency_access_point];", ")" ] }, @@ -45,6 +46,9 @@ "{% elseif tags.emergency %}", "{% set key = 'emergency' %}", "{% set value = tags.emergency %}", + "{% elseif tags.highway == 'emergency_access_point' %}", + "{% set key = 'highway' %}", + "{% set value = tags.highway %}", "{% endif %}", "{% set kv = key ~ \"=\" ~ value %}" ], @@ -52,16 +56,18 @@ "markerSign": [ "{% set data = const[kv] %}", "{% if data %}", - "{{ data.sign }}", + "{{ data.sign|raw }}", "{% endif %}" - ] + ], + "markerSymbol": "{{ markerPointer({ fillColor: data.background|default('#f27f6a') })|raw }}", + "listMarkerSymbol": "{{ markerCircle({ fillColor: data.background|default('#f27f6a') })|raw }}" }, "info": [ "", "{% for value, data in const %}", "{% if data.zoom <= map.zoom %}", " ", - " ", + " ", " ", " ", "{% endif %}", @@ -84,6 +90,11 @@ "emergency=phone": { "zoom": "13", "sign": "📞" + }, + "highway=emergency_access_point": { + "zoom": "13", + "sign": "", + "background": "#009262" } } } diff --git a/financial.json b/financial.json index b0ea37a..82b3bfb 100644 --- a/financial.json +++ b/financial.json @@ -31,37 +31,75 @@ "node[amenity~\"^(bank|bureau_de_change|atm)$\"];", "way[amenity~\"^(bank|bureau_de_change|atm)$\"];", "relation[amenity~\"^(bank|bureau_de_change|atm)$\"];", + "node[office~\"^(financial|accountant|insurance|tax|tax_advisor)$\"];", + "way[office~\"^(financial|accountant|insurance|tax|tax_advisor)$\"];", + "relation[office~\"^(financial|accountant|insurance|tax|tax_advisor)$\"];", ")" ] }, "feature": { - "description": "{{ tagTrans('amenity', tags.amenity) }}", - "markerSign": "{{ const[tags.amenity].sign|raw }}" + "pre": [ + "{% if tags.amenity %}", + " {% set key = 'amenity' %}", + " {% set value = tags.amenity %}", + "{% else %}", + " {% set key = 'office' %}", + " {% set value = tags.office %}", + "{% endif %}" + ], + "description": "{{ tagTrans(key, value) }}", + "markerSign": "{{ const[key ~ '=' ~ value].sign|raw }}" }, "info": [ "
{{ markerCircle({})|raw }}
{{ data.sign }}
{{ markerCircle({ fillColor: data.background|default('#f27f6a') })|raw }}
{{ data.sign|raw }}
{{ tagTrans(value|split('=')[0], value|split('=')[1]) }}
", - "{% for value, data in const %}", + "{% for kv, data in const %}", "{% if data.zoom <= map.zoom %}", " ", " ", - " ", + " ", " ", "{% endif %}", "{% endfor %}", "
{{ markerCircle({})|raw }}
{{ data.sign|raw }}
{{ tagTrans('amenity', value) }}", + " {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}", + "
" ], "const": { - "atm": { - "sign": "", + "amenity=atm": { + "sign": "", "zoom": 15 }, - "bank": { - "sign": "", + "amenity=bank": { + "sign": "", "zoom": 14 }, - "bureau_de_change": { + "amenity=bureau_de_change": { "sign": "⇄", "zoom": 15 + }, + "office=financial": { + "sign": "", + "zoom": 15 + }, + "office=accountant": { + "sign": "", + "zoom": 15 + }, + "office=insurance": { + "sign": "", + "zoom": 15 + }, + "office=tax": { + "sign": "%", + "zoom": 15 + }, + "office=tax_advisor": { + "sign": "%", + "zoom": 15 + }, + "office=cooperative": { + "sign": "", + "zoom": 15 } } } diff --git a/hiking_routes.json b/hiking_routes.json index c553c13..3bf40d9 100644 --- a/hiking_routes.json +++ b/hiking_routes.json @@ -57,7 +57,7 @@ "color": "{{ const[network].color }}", "width": 4, "opacity": 1, - "text": "{{ refs|join(' ') }} ", + "text": "{{ refs|join(' · ') }} ", "textRepeat": "1", "textOffset": "12", "textFontWeight": "bold" diff --git a/historic.json b/historic.json index dab36a1..0042fc1 100644 --- a/historic.json +++ b/historic.json @@ -29,14 +29,45 @@ ], "14": [ "(", - "node[historic][historic!~\"^(memorial|monument)$\"];", - "way[historic][historic!~\"^(memorial|monument)$\"];", - "relation[historic][historic!~\"^(memorial|monument)$\"];", + "node[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];", + "way[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];", + "relation[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];", ")" ] }, "feature": { "description": "{{ tagTransList('historic', tags.historic) }}", + "body": [ + "