From ad3310b5bbb28d0b6b3e60ebec58ce0240c603f6 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Wed, 17 Jun 2026 10:49:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(vtk):=20=E9=BB=98=E8=AE=A4=E5=A4=A9?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E5=BA=95=E5=9B=BE(=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E9=A1=B9)+frame=E9=87=8D=E9=94=9A=E5=90=8E?= =?UTF-8?q?=E5=9C=A8=E6=95=B0=E6=8D=AE=E4=BD=8D=E7=BD=AE=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?(onFrameReanchored,=E5=85=8D=E5=90=AF=E5=8A=A8=E6=8B=89?= =?UTF-8?q?=E6=97=A0=E5=85=B3=E7=93=A6=E7=89=87)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/main.cpp | 21 ++++++++++++++++----- src/app/panels/columns/Column2DDataset.cpp | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index 021d6e2..2892f5a 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -397,12 +397,21 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re // ── 二维数据集栏:天地图底图开关(③,复用轨迹图 token,经同一共享 GeoLocalFrame 配准)── auto* basemap = new geopro::app::TileBasemap(*scene, renderWindowPtr, frame, &window); + // 当前底图选择(默认 天地图=Satellite,对齐 Column2DDataset 默认项);数据重锚后据此在数据位置加载。 + auto basemapKind = + std::make_shared(geopro::app::TileBasemap::Satellite); QObject::connect(drawer->col2D(), &geopro::app::Column2DDataset::basemapChanged, basemap, - [basemap](int idx) { - // 地图下拉:0 天地图(卫星影像,对齐原版观感) / 1 Google(暂未实现→隐藏) / 2 隐藏。 - basemap->show(idx == 0 ? geopro::app::TileBasemap::Satellite - : geopro::app::TileBasemap::Hidden); + [basemap, basemapKind](int idx) { + // 地图下拉:0 天地图(卫星影像) / 1 Google(暂未实现→隐藏) / 2 隐藏。 + *basemapKind = (idx == 0) ? geopro::app::TileBasemap::Satellite + : geopro::app::TileBasemap::Hidden; + basemap->show(*basemapKind); }); + // 首个真实剖面到达 → frame 重锚到数据 lat/lon 后,把选中的底图加载到数据所在位置 + // (默认天地图即在此刻出现,避免启动时在样本原点拉无关瓦片)。 + sceneView->onFrameReanchored = [basemap, basemapKind]() { + if (*basemapKind != geopro::app::TileBasemap::Hidden) basemap->show(*basemapKind); + }; // ── 中央“空状态”引导浮层:未接入真实 sections 时,引导首次使用者从左侧入手。── // 透明背景 + 鼠标穿透(不挡 QVTK 交互);CenterOverlay 随视口尺寸保持居中; @@ -788,11 +797,13 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re if (vtkFsBtn) { vtkFsBtn->setCheckable(true); QObject::connect(vtkFsBtn, &QToolButton::toggled, &window, - [applyFullscreen, vtkDock, allDocks, detailFsBtn](bool on) { + [applyFullscreen, vtkDock, allDocks, detailFsBtn, drawer](bool on) { if (on && detailFsBtn && detailFsBtn->isChecked()) { QSignalBlocker b(detailFsBtn); detailFsBtn->setChecked(false); } + // VTK 全屏含左侧三栏(drawer 本就在 vtkDock 内):进入时确保展开可见。 + if (on) drawer->expand(); applyFullscreen(vtkDock, allDocks, on); }); } diff --git a/src/app/panels/columns/Column2DDataset.cpp b/src/app/panels/columns/Column2DDataset.cpp index 2bacdb4..3266a61 100644 --- a/src/app/panels/columns/Column2DDataset.cpp +++ b/src/app/panels/columns/Column2DDataset.cpp @@ -27,7 +27,7 @@ Column2DDataset::Column2DDataset(QWidget* parent) : QWidget(parent) { basemap->addItem(QStringLiteral("天地图")); basemap->addItem(QStringLiteral("Google Map")); basemap->addItem(QStringLiteral("隐藏")); - basemap->setCurrentIndex(2); // 默认隐藏:选「天地图」即触发 currentIndexChanged→显示 + basemap->setCurrentIndex(0); // 默认天地图:数据重锚后由 onFrameReanchored 在数据位置加载 connect(basemap, qOverload(&QComboBox::currentIndexChanged), this, [this](int index) { emit basemapChanged(index); }); form->addRow(QStringLiteral("底图源"), basemap);