From 0cb6e46b92ab8bc2e402893d3698b2c7a79885d7 Mon Sep 17 00:00:00 2001 From: fukunee Date: Sat, 19 Sep 2026 15:05:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=B3=E9=94=AE=E7=8E=AF=E8=A7=86=E7=90=83?= =?UTF-8?q?=E5=BF=83=E6=94=B9=E4=B8=BA=E5=9C=B0=E5=BD=A2=E8=A1=A8=E9=9D=A2?= =?UTF-8?q?=E7=82=B9=EF=BC=8C=E7=BB=9F=E4=B8=80=E8=A7=86=E8=A7=89=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E4=B8=8E=E6=97=8B=E8=BD=AC=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/scene/CesiumGlobe.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/scene/CesiumGlobe.js b/src/scene/CesiumGlobe.js index efb1777..b0f5a65 100644 --- a/src/scene/CesiumGlobe.js +++ b/src/scene/CesiumGlobe.js @@ -386,12 +386,18 @@ export class CesiumGlobe { handler.setInputAction((movement) => { // 旋转中心 = 相机当前注视的屏幕中心点(与原生 tilt 一致), // 而不是点击点:用点击点会导致一拖动就“瞬移”到点击处。 + // 取“地形表面”点而不是椭球点:相机看到的是地形,若用椭球点做球心, + // 视觉中心(地形)会随旋转漂移,产生“两套体系”的错觉。 const canvas = scene.canvas; const center = Cesium.Cartesian2.fromElements( canvas.clientWidth / 2, canvas.clientHeight / 2, ); - const pivot = camera.pickEllipsoid(center, scene.globe.ellipsoid); + const ray = camera.getPickRay(center); + let pivot = scene.globe.pick(ray, scene); + if (!Cesium.defined(pivot)) { + pivot = camera.pickEllipsoid(center, scene.globe.ellipsoid); + } if (!Cesium.defined(pivot)) return; const sc = this._orbitScratch; const offset = Cesium.Cartesian3.subtract(camera.position, pivot, sc.offset);