From 79700cd3c09def668145a31366bb0100ff02ca6c Mon Sep 17 00:00:00 2001 From: chenhaojie Date: Thu, 13 Mar 2025 14:46:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8E=92=E6=9F=A5=E8=81=9A=E5=90=88?= =?UTF-8?q?=E5=9B=BE=E5=B1=82=E6=9F=A5=E7=9C=8B=E4=B8=8D=E5=87=86=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/img/map/changeScene.svg | 1 + public/img/map/dike_four.png | Bin 0 -> 146 bytes public/img/map/dike_one.png | Bin 0 -> 163 bytes public/img/map/dike_two_three.png | Bin 0 -> 142 bytes public/img/map/icon-folder.png | Bin 0 -> 196 bytes public/img/map/icon-layer.png | Bin 0 -> 373 bytes public/img/map/layer.svg | 1 + public/img/map/reservoir_big.png | Bin 0 -> 1223 bytes public/img/map/reservoir_normal.png | Bin 0 -> 1302 bytes public/img/map/reservoir_small.png | Bin 0 -> 1339 bytes public/img/map/sluice_big.png | Bin 0 -> 330 bytes public/img/map/sluice_middle.png | Bin 0 -> 327 bytes public/img/map/sluice_small.png | Bin 0 -> 469 bytes src/hooks/web/useProject.tsx | 42 ++++++++++++++------ src/store/modules/project.ts | 18 +++++++++ src/views/BottomPanel/index.vue | 37 ++++++++++++++++- src/views/Main/Map/components/LayerTree.vue | 12 +++++- 17 files changed, 95 insertions(+), 16 deletions(-) create mode 100644 public/img/map/changeScene.svg create mode 100644 public/img/map/dike_four.png create mode 100644 public/img/map/dike_one.png create mode 100644 public/img/map/dike_two_three.png create mode 100644 public/img/map/icon-folder.png create mode 100644 public/img/map/icon-layer.png create mode 100644 public/img/map/layer.svg create mode 100644 public/img/map/reservoir_big.png create mode 100644 public/img/map/reservoir_normal.png create mode 100644 public/img/map/reservoir_small.png create mode 100644 public/img/map/sluice_big.png create mode 100644 public/img/map/sluice_middle.png create mode 100644 public/img/map/sluice_small.png diff --git a/public/img/map/changeScene.svg b/public/img/map/changeScene.svg new file mode 100644 index 0000000..ce8f133 --- /dev/null +++ b/public/img/map/changeScene.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/map/dike_four.png b/public/img/map/dike_four.png new file mode 100644 index 0000000000000000000000000000000000000000..82a2c33de8dcd48a82b5cae33ae9116923c1d866 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Sc;uILpXq- zh9ji|$hYxyaSZY3OiqwsU7V1?xXw8JU-4Ya&-0^RNdUnNjq+;@(FZ)%gr8(J`OfI* lka>jvuZJ8^smKLJpatCGTNCV~3W4S@c)I$ztaD0e0sub2DJuW~ literal 0 HcmV?d00001 diff --git a/public/img/map/dike_one.png b/public/img/map/dike_one.png new file mode 100644 index 0000000000000000000000000000000000000000..b09c1bf2885d3a109d272ae6bae8c38d7558be10 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Sc;uILpXq- zh9ji|$oKVhaSZY3OiqwsUEJ{Ofp^A>|N09T{y!Od+{O3s21d0*UK-3jM|QQuI26nC z)Eb<5#1Q>!nM+S&BcEM@Xs3l$PZ3=XdWnhSYYWUDRaKd|_!3>_RelF{r G5}E+P^)`C| literal 0 HcmV?d00001 diff --git a/public/img/map/dike_two_three.png b/public/img/map/dike_two_three.png new file mode 100644 index 0000000000000000000000000000000000000000..e67ecb94383f47e99a8e53da974dda4c21a5308a GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Sc;uILpXq- zh9ji|$hYuxaSZY3OiqwsU7V27sK0RG|NSj(|CUdaUbP0l+XkKlaeSB literal 0 HcmV?d00001 diff --git a/public/img/map/icon-folder.png b/public/img/map/icon-folder.png new file mode 100644 index 0000000000000000000000000000000000000000..02622d7dd162d99e71f1744b4472c87abc5acf3d GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}EX7WqAsj$Z z!;#Vf|M!crvAM~yv2-L%Ssi(@f!)CH&;R~)osAFw|Cjv# z-dy9s^%DmUG%KDup>g2AnN2_b|6>!Ykt$@AW=nlm6f>#kzx>ue$DgYd<;YyMP>|X` qVc~mjVdlgCxr9vX6BB;KGcp{wDs!0eaEmd}W(H4JKbLh*2~7ae1W0!P literal 0 HcmV?d00001 diff --git a/public/img/map/icon-layer.png b/public/img/map/icon-layer.png new file mode 100644 index 0000000000000000000000000000000000000000..98de3e14a04a4385248cf9c1d3579707d938f87a GIT binary patch literal 373 zcmV-*0gC>KP)Px#1am@3R0s$N2z&@+hyVZqA4x<(R5*>b(M>DFVH5@MpO?*qiG`4bl!cm^2q3p@=<<{o{B%?i7R5E2p}vAU90b0JNgRjEht?5h@SHRh7g3mUbj+OJf%I?$;U3WrI TTAM@U00000NkvXXu0mjfI>w*1 literal 0 HcmV?d00001 diff --git a/public/img/map/layer.svg b/public/img/map/layer.svg new file mode 100644 index 0000000..a8a2351 --- /dev/null +++ b/public/img/map/layer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/map/reservoir_big.png b/public/img/map/reservoir_big.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4b908de9524266c6dd51b63a7d019704d73d86 GIT binary patch literal 1223 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 M07*qoM6N<$f>a%U-T(jq literal 0 HcmV?d00001 diff --git a/public/img/map/reservoir_small.png b/public/img/map/reservoir_small.png new file mode 100644 index 0000000000000000000000000000000000000000..66cd15d1ff177d31d366fc2e7bdf3366b4b0adbd GIT binary patch literal 1339 zcmV-B1;qM^P)Px#1am@3R0s$N2z&@+hyVZtNK1{X;>BB@i2iB^a(9Ld2AC__7``hV3tiKMT!O(7>4?IjiG$ z&a2|R4%pQQTjznZ#HS!F;n*$s>^eNsvai*92p@Qf*9zT;*B5aR+r5jFLW-4 zU`=VlRU)IXHf3PJjO@E%}~_s(cf-_0ge)i?Rpk>8`dnSB^tp{(i?gw< zkB)p}a~cSRWz)b2`;2{ayztFR@R#-dqvLn$bIQ2B@m1+{ z=*y-O;xqW&dJeDQWiXb;-5cXjt}&JdLf7Sr!BJX_eY+aVyKHh1tkH8B862f06qYNj z;w=sIMA>Qlhn?%y-!_xQ)_Ho)44Opr++(LztjR!sRCNwUYqSa$n~ z##uGSWZ+phwo4n8Aff4-eI9oQh^wE_^N$TV|VAhsnUQ zfOs^+#dnpJm!GuMD;7rT+;mx$A}#j=OK0(UWuz6yv0K^Y7KcEt3vk#f*3!V2OT-2L zG|p8-T>&DadYQ$@{2ID*)lYNoiI>b^cNL76S6+T%Nxi&ctPxc^NjCf0n`=x?14myG zR~n}CX?Z2)CYFSE`pmVVMYSBvSM)7d*jn1dx%-bw6HzJ)4Q*b+j>ZF70M*2RtD zbwR3wl|33blgTF@FBakBJQ3YDt^FWWZN(DPt!002ovPDHLkV1l_3nz;Y~ literal 0 HcmV?d00001 diff --git a/public/img/map/sluice_big.png b/public/img/map/sluice_big.png new file mode 100644 index 0000000000000000000000000000000000000000..bda28767d132ccf5a851563b06a5caa338bdc6e0 GIT binary patch literal 330 zcmV-Q0k!^#P)Px#1am@3R0s$N2z&@+hyVZp^hrcPR7i>Klud5JFcgG8a2hEmAt2kQ!Aq9C2ylvC z!8r{-i8%+GC{-*LhE#%3Sy9?W%WQ4Ur{{TNciYf77~0(qe>#m~ zI-SiBTJvcw2|#KLTp>+S;GG+0oady=B|>X}FThPgYcj2A_j?*^qe0U=Cp8A4)WccQ zb047;nNqZeLjYA(zwvw?jHP@E?*()qDaoV^prXK+WiVbW!c%->90j-sHP!;x%pw&9 zxSyas9>`)~y8r+H literal 0 HcmV?d00001 diff --git a/public/img/map/sluice_middle.png b/public/img/map/sluice_middle.png new file mode 100644 index 0000000000000000000000000000000000000000..ca83f36b8243c8ff1db4315dba9da109bd30c04c GIT binary patch literal 327 zcmV-N0l5B&P)Px#1am@3R0s$N2z&@+hyVZp@kvBMR7i>Klre6?KoCVA$W>xbNd(uRN`hp&O>zw` z0W}Y8LqDBxRGv>~ zg8^%$*lXPh_t|v`J&$FU(R(-?^6&8&fc5dnGRxSt6ur1Ev*D0X1c1jl#wizsB7`D8 z7FEIJI9KW~qKy%4YecUG99#i63W@|G1R{JIQDj6D1NIxhR)QkF2)+o5GzDNj8reLv z7gRg=QmUH{>ShpW&0CVRpMmWbZMEh-N$j_%?H%m2=A%aB04&n9lS?i{#U;ZZ{6+WN ZK+dOGh4l394B`L)002ovPDHLkV1mE9fGz+4 literal 0 HcmV?d00001 diff --git a/public/img/map/sluice_small.png b/public/img/map/sluice_small.png new file mode 100644 index 0000000000000000000000000000000000000000..0f60459539f5c9119afe6d16cbe3d30ea3b857aa GIT binary patch literal 469 zcmV;`0V@89P)Px#1am@3R0s$N2z&@+hyVZqe@R3^R7i>KlRYy7Q51&XbNA-%Oq$3b7L6I>ANZ<6 zA+oh_zS)YQj_E#7$w3mktQ>{+1;xkF(fvLp}||;d+zhhnR71i zpI;x^pAO9h{k-od;Q69`NdWYnskT5@z_(z#81M^1SBnBh)D+B>5;so{ik1Xt$lMf4 zo3pzQ1p=T0H~@guk~VJI6c?NZ`$9f+2kVPmDRG^5aCu*XWy`e6Wg@(uJ9@p=-wDb& zTh=0035MY8Q_*{{n-)G8BWt = { export const getFeatures: any = (data: any, filter: '1=1') => { return new Promise(async (resolve, reject) => { - const { url } = data; + const { url, serviceToken } = data; let newUrl = decodeURI(url).split("maps/")[0].replace("map-", "data-"); const reg2 = /([^/]+)$/; const decodeUrl: any = decodeURI(url); @@ -113,16 +115,20 @@ export const getFeatures: any = (data: any, filter: '1=1') => { const l = newLayerName?.split("%40"); const datasourceName = `${l?.[1]}:${l?.[0]}`; let queryUrl = `${newUrl}data/featureResults.geojson?returnContent=true`; + let params: any = { + getFeatureMode: 'SQL', + datasetNames: [datasourceName], + maxFeatures: 100000000, + queryParameter: { + attributeFilter: filter + } + }; + if (serviceToken) { + params.k = serviceToken; + } const result = await axios.post( queryUrl, - JSON.stringify({ - getFeatureMode: 'SQL', - datasetNames: [datasourceName], - maxFeatures: 100000000, - queryParameter: { - attributeFilter: filter - } - }), + JSON.stringify(params), { headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' @@ -283,6 +289,7 @@ export function useLayer() { if (!layerType || !(action = layerActions[layerType as string])) return; let layer: any = await action(layerData); if (isNeedCluster === '1' && layerData.nameCn === "水库点") { + let baseUrl = import.meta.env.VITE_BASE_URL; const data = await getFeatures(layerData); if (data?.features?.[0]?.geometry?.type === 'Point') { let layerConfig = {}; @@ -298,7 +305,7 @@ export function useLayer() { { name: "4.0", attr: "image", value: "reservoir_small.png" }, { name: "5.0", attr: "image", value: "reservoir_small.png" }, ], - image: "reservoir_small.png", + image: "map-title-o.png", }; break; } @@ -306,7 +313,7 @@ export function useLayer() { data, symbol: { type: "billboardP", - imageProxy: "/src/assets/map/", // 图片代理 + imageProxy: `${baseUrl}/img/map/`, // 图片代理 style: { clampToGround: false, image: "reservoir_small.png", @@ -359,10 +366,21 @@ export function useLayer() { const { layerType } = data; zoomToLayerActions[layerType as string]?.(data); }; + const viewerClick = throttle((e) => { + console.log(e); + }, 500); + const addViewerMouseClick = () => { + window.viewer?.on(SyCim.MouseEventType.MOUSE_MOVE, viewerClick); + }; + const removeViewerMouseClick = () => { + window.viewer?.off(SyCim.MouseEventType.MOUSE_MOVE, viewerClick); + }; return { addLayer, removeLayer, - zoomToLayer + zoomToLayer, + addViewerMouseClick, + removeViewerMouseClick }; } diff --git a/src/store/modules/project.ts b/src/store/modules/project.ts index 991d134..27171bb 100644 --- a/src/store/modules/project.ts +++ b/src/store/modules/project.ts @@ -71,6 +71,21 @@ function filterTreeData(data: any[]) { .filter(Boolean) ); } +function getLayerByName(data: any[], name: string) { + let layer = null; + const fn = (data: any[], name: string) => { + for (const item of data) { + if (item.nameCn === name) { + layer = item; + return; + } else if (item.children && item.children.length >= 0) { + fn(item.children, name); + } + } + }; + fn(data, name); + return layer; +} const { addLayer, removeLayer } = useLayer(); export const useProjectStore = defineStore("project", { @@ -185,6 +200,9 @@ export const useProjectStore = defineStore("project", { this.selectedLayers = _nodeTemp.filter((key) => !nodes.includes(key)); } }, + getLayerByName(name: string) { + return getLayerByName(this.layerData, name); + }, async fetchFirstScene() { const rData = await getFirstScene(); if (rData.code === 200) { diff --git a/src/views/BottomPanel/index.vue b/src/views/BottomPanel/index.vue index c88900e..bfa0e10 100644 --- a/src/views/BottomPanel/index.vue +++ b/src/views/BottomPanel/index.vue @@ -1,15 +1,48 @@