优化二维模式时的键盘移动事件
This commit is contained in:
@ -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);
|
||||||
|
Reference in New Issue
Block a user