From 3251de64061ce6cbeff7661109ae8b992ddc2da5 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 6 Mar 2026 14:01:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BC=98=E5=8C=96=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E7=AB=AF=E6=89=93=E5=87=BB=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crawler/__pycache__/parser.cpython-39.pyc | Bin 1641 -> 2099 bytes src/components/WarMap.tsx | 16 ++++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/crawler/__pycache__/parser.cpython-39.pyc b/crawler/__pycache__/parser.cpython-39.pyc index d6e3d645752717c313fb7d84545a07f9d04b6187..bf31fac815ae90ebbe93e3966ace5e108b642664 100644 GIT binary patch delta 1151 zcmZ8f%}*0S6rb6hw%d05%}0QW5(OmYq~8LE!tieO!AH zBjgJz{a+H4MIi6zVR@{xm*tc*SF1CNQL;fAcNh_o_G3!$?|Gwtz4M`Wx9f$I5jYvM zVw9{99_6tE!ejfIWe8)RSnMuoXmg~Cf^lPnSaINS;E5{XiRaYXNP>_A!31ssPXSK> zPm7GuMP`JEEKeWlJj1gG%*uf^&T~f^&+`K4dDKOM4?x5q9|B8(YwM&meE4Rj!&Yma zU!p3uTJwc;++(WrrAE8bzYLT$phX~W06-9na$;#Pn|44fo$HW}sjS^ga?5euO{cP5 z!Bc-elqt|MkjDUgvQ9=zbWNgC(iHQAyQLWPQ9mX!9=z4&I!W8E3Lj0joxy`)M!Hu# zTWYp1a1DAfY`fvqg>9>ZZP%N;<)Uob_WhRQc0Cd=S;qedd=@eakOuOSSk9oK;qdek zRe_)m%?0o2=aq{Xc?m#KU(ttsi7q^pgYAZ zSR~FTa|n5a0zfGur-P^Z!gv__uhp=EQE?s5t8KNXf*<r1vIKHShWm`@L zMb;XhLZ7K(jaJ1Kj%?|me|>f$M}f<+;3X?ZFQ7OPd}1Row+DeQR=C43h!)Mb>z0VCZ3=g@EkAv_wMIy;Cb9tc_U+w%|>J}`od zVg^eDClNDx9n7VH;6r4zBe8Rpyj|aEO8=&mO{sEzd#Bc@+G5ui4X@U0crt?JuxVv1 z_ZFdy^-4*w%KgDVe=A~DY0(fwL;fRM0Qud(0x)j@O^kV9mC7j YG@6CZyJ%`@me&kw=s@`ELq^v84O?;UA^-pY delta 720 zcmZ8d&ubGw6yDjLolG{nNlZ$U7}FT5UteG(`q+OZaSXP996w#v$ z=)sFMM1* z6dn)3vV#wk{!%)E_NRbm>GR6tB$q0l z>(BOU66&rK6IZ`-&f4pctvUcD$xE{T)lvg}M(*Eb(QceipEps35lei+jj18{#m+~2rdGw#8MT2v8#r9=x%M8+yS}`;D{xk&f_dgo)ukPxc$y;%y-ORAr$9w zma0N^^|8AkJw0L_7GQl{Z?g$&<8@7^tOsJ=vk__NV>Vc}z`elke}A5wzxknRm}Z7U z39AXKc;f&d;X2-p9Csz>4m$b>rqopZKXxWxN|odV4xFt4ShyC-skbDQw7@u+nm}OO zEGtnY(rFZxwvr{wixOxX|%`J+pbA>X { const next = strikeLegendFilter === key ? null : key strikeLegendFilterRef.current = next - // 点击时同步飞镜头,避免等 useEffect 造成的明显延迟;缓动曲线使动画更顺滑 + // 点击时同步飞镜头;移动端减小 padding、缩短 duration,使小屏更顺滑 if (next != null) { const bounds = getBoundsForFilterRef.current(next) const map = mapRef.current?.getMap() if (bounds && map) { + const isMobile = typeof window !== 'undefined' && window.matchMedia('(max-width: 640px)').matches map.fitBounds( [ [bounds[0], bounds[1]], [bounds[2], bounds[3]], ], { - padding: 80, - maxZoom: 8, - duration: 500, + padding: isMobile ? 40 : 80, + maxZoom: isMobile ? 7.5 : 8, + duration: isMobile ? 400 : 500, easing: (t) => 1 - Math.pow(1 - t, 3), // easeOutCubic } ) @@ -1101,12 +1102,15 @@ export function WarMap() { return () => cancelAnimationFrame(animRef.current) }, []) - // 主视角:容器尺寸变化时无动画;图例点「全部/实时」时平滑飞回 + // 主视角:容器尺寸变化时无动画;图例点「全部/实时」时平滑飞回;移动端减小 padding、缩短 duration const fitToTheater = useCallback((options?: { duration?: number }) => { const map = mapRef.current?.getMap() if (!map) return const duration = options?.duration ?? 0 - map.fitBounds(THEATER_BOUNDS, { padding: 32, maxZoom: 6, duration }) + const isMobile = typeof window !== 'undefined' && window.matchMedia('(max-width: 640px)').matches + const padding = duration > 0 && isMobile ? 24 : 32 + const flyDuration = duration > 0 && isMobile ? 400 : duration + map.fitBounds(THEATER_BOUNDS, { padding, maxZoom: 6, duration: flyDuration }) }, []) useEffect(() => {