From 92ef4a68fd4b72e35bbb7464bec7928379bb38f8 Mon Sep 17 00:00:00 2001 From: zh <972939975@qq.com> Date: Tue, 26 Aug 2025 18:07:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=8C=E7=BB=B4=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E6=97=B6=E7=9A=84=E9=94=AE=E7=9B=98=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Global/KeyBoard/index.js | 38 +++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/Global/KeyBoard/index.js b/src/Global/KeyBoard/index.js index 7095bfe..90014e0 100644 --- a/src/Global/KeyBoard/index.js +++ b/src/Global/KeyBoard/index.js @@ -101,6 +101,7 @@ function getFlagFromKeyboard(key) { */ function keyDown(event) { let _viewer = this + // 判断是否有输入框聚焦 function isInputFocused() { const activeElement = document.activeElement; @@ -164,32 +165,51 @@ function keyUp(event) { * @return {*} */ function keyboardMapRoamingRender(_viewer) { - if(!_viewer.scene.screenSpaceCameraController.enableTilt) { + if(!_viewer || !_viewer.scene || !_viewer.scene.screenSpaceCameraController.enableTilt) { return } let camera = _viewer.camera; let ellipsoid = _viewer.scene.globe.ellipsoid; let cameraHeight = ellipsoid.cartesianToCartographic(camera.position).height; + let cameraHeight2 = camera.positionCartographic.height; + // 根据相机高度设置移动距离,比默认距离移动效果更好 let moveRate = cameraHeight / 20.0; let rotationRate = moveRate / 500000 / Cesium.Math.toDegrees(camera.pitch); + let moveRate2 = cameraHeight2 / 100.0; if (flags.moveForward) { - // camera.moveForward(moveRate); - camera.rotate(camera.right, -rotationRate); + if(_viewer.scene.mode == 2) { + camera.moveUp(moveRate2); + } + else { + camera.rotate(camera.right, -rotationRate); + } } if (flags.moveBackward) { - // camera.moveBackward(moveRate); - camera.rotate(camera.right, rotationRate); + if(_viewer.scene.mode == 2) { + camera.moveDown(moveRate2); + } + else { + camera.rotate(camera.right, rotationRate); + } } if (flags.moveLeft) { - // camera.moveLeft(moveRate); - camera.rotate(camera.up, -rotationRate); + if(_viewer.scene.mode == 2) { + camera.moveLeft(moveRate2); + } + else { + camera.rotate(camera.up, -rotationRate); + } } if (flags.moveRight) { - // camera.moveRight(moveRate); - camera.rotate(camera.up, rotationRate); + if(_viewer.scene.mode == 2) { + camera.moveRight(moveRate2); + } + else { + camera.rotate(camera.up, rotationRate); + } } if (flags.moveUp) { camera.moveUp(moveRate);