Mis favoritos | Español | Acceder

Recorridos en KML

Índice

Introducción

La novedosa función de recorrido de Google Earth 5.0 permite realizar vuelos controlados a través de datos geoespaciales con las siguientes características:

  • duraciones de vuelo específicas entre ubicaciones,
  • vuelos suaves entre ubicaciones sin detenerse,
  • reproducción de archivos de sonido en momentos predefinidos durante el recorrido,
  • actualizaciones temporales de los recursos KML dentro de los límites del recorrido.

Para obtener más información sobre los recorridos del punto de vista del cliente de Google Earth, consulta la Guía del usuario de Google Earth.

Espacio de nombre de extensiones de Google

Los elementos KML que definen los recorridos se encuentran dentro de un conjunto de extensiones del estándar OGC KML mediante el uso del prefijo gx. Para utilizarlos, primero debes añadir la URI del espacio de nombre correcta al elemento de inicio <kml> de tu archivo KML:

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

Entre los elementos relacionados con los recorridos de la extensión gx se incluyen:

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

Los recorridos son compatibles con Google Earth 5.0, pero es posible que no sean compatibles con otros navegadores geográficos. Si tu navegador no admite determinadas extensiones, deberás ignorar de forma silenciosa los datos de dichas extensiones y, a continuación, podrás cargar el resto del archivo KML sin errores.

Terminología

elemento básico de recorrido: uno de los conjuntos de elementos que definen una acción de un recorrido. Un ejemplo de un recorrido básico es el elemento "FlyTo", que se define en el elemento <gx:FlyTo> y su elemento secundario.

playlist: el contenedor de una lista de elementos básicos de recorrido que definen un recorrido. El elemento de lista de reproducción (playlist) se puede visualizar junto con una línea de tiempo (consulta Línea de tiempo de un recorrido para obtener más información).

La estructura de un recorrido

Los recorridos se crean mediante la colocación de elementos específicos, en orden, dentro de un archivo KML. El archivo KML puede contener cualquier otro elemento KML legal junto con el recorrido.

En el siguiente ejemplo aparece un recorrido completo y una carpeta (Folder) que contiene varias marcas de posición (Placemark). El recorrido comienza en la isla meridional de Nueva Zelanda, antes de volar al norte a través del monte Taranaki y en él se muestran ambos modos de desplazamiento (flyToMode), smooth y bounce, además del método <gx:balloonVisibility> de apertura de una viñeta de descripción. A continuación, se ofrece una descripción más detallada de los elementos de recorrido.

 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://code.google.com/apis/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>

Línea de tiempo de un recorrido

Los recorridos se componen de una serie de elementos básicos de recorrido: "FlyTo", "Wait", "TourControl", "AnimatedUpdate" y "SoundCue". Algunos de estos elementos básicos se reproducen uno después de otro; cada uno de estos elementos espera a que el elemento básico anterior se complete antes de comenzar a reproducirse. Otros se ejecutan de forma simultánea a otros elementos básicos, de modo que se pueden producir varias acciones a la vez.

Elementos básicos que se reproducen en serie

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

Estos elementos básicos se producen uno detrás de otro y deben haberse completado completamente antes de que la lista de reproducción se desplace hasta otro elemento de cualquier tipo. Esto significa que sólo se puede reproducir un elemento básico tipo serie (FlyTo, Wait o TourControl) a la vez y que no se pueden iniciar elementos "SoundCue" ni "AnimatedUpdate" mientras se esté reproduciendo un elemento básicos tipo serie.

Elementos básicos que se reproducen en paralelo

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

Estos elementos básicos se ponen en cola a medida que se añaden a la lista de reproducción. Una vez que la lista de reproducción ha comenzado, esta se desplaza inmediatamente al siguiente elemento básico, sin esperar a que el elemento "SoundCue" o "AnimatedUpdate" se complete. Esto significa que:

  • se pueden reproducir a la vez cualquier número de elementos "SoundCue" o "AnimatedUpdate" (colocándolos en cola uno detrás del otro en la lista de reproducción),
  • los elementos "SoundCue" y "AnimatedUpdate" se pueden reproducir a la vez que los elementos básicos tipo serie (aunque no se pueden iniciar mientras los elementos básicos tipo serie se encuentra en reproducción).

