Я пытаюсь написать свой собственный интерфейс приложения для Google Earth (c ++).
Я использую Earthlib для управления камерой (EARTHLib :: ICameraInfoGE). Этот интерфейс позволяет контролировать долготу камеры, широту и т. Д.
Пример:
EARTHLib::ICameraInfoGE* pCamera;
double shift = ...
....
pCamera->PutFocusPointLongitude(pCamera->GetFocusPointLongitude() + shift);//new longitude
ge->raw_SetCamera(pCamera, 1.0);
Но когда я делаю много «PutFocusPointLongitude» с небольшим «сдвигом», моё движение шатко. (большая смена меня не устраивает).
Есть ли какой-нибудь способ управления движением камеры, как родной контроль GE?
PS Извините за ошибки в написании. Английский не на моем родном языке.
Есть несколько вещей, которые вы можете сделать здесь:
«Телепорт» в нужное место. Прошло много времени с тех пор, как я использовал COM API, я не могу вспомнить, можно ли передать скорость установленной функции камеры или нет. Если вы можете, скорость телепортации будет чем-то> = 5.0. Если вы не можете, вы можете установить глобальную скорость перехода на 5.0 или выше.
Если вы пытаетесь создать объект типа «вращающаяся земля», вы можете вызвать функцию для очень быстрого изменения вида (скажем, 60 Гц, например, 60 раз в секунду) и очень мало перемещать камеру во время каждого обновления. Это создаст эффект типа «вращающаяся земля».
Если вы не пытаетесь сделать вращающуюся вещь типа земли, вы можете использовать тот же принцип, что и число (2), чтобы летать, чтобы сгладить полет к месту назначения.
Вы можете переключиться на использование туров KML, но, к сожалению, вы не можете запускать / останавливать их с помощью COM API. Это было сломано в течение долгого времени, и я не думаю, что Google исправит это, так как COM API устарел.
Других решений пока нет …