{
let container = html`<div style='height:600px;' />`;
yield container;
const client = tgmCoreClient("westcentraleurope");
let map = new mapboxgl.Map({
container,
center: [13.446677, 52.503556],
zoom: 13.25,
minZoom: 9,
style: client.basemaps.getGLStyleURL("Basic"),
attributionControl: false
})
.addControl(new mapboxgl.NavigationControl())
.addControl(
new mapboxgl.AttributionControl({
compact: true,
customAttribution: attribution
})
);
const POI_URL =
`https://api.targomo.com/pointofinterest/{z}/{x}/{y}.mvt?c_bus=de-gtfs-stops=bus&c_tram=de-gtfs-stops=tram&c_subway=de-gtfs-stops=subway&c_suburban=de-gtfs-stops=suburban&c_rail=de-gtfs-stops=rail&c_ferry=de-gtfs-stops=ferry` +
`&apiKey=${targomoKey()}&layerGeometryDetailPerTile=6&loadAllTags=true&layerType=node`;
map.on("load", async () => {
for (let icon of Object.keys(iconlookup)) {
if (!map.hasImage(icon)) map.addImage(icon, iconlookup[icon]);
}
map.addSource("pois", {
type: "vector",
tiles: [POI_URL],
minzoom: 11
});
const layers = {
ferry: map.addLayer({
id: "ferry",
type: "symbol",
source: "pois",
minzoom: 13,
"source-layer": "poi",
filter: ["has", "c_ferry"],
layout: {
"icon-image": "ferry",
"icon-size": 0.25
}
}),
bus: map.addLayer({
id: "bus",
type: "symbol",
source: "pois",
minzoom: 13.5,
"source-layer": "poi",
filter: ["has", "c_bus"],
layout: {
"icon-image": "bus",
"icon-size": 0.25
}
}),
tram: map.addLayer({
id: "tram",
type: "symbol",
source: "pois",
minzoom: 13.5,
"source-layer": "poi",
filter: ["has", "c_tram"],
layout: {
"icon-image": "tram",
"icon-size": 0.25
}
}),
subway: map.addLayer({
id: "subway",
type: "symbol",
source: "pois",
minzoom: 12,
"source-layer": "poi",
filter: ["has", "c_subway"],
layout: {
"icon-image": "subway",
"icon-size": 0.25
}
}),
suburban: map.addLayer({
id: "suburban",
type: "symbol",
source: "pois",
minzoom: 12,
"source-layer": "poi",
filter: ["has", "c_suburban"],
layout: {
"icon-image": "suburban",
"icon-size": 0.25
}
}),
rail: map.addLayer({
id: "rail",
type: "symbol",
source: "pois",
"source-layer": "poi",
filter: ["has", "c_rail"],
layout: {
"icon-image": "rail",
"icon-size": 0.25
}
})
};
const popup = new mapboxgl.Popup({
closeButton: false,
closeOnClick: false
});
});
}