From ccd3efde17b30c4a23d0b227a20b991cb21b87f4 Mon Sep 17 00:00:00 2001 From: fukunee Date: Sat, 19 Sep 2026 14:49:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=B3=E9=94=AE=E7=8E=AF=E8=A7=86=E6=97=8B?= =?UTF-8?q?=E8=BD=AC=E4=B8=AD=E5=BF=83=E6=94=B9=E4=B8=BA=E5=B1=8F=E5=B9=95?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E7=82=B9=EF=BC=8C=E6=B6=88=E9=99=A4=E6=8C=89?= =?UTF-8?q?=E4=B8=8B=E5=8D=B3=E7=9E=AC=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/scene/CesiumGlobe.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/scene/CesiumGlobe.js b/src/scene/CesiumGlobe.js index 3ec2a1c..fc81765 100644 --- a/src/scene/CesiumGlobe.js +++ b/src/scene/CesiumGlobe.js @@ -383,9 +383,14 @@ export class CesiumGlobe { }; handler.setInputAction((movement) => { - const pivot = - scene.pickPosition(movement.position) || - camera.pickEllipsoid(movement.position, scene.globe.ellipsoid); + // 旋转中心 = 相机当前注视的屏幕中心点(与原生 tilt 一致), + // 而不是点击点:用点击点会导致一拖动就“瞬移”到点击处。 + const canvas = scene.canvas; + const center = Cesium.Cartesian2.fromElements( + canvas.clientWidth / 2, + canvas.clientHeight / 2, + ); + const 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);