Tour in KML

Sommario

Introduzione

Novità di Google Earth 5.0: i tour consentono voli controllati attraverso dati geospaziali, tra cui:

  • durate di volo specifiche tra le località
  • non fermare le località dei voli, senza fermarsi
  • la riproduzione di file audio a orari predefiniti durante il tour
  • aggiornamenti temporanei alle funzionalità KML entro i limiti del tour

Per ulteriori informazioni sui tour dal punto di vista del client Google Earth, consulta la Guida dell'utente di Google Earth.

Spazio dei nomi delle estensioni di Google

Gli elementi KML che definiscono i tour sono contenuti in un insieme di estensioni dello standard KML OGC utilizzando il prefisso gx. Per utilizzarli, devi includere l'URI dello spazio dei nomi corretto nell'elemento <kml> di apertura nel file KML:

<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

Gli elementi correlati al tour nell'estensione gx includono:

<gx:Tour> <gx:playMode>
<gx:Playlist> <gx:Wait>
<gx:Flyto> <gx:AnimatedUpdate>
<gx:flyToMode> <gx:SoundCue>
<gx:TourControl> <gx:duration>

La funzionalità Tour è supportata in Google Earth 5.0, ma potrebbe non essere supportata da altri browser geografici. Se il tuo browser non supporta determinate estensioni, i dati in queste estensioni devono essere ignorati e il resto del file KML deve essere caricato senza errori.

Terminologia

tour primitive: uno degli insiemi di elementi che definiscono un'azione in un tour. Un primitivo di un tour è un FlyTo, definito dall'elemento <gx:FlyTo> e dai relativi figli.

playlist: il contenitore di un elenco di primitive del tour che definiscono un tour. La playlist può essere visualizzata lungo una sequenza temporale (per ulteriori informazioni, vedi Cronologia dei tour).

La struttura di un tour

I tour vengono creati posizionando elementi specifici, in ordine, in un file KML. Il file KML può contenere qualsiasi altro elemento KML legale oltre al tour.

L'esempio seguente mostra un tour completo e una cartella contenente una serie di segnaposto. Il tour inizia nell'Isola del Sud della Nuova Zelanda, prima di prendere il volo attraverso il Monte Taranaki e dimostra sia l'espressione liscio che l'espressione bounce di flyToModes, nonché il metodo <gx:balloonVisibility> per aprire un fumetto con descrizione. Gli elementi del tour sono descritti più in dettaglio di seguito.

complete_tour_example.KML

