streckenkarte/frontend/map.js

48 lines
1.2 KiB
JavaScript
Raw Normal View History

2024-08-24 18:48:32 +00:00
const rules = new Array;
const l = new Array;
var legend = L.control({position: 'bottomleft'});
legend.onAdd = function (map) {
var div = L.DomUtil.create('div', 'legend');
for (var i = 0; i < l.length; i++) {
div.innerHTML += '<span class="dot" style="background: ' + l[i]["color"] + '" ></span>' + l[i]["name"] + "<br>";
}
return div;
};
var strecken = protomapsL.leafletLayer({
url: "strecken.pmtiles",
maxDataZoom: 10,
maxZoom: 19,
paintRules: rules,
});
const map = L.map("map", { center: [52,13], zoom: 3, minZoom: 0 });
fetch("layers.json")
.then((response) => response.json())
.then((data) => {
document.title = data["name"]
layers = data["layers"]
for (let key in layers) {
l.push({ name: layers[key]["humanname"], color: layers[key]["color"] });
rules.push({
dataLayer: key,
symbolizer: new protomapsL.LineSymbolizer(layers[key])
});
}
const tiles = data["tilelayer"]
var osm = L.tileLayer(
tiles["url_template"],
{
maxZoom: 19,
attribution: tiles["attribution"]
}
)
osm.addTo(map);
legend.addTo(map);
strecken.addTo(map);
})