En el diagrama que aparece a continuación se ofrece un ejemplo de este comportamiento. Haz clic en la imagen para obtener una vista más detallada, incluido el contenido KML que define cada elemento básico de la lista de reproducción.


 

En el diagrama, cada elemento "FlyTo" necesita una determinada cantidad de tiempo (especificada en su elemento <gx:duration>) para completarse. Una vez transcurrido este tiempo, comenzará la reproducción del siguiente elemento básico.

El elemento "SoundCue", por otra parte, se reproduce en paralelo. El siguiente elemento básico de la línea de tiempo se reproduce de forma inmediata, al mismo tiempo que comienza la reproducción del archivo de sonido. La reproducción del archivo de sonido continúa hasta el final del archivo o hasta el final del recorrido, lo que se produzca en primer lugar. Si el recorrido termina antes de que lo haga el archivo de sonido, la reproducción del archivo de sonido se detendrá. Se pueden reproducir varios archivos de sonido de forma simultánea, ya que cada archivo se carga en su propia línea de tiempo.

Las actualizaciones animadas se comportan del mismo modo. Si un icono de marca de posición se define para que su tamaño aumente durante un período de 5 segundos, esta acción se producirá mientras se reproducen los siguientes elementos básicos de la línea principal de tiempo.

Elementos "FlyTo" y "flyToMode"

Los recorridos se desplazan entre ubicaciones; cada ubicación se especifica con un elemento <gx:FlyTo>. Contiene un elemento "AbstractView" (<Camera> o <LookAt>) que define la ubicación de visualización, el ángulo y la altitud en Google Earth.

Además, es posible especificar un modo de vuelo (flyToMode), que indique al navegador cómo debe llegar hasta el punto. Antes de la introducción de <gx:Tour>, los "recorridos" se reproducían en el navegador mediante saltos de marca de posición a marca de posición; la velocidad de vuelo (que se definía en el navegador) se ralentizaba a medida que el navegador se acercaba a la marca de posición y se detenía completamente antes de continuar hacia la siguiente marca de posición. Es posible seguir especificando este comportamiento en los recorridos. Para ello, utiliza la propiedad del elemento <gx:flyToMode>bounce</gx:flyToMode>.

El modo de vuelo (flyToMode) tipo smooth permite un vuelo suave y controlado a través del espacio. La velocidad entre los puntos se controla mediante la inclusión de un elemento <gx:duration>, que define el tiempo que necesita el navegador para desplazarse desde el punto actual al siguiente punto definido. Un vuelo sin pausas se compone de una serie de elementos "FlyTo" con modos de vuelo "flyToMode" tipo "smooth". El navegador terrestre interpola la velocidad y una ruta curva entre puntos, de modo que se llegue a cada marca de posición en el momento exacto especificado en el archivo KML. Por el contrario, en el modo de vuelo (flyToMode) tipo bounce, la velocidad nunca alcanza el valor cero hasta que el vuelo se detiene debido a uno de los siguientes eventos:

  • el final del recorrido,
  • un punto con un modo de vuelo (flyToMode) definido en "bounce",
  • un punto de espera.

Las pausas, las actualizaciones animadas y las pistas de sonido no dividen el vuelo.

Elemento "FlyTo" inicial

El primer elemento <gx:FlyTo> contenido dentro de una lista de reproducción vuela desde el punto panorámico actual del usuario en Google Earth. Se tiene en cuenta la velocidad, de modo que el primer punto variará ligeramente, en función de la ubicación del usuario en la Tierra en el momento en que comienza el recorrido. Se recomienda que este elemento "FlyTo" inicial contenga una duración mínima de 5 segundos y que esté establecido en modo bounce, para mejorar la experiencia de visualización.

Si <gx:flyToMode> se establece en smooth para el primer elemento "FlyTo" y va seguido de elementos "FlyTo" adicionales en modo "smooth", se tendrá en cuenta la posición inicial del usuario como el punto de la curva "smooth" y afectará a la curva de la ruta comprendida entre el primer punto y los siguientes. Esto significa que la serie inicial de elementos "FlyTo" en modo "smooth" será diferente para cada usuario, en función de lo que estén visualizando en el cliente de Google Earth en el momento en que comience el recorrido. Si sigues deseando establecer un elemento "FlyTo" en modo "smooth" como punto inicial, es posible introducir un elemento <gx:Wait> en el código del recorrido después del primer elemento "FlyTo". De este modo, la posición inicial quedará separada del resto del recorrido.

