From 3635f295b22ffe50d555cf4c0e6d2d3e1ec1e172 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Wed, 17 Jun 2026 18:05:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(vtk):=20=E6=8B=89=E6=9C=80=E8=BF=9C?= =?UTF-8?q?=E4=BB=8D=E5=8A=A0=E8=BD=BD=E8=B6=85=E5=A4=A7=E9=9D=A2=E7=A7=AF?= =?UTF-8?q?=E6=A0=B9=E5=9B=A0=3D=E6=AF=94=E8=8C=83=E5=9B=B4=E8=BF=98?= =?UTF-8?q?=E5=A4=A7=E7=9A=84=E7=B2=97=E7=93=A6=E7=9B=96=E4=BD=8F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=AD=E5=BF=83=E8=BF=87=E4=BA=86=E8=B7=9D=E7=A6=BB?= =?UTF-8?q?=E5=89=94=E9=99=A4;=E6=94=B9=E4=B8=BA=E7=93=A6=E7=89=87?= =?UTF-8?q?=E5=A4=A7=E4=BA=8E=E8=8C=83=E5=9B=B4=E5=88=99=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E7=BB=86=E5=88=86,=E7=9C=9F=E6=AD=A3=E9=99=90=E5=AE=9A?= =?UTF-8?q?=E5=9C=A8=E5=8A=A8=E6=80=81=E8=8C=83=E5=9B=B4=E5=86=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/TileBasemap.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/TileBasemap.cpp b/src/app/TileBasemap.cpp index e403a52..da7255b 100644 --- a/src/app/TileBasemap.cpp +++ b/src/app/TileBasemap.cpp @@ -234,7 +234,9 @@ void TileBasemap::refineTile(int z, int x, int y, std::set& out, int& const double dist = std::max(1.0, std::sqrt(dx * dx + dy * dy + dz * dz)); screenPx = g * projK_ / dist; // 透视:projK_ = H/(2·tan(vfov/2)) } - if (screenPx > kTargetPx && z < kMaxZoom) { + // 细分条件:屏幕上太大 → 细分(近细远粗);或瓦片本身比允许范围还大 → 也强制细分, + // 否则拉到最远时一块巨瓦(如 78km)正好盖住数据中心、过不了距离剔除 → 覆盖超大面积。 + if ((screenPx > kTargetPx || g > maxTileDist_) && z < kMaxZoom) { refineTile(z + 1, 2 * x, 2 * y, out, count); refineTile(z + 1, 2 * x + 1, 2 * y, out, count); refineTile(z + 1, 2 * x, 2 * y + 1, out, count);