From 755720bac95c9860950855cc96f12f657eeb9605 Mon Sep 17 00:00:00 2001 From: arifal Date: Fri, 7 Mar 2025 16:41:52 +0700 Subject: [PATCH] fix failed build images from leaflet --- public/leaflet/layers-2x.png | Bin 0 -> 1259 bytes public/leaflet/layers.png | Bin 0 -> 696 bytes public/leaflet/marker-icon-2x.png | Bin 0 -> 2464 bytes public/leaflet/marker-icon.png | Bin 0 -> 1466 bytes public/leaflet/marker-shadow.png | Bin 0 -> 618 bytes resources/js/data/tourisms/data-tourisms.js | 152 +++++++++++--------- 6 files changed, 88 insertions(+), 64 deletions(-) create mode 100644 public/leaflet/layers-2x.png create mode 100644 public/leaflet/layers.png create mode 100644 public/leaflet/marker-icon-2x.png create mode 100644 public/leaflet/marker-icon.png create mode 100644 public/leaflet/marker-shadow.png diff --git a/public/leaflet/layers-2x.png b/public/leaflet/layers-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..200c333dca9652ac4cba004d609e5af4eee168c1 GIT binary patch literal 1259 zcmVFhCYNy;#0irRPomHqW|G1C*;4?@4#E?jH>?v@U%cy?3dQAc-DchXVErpOh~ z-jbon+tNbnl6hoEb;)TVk+%hTDDi_G%i3*RZ&15!$Fjr^f;Ke&A@|?=`2&+{zr+3a z{D*=t(`AXyS%X7N z%a#RZw6vD^t_rnM`L4E>m=U&R!A-&}nZIi$BOPvkhrCuUe@BN~-lRD)f44;J%TwgE zcze8u!PQ_NR7?o(NylLXVTfDO zxs5=@|GsYEsNo4M#nT%N!UE(?dnS)t2+{ELYAFp*3=iF=|EQnTp`#vlSXuGVraYo? z+RCzXo6h3qA8{KG?S4nE(lM+;Eb4nT3XV;7gcAxUi5m)`k5tv}cPy()8ZR3TLW3I- zAS^}cq-IJvL7a4RgR!yk@~RT%$lA7{L5ES*hyx)M4(yxI$Ub(4f)K|^v1>zvwQY!_ zIrWw8q9GS^!Dp~}+?mbnB6jDF8mVlbQ!jFKDY;w=7;XO{9bq7>LXGK24WA`;rL)_Z z)&j}pbV(;6gY;VMhbxgvn`X;6x}VUEE-7 z%)7j-%t8S=ZL3yc)HbXDAqJZvBTPoiW_A-+a8m3_Z?v{DN7Tnr#O_VUMT0UBt$;p` zDh6JbGHN8JJ*JN%y2%msb97@_S>9!%Egwk;?PEkU9ntz&3uR}%Fj5d$JHQbQb3}a{ zSzFT^#n=VInPpcAS}CNxj?_ zVscANk5Cfz(51EI1pz};AWWb|kgbYNb4wCEGUn3+eMUMV?1-{=I4TlmLJMot@rd07 zZuo2hk1ccu{YmGkcYdWAVdk{Z4Nm?^cTD&}jGm+Q1SYIXMwmG*oO*83&#>l%nbR`G zhh=lZ%xIb7kU3#;TBbfECrnC9P=-XpL|TG2BoZdj61*XiFbW8?1Z_wp%#;>${SUIy V$8qr;L*)Pf002ovPDHLkV1hYLS~36t literal 0 HcmV?d00001 diff --git a/public/leaflet/layers.png b/public/leaflet/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..1a72e5784b2b456eac5d7670738db80697af3377 GIT binary patch literal 696 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 e-I|>x8~*?ZhF3snGbtJX0000cOl4 literal 0 HcmV?d00001 diff --git a/public/leaflet/marker-icon.png b/public/leaflet/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..950edf24677ded147df13b26f91baa2b0fa70513 GIT binary patch literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Amke9$Lam@{1K@O ze*LXqlKQHiv=gx+V^Cbb2?z@ISBQ*3amF;9UJ3SBg(N|710TLamQmYZ&Qjn2LuO<* zCZlB4n%@pc&7NNnY1}x+NWpHlq`OJEo|`aYN9<`RBUB+79g;>dgb6YlfN#kGL?lO_ z!6~M^7sOnbsUkKk<@Ysie&`G>ruxH&Mgy&8;i=A zB9OO!xR{AyODw>DS-q5YM{0ExFEAzt zm>RdS+ssW(-8|?xr0(?$vBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrP zs(rTFX@W#t$hXNvbgX`gK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z!4=W zi$giRj1{ zt;2w`VSCF#WE&*ev7jpsC=6175@(~nTE2;7M-L((0bH@yG}-TB$R~WXd?tA$s3|%y zA`9$sA(>F%J3ioz<-LJl*^o1|w84l>HBR`>3l9c8$5Xr@xCiIQ7{x$fMCzOk_-M=% z+{a_Q#;42`#KfUte@$NT77uaTz?b-fBe)1s5XE$yA79fm?KqM^VgLXD07*qoM6N<$ Ef<_J(9smFU literal 0 HcmV?d00001 diff --git a/resources/js/data/tourisms/data-tourisms.js b/resources/js/data/tourisms/data-tourisms.js index 0106273..54d4d9f 100644 --- a/resources/js/data/tourisms/data-tourisms.js +++ b/resources/js/data/tourisms/data-tourisms.js @@ -44,9 +44,9 @@ const dataTourismsColumns = [ ` + `; } - + // Tampilkan tombol Edit jika user punya akses update if (canUpdate) { hasPrivilege = true; @@ -65,13 +65,17 @@ const dataTourismsColumns = [ ` + `; } - actionButtons += ''; + actionButtons += ""; // Jika tidak memiliki akses, tampilkan teks "No Privilege" - return gridjs.html(hasPrivilege ? actionButtons : 'No Privilege'); - } + return gridjs.html( + hasPrivilege + ? actionButtons + : 'No Privilege' + ); + }, }, ]; @@ -82,6 +86,15 @@ document.addEventListener("DOMContentLoaded", () => { `${GlobalConfig.apiHost}`, dataTourismsColumns ); + const customIcon = new L.Icon({ + iconUrl: "/leaflet/marker-icon.png", + iconRetinaUrl: "leaflet/marker-icon-2x.png", + shadowUrl: "/leaflet/marker-shadow.png", + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + shadowSize: [41, 41], + }); table.processData = function (data) { return data.data.map((item) => { @@ -142,11 +155,14 @@ document.addEventListener("DOMContentLoaded", () => { setTimeout(() => { if (!map) { map = L.map("map").setView([lat, long], 14); - + // Tambahkan tile layer (peta dasar) - L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", { - attribution: '© OpenStreetMap contributors' - }).addTo(map); + L.tileLayer( + "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", + { + attribution: "© OpenStreetMap contributors", + } + ).addTo(map); } else { map.setView([lat, long], 14); } @@ -156,65 +172,73 @@ document.addEventListener("DOMContentLoaded", () => { } // Tambahkan marker untuk lokasi - L.marker([lat, long]).addTo(map) - .bindPopup(`${district}
Lat: ${lat}, Long: ${long}`) + L.marker([lat, long], { icon: customIcon }) + .addTo(map) + .bindPopup( + `${district}
Lat: ${lat}, Long: ${long}` + ) .openPopup(); // Tambahkan GeoJSON ke dalam peta fetch(`/storage/maps/tourisms/${district.toUpperCase()}.json`) - .then((res) => res.json()) - .then((geojson) => { - let colorMapping = { - BJ: "rgb(235, 30, 30)", - BA: "rgb(151, 219, 242)", - CA: "rgb(70, 70, 165)", - "P-2": "rgb(230, 255, 75)", - HL: "rgb(50, 95, 40)", - HPT: "rgb(75, 155, 55)", - HP: "rgb(125, 180, 55)", - W: "rgb(255, 165, 255)", - PTL: "rgb(0, 255, 205)", - "IK-2": "rgb(130, 185, 210)", - "P-3": "rgb(175, 175, 55)", - PS: "rgb(5, 215, 215)", - PD: "rgb(235, 155, 60)", - PK: "rgb(245, 155, 30)", - HK: "rgb(155, 0, 255)", - KPI: "rgb(105, 0, 0)", - MBT: "rgb(95, 115, 145)", - "P-4": "rgb(185, 235, 185)", - TB: "rgb(70, 150, 255)", - "P-1": "rgb(200, 245, 70)", - TR: "rgb(215, 55, 0)", - THR: "rgb(185, 165, 255)", - TWA: "rgb(210, 190, 255)", - }; - var geoLayer = L.geoJSON(geojson, { - style: function (feature) { - let htmlString = feature.properties.description.toString(); - let match = htmlString.match( - /Kode Zona<\/td>\s*(.*?)<\/td>/ - ); + .then((res) => res.json()) + .then((geojson) => { + let colorMapping = { + BJ: "rgb(235, 30, 30)", + BA: "rgb(151, 219, 242)", + CA: "rgb(70, 70, 165)", + "P-2": "rgb(230, 255, 75)", + HL: "rgb(50, 95, 40)", + HPT: "rgb(75, 155, 55)", + HP: "rgb(125, 180, 55)", + W: "rgb(255, 165, 255)", + PTL: "rgb(0, 255, 205)", + "IK-2": "rgb(130, 185, 210)", + "P-3": "rgb(175, 175, 55)", + PS: "rgb(5, 215, 215)", + PD: "rgb(235, 155, 60)", + PK: "rgb(245, 155, 30)", + HK: "rgb(155, 0, 255)", + KPI: "rgb(105, 0, 0)", + MBT: "rgb(95, 115, 145)", + "P-4": "rgb(185, 235, 185)", + TB: "rgb(70, 150, 255)", + "P-1": "rgb(200, 245, 70)", + TR: "rgb(215, 55, 0)", + THR: "rgb(185, 165, 255)", + TWA: "rgb(210, 190, 255)", + }; + var geoLayer = L.geoJSON(geojson, { + style: function (feature) { + let htmlString = + feature.properties.description.toString(); + let match = htmlString.match( + /Kode Zona<\/td>\s*(.*?)<\/td>/ + ); - let color_code = match[1]; - return { - color: colorMapping[color_code], - fillColor: colorMapping[color_code] || "#cccccc", - fillOpacity: 0.6, - weight: 1.5, - }; - }, - onEachFeature: function(feature, layer) { - if (feature.properties && feature.properties.name) { - layer.bindPopup(feature.properties.name); - } - }, - }).addTo(map); - map.fitBounds(geoLayer.getBounds()); - }) - .catch((error) => { - console.error("Error loading GeoJSON:", error); - }); + let color_code = match[1]; + return { + color: colorMapping[color_code], + fillColor: + colorMapping[color_code] || "#cccccc", + fillOpacity: 0.6, + weight: 1.5, + }; + }, + onEachFeature: function (feature, layer) { + if ( + feature.properties && + feature.properties.name + ) { + layer.bindPopup(feature.properties.name); + } + }, + }).addTo(map); + map.fitBounds(geoLayer.getBounds()); + }) + .catch((error) => { + console.error("Error loading GeoJSON:", error); + }); }, 500); } });