feat(vtk): 默认天地图底图(下拉默认项)+frame重锚后在数据位置加载(onFrameReanchored,免启动拉无关瓦片)

This commit is contained in:
gaozheng 2026-06-17 10:49:17 +08:00
parent c03dc35469
commit ad3310b5bb
2 changed files with 17 additions and 6 deletions

View File

@ -397,12 +397,21 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
// ── 二维数据集栏:天地图底图开关(③,复用轨迹图 token经同一共享 GeoLocalFrame 配准)── // ── 二维数据集栏:天地图底图开关(③,复用轨迹图 token经同一共享 GeoLocalFrame 配准)──
auto* basemap = new geopro::app::TileBasemap(*scene, renderWindowPtr, frame, &window); auto* basemap = new geopro::app::TileBasemap(*scene, renderWindowPtr, frame, &window);
// 当前底图选择(默认 天地图=Satellite对齐 Column2DDataset 默认项);数据重锚后据此在数据位置加载。
auto basemapKind =
std::make_shared<geopro::app::TileBasemap::Kind>(geopro::app::TileBasemap::Satellite);
QObject::connect(drawer->col2D(), &geopro::app::Column2DDataset::basemapChanged, basemap, QObject::connect(drawer->col2D(), &geopro::app::Column2DDataset::basemapChanged, basemap,
[basemap](int idx) { [basemap, basemapKind](int idx) {
// 地图下拉0 天地图(卫星影像,对齐原版观感) / 1 Google(暂未实现→隐藏) / 2 隐藏。 // 地图下拉0 天地图(卫星影像) / 1 Google(暂未实现→隐藏) / 2 隐藏。
basemap->show(idx == 0 ? geopro::app::TileBasemap::Satellite *basemapKind = (idx == 0) ? geopro::app::TileBasemap::Satellite
: geopro::app::TileBasemap::Hidden); : geopro::app::TileBasemap::Hidden;
basemap->show(*basemapKind);
}); });
// 首个真实剖面到达 → frame 重锚到数据 lat/lon 后,把选中的底图加载到数据所在位置
// (默认天地图即在此刻出现,避免启动时在样本原点拉无关瓦片)。
sceneView->onFrameReanchored = [basemap, basemapKind]() {
if (*basemapKind != geopro::app::TileBasemap::Hidden) basemap->show(*basemapKind);
};
// ── 中央“空状态”引导浮层:未接入真实 sections 时,引导首次使用者从左侧入手。── // ── 中央“空状态”引导浮层:未接入真实 sections 时,引导首次使用者从左侧入手。──
// 透明背景 + 鼠标穿透(不挡 QVTK 交互CenterOverlay 随视口尺寸保持居中; // 透明背景 + 鼠标穿透(不挡 QVTK 交互CenterOverlay 随视口尺寸保持居中;
@ -788,11 +797,13 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
if (vtkFsBtn) { if (vtkFsBtn) {
vtkFsBtn->setCheckable(true); vtkFsBtn->setCheckable(true);
QObject::connect(vtkFsBtn, &QToolButton::toggled, &window, QObject::connect(vtkFsBtn, &QToolButton::toggled, &window,
[applyFullscreen, vtkDock, allDocks, detailFsBtn](bool on) { [applyFullscreen, vtkDock, allDocks, detailFsBtn, drawer](bool on) {
if (on && detailFsBtn && detailFsBtn->isChecked()) { if (on && detailFsBtn && detailFsBtn->isChecked()) {
QSignalBlocker b(detailFsBtn); QSignalBlocker b(detailFsBtn);
detailFsBtn->setChecked(false); detailFsBtn->setChecked(false);
} }
// VTK 全屏含左侧三栏(drawer 本就在 vtkDock 内):进入时确保展开可见。
if (on) drawer->expand();
applyFullscreen(vtkDock, allDocks, on); applyFullscreen(vtkDock, allDocks, on);
}); });
} }

View File

@ -27,7 +27,7 @@ Column2DDataset::Column2DDataset(QWidget* parent) : QWidget(parent) {
basemap->addItem(QStringLiteral("天地图")); basemap->addItem(QStringLiteral("天地图"));
basemap->addItem(QStringLiteral("Google Map")); basemap->addItem(QStringLiteral("Google Map"));
basemap->addItem(QStringLiteral("隐藏")); basemap->addItem(QStringLiteral("隐藏"));
basemap->setCurrentIndex(2); // 默认隐藏:选「天地图」即触发 currentIndexChanged→显示 basemap->setCurrentIndex(0); // 默认天地图:数据重锚后由 onFrameReanchored 在数据位置加载
connect(basemap, qOverload<int>(&QComboBox::currentIndexChanged), this, connect(basemap, qOverload<int>(&QComboBox::currentIndexChanged), this,
[this](int index) { emit basemapChanged(index); }); [this](int index) { emit basemapChanged(index); });
form->addRow(QStringLiteral("底图源"), basemap); form->addRow(QStringLiteral("底图源"), basemap);