Установка положения камеры после смены сцен
В приложении Cesium Sandcastle я отредактировал учебное пособие по камере, чтобы включить приведенный ниже фрагмент кода:
window.scene = scene;
scene.morphComplete.addEventListener(function (){
console.log('Morph completed...');
var west = Cesium.Math.toRadians(10);
var east = Cesium.Math.toRadians(40);
var south = Cesium.Math.toRadians(35);
var north = Cesium.Math.toRadians(45);
var rectangle = new Cesium.Rectangle(west,south,east,north);
window.scene.camera.viewRectangle(rectangle);
console.log('Camera view rectangle updated...');
});
Приведенный выше код привязывается к событию morph complete, и как только переход сцены завершается, прямоугольник вида устанавливается в регион Европы. По крайней мере, это мое ожидаемое поведение. Наблюдаемое поведение после того, как морф завершен, прямоугольник с цезиевым обзором находится за границей. У меня вопрос, как я могу установить прямоугольник вида карты после перехода сцены?
1 ответ
Похоже, это ошибка в работе с камерой, очевидно, мы установили камеру в последний раз после срабатывания morphComplete
событие.
Вы можете обойти эту проблему, подождав, пока пройдет один кадр анимации, прежде чем самостоятельно управлять камерой. Например:
scene.morphComplete.addEventListener(function (){
Cesium.requestAnimationFrame(function() { // This is the workaround.
console.log('Morph completed...');
var west = Cesium.Math.toRadians(10);
var east = Cesium.Math.toRadians(40);
var south = Cesium.Math.toRadians(35);
var north = Cesium.Math.toRadians(45);
var rectangle = new Cesium.Rectangle(west,south,east,north);
window.scene.camera.viewRectangle(rectangle);
console.log('Camera view rectangle updated...');
});
});
Я только что подал номер 2203 для этого.