Ejemplos

En los siguientes ejemplos aparece la diferencia entre los modos de vuelo "bounce" y "smooth". Cada recorrido visita algunas marcas de posición, pero utiliza distintos modos de vuelo (flyToMode). Para reproducir los recorridos en Google Earth, haz clic en los enlaces que aparecen debajo de cada fragmento de código y, a continuación, haz doble clic en el nombre del recorrido desde el panel Lugares de 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... -->

Espera y pausa

Un elemento de espera (wait) detiene el movimiento a través del espacio en un recorrido, pero permite que los archivos de sonido y las actualizaciones animadas continúen. La duración de una espera se especifica en el archivo KML.

Un elemento de pausa (pause) detiene el recorrido en su ubicación actual, como si el usuario hubiera hecho clic en el botón Pausa; afecta a todos los elementos básicos. El recorrido sólo se reanuda cuando el usuario selecciona el botón Reproducir del control de recorrido de Google Earth.

Elemento de espera (wait)

Este elemento afecta únicamente a la cámara. Especifica un período de tiempo durante el cual la cámara permanecerá quieta. Esto no afectará a ninguna actualización animada ni a ningún archivo de sonido en reproducción en ese momento; la reproducción de dichos elementos continuará durante la espera. Los elementos de espera (wait) se pueden utilizar para dejar que las actualizaciones y los archivos de sonido se completen antes de que comience el siguiente elemento "FlyTo" o antes de que finalice el recorrido.

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

La cantidad de tiempo de la espera se especifica en segundos, a través del elemento <gx:duration>. Una vez transcurrido el tiempo, el recorrido continúa con la siguiente acción especificada en la lista de reproducción. Una espera divide una ruta de vuelo en modo "smooth", de modo que el movimiento de la cámara se reduce a cero en cualquier punto justo antes de la espera, independientemente de su modo de vuelo (flyToMode).

Elemento de pausa (pause)

Las pausas controladas por el usuario se especifican a través de <gx:TourControl> y su elemento secundario, <gx:playMode>. Este último tiene un único valor permitido que es pause. La ejecución de esta acción es similar a que el usuario haga clic en el botón "Pausar" de Google Earth. El recorrido se detiene en el punto especificado y permanece detenido hasta que se hace clic en el botón Reproducir. Durante la pausa, el usuario puede desplazarse a su antojo por el entorno. Al hacer clic en Reproducir, el usuario volverá al punto del recorrido en el que se estableció la pausa.

Las pausas no dividen las rutas de vuelo en modo "smooth", de modo que el navegador calcula la velocidad entre los puntos en cada lado de la pausa como si dicha pausa no estuviera presente.

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

Ejemplos

A continuación, se ofrece un ejemplo de una espera. Un archivo de sonido se coloca en cola; dicho archivo contiene diez segundos de discurso de introducción. Se introduce una espera de diez segundos justo después de la pista de sonido, lo que evita que el siguiente elemento "FlyTo" se reproduzca hasta que el discurso haya finalizado.

 wait_example.kml

<?xml version="1.0" encoding="UTF-8"?>
 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>

En el siguiente ejemplo se muestra el uso de una pausa. El usuario vuela hasta una ubicación geográfica de la Tierra y, a continuación, el recorrido se detiene. El usuario puede desplazarse por la Tierra durante el tiempo que desee. Cuando desee reanudar el recorrido, deberá seleccionar el botón Reproducir en los controles del recorrido. Google Earth volverá a la última ubicación del recorrido y continuará con la reproducción.

 pause_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: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>

Actualizaciones

Las funciones KML de la Tierra se pueden modificar, variar o crear durante un recorrido, incluido el tamaño, el estilo y la ubicación de las marcas de posición, la suma de superposiciones del suelo, etc. Para obtener más información sobre la actualización de archivos KML, lee la sección Actualizaciones de la Guía del desarrollador.