<?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>
  <name>A tour and some features</name>
  <open>1</open>

  <gx:Tour>
    <name>Play me!</name>
    <gx:Playlist>

      <gx:FlyTo>
        <gx:duration>5.0</gx:duration>
        <!-- bounce is the default flyToMode -->
        <Camera>
          <longitude>170.157</longitude>
          <latitude>-43.671</latitude>
          <altitude>9700</altitude>
          <heading>-6.333</heading>
          <tilt>33.5</tilt>
        </Camera>
      </gx:FlyTo>

      <gx:Wait>
        <gx:duration>1.0</gx:duration>
      </gx:Wait>

      <gx:FlyTo>
        <gx:duration>6.0</gx:duration>
        <Camera>
          <longitude>174.063</longitude>
          <latitude>-39.663</latitude>
          <altitude>18275</altitude>
          <heading>-4.921</heading>
          <tilt>65</tilt>
          <altitudeMode>absolute</altitudeMode>
        </Camera>
      </gx:FlyTo>

      <gx:FlyTo>
        <gx:duration>3.0</gx:duration>
        <gx:flyToMode>smooth</gx:flyToMode>
        <LookAt>
          <longitude>174.007</longitude>
          <latitude>-39.279</latitude>
          <altitude>0</altitude>
          <heading>112.817</heading>
          <tilt>68.065</tilt>
          <range>6811.884</range>
          <altitudeMode>relativeToGround</altitudeMode>
        </LookAt>
      </gx:FlyTo>

      <gx:FlyTo>
        <gx:duration>3.0</gx:duration>
        <gx:flyToMode>smooth</gx:flyToMode>
        <LookAt>
          <longitude>174.064</longitude>
          <latitude>-39.321</latitude>
          <altitude>0</altitude>
          <heading>-48.463</heading>
          <tilt>67.946</tilt>
          <range>4202.579</range>
          <altitudeMode>relativeToGround</altitudeMode>
        </LookAt>
       </gx:FlyTo>

      <gx:FlyTo>
        <gx:duration>5.0</gx:duration>
        <LookAt>
          <longitude>175.365</longitude>
          <latitude>-36.523</latitude>
          <altitude>0</altitude>
          <heading>-95</heading>
          <tilt>65</tilt>
          <range>2500</range>
          <altitudeMode>relativeToGround</altitudeMode>
        </LookAt>
      </gx:FlyTo>

      <gx:AnimatedUpdate>
        <gx:duration>0.0</gx:duration>
        <Update>
          <targetHref/>
          <Change>
            <Placemark targetId="pin2">
              <gx:balloonVisibility>1</gx:balloonVisibility>
            </Placemark>
          </Change>
        </Update>
      </gx:AnimatedUpdate>

      <gx:Wait>
        <gx:duration>6.0</gx:duration>
      </gx:Wait>

    </gx:Playlist>
  </gx:Tour>

  <Folder>
    <name>Points and polygons</name>

    <Style id="pushpin">
      <IconStyle>
        <Icon>
          <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
        </Icon>
      </IconStyle>
    </Style>

    <Placemark id="mountainpin1">
      <name>New Zealand's Southern Alps</name>
      <styleUrl>#pushpin</styleUrl>
      <Point>
        <coordinates>170.144,-43.605,0</coordinates>
      </Point>
    </Placemark>

    <Placemark id="pin2">
      <name>The End</name>
      <description>
        Learn more at http://developers.google.com/kml/documentation
      </description>
      <styleUrl>pushpin</styleUrl>
      <Point>
        <coordinates>175.370,-36.526,0</coordinates>
      </Point>
    </Placemark>

    <Placemark id="polygon1">
      <name>Polygon</name>
      <Polygon>
        <tessellate>1</tessellate>
        <outerBoundaryIs>
          <LinearRing>
            <coordinates>
              175.365,-36.522,0
              175.366,-36.530,0
              175.369,-36.529,0
              175.366,-36.521,0
              175.365,-36.522,0
            </coordinates>
          </LinearRing>
        </outerBoundaryIs>
      </Polygon>
    </Placemark>

  </Folder>
</Document>
</kml>

Cronologia del tour

I tour sono costituiti da una serie di primitive per i tour: FlyTos, Waits, TourControls, LivelyUpdates e SoundCues. Alcune di queste primitive vengono giocate una dopo l'altra, in attesa del completamento di una primitiva prima di quella successiva. Altre vengono eseguite parallelamente ad altre primitive, in modo da poter eseguire più azioni contemporaneamente.

Primitive che si verificano in serie

  • <gx:FlyTo>
  • <gx:Wait>
  • <gx:TourControl>

Queste primitive avvengono una dopo l'altra e devono essere completamente complete prima che la playlist passi a qualsiasi altro elemento, di qualsiasi tipo. Ciò significa che può essere effettuata una sola primitiva di tipo serie (FlyTo, Wait o TourControl) alla volta e che non possono essere avviati ulteriori SoundCue o LivelyUpdates durante un primitivo di tipo di serie.

Primitive che si verificano in parallelo

  • <gx:AnimatedUpdate>
  • <gx:SoundCue>

Queste primitive vengono scelte quando appaiono nella playlist. Una volta avviata la playlist, la playlist passa subito alla primitiva successiva, senza attendere il completamento di SoundCue o LivelyUpdate. Ciò significa che:

  • è possibile riprodurre contemporaneamente un numero qualsiasi di SoundCue e/o animazioni animati, inserendo uno dopo l'altro nella playlist.
  • I suoni e/o gli aggiornamenti animati possono essere eseguiti durante la riproduzione delle primitive di tipo serie, anche se non possono essere avviate durante la riproduzione delle primitive di tipo serie.

Il seguente diagramma illustra questo comportamento. Fai clic sull'immagine per una visualizzazione più dettagliata, inclusi i contenuti KML che definiscono ogni primitiva nella playlist.


 

