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);