Pergunta

Eu sou novo para o formato KML e tentar descobrir como exibir um barco (a png), que se deslocam de um lugar para outro ao longo de um caminho (uma simples linha tirada composto por várias linhas).

Eu posso ver como exibir um marcador, mesmo com um ícone e um caminho, separadamente.

O que eu gostaria de ver quando eu clicar sobre o arquivo KML é:

  • o barco que aparece no ponto de partida;
  • o caminho desenho em si até a chegada;
  • o barco ícone movendo a uma velocidade confortável (ponto de bónus que eu posso definir um tempo de ração / progresso, bônus extra se eu pode clicar em Iniciar, pausar ou rebobinar) desde a partida até a chegada ao longo do caminho.

Isso é mesmo possível? Eu sei que é com o Google Map, mas você pode programá-lo com JavaScript, o que facilita muito as coisas.

Foi útil?

Solução

Esta é uma questão antiga, e agora há uma melhor maneira de mover um marcador (ou ainda melhor um modelo) ao longo de uma cadeia de linha pré-determinado. Olhar para usar este recurso:

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

Exemplo de código:

<?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>

Outras dicas

A única maneira que eu fui capaz de fazer este trabalho em KML estática é para interpolar entre os pontos de início e de parada e adicionar marcadores para cada quadro I deseja animar. Assim, a partir de t = 0 a t = 1, desenhar um marcador no ponto de início. De t = 1 em t = 2, desenhar um marcador no ponto seguinte, etc

Isto dá-lhe a barra jogador temporal em Google Earth e você pode rebobinar ou avançar a animação. No entanto, é um pouco chato, porque você acabar com todos os pontos de interpolação em sua árvore marcador. Colocar os marcadores em sua própria pasta mantém-los fora do caminho, mas não há nenhuma maneira de esconder-los do usuário.

Dê uma olhada http://code.google.com/ apis / kml / documentation / time.html # animadora O exemplo tubarão-baleia faz mais ou menos o que você quer para o marcador. (O URL para o ícone do marcador é quebrado). Animando o progresso ao longo da pista pode ser feito usando o mesmo truque.

Se você quer tentar algo muito mais difícil, você pode tentar servir dinâmica KML. Tem o Google Earth carregar um link de rede aos seus dados iniciais. Em seguida, carregar uma outra ligação de rede com uma que envia uma atualização para seu marcador a cada escala de tempo.

Esta abordagem tem alguns sérias desvantagens porque requer um programa externo para conduzir o Google Earth e não dá ao usuário o acesso à barra de jogador temporais built-in Google Earth. Ele também exige que todos os dados ser carregado através de uma ligação de rede - dados KML de um arquivo não pode ser atualizado. Isso significa que suas necessidades do programa piloto para atuar como um servidor http. Além disso, neste modelo, é muito difícil saber exatamente quando o Google Earth tem carregamento acabado e desenho a atualização. Realmente eu não recomendo fazer isso; você pode fazê-lo funcionar usando a API do Google COM Terra, mas será sempre uma solução frágil.

Há um plug-in do browser que permite incorporar o Google Earth em uma página do navegador. De lá você pode usar JavaScript para animar seu marcador, mudar seus caminhos, etc. Confira o Guia do Google Earth API do desenvolvedor .

Se você estiver indo para exibir um barco no Google Earth, um modelo 3D seria uma abordagem melhor, em seguida, uma imagem, uma vez que os usuários podem mudar o ângulo de visualização.

Você pode querer olhar para passeios: http://code.google .com / apis / kml / documentation / touring.html

Eu vi algo como este feito usando uma combinação de (a quantidade de) marcas <gx:AnimatedUpdate> para mover um marcador criado anteriormente representando o seu barco e <gx:FlyTo> tags para mover a vista (eu acho) tudo dentro de um <gx:Playlist>.

Espero que isso ajude.

Eu estou presumindo que essa funcionalidade não existia quando originalmente respondeu, mas você pode conseguir o efeito usando uma excursão. O seguinte mostra um marcador movendo desta forma.

<?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>

O caminho pode ser marcada com pontos cuja visibilidade é alterada pelo turismo, no momento oportuno.

Eu tenho seguinte exemplo no site do Google. Espero que isso ajuda.

(detalhes no interior: https: // sites. google.com/site/canadadennischen888/home/kml/auto-refresh-3d-tracking )

  1. preparar um serviço RESTful para gerar arquivo KML do DB (Amostra como no https://sites.google.com/site/canadadennischen888 / home / kml / 3d-tracking )

  2. Meu outro código irá gerar um arquivo KMZ que tem um link para o meu serviço RESTful (Amostra como nesta página)

  3. arquivo KMZ tem onInterval

  4. página Web permite que o usuário baixar o arquivo KMZ que tem URL que apontam para o meu serviço RESTful

  5. Quando o arquivo Google Earth aberto KMZ, Google Earth vontade atualização automática para obter novos dados desse serviço RESTful

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top