feat: dynamic icons from strapi

master
gman 2 years ago
parent 684392e85b
commit 9df514fcdc

@ -42,12 +42,13 @@ export function KartaPage() {
pinImage.src = pin; pinImage.src = pin;
pinImage.onload = () => mapRef.current.addImage("pin-marker", pinImage); pinImage.onload = () => mapRef.current.addImage("pin-marker", pinImage);
const icons = initial ? ["prishvin", "ostrovskiy", "brusov"] : []; const markers = initial.map(article => ({markerName: `marker-${article.id}`, markerUrl: `${host}${article.attributes.marker.data.attributes.formats.thumbnail.url}`}));
icons.map((i) => { markers.map((m) => {
const iconImage = new Image(); const markerImage = new Image();
iconImage.src = `./markers/${i}.png`; markerImage.crossOrigin = "Anonymous"; // https://stackoverflow.com/questions/22097747/how-to-fix-getimagedata-error-the-canvas-has-been-tainted-by-cross-origin-data
iconImage.onload = () => markerImage.src = m.markerUrl;
mapRef.current.addImage(`${i}-marker`, iconImage); markerImage.onload = () =>
mapRef.current.addImage(m.markerName, markerImage);
}); });
}; };
@ -56,7 +57,6 @@ export function KartaPage() {
fetch(`${host}/api/articles?populate=*`) fetch(`${host}/api/articles?populate=*`)
.then((r) => r.json()) .then((r) => r.json())
.then((d) => { .then((d) => {
console.log(d.data);
setInitial(d.data); setInitial(d.data);
setArticles(d.data); setArticles(d.data);
}); });
@ -265,24 +265,18 @@ export function KartaPage() {
} }
layout={{ layout={{
"icon-image": [ "icon-image": [
"match", "concat",
["get", "id"], "marker-",
6, ["get", "id"]
"ostrovskiy-marker",
7,
"brusov-marker",
1,
"prishvin-marker",
"pin-marker",
], ],
"icon-size": [ "icon-size": [
"interpolate", "interpolate",
["linear"], ["linear"],
["zoom"], ["zoom"],
12, 12,
0.05, 0.4,
14, 14,
0.1, 0.8,
], ],
}} }}
minzoom={12} minzoom={12}

Loading…
Cancel
Save