Il diagramma mostra che ogni FlyTo richiede un periodo di tempo specifico (specificato nel suo elemento <gx:duration>) per essere completato. Solo una volta trascorso questo tempo, inizia la primitiva successiva.

Il SoundCue, invece, avviene in parallelo. La primitiva successiva nella sequenza temporale principale avviene immediatamente, nello stesso momento in cui inizia la riproduzione del file audio. Il file audio continua fino alla fine del file o alla fine del tour, a seconda dell'evento che si verifica per primo. Se il tour termina prima della riproduzione del file audio, la riproduzione del file viene interrotta. È possibile riprodurre un numero qualsiasi di file audio alla volta, poiché ognuno viene caricato in una sequenza temporale specifica.

Gli aggiornamenti animati si comportano allo stesso modo. Se l'icona di un segnaposto è impostata per aumentare le dimensioni in una durata di 5 secondi, lo fa mentre vengono eseguite le primitive successive nella sequenza temporale principale.

FlyTo e flyToMode

I tour si spostano da una località all'altra, ognuno dei quali viene specificato utilizzando un elemento <gx:FlyTo>. Questa contiene una vista astratta (<Camera> o <LookAt>) che definisce la posizione, l'angolo e l'altitudine di visualizzazione in Google Earth.

Inoltre, è possibile specificare un campo flyToMode che indica al browser come affrontare il punto. Prima dell'introduzione di <gx:Tour>, i "tour" venivano riprodotti nel browser passando da un segnaposto all'altro; la velocità di volo (definita dal browser) rallentava man mano che il browser si avvicinava al segnaposto, terminando con velocità zero prima di passare al segnaposto successivo. Questo comportamento può ancora essere specificato nei tour utilizzando la proprietà dell'elemento <gx:flyToMode>bounce</gx:flyToMode>.

Il tipo smooth flyToMode consente un volo fluido e controllato nello spazio. La velocità tra punti è controllata dall'inclusione di un elemento <gx:duration>, che definisce il tempo impiegato dal browser per passare dal punto corrente alla vista definita successiva. Un volo ininterrotto è costituito da una serie di FlyTos con flyToModes fluido: il browser Earth interpola la velocità e un percorso curvo tra i punti in modo che ciascun segnaposto venga raggiunto esattamente al momento specificato nel file KML. A differenza dell'opzione bounce flyToMode, la velocità non raggiunge mai zero fino a quando il volo non si rompe in uno dei seguenti eventi:

  • la fine del tour,
  • un punto con un metodo flyToMode di rimbalzo, oppure
  • un'attesa.

Le pausa, gli aggiornamenti animati e i segnali audio non provocano interruzioni del periodo di pubblicazione.

Volo iniziale

Il primo elemento <gx:FlyTo> contenuto in una playlist viene visto nell'attuale angolazione dello spettatore in Google Earth. La durata viene osservata, quindi la velocità fino al primo punto varia notevolmente, a seconda di dove si trova lo spettatore in Earth quando inizia il tour. Consigliamo di impostare un valore FlyTo iniziale di almeno 5 secondi e di utilizzare la modalità bounce per ottimizzare l'esperienza di visualizzazione.

Se <gx:flyToMode> è impostato su smooth per il primo FlyTo ed è seguito da FlyTos aggiuntivi, la posizione iniziale dello spettatore verrà considerata come un punto nella curva fluida e influirà sulla curva del percorso tra il primo e il successivo. Ciò significa che la serie iniziale di FlyTos iniziali sarà diversa per ciascuno spettatore, a seconda di ciò che stava guardando nel client Earth quando è iniziato il tour. Se vuoi ancora un FlyTo fluido fino al punto iniziale, puoi inserire un <gx:Wait> nel codice del tour dopo il primo FlyTo. In questo modo la posizione iniziale sarà separata da quella del resto del tour.

Esempi

I seguenti esempi mostrano la differenza tra rimbalzo e flyToModes. Ogni tour visita gli stessi segnaposto, ma utilizza flyToModes diversi. Per riprodurre i tour in Google Earth, fai clic sui link sopra ogni snippet di codice, quindi fai doppio clic sul nome del tour nel riquadro Luoghi di Google Earth.

bounce_example.KML

