var map = L.map('map');
// L.tileLayer('https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm-lite/{z}/{x}/{y}.png', { // not working, cyclosm should be self-hosted
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
minZoom: 6, // avoid zooming outside track range, roughly, to prevent extra tile requests
maxZoom: 12,
attribution: 'Map data © <a href="http://www.osm.org">OpenStreetMap</a>'
}).addTo(map);
function download(url) {
const a = document.createElement('a')
a.href = url
a.download = url.split('/').pop()
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
function addGPX(map, gpx, lineColor, desc) {
new L.GPX(gpx, {
async: true,
marker_options: {
startIconUrl: '../gpx/20260314_london_italy/images/pin-icon-start.png',
endIconUrl: '../gpx/20260314_london_italy/images/pin-icon-end.png',
shadowUrl: '../gpx/20260314_london_italy/images/pin-shadow.png'
},
polyline_options: {
color: lineColor,
opacity: 1,
weight: 3,
lineCap: 'round'
}
}).on('loaded', function(e) {
map.fitBounds(e.target.getBounds());
}).on('mouseover', function(e) {
this.bindTooltip(
"Click to download: " + gpx.split("/")[3],
{ sticky: true }
)
this.openPopup(e.latlng);
}).on('mouseout', function(e) {
setTimeout(this.closePopup(), 500);
}).on('click', function(e) {
setTimeout(this.closePopup(), 500);
download(gpx);
}).addTo(map);
// setTimeout(function(){ map.invalidateSize()}, 500);
}
addGPX(map, '../gpx/20260314_london_italy/2026-02-27-London.gpx', 'purple')
addGPX(map, '../gpx/20260314_london_italy/2026-02-28-Tendring.gpx', 'purple')
addGPX(map, '../gpx/20260314_london_italy/2026-03-01-Rotterdam.gpx', 'purple')
addGPX(map, '../gpx/20260314_london_italy/2026-03-05-Amsterdam.gpx', 'purple')
addGPX(map, '../gpx/20260314_london_italy/2026-03-06-Tilburg.gpx', 'purple')
addGPX(map, '../gpx/20260314_london_italy/2026-03-07-Liege.gpx', 'purple')
addGPX(map, '../gpx/20260314_london_italy/2026-03-08-Luxembourg.gpx', 'purple')
addGPX(map, '../gpx/20260314_london_italy/2026-03-09-BaD.gpx', 'purple')
addGPX(map, '../gpx/20260314_london_italy/2026-03-10-Strasbourg.gpx', 'purple')
addGPX(map, '../gpx/20260314_london_italy/2026-03-11-Kirchzarten.gpx', 'purple')
addGPX(map, '../gpx/20260314_london_italy/2026-03-12-Montreux-failed.gpx', 'red')