Durante un recorrido, se pueden realizar actualizaciones del archivo KML. Para habilitar dichas actualizaciones, debes utilizar el elemento <gx:AnimatedUpdate>. El comportamiento de las actualizaciones dentro de un recorrido muestra las siguientes diferencias con respecto al comportamiento de las actualizaciones en un elemento de red (NetworkLink):

  • las actualizaciones del archivo KML se invierten al salir del recorrido,
  • las actualizaciones en el archivo KML no se incluyen al guardar el estado actual.

Además, cualquier cambio que las lleve a la interpolación (es decir, que contengan estados intermedios, como cambios de tamaño) se animarán durante el período de tiempo especificado. Los cambios que no tengan pasos intermedios (por ejemplo, la apertura o el cierre de viñetas de descripción) se actualizarán únicamente al final del período de tiempo especificado. Si no se especifica ninguna duración, la actualización se producirá inmediatamente (el valor predeterminado de <gx:duration> es 0,0).

A parte de las diferencias ya mencionadas, la actualización (Update) dentro de un elemento <gx:AnimatedUpdate> se comporta del mismo modo que dentro de <NetworkLinkControl>. Se puede utilizar para cambiar el aspecto, la ubicación y el tamaño del marcador, para añadir modelos o superposiciones del suelo y para alternar viñetas de información (con el elemento <gx:balloonVisibility>).

El elemento <gx:AnimatedUpdate> y la línea de tiempo de un recorrido

Las actualizaciones animadas se ejecutan en paralelo a la línea de tiempo, es decir, el recorrido continúa directamente hasta el siguiente elemento básico de la lista de reproducción, mientras se realiza la actualización animada. El elemento <gx:duration> controla el tiempo que tarda en realizarse la actualización, pero no retrasa el siguiente elemento básico del recorrido.

Para permitir que una actualización animada se complete antes de que tenga lugar la siguiente acción, introduce <gx:Wait> con una duración igual a la duración de la actualización entre la actualización animada y el siguiente elemento básico del recorrido.

Además, una actualización animada se truncará si su duración se extiende más allá del último elemento <gx:FlyTo> o <gx:Wait>. Puedes cambiar los valores adecuados de <gx:duration> o introducir un elemento <gx:Wait> adicional al final de la lista de reproducción para dar tiempo a que la actualización animada finalice.

Para obtener más información sobre la línea de tiempo, consulta la secciónLínea de tiempo de un recorrido más arriba.

Ejemplo

En el siguiente fragmento de código se muestra el cambio de tamaño de un icono determinado de la escala 1,0 a la escala 10,0. El cambio se produce durante 6,5 segundos, durante los que el icono se ampliará gradualmente desde su tamaño inicial a su tamaño final.

Observa la inclusión de un elemento básico <gx:Wait> al final del recorrido. Las actualizaciones animadas no mantienen abierto un recorrido por sí mismas; sólo los elementos básicos tipo serie definen la duración de un recorrido. Por este motivo, se ha introducido una espera de 2,4 segundos. En combinación con el elemento "FlyTo" de 4,1 segundos, la espera concede a la actualización el tiempo necesario para completarse antes de que finalice el recorrido.

 animatedupdate_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>gx:AnimatedUpdate example</name> <open>1</open> <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://code.google.com/apis/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>

Cómo añadir sonido

Es posible incluir archivos de sonido en los recorridos y reproducirlos en cualquier punto mediante el elemento <gx:SoundCue>. Un archivo de sonido se especifica a través de un elemento <href> secundario. Los formatos compatibles dependen de los códecs instalados en el sistema. A continuación se especifican algunos de ellos:

  • mp3
  • aac

No se especifica ninguna duración.

El archivo de sonido se reproduce en paralelo a la línea de tiempo principal, lo que significa que la lista de reproducción avanzará hasta los siguientes elementos básicos del recorrido mientras se reproduce el archivo de sonido. Para obtener más información, lee la sección Línea de tiempo de un recorrido. Observa que, al igual que las actualizaciones animadas, los archivos de sonido no mantienen abierto un recorrido. Sólo los elementos de recorrido tipo serie definen la duración de un recorrido. Si el recorrido termina antes de que lo haga el archivo de sonido, la reproducción del archivo de sonido se detendrá.