<gx:FlyTo>
  <gx:duration>4.0</gx:duration>
  <!-- bounce is the default flyToMode -->
  <LookAt>
    <longitude>-121.303179</longitude>
    <latitude>45.993041</latitude>
    <altitude>0</altitude>
    <heading>-27.923387</heading>
    <tilt>71.600075</tilt>
    <range>22570.546801</range>
    <altitudeMode>relativeToGround</altitudeMode>
  </LookAt>
</gx:FlyTo>

<!-- ...snip... -->

smooth_example.KML

<gx:FlyTo>
  <gx:duration>4.0</gx:duration>
  <gx:flyToMode>smooth</gx:flyToMode>
  <LookAt>
    <longitude>-121.303179</longitude>
    <latitude>45.993041</latitude>
    <altitude>0</altitude>
    <heading>-27.923387</heading>
    <tilt>71.600075</tilt>
    <range>22570.546801</range>
    <altitudeMode>relativeToGround</altitudeMode>
  </LookAt>
</gx:FlyTo>

<!-- ...snip... -->

In attesa e messa in pausa

Un'attesa interrompe il movimento nello spazio di un tour, ma consente di continuare a utilizzare file audio e aggiornamenti animati. La durata di un'attesa viene specificata nel file KML.

Una sospensione interrompe il tour nella posizione attuale, come se l'utente avesse fatto clic sul pulsante Metti in pausa e influisce su tutte le primitive. Il tour riprende solo quando l'utente seleziona il pulsante Riproduci nel controllo del tour in Google Earth.

Attesa

Questo elemento interessa solo la videocamera. Specifica per quanto tempo la fotocamera rimane ferma. I file audio attualmente in riproduzione e/o gli aggiornamenti animati non sono interessati e continuano per l'attesa. Le attese possono essere utilizzate per concedere ai file audio o agli aggiornamenti il tempo per il completamento, prima dell'inizio del FlyTo successivo o prima della fine del tour.

<gx:Wait>
    <gx:duration>10.0</gx:duration>   <!-- wait time in seconds -->
</gx:Wait>

Il tempo di attesa è specificato in secondi utilizzando l'elemento <gx:duration>. Una volta trascorso il tempo, il tour prosegue con l'azione successiva specificata nella playlist. Un'attesa interrompe un percorso di volo fluido, consentendo al movimento della videocamera di raggiungere una velocità zero in qualsiasi momento immediatamente precedente l'attesa, indipendentemente dalla modalità flyToMode.

Pausa

Le pause controllate dall'utente sono specificate mediante <gx:TourControl> e il relativo elemento secondario, <gx:playMode>. Quest'ultimo ha un singolo valore consentito di pause. Questa operazione è simile all'utente, che fa clic sul pulsante di pausa in Google Earth: a quel punto il tour viene messo in pausa e rimane in pausa finché non fai clic sul pulsante Riproduci. Durante la pausa, l'utente può spostarsi a sua piacimento nell'ambiente Earth. Quando viene fatto clic su Riproduci, gli utenti tornano nel punto del tour in cui la pausa è stata impostata.

Le pause non provocano interruzioni del percorso di volo, quindi la velocità tra i punti di una pausa viene calcolata dal browser come se non fosse presente.

<gx:TourControl>
    <gx:playMode>pause</gx:playMode>
</gx:TourControl>

Esempi

Un esempio di attesa è riportato di seguito. Viene creato un file audio contenente dieci secondi di conversazione. L'attesa di dieci secondi viene inserita subito dopo il segnale acustico, impedendo che si attivi il seguente evento FlyTo fino al completamento della voce.

wait_example.KML

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

<gx:Tour>
  <gx:Playlist>

    <gx:SoundCue>
      <href>
        http://dev.keyhole.com/codesite/cntowerfacts.mp3
      </href>   <!-- this file is ten seconds long -->
    </gx:SoundCue>

    <gx:Wait>
      <gx:duration>10</gx:duration>
    </gx:Wait>

    <gx:FlyTo>
      <gx:duration>5</gx:duration>
      <gx:flyToMode>bounce</gx:flyToMode>
      <LookAt>
        <longitude>-79.387</longitude>
