Панорамирование относительно текущего вида с фиксированным FlyToSpeed с GoogleEarth
Я пытаюсь панорамировать Google Планета Земля относительно текущего представления с помощью подключаемого модуля GE в C# (Interop.GEPlugin.dll), как описано в документации ( https://developers.google.com/earth/documentation/camera_control), с фиксированной FlyToSpeed.
При установке параметра FlyToSpeed на SPEED_TELEPORT все работает нормально, как и ожидалось:
ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);
var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_ABSOLUTE)
lookAt.setLongitude(lookAt.getLongitude() + 1);
ge.getView().setAbstractView(lookAt); // Works as expected
При установке FlyToSpeed на определенное число, панорамирование нарушается при увеличении масштаба:
ge.getOptions().setFlyToSpeed(3);
var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_ABSOLUTE)
lookAt.setLongitude(lookAt.getLongitude() + 1);
ge.getView().setAbstractView(lookAt); // why the view zooms out while panning?
Если бы у кого-то была идея или подход, я был бы очень счастлив. Спасибо заранее за вашу помощь.
1 ответ
why does the view zoom out while panning?
Это не ошибка, это поведение по умолчанию.
Если скорость полета настроена на что-то другое, чем SPEED_TELEPORT
плагин уменьшит масштаб до середины движения, затем увеличит масштаб до конца в циклическом движении.
AFAIK нет никакого способа контролировать это, кроме скорости, это происходит.
Если вы хотите реализовать "полет на фиксированную высоту / расстояние", вы можете сделать это довольно легко. Обычный способ - оставить скорость на SPEED_TELEPORT
(чтобы удалить анимированное зацикливание), затем перемещать камеру вручную пошаговыми шагами через событие frameEnd.
Посмотрите на этот пример плавной анимации камеры с помощью frameEnd - я уверен, что вы можете легко адаптировать ее к вашим потребностям (сверху вниз, фиксированная высота и т. Д.).