Merge branch 'master' into refactor/clean-layer-rendering

This commit is contained in:
pietervdvn 2021-01-04 19:08:38 +01:00
commit 27f2206cae
13 changed files with 571 additions and 5 deletions

3
.gitignore vendored
View file

@ -5,3 +5,6 @@ node_modules
scratch scratch
assets/editor-layer-index.json assets/editor-layer-index.json
assets/generated/* assets/generated/*
/*.webmanifest
/*.html
!/index.html

View file

@ -17,6 +17,7 @@ import * as widths from "../assets/themes/widths/width.json"
import * as drinking_water from "../assets/themes/drinking_water/drinking_water.json" import * as drinking_water from "../assets/themes/drinking_water/drinking_water.json"
import * as climbing from "../assets/themes/climbing/climbing.json" import * as climbing from "../assets/themes/climbing/climbing.json"
import * as surveillance_cameras from "../assets/themes/surveillance_cameras/surveillance_cameras.json" import * as surveillance_cameras from "../assets/themes/surveillance_cameras/surveillance_cameras.json"
import * as trees from "../assets/themes/trees/trees.json"
import * as personal from "../assets/themes/personalLayout/personalLayout.json" import * as personal from "../assets/themes/personalLayout/personalLayout.json"
import * as playgrounds from "../assets/themes/playgrounds/playgrounds.json" import * as playgrounds from "../assets/themes/playgrounds/playgrounds.json"
import LayerConfig from "./JSON/LayerConfig"; import LayerConfig from "./JSON/LayerConfig";
@ -65,7 +66,8 @@ export class AllKnownLayouts {
new LayoutConfig(bike_monitoring_stations), new LayoutConfig(bike_monitoring_stations),
new LayoutConfig(surveillance_cameras), new LayoutConfig(surveillance_cameras),
new LayoutConfig(climbing), new LayoutConfig(climbing),
new LayoutConfig(playgrounds) new LayoutConfig(playgrounds),
new LayoutConfig(trees),
]; ];

View file

@ -17,6 +17,7 @@ import * as direction from "../assets/layers/direction/direction.json"
import * as surveillance_camera from "../assets/layers/surveillance_cameras/surveillance_cameras.json" import * as surveillance_camera from "../assets/layers/surveillance_cameras/surveillance_cameras.json"
import * as toilets from "../assets/layers/toilets/toilets.json" import * as toilets from "../assets/layers/toilets/toilets.json"
import * as bookcases from "../assets/layers/public_bookcases/public_bookcases.json" import * as bookcases from "../assets/layers/public_bookcases/public_bookcases.json"
import * as tree_nodes from "../assets/layers/trees/tree_nodes.json"
import LayerConfig from "./JSON/LayerConfig"; import LayerConfig from "./JSON/LayerConfig";
export default class SharedLayers { export default class SharedLayers {
@ -45,7 +46,8 @@ export default class SharedLayers {
new LayerConfig(information_boards,[], "shared_layers"), new LayerConfig(information_boards,[], "shared_layers"),
new LayerConfig(toilets,[], "shared_layers"), new LayerConfig(toilets,[], "shared_layers"),
new LayerConfig(bookcases,[], "shared_layers"), new LayerConfig(bookcases,[], "shared_layers"),
new LayerConfig(surveillance_camera,[], "shared_layers") new LayerConfig(surveillance_camera,[], "shared_layers"),
new LayerConfig(tree_nodes,[], "shared_layers")
]; ];
const sharedLayers = new Map<string, LayerConfig>(); const sharedLayers = new Map<string, LayerConfig>();

2
Folder.DotSettings.user Normal file
View file

@ -0,0 +1,2 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/Highlighting/SweaWarningsMode/@EntryValue">ShowAndRun</s:String></wpf:ResourceDictionary>

View file

@ -0,0 +1,418 @@
{
"id": "tree_nodes",
"name": {
"nl": "Boom",
"en": "Tree"
},
"minzoom": 18,
"overpassTags": {
"and": ["natural=tree"]
},
"title": {
"render": {
"nl": "Boom",
"en": "Tree"
},
"mappings": [
{
"if": "name~*",
"then": {
"nl": "<i>{name}</i>",
"en": "<i>{name}</i>"
}
}
]
},
"tagRenderings": [
"images",
{
"render": {
"nl": "Hoogte: {height}",
"en": "Height: {height}"
},
"condition": {
"and": [
"height~*"
]
},
"mappings": [
{
"if": {
"and": ["height~^[0-9.]+$"]
},
"then": {
"nl": "Hoogte: {height}&nbsp;m",
"en": "Height: {height}&nbsp;m"
}
}
]
},
{
"question": {
"nl": "Is dit een naald- of loofboom?",
"en": "Is this a broadleaved or needleleaved tree?"
},
"mappings": [
{
"if": {
"and": ["leaf_type=broadleaved"]
},
"then": {
"nl": "<img src=\"./assets/themes/trees/broadleaved.svg\" style=\"width:1.5em;height:1.5em\" alt=\"\"/> Loofboom",
"en": "<img src=\"./assets/themes/trees/broadleaved.svg\" style=\"width:1.5em;height:1.5em\" alt=\"\"/> Broadleaved"
}
},
{
"if": {
"and": ["leaf_type=needleleaved"]
},
"then": {
"nl": "<img src=\"./assets/themes/trees/needleleaved.svg\" style=\"width:1.5em;height:1.5em\" alt=\"\"/> Naaldboom",
"en": "<img src=\"./assets/themes/trees/needleleaved.svg\" style=\"width:1.5em;height:1.5em\" alt=\"\"/> Needleleaved"
}
},
{
"if": {
"and": ["leaf_type=leafless"]
},
"then": {
"nl": "<img src=\"./assets/themes/trees/leafless.svg\" style=\"width:1.5em;height:1.5em\" alt=\"\"/> Permanent bladloos",
"en": "<img src=\"./assets/themes/trees/leafless.svg\" style=\"width:1.5em;height:1.5em\" alt=\"\"/> Permanently leafless"
},
"hideInAnswer": true
}
]
},
{
"question": {
"nl": "Hoe significant is deze boom? Kies het eerste antwoord dat van toepassing is.",
"en": "How significant is this tree? Choose the first answer that applies."
},
"mappings": [
{
"if": {
"and": ["denotation=landmark"]
},
"then": {
"nl": "De boom valt op door zijn grootte of prominente locatie. Hij is nuttig voor navigatie.",
"en": "The tree is remarkable due to its size or prominent location. It is useful for navigation."
}
},
{
"if": {
"and": ["denotation=natural_monument"]
},
"then": {
"nl": "De boom is een natuurlijk monument, bijvoorbeeld doordat hij bijzonder oud of van een waardevolle soort is.",
"en": "The tree is a natural monument, e.g. because it is especially old, or of a valuable species."
}
},
{
"if": {
"and": ["denotation=agricultural"]
},
"then": {
"nl": "De boom wordt voor landbouwdoeleinden gebruikt, bijvoorbeeld in een boomgaard.",
"en": "The tree is used for agricultural purposes, e.g. in an orchard."
}
},
{
"if": {
"and": ["denotation=park"]
},
"then": {
"nl": "De boom staat in een park of dergelijke (begraafplaats, schoolterrein, …).",
"en": "The tree is in a park or similar (cemetery, school grounds, …)."
}
},
{
"if": {
"and": ["denotation=garden"]
},
"then": {
"nl": "De boom staat in de tuin bij een woning/flatgebouw.",
"en": "The tree is a residential garden."
}
},
{
"if": {
"and": ["denotation=avenue"]
},
"then": {
"nl": "Dit is een laanboom.",
"en": "This is a tree along an avenue."
}
},
{
"if": {
"and": ["denotation=urban"]
},
"then": {
"nl": "De boom staat in een woonkern.",
"en": "The tree is an urban area."
}
},
{
"if": {
"and": ["denotation=none"]
},
"then": {
"nl": "De boom staat buiten een woonkern.",
"en": "The tree is outside of an urban area."
}
}
]
},
{
"question": {
"nl": "Is deze boom groenblijvend of bladverliezend?",
"en": "Is this tree evergreen or deciduous?"
},
"mappings": [
{
"if": {
"and": ["leaf_cycle=deciduous"]
},
"then": {
"nl": "Bladverliezend: de boom is een periode van het jaar kaal.",
"en": "Deciduous: the tree loses its leaves for some time of the year."
}
},
{
"if": {
"and": ["leaf_cycle=evergreen"]
},
"then": {
"nl": "Groenblijvend.",
"en": "Evergreen."
}
}
],
"condition": {
"and": ["leaf_type!~^leafless$"]
}
},
{
"render": {
"nl": "Naam: {name}",
"en": "Naam: {name}"
},
"question": {
"nl": "Heeft de boom een naam?",
"en": "Does the tree have a name?"
},
"freeform": {
"key": "name",
"addExtraTags": [
"noname="
]
},
"mappings": [
{
"if": {
"and": [
"name=",
"noname=yes"
]
},
"then": {
"nl": "De boom heeft geen naam.",
"en": "The tree does not have a name."
}
}
],
"condition": {
"or": [
"denotation=landmark",
"denotation=natural_monument",
"name~*"
]
}
},
{
"question": {
"nl": "Is deze boom erkend als erfgoed?",
"en": "Is this tree registered heritage?"
},
"mappings": [
{
"if": {
"and": [
"heritage=4",
"heritage:operator=OnroerendErfgoed"
]
},
"then": {
"nl": "<img src=\"https://upload.wikimedia.org/wikipedia/commons/6/60/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Erkend als houtig erfgoed door Onroerend Erfgoed Vlaanderen",
"en": "<img src=\"https://upload.wikimedia.org/wikipedia/commons/6/60/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Registered as heritage by <i>Onroerend Erfgoed</i> Flanders"
}
},
{
"if": {
"and": [
"heritage=4",
"heritage:operator=aatl"
]
},
"then": {
"nl": "Erkend als natuurlijk erfgoed door Directie Cultureel Erfgoed Brussel",
"en": "Registered as heritage by <i>Direction du Patrimoine culturel</i> Brussels"
}
},
{
"if": {
"and": [
"heritage=yes",
"heritage:operator="
]
},
"then": {
"nl": "Erkend als erfgoed door een andere organisatie",
"en": "Registered as heritage by a different organisation"
}
},
{
"if": {
"and": [
"heritage=no",
"heritage:operator="
]
},
"then": {
"nl": "Niet erkend als erfgoed",
"en": "Not registered as heritage"
}
},
{
"if": {
"and": [
"heritage~*"
]
},
"then": {
"nl": "Erkend als erfgoed door een andere organisatie",
"en": "Registered as heritage by a different organisation"
},
"hideInAnswer": true
}
],
"condition": {
"or": [
"denotation=landmark",
"denotation=natural_monument"
]
}
},
{
"render": {
"nl": "<img src=\"https://upload.wikimedia.org/wikipedia/commons/6/60/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Onroerend Erfgoed-ID: <a href=\"https://id.erfgoed.net/erfgoedobjecten/{ref:OnroerendErfgoed}\">{ref:OnroerendErfgoed}</a>",
"en": "<img src=\"https://upload.wikimedia.org/wikipedia/commons/6/60/Onroerend_Erfgoed_logo_without_text.svg\" style=\"width:0.85em;height:1em;vertical-align:middle\" alt=\"\"/> Onroerend Erfgoed ID: <a href=\"https://id.erfgoed.net/erfgoedobjecten/{ref:OnroerendErfgoed}\">{ref:OnroerendErfgoed}</a>"
},
"question": {
"nl": "Wat is het ID uitgegeven door Onroerend Erfgoed Vlaanderen?",
"en": "What is the ID issuesd by Onroerend Erfgoed Flanders?"
},
"freeform": {
"key": "ref:OnroerendErfgoed",
"type": "nat"
},
"condition": {
"and": [
"heritage=4",
"heritage:operator=OnroerendErfgoed"
]
}
},
{
"render": {
"nl": "<img src=\"https://upload.wikimedia.org/wikipedia/commons/e/e4/Wikidata-logo_S.svg\" style=\"width:1em;height:0.56em;vertical-align:middle\" alt=\"\"/> Wikidata: <a href=\"http://www.wikidata.org/entity/{wikidata}\">{wikidata}</a>",
"en": "<img src=\"https://upload.wikimedia.org/wikipedia/commons/e/e4/Wikidata-logo_S.svg\" style=\"width:1em;height:0.56em;vertical-align:middle\" alt=\"\"/> Wikidata: <a href=\"http://www.wikidata.org/entity/{wikidata}\">{wikidata}</a>"
},
"question": {
"nl": "Wat is het Wikidata-ID van deze boom?",
"en": "What is the Wikidata ID for this tree?"
},
"freeform": {
"key": "wikidata",
"type": "wikidata"
},
"condition": {
"or": [
"denotation=landmark",
"denotation=natural_monument",
"wikidata~*"
]
}
}
],
"hideUnderlayingFeaturesMinPercentage": 0,
"icon": {
"render": "./assets/themes/trees/unknown.svg",
"mappings": [
{
"if": {
"and": ["leaf_type=broadleaved"]
},
"then": "./assets/themes/trees/broadleaved.svg"
},
{
"if": {
"and": ["leaf_type=needleleaved"]
},
"then": "./assets/themes/trees/needleleaved.svg"
}
]
},
"width": {
"render": "8"
},
"iconSize": {
"render": "40,40,bottom"
},
"color": {
"render": "#00f"
},
"presets": [
{
"tags": [
"natural=tree",
"leaf_type=broadleaved"
],
"title": {
"nl": "Loofboom",
"en": "Broadleaved tree"
},
"description": {
"nl": "Een boom van een soort die blaadjes heeft, bijvoorbeeld eik of populier.",
"en": "A tree of a species with leaves, such as oak or populus."
}
},
{
"tags": [
"natural=tree",
"leaf_type=needleleaved"
],
"title": {
"nl": "Naaldboom",
"en": "Needleleaved tree"
},
"description": {
"nl": "Een boom van een soort met naalden, bijvoorbeeld den of spar.",
"en": "A tree of a species with needles, such as pine or spruce."
}
},
{
"tags": [
"natural=tree"
],
"title": {
"nl": "Boom",
"en": "Tree"
},
"description": {
"nl": "Wanneer je niet zeker bent of het nu een loof- of naaldboom is.",
"en": "If you're not sure whether it's a broadleaved or needleleaved tree."
}
}
]
}

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="a" x="-.16333" y="-.56099" width="1.3267" height="2.122" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="1.3242792"/>
</filter>
</defs>
<path transform="matrix(1.0606 0 0 1.0606 1.5965 -.46043)" d="m27.113 26.059a0.71058 3.7759 85.75 0 0-3.6012 0.35712 0.71058 3.7759 85.75 0 0-2.1317-0.23496 0.71058 3.7759 85.75 0 0-4.8556 0.76202 0.71058 3.7759 85.75 0 0-0.18629 0.1412 0.71058 3.7759 85.75 0 0-4.3148 0.75334 0.71058 3.7759 85.75 0 0 0.79865 0.68719 0.71058 3.7759 85.75 0 0-1.0956 0.37109 0.71058 3.7759 85.75 0 0 2.188 0.76179 0.71058 3.7759 85.75 0 0 1.6611-0.0755 0.71058 3.7759 85.75 0 0 0.58626 0.20634c-1.5838 0.81344-3.6502 1.7689-4.912 1.9358h7.0625c-0.60825-0.19743 0.65221-1.1436 1.8931-1.9461a0.71058 3.7759 85.75 0 0 0.93103-0.13962 0.71058 3.7759 85.75 0 0 1.0734 0.04147 0.71058 3.7759 85.75 0 0 4.8559-0.7619 0.71058 3.7759 85.75 0 0 0.15959-0.41335 0.71058 3.7759 85.75 0 0 3.239-0.69023 0.71058 3.7759 85.75 0 0-1.7499-0.75559 0.71058 3.7759 85.75 0 0 0.59318-0.23823 0.71058 3.7759 85.75 0 0-2.1873-0.7619 0.71058 3.7759 85.75 0 0-0.0073 0z" filter="url(#a)" opacity=".29293"/>
<g transform="translate(0 .76687)" fill="none" stroke="#165016" stroke-linejoin="round" stroke-miterlimit="10" stroke-width=".52917">
<path d="m21.03 32.418c-1.8067-1.7285-1.7137-15.264-1.7137-15.264h-4.0032s0.11655 13.807-1.7137 15.264c2.2456 0.5569 4.9219 0.54751 7.4306 0z" fill="#784421" stroke="#520" stroke-linejoin="miter"/>
<g stroke-linecap="round">
<path d="m19.853 4.8651a3.7053 3.7053 0 0 0-3.1308 1.7364 3.7053 3.7053 0 0 0-2.6756-1.1422 3.7053 3.7053 0 0 0-3.7051 3.7056 3.7053 3.7053 0 0 0 0.06413 0.68699 3.7053 3.7053 0 0 0-3.1522 3.6638 3.7053 3.7053 0 0 0 2.1066 3.3422 3.7053 3.7053 0 0 0-0.46933 1.8044 3.7053 3.7053 0 0 0 3.7056 3.7051 3.7053 3.7053 0 0 0 1.6082-0.3673 3.7053 3.7053 0 0 0 3.0793 1.6441 3.7053 3.7053 0 0 0 2.8757-1.3696 3.7053 3.7053 0 0 0 1.2054 0.20163 3.7053 3.7053 0 0 0 3.7056-3.7051 3.7053 3.7053 0 0 0-0.59322-2.0104 3.7053 3.7053 0 0 0 2.1363-3.3567 3.7053 3.7053 0 0 0-3.2333-3.675 3.7053 3.7053 0 0 0 0.18559-1.1583 3.7053 3.7053 0 0 0-3.7051-3.7056 3.7053 3.7053 0 0 0-0.0078 0z" fill="#008000"/>
<path d="m21.229 15.95a3.5456 3.5456 0 0 1-3.4112 3.5431"/>
<path d="m16.184 13.936a3.5456 3.5456 0 0 1-3.5885-3.3633"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="a" x="-.15859" y="-.51947" width="1.3172" height="2.0389" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="1.5643811"/>
</filter>
</defs>
<path d="m30.286 26.313c-1.0397 0-2.2465 0.21032-2.7528 0.47141l-7.4788 3.8744h-1.4367c-1.1591 0-1.6245-0.22548-1.0969-0.51658l3.8457-2.1216c0.47458-0.26182 0.03608-0.47414-1.0063-0.47418-1.0426-3.4e-5 -2.2705 0.21231-2.769 0.47418l-4.0386 2.1216c-1.5796 0.82979-0.09108 1.5134 3.2129 1.5134h1.4367l-3.3842 1.8213s0.84357 0.06365 2.0382 0.06365 2.2742-0.06365 2.2742-0.06365l1.6997-0.91473h1.4346c3.304 0 7.3155-0.68358 8.8371-1.5134l5.2928-2.8864c0.49298-0.26545 0.03598-0.48063-1.0209-0.4806-1.0567 3.5e-5 -2.3131 0.2152-2.8065 0.4806l-5.4337 2.8864c-0.54803 0.29111-1.8576 0.51658-3.0166 0.51658h-1.4346s1.6157-0.86026 2.3977-1.2904c2.1158-1.1637 6.2066-3.4907 6.2066-3.4907 0.46423-0.26109 0.03925-0.47141-1.0005-0.47141z" filter="url(#a)" opacity=".3"/>
<path d="m17.005 4.8358c-1.0397 0-1.8557 0.83736-1.8769 1.8769l-0.27958 15.426h-1.4367c-1.1591 0-2.0435-0.89775-2.0567-2.0567l-0.09648-8.4468c-0.011911-1.0424-0.84494-1.8878-1.8874-1.8879-1.0427-1.358e-4 -1.876 0.84531-1.8879 1.8879l-0.096484 8.4468c-0.037737 3.3037 2.7211 6.0255 6.025 6.0255h1.4367v7.2513s0.96186 0.25344 2.1565 0.25344 2.156-0.25344 2.156-0.25344v-3.6419h1.4346c3.304 0 6.0453-2.7216 6.025-6.0255l-0.07043-11.492c-2.56e-4 -1.0569-0.8571-1.9136-1.914-1.9135-1.0567 1.4e-4 -1.9132 0.8568-1.9135 1.9135l-0.07043 11.492c-0.0071 1.159-0.89768 2.0567-2.0567 2.0567h-1.4346s0.01722-3.4251 0-5.1375c-0.04659-4.6333-0.27957-13.898-0.27957-13.898-0.020912-1.0395-0.83669-1.8769-1.8764-1.8769z" fill="#008000" stroke="#165016" stroke-linecap="round" stroke-miterlimit="10" stroke-width=".52917"/>
<g fill="none" stroke="#165016">
<g stroke-width=".26459px">
<path d="m7.3567 13.612-0.87638-0.50598"/>
<path d="m25.167 18.312v-1.012"/>
<path d="m20.596 25.748v-1.012"/>
<path d="m19.135 9.4531 0.76566-0.66168"/>
</g>
<path d="m13.559 22.676v-1.5164" stroke-width=".26458px"/>
<g stroke-width=".26459px">
<path d="m14.835 13.878-0.76566-0.66168"/>
<path d="m9.1202 14.749-0.14766-1.0011"/>
<path d="m18.101 19.814v-1.012"/>
<path d="m16.421 4.9697-0.28971-0.96959"/>
</g>
<path d="m15.445 30.47-1.3054-0.54959" stroke-width=".26458px"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="b" x="-.16846" y="-.43587" width="1.3369" height="1.8717" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="1.7102351"/>
</filter>
<filter id="a" x="-.16333" y="-.56099" width="1.3267" height="2.122" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="1.3242792"/>
</filter>
</defs>
<g transform="matrix(.59509 0 0 .59735 4.4276 .4313)" stroke-width="1.6772">
<path d="m45.072 25.609s-4.3968 1.9622-10.803 2.6422h3.8669c-3.1633 0.85532-6.287 1.5722-9.3052 1.9198h5.071c-3.6883 0.97533-7.3283 1.7825-10.854 2.1886h9.0491c-2.0764 1.1751-4.5118 2.4302-5.8222 2.6662h7.4306c-0.46758-0.27753 1.0808-1.5116 2.7294-2.6662h9.0429c-2.2252-0.40606-3.2802-1.2132-3.845-2.1886h5.071c-1.905-0.34762-2.7329-1.0645-3.1571-1.9198h3.8669c-4.1871-0.67966-2.3413-2.6422-2.3413-2.6422z" filter="url(#b)" opacity=".3" stroke-width="2.4757"/>
<g transform="translate(13.141 1.8094)" fill="none" stroke="#165016" stroke-miterlimit="10">
<path d="m20.645 33.176c-1.8067-1.7285-1.7137-15.264-1.7137-15.264h-4.0032s0.11655 13.807-1.7137 15.264c2.2456 0.5569 4.9219 0.54751 7.4306 0z" fill="#784421" stroke="#520" stroke-width=".88755"/>
<path d="m10.361 11.879h3.867c-1.7937 2.6889-3.7699 4.9427-6.2315 6.0355h5.0715c-2.1265 3.0662-4.4741 5.6036-7.3495 6.8802h22.429c-2.8754-1.2765-5.223-3.814-7.3495-6.8802h5.0715c-2.4616-1.0928-4.4378-3.3466-6.2315-6.0355h3.867c-5.2755-2.1367-6.572-8.3063-6.572-8.3063s-1.2545 6.1686-6.572 8.3063z" fill="#008000" stroke-width=".88755"/>
<path d="m19.989 20.875c0.99191 1.4962 2.5714 2.2156 2.5714 2.2156l-2.396-0.39422" stroke-width=".44378"/>
</g>
</g>
<g transform="translate(-6.4827 -1.3428)">
<path transform="matrix(1.0606 .00072439 .0040455 1.2568 1.4796 -6.6973)" d="m27.113 26.059a0.71058 3.7759 85.75 0 0-3.6012 0.35712 0.71058 3.7759 85.75 0 0-2.1317-0.23496 0.71058 3.7759 85.75 0 0-4.8556 0.76202 0.71058 3.7759 85.75 0 0-0.18629 0.1412 0.71058 3.7759 85.75 0 0-4.3148 0.75334 0.71058 3.7759 85.75 0 0 0.79865 0.68719 0.71058 3.7759 85.75 0 0-1.0956 0.37109 0.71058 3.7759 85.75 0 0 2.188 0.76179 0.71058 3.7759 85.75 0 0 1.6611-0.0755 0.71058 3.7759 85.75 0 0 0.58626 0.20634c-1.5838 0.81344-3.6502 1.7689-4.912 1.9358h7.0625c-0.60825-0.19743 0.65221-1.1436 1.8931-1.9461a0.71058 3.7759 85.75 0 0 0.93103-0.13962 0.71058 3.7759 85.75 0 0 1.0734 0.04147 0.71058 3.7759 85.75 0 0 4.8559-0.7619 0.71058 3.7759 85.75 0 0 0.15959-0.41335 0.71058 3.7759 85.75 0 0 3.239-0.69023 0.71058 3.7759 85.75 0 0-1.7499-0.75559 0.71058 3.7759 85.75 0 0 0.59318-0.23823 0.71058 3.7759 85.75 0 0-2.1873-0.7619 0.71058 3.7759 85.75 0 0-0.0073 0z" filter="url(#a)" opacity=".29293" stroke-width=".91864"/>
<g transform="translate(0 .76687)" fill="none" stroke="#165016" stroke-linejoin="round" stroke-miterlimit="10" stroke-width=".52917">
<path d="m21.03 32.418c-1.8067-1.7285-1.7137-15.264-1.7137-15.264h-4.0032s0.11655 13.807-1.7137 15.264c2.2456 0.5569 4.9219 0.54751 7.4306 0z" fill="#784421" stroke="#520" stroke-linejoin="miter"/>
<g stroke-linecap="round">
<path d="m19.853 4.8651a3.7053 3.7053 0 0 0-3.1308 1.7364 3.7053 3.7053 0 0 0-2.6756-1.1422 3.7053 3.7053 0 0 0-3.7051 3.7056 3.7053 3.7053 0 0 0 0.06413 0.68699 3.7053 3.7053 0 0 0-3.1522 3.6638 3.7053 3.7053 0 0 0 2.1066 3.3422 3.7053 3.7053 0 0 0-0.46933 1.8044 3.7053 3.7053 0 0 0 3.7056 3.7051 3.7053 3.7053 0 0 0 1.6082-0.3673 3.7053 3.7053 0 0 0 3.0793 1.6441 3.7053 3.7053 0 0 0 2.8757-1.3696 3.7053 3.7053 0 0 0 1.2054 0.20163 3.7053 3.7053 0 0 0 3.7056-3.7051 3.7053 3.7053 0 0 0-0.59322-2.0104 3.7053 3.7053 0 0 0 2.1363-3.3567 3.7053 3.7053 0 0 0-3.2333-3.675 3.7053 3.7053 0 0 0 0.18559-1.1583 3.7053 3.7053 0 0 0-3.7051-3.7056 3.7053 3.7053 0 0 0-0.0078 0z" fill="#008000"/>
<path d="m21.229 15.95a3.5456 3.5456 0 0 1-3.4112 3.5431"/>
<path d="m16.184 13.936a3.5456 3.5456 0 0 1-3.5885-3.3633"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4 KiB

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="a" x="-.16846" y="-.43587" width="1.3369" height="1.8717" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="1.7102351"/>
</filter>
</defs>
<path d="m31.931 23.799s-4.3968 1.9622-10.803 2.6422h3.8669c-3.1633 0.85532-6.287 1.5722-9.3052 1.9198h5.071c-3.6883 0.97533-7.3283 1.7825-10.854 2.1886h9.0491c-2.0764 1.1751-4.5118 2.4302-5.8222 2.6662h7.4306c-0.46758-0.27753 1.0808-1.5116 2.7294-2.6662h9.0429c-2.2252-0.40606-3.2802-1.2132-3.845-2.1886h5.071c-1.905-0.34762-2.7329-1.0645-3.1571-1.9198h3.8669c-4.1871-0.67966-2.3413-2.6422-2.3413-2.6422z" filter="url(#a)" opacity=".3"/>
<g fill="none" stroke="#165016" stroke-miterlimit="10">
<path d="m20.645 33.176c-1.8067-1.7285-1.7137-15.264-1.7137-15.264h-4.0032s0.11655 13.807-1.7137 15.264c2.2456 0.5569 4.9219 0.54751 7.4306 0z" fill="#784421" stroke="#520" stroke-width=".52917"/>
<path d="m10.361 11.879h3.867c-1.7937 2.6889-3.7699 4.9427-6.2315 6.0355h5.0715c-2.1265 3.0662-4.4741 5.6036-7.3495 6.8802h22.429c-2.8754-1.2765-5.223-3.814-7.3495-6.8802h5.0715c-2.4616-1.0928-4.4378-3.3466-6.2315-6.0355h3.867c-5.2755-2.1367-6.572-8.3063-6.572-8.3063s-1.2545 6.1686-6.572 8.3063z" fill="#008000" stroke-width=".52917"/>
<path d="m19.989 20.875c0.99191 1.4962 2.5714 2.2156 2.5714 2.2156l-2.396-0.39422" stroke-width=".26459"/>
<path d="m15.62 18.566c-0.99191 1.4962-2.5714 2.2156-2.5714 2.2156l2.396-0.39422" stroke-width=".26459"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -0,0 +1,32 @@
{
"id": "trees",
"title": {
"nl": "Bomen",
"en": "Trees"
},
"shortDescription": {
"nl": "Breng bomen in kaart",
"en": "Map all the trees"
},
"description": {
"nl": "Breng bomen in kaart!",
"en": "Map all the trees!"
},
"language": [
"nl",
"en"
],
"maintainer": "Midgard",
"icon": "./assets/themes/trees/logo.svg",
"version": "0",
"startLat": 50.642,
"startLon": 4.482,
"startZoom": 8,
"widenFactor": 0.01,
"socialImage": "./assets/themes/trees/logo.svg",
"layers": [
"tree_nodes"
],
"roamingRenderings": [],
"defaultBackgroundId": "AGIV"
}

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="a" x="-.17028" y="-.42413" width="1.3406" height="1.8483" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="1.7601899"/>
</filter>
</defs>
<path d="m20.596 33.189c-0.43004-0.27828 1.0053-1.4674 2.6144-2.6306 0.35911-0.06324 0.71398-0.13674 1.0544-0.22221 0.31765 0.04484 0.68862 0.06787 1.0988 0.06788 2.0463 5.5e-5 4.5784-0.55726 5.6551-1.2447 0.37513-0.23961 0.53656-0.47424 0.46462-0.67549 1.6239-0.20467 3.1452-0.64421 3.9022-1.1275 0.98053-0.62614 0.01511-1.0945-1.7087-1.1742 0.25238-0.48289-0.04797-0.7918-0.19158-0.90291-1.136-0.87881-0.13703-2.0504-0.13703-2.0504l5.5e-5 -3.5e-5s-4.4995 2.0722-10.942 2.7903h3.867c-3.2083 0.9033-6.3707 1.6606-9.4072 2.0277h5.0716c-3.7396 1.0301-7.4222 1.8825-10.969 2.3113l5.7295 0.0085c0.54033 8.08e-4 1.1437-0.04353 1.7557-0.12256 0.04997 0.11712 0.18041 0.21785 0.37689 0.3005-2.0688 1.189-4.4035 2.4066-5.6654 2.6445" filter="url(#a)" opacity=".3" stroke-miterlimit="10" stroke-width=".26458"/>
<path d="m20.645 33.169c-1.8067-1.7285-1.7137-15.264-1.7137-15.264h-4.0032s0.11655 13.807-1.7137 15.264c2.2456 0.5569 4.9219 0.54751 7.4306 0z" fill="#784421" stroke="#520" stroke-miterlimit="10" stroke-width=".52917"/>
<g stroke="#165016" stroke-miterlimit="10" stroke-width=".52917">
<path d="m21.147 9.6232c-2.5123-2.616-3.3481-6.1036-3.3481-6.1036l-5e-5 6e-5s-1.2543 6.1683-6.5718 8.306h3.867c-1.7937 2.6889-3.7701 4.9431-6.2317 6.0359h5.0716c-2.1265 3.0662-4.4741 5.6037-7.3495 6.8803l5.7429 0.02532" fill="#008000"/>
<path d="m12.328 24.767c0.5416 0.0024 1.0755-0.12958 1.5637-0.36484 0.68782 1.0275 1.843 1.6444 3.0794 1.6444 1.1159-2.15e-4 2.1724-0.50369 2.8758-1.37 0.38787 0.13347 0.79492 0.20203 1.2051 0.20206 2.0464 1.66e-4 3.7056-1.6588 3.7058-3.7052-1.2e-4 -0.71326-0.20613-1.4117-0.59325-2.0108 1.3034-0.60924 2.1363-1.9177 2.1363-3.3564-5.7e-5 -1.8639-1.6989-3.2578-3.5475-3.4953-0.50386-1.4374-1.2881-2.3572-1.6057-2.6879" fill="#008000" stroke-linejoin="round"/>
<path d="m20.915 18.352a3.5456 3.5456 0 0 1-3.4112 3.5431" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<path d="m10.444 28.037 11.818-20.486" fill="none" stroke="#000" stroke-linecap="round" stroke-miterlimit="10" stroke-width=".52917"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -70,5 +70,6 @@
<script src="./index.ts"></script> <script src="./index.ts"></script>
<script data-goatcounter="https://pietervdvn.goatcounter.com/count" async src="//gc.zgo.at/count.js"></script> <script data-goatcounter="https://pietervdvn.goatcounter.com/count" async src="//gc.zgo.at/count.js"></script>
</body> </body>
</html> </html>

View file

@ -64,7 +64,9 @@ if (layoutFromBase64.startsWith("wiki:")) {
new FixedUiElement(`Downloading ${themeName} from the wiki...`) new FixedUiElement(`Downloading ${themeName} from the wiki...`)
.AttachTo("centermessage"); .AttachTo("centermessage");
const cleanUrl = `https://wiki.openstreetmap.org/wiki/${themeName}`; const cleanUrl = `https://wiki.openstreetmap.org/wiki/${themeName}`;
const url = `https://cors-anywhere.herokuapp.com/` + cleanUrl; // VERY SAFE AND HACKER-PROOF! const url = `https://cors-anywhere.herokuapp.com/` + cleanUrl; // ~NOT~ VERY SAFE AND HACKER-PROOF!
/*/
const url = cleanUrl; // MUCH SAFER! //*/
$.ajax({ $.ajax({
url: url, url: url,