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

Loading…
Cancel
Save