<latitude>43.643</latitude>
<altitude>0</altitude> <heading>-172.3</heading> <tilt>10</tilt> <range>1200</range> <altitudeMode>relativeToGround</altitudeMode>
</LookAt> </gx:FlyTo> </gx:Playlist> </gx:Tour> </kml>

L'esempio seguente mostra l'uso di una pausa. Lo spettatore viene reindirizzato in una posizione specifica in Earth e poi il tour è in pausa. L'utente può spostarsi nell'ambiente Earth per qualsiasi durata. Quando sono pronti per riprendere il tour, devono selezionare Riproduci dai controlli del tour. Google Earth torna all'ultima posizione del tour e continua.

in pausa_esempio.KML

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

<gx:Tour>
  <gx:Playlist>

    <gx:FlyTo>
<gx:duration>5</gx:duration>
<gx:flyToMode>bounce</gx:flyToMode>
<LookAt>
<longitude>-79.387</longitude>
<latitude>43.643</latitude>
<altitude>0</altitude>
<heading>-172.3</heading>
<tilt>10</tilt>
<range>1200</range>
<altitudeMode>relativeToGround</altitudeMode>
</LookAt>
</gx:FlyTo> <gx:TourControl> <gx:playMode>pause</gx:playMode> </gx:TourControl> <gx:SoundCue> <href> http://dev.keyhole.com/codesite/cntowerfacts.mp3 </href> <!-- this file is ten seconds long --> </gx:SoundCue> <gx:Wait> <gx:duration>10.0</gx:duration> </gx:Wait> </gx:Playlist> </gx:Tour> </kml>

Aggiornamenti

Le funzionalità KML nell'ambiente Earth possono essere modificate, modificate o create durante un tour, incluse le dimensioni, lo stile e la posizione dei segnaposto, l'aggiunta di overlay al suolo, geometrie e altro ancora. Per ulteriori informazioni sull'aggiornamento di KML, leggi la sezione Aggiornamenti della Guida per gli sviluppatori.

Gli aggiornamenti al file KML possono essere eseguiti durante un tour e vengono attivati mediante l'utilizzo dell'elemento <gx:AnimatedUpdate>. Il comportamento degli aggiornamenti all'interno di un tour differisce dal comportamento degli aggiornamenti in un NetworkLink per il fatto che:

  • gli aggiornamenti del KML vengono invertiti quando il tour viene chiuso e
  • Quando viene salvato lo stato corrente, gli aggiornamenti del file KML non vengono inclusi.

Inoltre, le modifiche che si prestano all'interpolazione (ovvero che contengono stati intermedi, come le modifiche alle dimensioni) vengono animate nel corso della durata specificata. Le modifiche che non hanno passaggi intermedi (come l'apertura o la chiusura dei fumetti di descrizione) vengono aggiornate solo alla fine della durata specificata. Se non viene specificata alcuna durata, l'aggiornamento viene applicato immediatamente (il valore predefinito di <gx:duration> è 0.0).

A parte le differenze elencate sopra, l'aggiornamento all'interno di un elemento <gx:AnimatedUpdate> si comporta come l'aggiornamento in <NetworkLinkControl>. Può essere utilizzata per modificare le dimensioni, la posizione e l'aspetto dell'indicatore, aggiungere overlay o modelli del terreno e, utilizzando l'elemento <gx:balloonVisibility>, attivare/disattivare i fumetti di informazioni.

<gx:AnimatedUpdate> e la sequenza temporale del tour

Gli aggiornamenti animati vengono eseguiti parallelamente alla sequenza temporale, ovvero il tour prosegue direttamente per la primitiva del tour successivo nella playlist, mentre l'aggiornamento animato avviene. <gx:duration> controlla il tempo necessario per l'esecuzione dell'aggiornamento, ma non ritarda la primitiva del tour successivo.

Per consentire il completamento di un aggiornamento animato prima che avvenga l'azione successiva, inserisci un <gx:Wait>, con una durata uguale alla durata dell'aggiornamento, tra l'aggiornamento animato e la prima originaria del tour.

Inoltre, un aggiornamento animato verrà troncato se la sua durata è superiore a quella dell'ultimo elemento <gx:FlyTo> o <gx:Wait>. Puoi modificare i valori <gx:duration> appropriati o inserire un ulteriore elemento <gx:Wait> alla fine della playlist per dare il tempo di aggiornamento animato.

