优化二维模式时的键盘移动事件

This commit is contained in:
zh
2025-08-26 18:07:25 +08:00
parent e8258d96d0
commit 92ef4a68fd

View File

@ -101,6 +101,7 @@ function getFlagFromKeyboard(key) {
*/ */
function keyDown(event) { function keyDown(event) {
let _viewer = this let _viewer = this
// 判断是否有输入框聚焦 // 判断是否有输入框聚焦
function isInputFocused() { function isInputFocused() {
const activeElement = document.activeElement; const activeElement = document.activeElement;
@ -164,32 +165,51 @@ function keyUp(event) {
* @return {*} * @return {*}
*/ */
function keyboardMapRoamingRender(_viewer) { function keyboardMapRoamingRender(_viewer) {
if(!_viewer.scene.screenSpaceCameraController.enableTilt) { if(!_viewer || !_viewer.scene || !_viewer.scene.screenSpaceCameraController.enableTilt) {
return return
} }
let camera = _viewer.camera; let camera = _viewer.camera;
let ellipsoid = _viewer.scene.globe.ellipsoid; let ellipsoid = _viewer.scene.globe.ellipsoid;
let cameraHeight = ellipsoid.cartesianToCartographic(camera.position).height; let cameraHeight = ellipsoid.cartesianToCartographic(camera.position).height;
let cameraHeight2 = camera.positionCartographic.height;
// 根据相机高度设置移动距离,比默认距离移动效果更好 // 根据相机高度设置移动距离,比默认距离移动效果更好
let moveRate = cameraHeight / 20.0; let moveRate = cameraHeight / 20.0;
let rotationRate = moveRate / 500000 / Cesium.Math.toDegrees(camera.pitch); let rotationRate = moveRate / 500000 / Cesium.Math.toDegrees(camera.pitch);
let moveRate2 = cameraHeight2 / 100.0;
if (flags.moveForward) { if (flags.moveForward) {
// camera.moveForward(moveRate); if(_viewer.scene.mode == 2) {
camera.rotate(camera.right, -rotationRate); camera.moveUp(moveRate2);
}
else {
camera.rotate(camera.right, -rotationRate);
}
} }
if (flags.moveBackward) { if (flags.moveBackward) {
// camera.moveBackward(moveRate); if(_viewer.scene.mode == 2) {
camera.rotate(camera.right, rotationRate); camera.moveDown(moveRate2);
}
else {
camera.rotate(camera.right, rotationRate);
}
} }
if (flags.moveLeft) { if (flags.moveLeft) {
// camera.moveLeft(moveRate); if(_viewer.scene.mode == 2) {
camera.rotate(camera.up, -rotationRate); camera.moveLeft(moveRate2);
}
else {
camera.rotate(camera.up, -rotationRate);
}
} }
if (flags.moveRight) { if (flags.moveRight) {
// camera.moveRight(moveRate); if(_viewer.scene.mode == 2) {
camera.rotate(camera.up, rotationRate); camera.moveRight(moveRate2);
}
else {
camera.rotate(camera.up, rotationRate);
}
} }
if (flags.moveUp) { if (flags.moveUp) {
camera.moveUp(moveRate); camera.moveUp(moveRate);