При воспроизведении туров, созданных в KML, возможно ли динамическое управление камерой? - PullRequest
1 голос
/ 21 февраля 2012

Используя AI плагина Google Планета Земля, я хочу сыграть тур, созданный в KML с возможностью тура , но при этом пользователь может изменять элементы управления камерой во время воспроизведения.

Возможно ли это?

Ответы [ 2 ]

3 голосов
/ 22 февраля 2012

Это зависит от того, сколько изменений вы хотите разрешить.

Воспроизведение тура предназначено для работы с пользователем, изменяющим ориентацию вида (с помощью перетаскивания или элементов управления камерой), но не положение.Если пользователь перестает менять вид на достаточно долгое время, камера плавно вернется к ориентации по умолчанию для этой точки в туре.Элементы управления масштабированием и панорамированием исчезают во время тура, но если пользователь пытается изменить положение камеры с помощью других методов (например, клавиатуры), тур, как правило, будет приостановлен.

Однако API-интерфейс Earth позволяет вампоглотить или изменить любое из этих поведений событий, поскольку вы можете добавить прослушиватель для событий мыши и клавиатуры и запретить их обработку в обычном режиме или действовать по-другому.

Если вы еще не пробовалиэто, например, пример тура в Google Code Playground, где вы можете увидеть, что происходит с различными взаимодействиями на основе ответов на события по умолчанию.

Наконец, если вы хотите действительно индивидуальное поведение тура -например, разрешить определенные виды перемещения камеры вдали от маршрута тура, даже когда тур продолжается - вам, скорее всего, потребуется написать собственный код движения камеры.Изучить основы этой работы не так уж сложно, но получить правильное интуитивное представление о таком взаимодействии сложно и, вероятно, зависит от набора данных.Для начала вы можете проанализировать KML напрямую, найти тур и примитивы тура, которые он содержит, а затем использовать обычные элементы управления камерой, которые вы указали, для перемещения между этими примитивами, добавляя смещения для любых пользовательских движений.

edit: приведенная в вопросе страница тура API Земли содержит пример начала работы с анализом файла KML с помощью плагина, который сделает это за вас.Вы можете использовать это для реализации приведенного выше предложения, используя код ходьбы KML DOM, чтобы найти все примитивы тура (вместо остановки, как только будет найден элемент Tour).

Это не всегда самый эффективныйподход (вызовы функций плагинов имеют накладные расходы, и в то же время браузеры имеют встроенные возможности синтаксического анализа XML), но это может быть самый простой способ начать.Для многих туров такой подход будет вполне достаточным.

2 голосов
/ 22 февраля 2012

Это возможно, но довольно сложно реализовать и еще сложнее хорошо контролировать. Я уже давно пытаюсь это сделать. Я сам не добился большого успеха, но вот два примера других, которые добились определенного прогресса.

Во-первых, основополагающий принцип, который они используют, основан на ТИКЕ - простой пример этого здесь http://earth -api-samples.googlecode.com / SVN / багажник / примеры / событий frameend.html

Два примера: http://maps.myosotissp.com/ а также http://racemyrace.com/race.php

Кроме того, вот пример, который работал до недавнего времени, я не уверен, почему он остановился, но кажется, что вы все еще можете прочитать используемый JS. Это сделано тем же человеком, который создал сайт racemyrace http://www.thekmz.co.uk/GEPlugin/pathtour/v3/path_tour_v3.htm

Если вам случится что-то придумать, буду признателен, если вы создадите страницу простого примера и поделитесь ссылкой. Вероятно, это займет некоторое время, поэтому, если бы вы могли просмотреть мою электронную почту через профиль и сообщить мне, что будет еще лучше.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...