diff --git a/src/scene/CesiumGlobe.js b/src/scene/CesiumGlobe.js index f38124a..bf3911d 100644 --- a/src/scene/CesiumGlobe.js +++ b/src/scene/CesiumGlobe.js @@ -371,6 +371,7 @@ export class CesiumGlobe { this._rightRestore = null; handler.setInputAction(() => { + camera.cancelFlight(); // 取消可能仍在进行的回正动画 this._rightRestore = { position: Cesium.Cartesian3.clone(camera.position), direction: Cesium.Cartesian3.clone(camera.direction), @@ -384,9 +385,11 @@ export class CesiumGlobe { this._rightRestore = null; const tiltState = scene.screenSpaceCameraController._lastInertiaTiltMovement; if (tiltState) tiltState.inertiaEnabled = false; - camera.setView({ + // 回正改用 flyTo 渐变,而不是瞬间 setView + camera.flyTo({ destination: s.position, orientation: { direction: s.direction, up: s.up }, + duration: 0.5, }); }, Cesium.ScreenSpaceEventType.RIGHT_UP);