Reproducción de varios archivos de sonido

Es posible reproducir varios archivos de sonido a la vez. Google Earth se encargará de mezclarlos. Se trata de algo muy útil en los casos en los que se carga un archivo de música de fondo al principio del recorrido y se proporcionan voces superpuestas en puntos específicos del recorrido.

Cómo permitir que un archivo de sonido finalice antes de la reproducción del siguiente elemento básico

Si deseas que el recorrido espere a mientras se reproduce el archivo de sonido, incluye un elemento <gx:Wait> después del elemento básico <gx:SoundCue>. <gx:Wait> especifica la cantidad de tiempo expresada en segundos que debe esperar el recorrido antes de avanzar hasta el siguiente elemento básico.

La reproducción de un archivo de sonido no puede continuar una vez finalizado el recorrido. Puedes utilizar una espera (wait) para ampliar la duración de un recorrido mientras termina la reproducción del archivo de sonido.

Ejemplo

El recorrido de ejemplo que se muestra a continuación tiene una duración de 15 segundos, definida por las duraciones combinadas de <gx:FlyTo> y <gx:Wait>. El primer archivo de sonido dura 15 segundos y se reproduce durante todo el recorrido. El segundo archivo está en cola situado a 5 segundos, se mezcla con el primer archivo y se reproduce durante 10 segundos. El elemento <gx:Wait> es necesario para ampliar la duración del recorrido de modo que el archivo de sonido disponga del tiempo suficiente para finalizar.

 soundcue_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/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>

Modificación de las viñetas de descripción

Una viñeta de descripción de una marca de posición se puede abrir o cerrar durante un recorrido con el elemento <gx:balloonVisibility> que se encuentra dentro de una actualización animada. Los cambios en la visibilidad de la viñeta se realizarán al final de una duración específica, no se animarán a lo largo del tiempo especificado. Si se omite el valor <gx:duration>, se asignará el valor predeterminado 0,0 (la viñeta se abrirá o se cerrará inmediatamente).

Ejemplo

 balloonvisibility_tourexample.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>

Incorporación de imágenes de historial

Si el usuario ha habilitado las imágenes de historial en su cliente, puedes especificar la fecha a partir de la cual deseas introducir las imágenes. Para especificar la fecha de la imagen que deseas mostrar, incluye un elemento <gx:TimeStamp> en AbstractView. Observa que <gx:TimeStamp> también afecta al archivo KML basado en tiempo y a la luz solar.

Para todas las imágenes anteriores, se utilizará la última fecha especificada.

Ejemplo

 historicalimagery_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>
  <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>2002-04-03</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>

Problemas conocidos

Actualmente, el cliente de Google Earth no es totalmente compatible con la función de recorrido KML. A continuación, se especifican algunos de los problemas conocidos; estos errores se solucionarán en futuras versiones.

  • Los elementos <gx:AnimatedUpdate> y <gx:TourControl> dividirán la curva creada por una serie de elementos "FlyTo" en modo "smooth". Los puntos "FlyTo" de cada lado de estos elementos quedarán unidos mediante una ruta lineal.
  • Los archivos de sonido cargados con el elemento <gx:SoundCue> continúan en reproducción durante una pausa iniciada por el elemento <gx:TourControl>. Al reanudar el recorrido, Google Earth vuelve al punto del archivo de sonido en el que se activó la pausa.
  • Al utilizar otros modos de altitud distintos a "absolute", es posible que la ruta entre los puntos "FlyTo" salte hacia arriba o hacia abajo a medida que la cámara se acerca a un punto. Esto se debe a la carga de datos de terreno actualizados en el cliente. A medida que la cámara se acerca a un punto, el nivel de detalle de la información sobre dicho punto aumenta cada vez más. Como resultado, es posible que se actualice la elevación del terreno por debajo del punto, por lo que será necesaria una corrección de la ruta en dicho punto.

    Por este motivo, el mecanismo de grabación de Google Earth especifica modos de altitud absolutos (absolute) para todos los puntos "FlyTo". Si estas correcciones de ruta interfieren con tu recorrido, también deberás convertir las altitudes a valores absolutos.