const L = require('leaflet');
const color = require('color');
require('leaflet/dist/leaflet.css');
// MAP
const map = L.map('map').setView([43.610, 3.8612], 14);
L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
attribution: [
// TODO: Attribution des données TaM
`Données cartographiques © Contributeurs d’OpenStreetMap, CC-BY-SA`,
'Imagerie © Mapbox',
].join(' | '),
id: 'mapbox/streets-v11',
tileSize: 512,
accessToken: 'pk.eyJ1IjoibWF0dGVvZGVsYWJyZSIsImEiOiJjazUxaWNsdXcwdWhjM29tc2xndXJoNGtxIn0.xELwMerqJLFimIqU6RxnZw',
maxZoom: 18,
zoomSnap: 0,
zoomOffset: -1,
}).addTo(map);
//
//
// TAM
const makeBorderColor = mainColor =>
{
const hsl = color(mainColor).hsl();
if (hsl.color[2] < 40)
{
hsl.color[2] += 30;
}
else
{
hsl.color[2] -= 20;
}
return hsl.hex();
};
const SERVER = window.origin;
fetch(SERVER + '/line/1').then(res => res.json()).then(line =>
{
const color = line.color;
const borderColor = makeBorderColor(color);
line.routes.forEach(route =>
{
route.ways.forEach(way =>
{
const wayPoints = way.map(({lat, lon}) => [lat, lon]);
L.polyline(wayPoints, {weight: 8, color: borderColor}).addTo(map);
L.polyline(wayPoints, {weight: 6, color}).addTo(map);
});
});
line.routes.forEach(route =>
{
route.stops.forEach(stop =>
{
const stopMarker = L.circleMarker(
[stop.lat, stop.lon],
{
fillColor: color,
radius: 6,
fillOpacity: 1,
color: borderColor,
weight: 2
}
).addTo(map);
stopMarker.bindPopup(stop.name);
});
});
});