Skip to content

Commit a6ea2ab

Browse files
committed
feat: 设置demo默认路由为Marker & fix: 修复图片校准组件多图切换时图层消失问题
- 将demo目录默认选中项从MobileApp改为Marker - 修复ImageCalibrationControl切换图片时静态图层被误删导致消失的问题 - 优化handleActivateImage逻辑,消除50ms延迟避免视觉间隙 - 扩展静态图层覆盖范围,支持calibrating状态图片显示
1 parent bddfda0 commit a6ea2ab

3 files changed

Lines changed: 18 additions & 19 deletions

File tree

packages/core/src/components/Control/ImageCalibrationControl/ImageCalibrationControl.tsx

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,9 @@ export const ImageCalibrationControl = forwardRef<ImageCalibrationHandle, ImageC
181181

182182
images.forEach((img) => {
183183
if (img.id === activeId) return;
184-
if (!img.corners || img.phase === 'idle') return;
184+
// 所有非激活图片都应显示为静态图层(包括 idle/calibrating/confirmed)
185+
// 只有没有 corners 的 idle 图片才跳过(无法定位到地图)
186+
if (!img.corners && img.phase === 'idle') return;
185187

186188
currentLayerIds.add(img.id);
187189

@@ -466,11 +468,6 @@ export const ImageCalibrationControl = forwardRef<ImageCalibrationHandle, ImageC
466468
const handleActivateImage = useCallback(
467469
(img: RegisteredImage, isNew = false) => {
468470
saveActiveImageState();
469-
const staticLayer = staticLayersRef.current.get(img.id);
470-
if (staticLayer && scene) {
471-
try { scene.removeLayer(staticLayer); } catch {}
472-
staticLayersRef.current.delete(img.id);
473-
}
474471
setImages((prev) => {
475472
const exists = prev.find((i) => i.id === img.id);
476473
if (exists) return prev;
@@ -479,13 +476,14 @@ export const ImageCalibrationControl = forwardRef<ImageCalibrationHandle, ImageC
479476
});
480477
setActiveImageId(img.id);
481478
onImageSwitch?.(img.id);
482-
clear();
483-
setTimeout(() => {
484-
if (img.corners) setImage(img.source, img.corners);
485-
else setImage(img.source);
486-
}, 50);
479+
// 先设置新图片,再清除旧状态,避免视觉间隙
480+
if (img.corners) {
481+
setImage(img.source, img.corners);
482+
} else {
483+
setImage(img.source);
484+
}
487485
},
488-
[saveActiveImageState, clear, setImage, onImageSwitch, onImageAdd, scene],
486+
[saveActiveImageState, setImage, onImageSwitch, onImageAdd],
489487
);
490488

491489
const handleSwitchImage = useCallback(

packages/site/src/home/HomePage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ export default function HomePage({ onNavigate, onNavigateDesign, onNavigateBlock
147147
theme={theme}
148148
activePage="home"
149149
onLogoClick={() => {}}
150-
onNavigateDemos={() => onNavigate(0)}
150+
onNavigateDemos={() => onNavigate(7)}
151151
onNavigateDocs={onNavigateDocs}
152152
onNavigateDesign={onNavigateDesign}
153153
onNavigateBlock={onNavigateBlock}

packages/site/src/main.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,8 @@ const getPageFromUrl = (): { page: 'home' | 'demo' | 'design' | 'docs' | 'block'
384384
d.file.replace('demo-', '') === normalizedRoute ||
385385
d.file === `demo-${normalizedRoute.padStart(2, '0')}`
386386
);
387-
return { page: 'demo', demoIndex: index >= 0 ? index : 0 };
387+
// 默认 demo 为 Marker (索引 7)
388+
return { page: 'demo', demoIndex: index >= 0 ? index : 7 };
388389
};
389390

390391
function App() {
@@ -506,7 +507,7 @@ function App() {
506507
onDocChange={(docId: string) => navigateTo(`design/${docId}`)}
507508
onToggleTheme={() => setAppTheme((t) => t === 'light' ? 'dark' : 'light')}
508509
onNavigateHome={() => { setCurrentPage('home'); navigateTo(''); }}
509-
onNavigateDemo={() => { setCurrentPage('demo'); navigateTo('demo/' + demos[0].file); }}
510+
onNavigateDemo={() => { setCurrentPage('demo'); setCurrent(7); navigateTo('demo/' + demos[7].file); }}
510511
onNavigateDocs={() => { setCurrentPage('docs'); navigateTo('docs'); }}
511512
onNavigateBlock={() => { setCurrent(0); setCurrentPage('block'); navigateTo('block'); }}
512513
onNavigateSkill={() => { setCurrentPage('skill'); navigateTo('skill'); }}
@@ -526,7 +527,7 @@ function App() {
526527
sourceModules={sourceModules}
527528
onToggleTheme={() => setAppTheme((t) => t === 'light' ? 'dark' : 'light')}
528529
onNavigateHome={() => { setCurrentPage('home'); navigateTo(''); }}
529-
onNavigateDemo={() => { setCurrentPage('demo'); navigateTo('demo/' + demos[0].file); }}
530+
onNavigateDemo={() => { setCurrentPage('demo'); setCurrent(7); navigateTo('demo/' + demos[7].file); }}
530531
onNavigateDocs={() => { setCurrentPage('docs'); navigateTo('docs'); }}
531532
onNavigateDesign={() => { setCurrentPage('design'); navigateTo('design'); }}
532533
onNavigateBlock={() => { setCurrent(0); setCurrentPage('block'); navigateTo('block'); }}
@@ -550,7 +551,7 @@ function App() {
550551
onDocChange={(docId: string) => navigateTo('block-design/' + docId)}
551552
onToggleTheme={() => setAppTheme((t) => t === 'light' ? 'dark' : 'light')}
552553
onNavigateHome={() => { setCurrentPage('home'); navigateTo(''); }}
553-
onNavigateDemo={() => { setCurrentPage('demo'); navigateTo('demo/' + demos[0].file); }}
554+
onNavigateDemo={() => { setCurrentPage('demo'); setCurrent(7); navigateTo('demo/' + demos[7].file); }}
554555
onNavigateDocs={() => { setCurrentPage('docs'); navigateTo('docs'); }}
555556
onNavigateDesign={() => { setCurrentPage('design'); navigateTo('design'); }}
556557
onNavigateBlock={() => { setCurrent(0); setCurrentPage('block'); navigateTo('block'); }}
@@ -569,7 +570,7 @@ function App() {
569570
theme={appTheme}
570571
onToggleTheme={() => setAppTheme((t) => t === 'light' ? 'dark' : 'light')}
571572
onNavigateHome={() => { setCurrentPage('home'); navigateTo(''); }}
572-
onNavigateDemo={() => { setCurrentPage('demo'); navigateTo('demo/' + demos[0].file); }}
573+
onNavigateDemo={() => { setCurrentPage('demo'); setCurrent(7); navigateTo('demo/' + demos[7].file); }}
573574
onNavigateDesign={() => { setCurrentPage('design'); navigateTo('design'); }}
574575
onNavigateBlock={() => { setCurrent(0); setCurrentPage('block'); navigateTo('block'); }}
575576
onNavigateSkill={() => { setCurrentPage('skill'); navigateTo('skill'); }}
@@ -589,7 +590,7 @@ function App() {
589590
theme={appTheme}
590591
onToggleTheme={() => setAppTheme((t) => t === 'light' ? 'dark' : 'light')}
591592
onNavigateHome={() => { setCurrentPage('home'); navigateTo(''); }}
592-
onNavigateDemo={() => { setCurrentPage('demo'); navigateTo('demo/' + demos[0].file); }}
593+
onNavigateDemo={() => { setCurrentPage('demo'); setCurrent(7); navigateTo('demo/' + demos[7].file); }}
593594
onNavigateDocs={() => { setCurrentPage('docs'); navigateTo('docs'); }}
594595
onNavigateDesign={() => { setCurrentPage('design'); navigateTo('design'); }}
595596
onNavigateBlock={() => { setCurrent(0); setCurrentPage('block'); navigateTo('block'); }}

0 commit comments

Comments
 (0)