Folium-Karten: die Blockade war eine falsche Alternative
Der einzige Punkt, der in diesem Projekt je als "blockiert" gefuehrt wurde,
ist erledigt. Die Begruendung lautete: Die VRP-Instanz sei ein synthetisches
100 x 100-km-Raster ohne Geokoordinaten, eine echte Karte verlange also
ENTWEDER eine neue Instanz (und damit zwei Dutzend neue abgedruckte Zahlen)
ODER eine willkuerliche Verankerung.
Es gibt einen dritten Weg, und er ist exakt. Eine azimutal-aequidistante
Projektion um den Schwerpunkt des Rasters bildet die 17 Punkte so auf Laenge
und Breite ab, dass die Grosskreisdistanzen mit den Rasterdistanzen
uebereinstimmen:
festes cos(Breite) Median 0,360 % Maximum 2,003 %
cos der eigenen Breite Median 0,351 % Maximum 0,908 %
azimutal-aequidistant Median 0,000 % Maximum 0,001 %
Ein Meter auf hundert Kilometer. Kein abgedruckter Wert aendert sich, die
Gesamtstrecke bleibt bei 619 km, das SVG ist byte-identisch geblieben.
Zwei Befunde stuetzten die Entscheidung: "100 x 100 km Raster" steht nur in
zwei Codekommentaren, nirgends im Fliesstext; und der didaktische Punkt der
Bildunterschrift - die sich kreuzenden Touren, die KEIN Fehler sind - wird auf
einer Karte deutlicher.
erzeuge_vrp_touren.py schreibt jetzt SVG UND Karte aus einem Lauf. Ein zweites
Skript haette erneut geloest, und die Routing-Bibliothek arbeitet heuristisch.
pruefe_projektion() bricht ab, wenn die Verzerrung 0,01 % ueberschreitet - die
Zahl im Buch wird bei jedem Lauf bewiesen.
Neu im Build: die Marke {karte:name}, aufgeloest zu einem <iframe> (Leaflets
Stylesheet soll nicht in die Buchseite greifen), im PDF zum Verweissatz - wie
bei {plotly:}. --check bewacht jetzt beide Markenarten auf Existenz der Datei;
gegengeprueft mit einer absichtlich falschen Marke.
Zwei Vorkehrungen, die ohne Messung nicht aufgefallen waeren:
* Folium vergibt jedem Element eine uuid4 - jeder Lauf erzeugte eine andere
Datei. normalisiere() ersetzt sie durch fortlaufende Nummern; zwei Laeufe
liefern jetzt dieselbe Pruefsumme.
* Folium bindet ZEHN CDN-Ressourcen ein (jQuery, Bootstrap, Glyphicons,
FontAwesome, awesome-markers ...). Gebraucht werden ZWEI. leaflet.js und
leaflet.css liegen jetzt in web_04/assets/, die uebrigen acht entfallen.
Nachgeprueft: Die Karte benutzt ausschliesslich L.*-Aufrufe. Ohne Netz
fehlen nur die Kacheln, Marker und Touren bleiben sichtbar.
Gegenrechnung an vier Strecken: Depot -> K1 misst auf der Karte 27,20 km, die
Distanzmatrix sagt 27 - die Differenz stammt aus deren int(), nicht aus der
Geographie.
Veroeffentlicht: 8 Dateien uebertragen, alle dreizehn HTTP-Proben richtig, die
Karte auf dem Server unter 200 erreichbar.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
d37834ccb5
commit
5d5bdb6508
19 changed files with 2521 additions and 5 deletions
430
bilder_04/karten/kap_graphen_vrp_touren.html
Normal file
430
bilder_04/karten/kap_graphen_vrp_touren.html
Normal file
|
|
@ -0,0 +1,430 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
<script src="../../assets/leaflet.js"></script>
|
||||
<link rel="stylesheet" href="../../assets/leaflet.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_01 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
.leaflet-container { font-size: 1rem; }
|
||||
</style>
|
||||
|
||||
<style>html, body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style>#map {
|
||||
position:absolute;
|
||||
top:0;
|
||||
bottom:0;
|
||||
right:0;
|
||||
left:0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<div class="folium-map" id="map_01" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
|
||||
var map_01 = L.map(
|
||||
"map_01",
|
||||
{
|
||||
center: [50.99937073954281, 9.200100716327679],
|
||||
crs: L.CRS.EPSG3857,
|
||||
...{
|
||||
"zoom": 9,
|
||||
"zoomControl": true,
|
||||
"preferCanvas": false,
|
||||
}
|
||||
|
||||
}
|
||||
);
|
||||
L.control.scale().addTo(map_01);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_02 = L.tileLayer(
|
||||
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{
|
||||
"minZoom": 0,
|
||||
"maxZoom": 19,
|
||||
"maxNativeZoom": 19,
|
||||
"noWrap": false,
|
||||
"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors",
|
||||
"subdomains": "abc",
|
||||
"detectRetina": false,
|
||||
"tms": false,
|
||||
"opacity": 1,
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
|
||||
tile_layer_02.addTo(map_01);
|
||||
|
||||
|
||||
var poly_line_03 = L.polyline(
|
||||
[[50.8902981044233, 9.493705194696913], [50.53528002580979, 9.056780383216372], [50.70020093721884, 9.023183616953922], [50.899334211646234, 8.572820141079644], [50.828627944796516, 8.85527539693994], [50.8902981044233, 9.493705194696913]],
|
||||
{"bubblingMouseEvents": true, "color": "#4338ca", "dashArray": null, "dashOffset": null, "fill": false, "fillColor": "#4338ca", "fillOpacity": 0.2, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "noClip": false, "opacity": 0.85, "smoothFactor": 1.0, "stroke": true, "weight": 3}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
poly_line_03.bindTooltip(
|
||||
`<div>
|
||||
Fahrzeug 1: 172 km, 10/10 Einheiten
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var poly_line_04 = L.polyline(
|
||||
[[50.8902981044233, 9.493705194696913], [51.202571214486355, 9.47729598790725], [51.23585035464649, 9.309049094203546], [51.36580069667539, 9.454691406682949], [51.2977516796715, 9.779278159065392], [50.8902981044233, 9.493705194696913]],
|
||||
{"bubblingMouseEvents": true, "color": "#0891b2", "dashArray": null, "dashOffset": null, "fill": false, "fillColor": "#0891b2", "fillOpacity": 0.2, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "noClip": false, "opacity": 0.85, "smoothFactor": 1.0, "stroke": true, "weight": 3}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
poly_line_04.bindTooltip(
|
||||
`<div>
|
||||
Fahrzeug 2: 135 km, 9/10 Einheiten
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var poly_line_05 = L.polyline(
|
||||
[[50.8902981044233, 9.493705194696913], [51.12239321211423, 9.61645605992352], [51.0634545325666, 9.57161203934019], [50.81449346507728, 9.470641609414168], [50.8902981044233, 9.493705194696913]],
|
||||
{"bubblingMouseEvents": true, "color": "#b45309", "dashArray": null, "dashOffset": null, "fill": false, "fillColor": "#b45309", "fillOpacity": 0.2, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "noClip": false, "opacity": 0.85, "smoothFactor": 1.0, "stroke": true, "weight": 3}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
poly_line_05.bindTooltip(
|
||||
`<div>
|
||||
Fahrzeug 3: 70 km, 8/10 Einheiten
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var poly_line_06 = L.polyline(
|
||||
[[50.8902981044233, 9.493705194696913], [51.32909155311604, 8.916255495545233], [51.37139606353655, 8.517488901092882], [51.108758805458066, 8.607477788041049], [50.553365253206685, 9.181091101072626], [50.67063451777786, 9.498609802394965], [50.8902981044233, 9.493705194696913]],
|
||||
{"bubblingMouseEvents": true, "color": "#059669", "dashArray": null, "dashOffset": null, "fill": false, "fillColor": "#059669", "fillOpacity": 0.2, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "noClip": false, "opacity": 0.85, "smoothFactor": 1.0, "stroke": true, "weight": 3}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
poly_line_06.bindTooltip(
|
||||
`<div>
|
||||
Fahrzeug 4: 242 km, 10/10 Einheiten
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_07 = L.circleMarker(
|
||||
[51.12239321211423, 9.61645605992352],
|
||||
{"bubblingMouseEvents": true, "color": "#b45309", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#b45309", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 6.8, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_07.bindTooltip(
|
||||
`<div>
|
||||
K1 — Bedarf 2, Zeitfenster 30–120 min<br>Fahrzeug 3, Stopp 1
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_08 = L.circleMarker(
|
||||
[51.37139606353655, 8.517488901092882],
|
||||
{"bubblingMouseEvents": true, "color": "#059669", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#059669", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 8.2, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_08.bindTooltip(
|
||||
`<div>
|
||||
K2 — Bedarf 3, Zeitfenster 60–180 min<br>Fahrzeug 4, Stopp 2
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_09 = L.circleMarker(
|
||||
[51.202571214486355, 9.47729598790725],
|
||||
{"bubblingMouseEvents": true, "color": "#0891b2", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#0891b2", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 5.4, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_09.bindTooltip(
|
||||
`<div>
|
||||
K3 — Bedarf 1, Zeitfenster 100–240 min<br>Fahrzeug 2, Stopp 1
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_10 = L.circleMarker(
|
||||
[50.899334211646234, 8.572820141079644],
|
||||
{"bubblingMouseEvents": true, "color": "#4338ca", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#4338ca", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 9.6, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_10.bindTooltip(
|
||||
`<div>
|
||||
K4 — Bedarf 4, Zeitfenster 150–300 min<br>Fahrzeug 1, Stopp 3
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_11 = L.circleMarker(
|
||||
[51.32909155311604, 8.916255495545233],
|
||||
{"bubblingMouseEvents": true, "color": "#059669", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#059669", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 6.8, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_11.bindTooltip(
|
||||
`<div>
|
||||
K5 — Bedarf 2, Zeitfenster 60–180 min<br>Fahrzeug 4, Stopp 1
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_12 = L.circleMarker(
|
||||
[51.23585035464649, 9.309049094203546],
|
||||
{"bubblingMouseEvents": true, "color": "#0891b2", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#0891b2", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 6.8, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_12.bindTooltip(
|
||||
`<div>
|
||||
K6 — Bedarf 2, Zeitfenster 120–240 min<br>Fahrzeug 2, Stopp 2
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_13 = L.circleMarker(
|
||||
[50.70020093721884, 9.023183616953922],
|
||||
{"bubblingMouseEvents": true, "color": "#4338ca", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#4338ca", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 8.2, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_13.bindTooltip(
|
||||
`<div>
|
||||
K7 — Bedarf 3, Zeitfenster 200–360 min<br>Fahrzeug 1, Stopp 2
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_14 = L.circleMarker(
|
||||
[50.553365253206685, 9.181091101072626],
|
||||
{"bubblingMouseEvents": true, "color": "#059669", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#059669", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 5.4, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_14.bindTooltip(
|
||||
`<div>
|
||||
K8 — Bedarf 1, Zeitfenster 300–450 min<br>Fahrzeug 4, Stopp 4
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_15 = L.circleMarker(
|
||||
[51.0634545325666, 9.57161203934019],
|
||||
{"bubblingMouseEvents": true, "color": "#b45309", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#b45309", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 6.8, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_15.bindTooltip(
|
||||
`<div>
|
||||
K9 — Bedarf 2, Zeitfenster 180–300 min<br>Fahrzeug 3, Stopp 2
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_16 = L.circleMarker(
|
||||
[50.81449346507728, 9.470641609414168],
|
||||
{"bubblingMouseEvents": true, "color": "#b45309", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#b45309", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 9.6, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_16.bindTooltip(
|
||||
`<div>
|
||||
K10 — Bedarf 4, Zeitfenster 240–360 min<br>Fahrzeug 3, Stopp 3
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_17 = L.circleMarker(
|
||||
[51.2977516796715, 9.779278159065392],
|
||||
{"bubblingMouseEvents": true, "color": "#0891b2", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#0891b2", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 8.2, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_17.bindTooltip(
|
||||
`<div>
|
||||
K11 — Bedarf 3, Zeitfenster 300–480 min<br>Fahrzeug 2, Stopp 4
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_18 = L.circleMarker(
|
||||
[50.67063451777786, 9.498609802394965],
|
||||
{"bubblingMouseEvents": true, "color": "#059669", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#059669", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 6.8, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_18.bindTooltip(
|
||||
`<div>
|
||||
K12 — Bedarf 2, Zeitfenster 360–500 min<br>Fahrzeug 4, Stopp 5
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_19 = L.circleMarker(
|
||||
[50.53528002580979, 9.056780383216372],
|
||||
{"bubblingMouseEvents": true, "color": "#4338ca", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#4338ca", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 5.4, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_19.bindTooltip(
|
||||
`<div>
|
||||
K13 — Bedarf 1, Zeitfenster 60–200 min<br>Fahrzeug 1, Stopp 1
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_20 = L.circleMarker(
|
||||
[51.108758805458066, 8.607477788041049],
|
||||
{"bubblingMouseEvents": true, "color": "#059669", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#059669", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 6.8, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_20.bindTooltip(
|
||||
`<div>
|
||||
K14 — Bedarf 2, Zeitfenster 120–300 min<br>Fahrzeug 4, Stopp 3
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_21 = L.circleMarker(
|
||||
[51.36580069667539, 9.454691406682949],
|
||||
{"bubblingMouseEvents": true, "color": "#0891b2", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#0891b2", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 8.2, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_21.bindTooltip(
|
||||
`<div>
|
||||
K15 — Bedarf 3, Zeitfenster 240–400 min<br>Fahrzeug 2, Stopp 3
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_22 = L.circleMarker(
|
||||
[50.828627944796516, 8.85527539693994],
|
||||
{"bubblingMouseEvents": true, "color": "#4338ca", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#4338ca", "fillOpacity": 0.75, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 6.8, "stroke": true, "weight": 2}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_22.bindTooltip(
|
||||
`<div>
|
||||
K16 — Bedarf 2, Zeitfenster 300–550 min<br>Fahrzeug 1, Stopp 4
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var circle_marker_23 = L.circleMarker(
|
||||
[50.8902981044233, 9.493705194696913],
|
||||
{"bubblingMouseEvents": true, "color": "#be123c", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "#be123c", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 9, "stroke": true, "weight": 3}
|
||||
).addTo(map_01);
|
||||
|
||||
|
||||
circle_marker_23.bindTooltip(
|
||||
`<div>
|
||||
Depot — Schicht 0–600 min
|
||||
</div>`,
|
||||
{
|
||||
"sticky": true,
|
||||
}
|
||||
);
|
||||
|
||||
</script>
|
||||
</html>
|
||||
Loading…
Reference in a new issue