Per ulteriori informazioni sulle tempistiche, leggi le Cronologia dei tour sopra.

Esempio

Il seguente snippet di codice mostra una variazione delle dimensioni di una determinata icona del segnaposto, da una scala da 1.0 a una scala di 10.0. La modifica avviene oltre 6,5 secondi, durante i quali l'icona si espande gradualmente dalla sua iniziale a quella finale.

Nota l'inclusione di una primitiva <gx:Wait> alla fine del tour. Gli aggiornamenti animati non consentono di aprire un tour: solo le primitive del tour di tipo serie definiscono la durata di un tour. Per questo motivo, è stata inserita un'attesa di 2,4 secondi. In combinazione con il FlyTo di 4,1 secondi, l'attesa offre il tempo di aggiornamento prima del termine del tour.

animatedupdate_example.placeholder

<?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> <name>gx:AnimatedUpdate example</name> <open>1</open> <Style id="style"> <IconStyle id="iconstyle"> <scale>1.0</scale> </IconStyle> </Style> <Placemark id="mountainpin1"> <name>New Zealand's Southern Alps</name> <styleUrl>#style</styleUrl> <Point> <coordinates>170.144,-43.605,0</coordinates> </Point> </Placemark> <gx:Tour> <name>Play me!</name> <gx:Playlist> <!-- The order and duration of TourPrimitives is important; in this example, the AnimatedUpdate needs 6.5 seconds to complete. The FlyTo provides 4.1, and the Wait 2.4, giving the update time to complete before the Tour ends. AnimatedUpdates don't hold Tours open, but FlyTos and Waits do. For more information, refer to: http://developers.google.com/kml/documentation/touring.html#tourtimelines --> <gx:AnimatedUpdate> <gx:duration>6.5</gx:duration> <Update> <targetHref></targetHref> <Change> <IconStyle targetId="iconstyle"> <scale>10.0</scale> </IconStyle> </Change> </Update> </gx:AnimatedUpdate> <gx:FlyTo> <gx:duration>4.1</gx:duration> <Camera> <longitude>170.157</longitude> <latitude>-43.671</latitude> <altitude>9700</altitude> <heading>-6.333</heading> <tilt>33.5</tilt> <roll>0</roll> </Camera> </gx:FlyTo> <!-- wait for the AnimatedUpdate to complete --> <gx:Wait> <gx:duration>2.4</gx:duration> </gx:Wait> </gx:Playlist> </gx:Tour> </Document> </kml>

Aggiungere l'audio

I file audio possono essere inclusi nei tour e riprodotti in qualsiasi momento utilizzando l'elemento <gx:SoundCue>. Un elemento <href> secondario specifica il file audio. I formati supportati dipendono dai codec installati sul sistema e includono, a titolo esemplificativo:

  • mp3
  • aac

Nessuna durata specificata.

I file audio vengono riprodotti in parallelo alla sequenza temporale principale, quindi la playlist passa alle primitive del tour successivo durante la riproduzione del file audio. Per saperne di più, leggi la Cronologia dei tour. Tieni presente che, come per gli aggiornamenti animati, i file audio non tengono aperto un tour, ma solo le primitive del tour di tipo serie definiscono la durata di un tour. Se il tour termina prima del completamento di un file audio, la riproduzione del file audio viene interrotta.

Riproduzione di più file audio

È possibile riprodurre più file audio contemporaneamente. Google Earth li mescolerà. Ciò è utile nei casi in cui un file musicale di sottofondo venga caricato all'inizio del tour e le voci fuori campo vengano fornite in punti specifici dell'intero tour.

Consentire il completamento di un file audio prima della riproduzione della prima originaria successiva

Se vuoi che il tour attenda la riproduzione di un file audio, includi un elemento <gx:Wait> subito dopo la primitiva <gx:SoundCue>. <gx:Wait> specifica in secondi il tempo che il tour deve attendere prima di passare alla primitiva successiva.

La riproduzione di un file audio non può continuare dopo la fine del tour. È possibile utilizzare un'attesa per estendere la durata di un tour mentre viene terminata la riproduzione di un file audio.

Esempio

