Подтвердить что ты не робот

Как отобразить движущуюся лодку в Google Планета Земля?

Я новичок в формате KML и пытаюсь выяснить, как отображать лодку (png), перемещаясь из места в другое по пути (простая строка, состоящая из нескольких строк).

Я могу увидеть, как отображать метку, даже со значком и контуром, отдельно.

То, что я хотел бы видеть, когда я нажимаю на KML файл, это:

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

Возможно ли это? Я знаю, что это с Google Map, но вы можете запрограммировать его с помощью Javascript, что значительно облегчает работу.

4b9b3361

Ответ 1

Это старый вопрос, и теперь есть лучший способ переместить метку (или даже лучше модель) вдоль заранее определенной линейной строки. Изучите эту функцию:

http://code.google.com/apis/kml/documentation/kmlreference.html#gxtrack

Пример кода:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
xmlns:gx="http://www.google.com/kml/ext/2.2">
<Folder>
  <Placemark>
    <gx:Track>
     <when>2010-05-28T02:02:09Z</when>
     <when>2010-05-28T02:02:35Z</when>
     <when>2010-05-28T02:02:44Z</when>
     <when>2010-05-28T02:02:53Z</when>
     <when>2010-05-28T02:02:54Z</when>
     <when>2010-05-28T02:02:55Z</when>
     <when>2010-05-28T02:02:56Z</when>
     <gx:coord>-122.207881 37.371915 156.000000</gx:coord>
     <gx:coord>-122.205712 37.373288 152.000000</gx:coord>
     <gx:coord>-122.204678 37.373939 147.000000</gx:coord>
     <gx:coord>-122.203572 37.374630 142.199997</gx:coord>
     <gx:coord>-122.203451 37.374706 141.800003</gx:coord>
     <gx:coord>-122.203329 37.374780 141.199997</gx:coord>
     <gx:coord>-122.203207 37.374857 140.199997</gx:coord>
   </gx:Track>
 </Placemark>
</Folder> 
</kml>

Ответ 2

Единственный способ, которым я смог выполнить эту работу в статическом KML, - это интерполировать между точкой старта и остановки и добавлять метки для каждого кадра, который я хочу оживить. Итак, от t = 0 до t = 1, нарисуйте метку в начальной точке. От t = 1 до t = 2, нарисуйте метку в следующей точке и т.д.

Это дает вам временную панель проигрывателя в Google Планета Земля, и вы можете перемотать или продвинуть анимацию. Однако это немного раздражает, потому что вы заканчиваете каждую точку интерполяции в своем дереве меток. Размещение меток в их собственной папке не позволяет им скрыться, но нет способа скрыть их от пользователя.

Взгляните на http://code.google.com/apis/kml/documentation/time.html#animating Пример китовой акулы делает более или менее то, что вы хотите для метки. (URL-адрес значка маркера не работает). Анимация хода по треку может быть выполнена с использованием того же трюка.

Если вы хотите попробовать что-то намного сложнее, вы можете попробовать использовать динамический KML. Попросите Google Earth загрузить сетевую ссылку на ваши исходные данные. Затем загрузите другую сетевую ссылку с тем, кто отправляет обновление для вашей метки в каждый момент времени.

Этот подход имеет несколько серьезных недостатков, поскольку для его использования требуется внешняя программа для Google Планета Земля, и она не дает пользователю доступа к встроенной панели временного игрока Google Earth. Он также требует, чтобы все данные загружались по сетевой ссылке - данные KML из файла не могут быть обновлены. Это означает, что ваша программа драйверов должна действовать как http-сервер. Кроме того, в этой модели очень сложно точно узнать, когда Google Планета Земля закончила загрузку и извлечение обновления. На самом деле я не рекомендую это делать; вы можете заставить его работать с помощью API Google Earth COM API, но он всегда будет хрупким решением.

Ответ 3

Имеется плагин для браузера, который позволяет вставлять Google Earth в страницу браузера. Оттуда вы можете использовать JavaScript для анимации вашей метки, изменения путей и т.д. Ознакомьтесь с Руководство разработчика API Google Планета Земля.

Ответ 4

Если вы собираетесь отображать лодку в Google Планета Земля, трехмерная модель будет лучшим подходом к изображению, так как пользователи могут изменить угол обзора.

Ответ 5

Вы можете посмотреть в турах: http://code.google.com/apis/kml/documentation/touring.html

Я видел что-то вроде этого, используя комбинацию (несколько) тегов <gx:AnimatedUpdate> для перемещения ранее созданной метки, представляющей вашу лодку, и тегов <gx:FlyTo> для перемещения представления (я думаю) все в пределах <gx:Playlist>.

Надеюсь, это поможет.

Ответ 6

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

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

<Document>

<Placemark id="boat">
    <Point>
        <coordinates>0,0</coordinates>
    </Point>
</Placemark>

<gx:Tour>
    <name>Play me!</name>
    <gx:Playlist>
      <gx:FlyTo>
        <gx:duration>5.0</gx:duration>
        <LookAt>
          <longitude>0</longitude>
          <latitude>0</latitude>
          <altitude>0</altitude>
          <heading>-95</heading>
          <tilt>65</tilt>
          <range>250000</range>
          <altitudeMode>relativeToGround</altitudeMode>
        </LookAt>
      </gx:FlyTo>

        <gx:AnimatedUpdate>
            <gx:duration>5.0</gx:duration>
            <Update>
                <targetHref/>
                 <Change>
                     <Placemark targetId="boat">
                         <Point>
                             <coordinates>1,1</coordinates>
                         </Point>
                     </Placemark>
                 </Change>
            </Update>
        </gx:AnimatedUpdate>
        <gx:Wait>
            <gx:duration>6.0</gx:duration>
        </gx:Wait>
    </gx:Playlist>
</gx:Tour>

</Document>

</kml>

Путь может быть отмечен точками, видимость которых изменяется в туре в соответствующее время.

Ответ 7

У меня есть следующий образец на сайте Google. Надеюсь на эту помощь.

(подробности внутри: https://sites.google.com/site/canadadennischen888/home/kml/auto-refresh-3d-tracking)

  • подготовить службу RestFul для создания KML файла из базы данных (образец, как в https://sites.google.com/site/canadadennischen888/home/kml/3d-tracking)

  • Мой другой код создаст файл KMZ, который имеет ссылку на мою службу Restful (образец, как на этой странице)

  • Файл KMZ имеет onInterval

  • Веб-страница позволяет пользователю загружать KMZ файл с URL-адресом, который ссылается на мою услугу Restful

  • Когда Google Earth откроет KMZ файл, Google Earth будет автоматически обновляться, чтобы получить новые данные из этой службы Restitive