Omphaloskepsis-2/layouts/_partials/scripts/show_post_locations_on_map.js

47 lines
1.3 KiB
JavaScript
Raw Normal View History

2025-06-04 17:54:51 +02:00
{{- /*
Renders a post's locations on a map.
@params pc Page context.
@params locations_data Site data of locations.
@params locations Post locations.
*/
-}}
<!-- Validation -->
{{- if ( not ( isset . "pc" ) ) -}}
{{- errorf "No page context passed" -}}
{{- end -}}
{{- if ( not ( isset . "locations_data" ) ) -}}
{{- errorf "No location site data defined" -}}
{{- end -}}
{{- if ( not ( isset . "locations" ) ) -}}
{{- errorf "No post locations defined" -}}
{{- end -}}
<!-- Rendering -->
<script>
var map = L.map('map').setView([55, -3], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 19,
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(map);
var latLons = [];
{{ $locations_leaf_nodes := partialCached "util/get_location_leaf_nodes.html" .locations_data -}}
{{- range .locations -}}
{{- with ( index $locations_leaf_nodes ( replaceRE `, [A-Z]+` "" . ) ) -}}
L.marker([{{ .lat }}, {{ .lon }}]).addTo(map);
latLons.push([{{ .lat }}, {{ .lon }}]);
{{- else -}}
{{- erroridf "missing-lat-lon" "Could not find lat-lon for %q" . -}}
{{- end -}}
{{- end }}
map.fitBounds(latLons);
</script>