Il tour di esempio dura 15 secondi, definito dalle durate combinate <gx:FlyTo> e <gx:Wait>. Il primo clip audio dura 15 secondi e viene riprodotto per l'intera durata del tour. Il secondo file viene selezionato per 5 secondi, viene combinato con il primo file e viene riprodotto per 10 secondi. È necessario <gx:Wait> per estendere la durata del tour in modo che i clip audio abbiano tempo sufficiente per essere completati.

soundcue_example.txt

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

<gx:Tour>
  <gx:Playlist>
 
    <gx:SoundCue>
      <href>
        http://dev.keyhole.com/codesite/AJsBlues.mp3
      </href>    <!-- 15 second audio clip -->
    </gx:SoundCue>
 
    <gx:FlyTo>
      <gx:duration>5</gx:duration>
      <gx:flyToMode>bounce</gx:flyToMode>
      <LookAt>
        <longitude>-79.387</longitude>
<latitude>43.643</latitude>
<altitude>0</altitude>
<range>1200</range>
<tilt>10</tilt>
<heading>-172.3</heading>
<altitudeMode>relativeToGround</altitudeMode>
</LookAt> </gx:FlyTo> <gx:SoundCue> <href> http://dev.keyhole.com/codesite/cntowerfacts.mp3 </href> <!-- 10 second audio clip --> </gx:SoundCue> <gx:Wait> <gx:duration>10</gx:duration> <!-- continues the tour for 10 seconds --> </gx:Wait> <!-- while audio clip plays --> </gx:Playlist> </gx:Tour> </kml>

Attivazione/disattivazione dei fumetti di descrizione

Il fumetto descrittivo di un segnaposto può essere aperto o chiuso durante un tour, utilizzando <gx:balloonVisibility> in un aggiornamento animato. Le modifiche alla visibilità dei fumetti verranno apportate al termine di ogni durata specificata e non verranno animate nel tempo specificato. Se un valore <gx:duration> viene omesso, viene assegnato il valore predefinito 0,0 (il fumetto si apre o si chiude immediatamente).

Esempio

modellodi_visibilità_del_mongolfiera.KML

<?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>
    <name>balloonVisibility Example</name>
    <open>1</open>

    <gx:Tour>
      <name>Play me</name>
      <gx:Playlist>
 
        <gx:FlyTo>
          <gx:duration>5.0</gx:duration>
          <!-- bounce is the default flyToMode -->
          <LookAt>
            <longitude>-119.748584</longitude>
            <latitude>33.736266</latitude>
            <altitude>0</altitude>
            <heading>-9.295926</heading>
            <tilt>84.0957450</tilt>
            <range>4469.850414</range>
            <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
          </LookAt>
        </gx:FlyTo>

        <gx:AnimatedUpdate>
          <!-- the default duration is 0.0 -->
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater1">
                <gx:balloonVisibility>1</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:Wait>
          <gx:duration>4.0</gx:duration>
        </gx:Wait>

        <gx:AnimatedUpdate>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater1">
                <gx:balloonVisibility>0</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:FlyTo>
          <gx:duration>3</gx:duration>
          <gx:flyToMode>smooth</gx:flyToMode>
          <LookAt>
            <longitude>-119.782630</longitude>
            <latitude>33.862855</latitude>
            <altitude>0</altitude>
            <heading>-19.314858</heading>
            <tilt>84.117317</tilt>
            <range>6792.665540</range>
            <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
          </LookAt>
        </gx:FlyTo>

        <gx:AnimatedUpdate>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater2">
                <gx:balloonVisibility>1</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:Wait>
          <gx:duration>4.0</gx:duration>
        </gx:Wait>

        <gx:AnimatedUpdate>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater2">
                <gx:balloonVisibility>0</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:FlyTo>
          <gx:duration>3</gx:duration>
          <gx:flyToMode>smooth</gx:flyToMode>
          <LookAt>
            <longitude>-119.849578</longitude>
            <latitude>33.968515</latitude>
            <altitude>0</altitude>
            <heading>-173.948935</heading>
            <tilt>23.063392</tilt>
            <range>3733.666023</range>
            <altitudeMode>relativeToGround</altitudeMode>
          </LookAt>
        </gx:FlyTo>

        <gx:AnimatedUpdate>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="onland">
                <gx:balloonVisibility>1</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:Wait>
          <gx:duration>4.0</gx:duration>
        </gx:Wait>

      </gx:Playlist>
    </gx:Tour>

    <Placemark id="underwater1">
      <name>Underwater off the California Coast</name>
      <description>
        The tour begins near the Santa Cruz Canyon, 
        off the coast of California, USA.
      </description>
      <Point>
        <gx:altitudeMode>clampToSeaFloor</gx:altitudeMode>
        <coordinates>-119.749531,33.715059,0</coordinates>
      </Point>
    </Placemark>

    <Placemark id="underwater2">
      <name>Still swimming...</name>
      <description>We're about to leave the ocean, and visit the coast...</description>
      <Point>
        <gx:altitudeMode>clampToSeaFloor</gx:altitudeMode>
        <coordinates>-119.779550,33.829268,0</coordinates>
      </Point>
    </Placemark>

    <Placemark id="onland">
      <name>The end</name>
      <description>
        <![CDATA[The end of our simple tour. 
        Use <gx:balloonVisibility>1</gx:balloonVisibility> 
        to show description balloons.]]>
      </description>
      <Point>
        <coordinates>-119.849578,33.968515,0</coordinates>
      </Point>
    </Placemark>

  </Document>
