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