Хотите имитировать клавиши со стрелками влево-вправо в приложении CesiumJS, аналогично навигации Google Earth. Нажмите клавиши со стрелками вправо или влево, чтобы повернуть глобус примерно на 5% от границ обзора вправо или влево соответственно. При уменьшении масштаба он вращается в большей степени, а при увеличении - в меньшей степени.
Уже просмотрел документацию для Viewer, Камера, Сцена и т. д., но неясно, как сделать то, что должно быть простым.
Можно повернуть на фиксированную величину вправо или влево, но требуется повернуть на величину в зависимости от ширины экстента вида. Как вы получаете максимальный экстент сверху, слева, справа, снизу для просмотра в цезии?
var viewer = new Cesium.Viewer('cesiumContainer', {
navigationHelpButton: false, animation: false, timeline: false
});
var camera = viewer.camera;
document.addEventListener('keydown', function(e) {
setKey(e);
}, false);
function setKey(event) {
if (event.keyCode == 39) { // right arrow
camera.rotateRight(Cesium.Math.toRadians(10.0));
} else if (event.keyCode == 37) { // left arrow
camera.rotateLeft(Cesium.Math.toRadians(10.0));
}
}
Для тестирования откройте приложение SandCastle и вставьте фрагмент кода JavaScript выше. . Чтобы активировать привязки клавиатуры, щелкните полноэкранный режим, и клавиши со стрелками будут работать.
В качестве альтернативы камеру можно использовать для доступа к positionCartographic, но это только картографическая позиция камеры, а не границы обзора.
var positionCartographic = camera.positionCartographic;
var height = positionCartographic.height;
var lat = positionCartographic.latitude;
var lon = positionCartographic.longitude + Cesium.Math.toRadians(10.0);
camera.flyTo({
destination: Cesium.Cartesian3.fromRadians(lon, lat, height),
duration: 1.0
});
Здесь фиксированный угол добавляется к центральной точке обзора, но угол должен быть в процентах от разницы между максимальным и минимальным значениями долготы в экстенте обзора; например угол = (maxLon - minLon) / 20