</kml>

Incorporamento di immagini storiche

Se l'utente ha attivato le immagini storiche nel suo client, il tuo tour può specificare la data da cui eseguire il pull delle immagini. Per specificare la data dell'immagine da visualizzare, includi un elemento <gx:TimeStamp> in AbstractView Tieni presente che <gx:TimeStamp> influisce anche sui file KML basati sul tempo e sulla luce del sole.

Per tutte le immagini dei passaggi verrà utilizzata l'ultima data specificata.

Esempio

historicalimagery_example.kb

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

<gx:Tour>
  <name>Small town over time</name>
  <gx:Playlist>
    <gx:FlyTo>
      <gx:duration>5.0</gx:duration>
      <Camera>
        <gx:TimeStamp>
          <when>1990-08-04</when>
        </gx:TimeStamp>
        <longitude>-121.991</longitude>
        <latitude>47.857</latitude>
        <altitude>7000</altitude>
        <altitudeMode>absolute</altitudeMode>
      </Camera>
    </gx:FlyTo>

    <gx:FlyTo>
      <gx:duration>3.0</gx:duration>
      <gx:flyToMode>smooth</gx:flyToMode>
      <Camera>
        <gx:TimeStamp>
          <when>2009</when>
        </gx:TimeStamp>
        <longitude>-121.991</longitude>
        <latitude>47.857</latitude>
        <altitude>7000</altitude>
        <altitudeMode>absolute</altitudeMode>
      </Camera>
    </gx:FlyTo>

  </gx:Playlist>
</gx:Tour>
</kml>

Problemi noti

Attualmente il client di Google Earth non rispetta completamente le norme sui tour KML. Di seguito sono elencati alcuni problemi noti che potrebbero essere risolti nelle prossime release.

  • Gli elementi <gx:AnimatedUpdate> e <gx:TourControl> spezzeranno la curva creata da una serie di FlyTos fluidi. I punti FlyTo su entrambi i lati di questi elementi verranno uniti con un percorso lineare.
  • La riproduzione dei file audio caricati con <gx:SoundCue> continua durante la pausa avviata da <gx:TourControl>. Una volta ripreso il tour, Google Earth riprenderà il punto del file audio in cui è stata attivata la pausa.
  • Quando utilizzi modalità di altitudine diverse da quelle assolute, il percorso tra FlyTos potrebbe aumentare o diminuire quando la fotocamera si avvicina a un punto. Ciò è dovuto al caricamento dei dati di rilievo aggiornati nel client: man mano che la fotocamera si avvicina a un punto, le informazioni su quel punto diventano sempre più dettagliate. Di conseguenza, l'altitudine del terreno sottostante il punto potrebbe essere aggiornata, richiedendo una correzione nel percorso verso quel punto.

    Per questo motivo, il meccanismo di registrazione in Google Earth specifica le modalità di altitudine assoluta per tutti i FlyTos. Devi anche convertire le altitudini in valori assoluti se queste correzioni di percorso interferiscono con il tour.