{
let container = html`<div style='height:800px;' />`;
let hexagons = null;
let zoom = 1;
const colors = colorScale
.range()
.map(function (d, i) {
if (i == 0) {
return [0, d];
} else {
return [colorScale.domain()[i - 1], d];
}
})
.flat();
yield container;
let map = new mapboxgl.Map({
container,
zoom: zoom,
style: "mapbox://styles/franckalbinet/ckyaawysn1qlg15ny2auxlk8k",
projection: {
name: projMapbox
}
});
map.addControl(new mapboxgl.NavigationControl(), "top-right");
map.on("load", () => {
map.addSource("hexbins", {
type: "geojson",
data: getHexagons(
selected,
zoomScale(map.getZoom()),
bboxToPoly(map.getBounds())
)
});
map.addLayer({
id: "hexbins",
type: "fill",
source: "hexbins",
layout: {},
paint: {
"fill-color": ["interpolate", ["linear"], ["get", "value"], ...colors],
"fill-opacity": 0.8
}
});
map.on("zoomend", () => {
console.log(map.getZoom());
map
.getSource("hexbins")
.setData(
getHexagons(
selected,
zoomScale(map.getZoom()),
bboxToPoly(map.getBounds())
)
);
});
map.on("moveend", () => {
map
.getSource("hexbins")
.setData(
getHexagons(
selected,
zoomScale(map.getZoom()),
bboxToPoly(map.getBounds())
)
);
});
});
map.addControl(new mapboxgl.FullscreenControl());
invalidation.then(() => map.remove());
}