Vous êtes sur la page 1sur 20

Tutorial de KML

https://developers.google.com/kml/doc
umentation/kml_tut?hl=es-419
KML es un formato de archivo que se utiliza para mostrar
datos geogrficos en un navegador terrestre, como
Google Earth, Google Maps y Google Maps para
mviles. KML utiliza una estructura basada en etiquetas
con atributos y elementos anidados y est basado en el
estndar XML. Todas las etiquetas distinguen entre
maysculas y minsculas y deben aparecer exactamente
como aparecen en la Referencia de KML. En esta
referencia se indica qu etiquetas son opcionales.
Dentro de un elemento determinado, las etiquetas deben
aparecer en el mismo orden en el que aparecen en la
referencia.

Si no conoces KML, consulta este documento y los


archivos de ejemplo que lo acompaan
(SamplesInEarth y SamplesInMaps) para empezar a
familiarizarte con la estructura bsica de un archivo KML
y las etiquetas que se utilizan con mayor frecuencia. En
la primera seccin se describen los recursos que se
pueden crear con la interfaz de usuario de Google Earth.
Entre estos recursos se incluyen marcas de posicin,
descripciones, superposiciones de suelo, rutas y
polgonos. En la segunda seccin se describen los
recursos que requieren la creacin de KML con un editor
de texto. Cuando un archivo de texto se guarda con las
extensiones .kml o .kmz, los navegadores terrestres
saben cmo reproducirlo.
Sugerencia: Para ver el "cdigo" KML de un recurso (Feature) en Google Earth, solo tienes
que hacer clic con el botn derecho en el recurso en el visor 3D de Google Earth y seleccionar
la opcin "Copiar". A continuacin, pega el contenido del portapapeles en cualquier editor de
texto. El recurso visual de Google Earth se convertir en su equivalente en texto KML. No
olvides experimentar con este recurso.

Todos los ejemplos descritos aqu se incluyen en este archivo de ejemplos de


KML. Comienza por descargar este archivo para ver los ejemplos en Google
Earth.

Para obtener ms informacin


La referencia de KML 2.2 proporciona detalles sobre el formato de archivo KML. Si
ya ests familiarizado con el lenguaje XML, tambin te interesar consultar
el esquema de KML 2.2.

Para ver un anlisis del uso de algunos de los recursos clave de KML, consulta
la Gua para desarrolladores.

ndice

Documentos KML bsicos


El modelo ms simple de documento KML es el que se puede crear directamente
en Google Earth; es decir, no es necesario editar ni crear ningn archivo KML en
un editor de texto. Las marcas de posicin, las superposiciones de suelo, las rutas
y los polgonos se pueden crear directamente en Google Earth.

Marcas de posicin
Las marcas de posicin (Placemark) son uno de los recursos ms utilizados en
Google Earth. Permiten marcar una posicin en la superficie de la Tierra con un
icono de chincheta amarilla. La marca de posicin (Placemark) ms sencilla
incluye solo un elemento de punto (<Point>), que especifica la ubicacin de la
marca de posicin. Puedes especificar un nombre y un icono personalizado para
una marca de posicin y, si quieres, le puedes aadir otros elementos
geomtricos.

Abre el archivo de ejemplos de KML en Google Earth y despliega la subcarpeta de


marcas de posicin (Placemark). Esta carpeta contiene tres tipos diferentes de
marcas de posicin: simple, flotante y sobresaliente. El cdigo KML para la marca
de posicin simple es el siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark>
<name>Marca de posicin simple</name>
<description>Pegada al suelo. Se coloca de forma inteligente a la
altura del relieve subyacente.</description>
<Point>
<coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
</Point>
</Placemark> </kml>

Este archivo tiene la siguiente estructura:

Un encabezado XML. Es la lnea nmero 1 de todos los archivos KML. Antes de


esta lnea no puede haber caracteres ni espacios.
Una declaracin de espacio de nombres de KML. Es la lnea nmero 2 de todos
los archivos KML 2.2.
Un objeto de marca de posicin (Placemark) que contiene los siguientes
elementos:
un nombre (name) que se utiliza como etiqueta para la marca de posicin,
una descripcin (description) que aparece en una "vieta" junto a la marca de
posicin,
un punto (Point) que especifica la posicin de la marca de posicin en la superficie
de la Tierra (la longitud, la latitud y, opcionalmente, la altitud).

Por si te estabas preguntando dnde est colocada la marca de posicin, est


justo encima del edificio 41 de Google, donde desarrollamos Google Earth.

Lo que los usuarios suelen pensar que es una "marca de posicin" en Google
Earth es en realidad un elemento de marca de posicin (<Placemark>) con un
elemento secundario de punto (<Point>) en KML. Una marca de posicin
(Placemark) con un elemento de punto (Point) es la nica forma de dibujar un
icono y una etiqueta en el visor 3D de Google Earth. De forma predeterminada, el
icono es la famosa chincheta amarilla. En KML, una marca de posicin
(<Placemark>) puede incluir uno o varios elementos geomtricos como, por
ejemplo, una cadena de lneas (LineString), un polgono (Polygon) o un modelo
(Model). Pero nicamente una marca de posicin (<Placemark>) con un punto
(Point) puede tener un icono y una etiqueta. El punto (Point) se usa para colocar el
icono, pero no hay representacin grfica del punto en s.

HTML descriptivo en las marcas de posicin


El archivo de ejemplos de KML contiene un ejemplo de casi todo lo que puedes
hacer con el texto de una marca de posicin (Placemark). Se pueden aadir
enlaces, tamaos de fuentes, estilos y colores, adems de especificar
alineaciones de texto y tablas. Si quieres ver la lista completa, copia y pega en un
editor de texto el ejemplo de marca de posicin "HTML descriptivo" (en la carpeta
de estilos y marcado, "Styles and Markup").

Marcado automtico en Google Earth (versin 4.0 y posteriores)


Google Earth 4.0 cuenta con una funcin de marcado automtico que convierte
texto como www.google.com en hiperenlaces activos de forma automtica en los
que el usuario puede hacer clic. El texto de la etiqueta de descripcin
(<description>), la etiqueta de fragmento (<Snippet>) y el elemento de texto
(<text>) del estilo de vieta (<BalloonStyle>) se transforman automticamente en
hiperenlaces HTTP estndar. No es necesario que aadas etiquetas de referencia
de hipertexto (<a href= ...>).

Cmo utilizar el elemento CDATA


Si quieres escribir cdigo HTML estndar dentro de una etiqueta de descripcin
(<description>), puedes hacerlo dentro de una etiqueta CDATA. Si no, es
necesario escribir los parntesis angulares como referencias a entidades para
evitar que Google Earth analice el HTML de manera incorrecta (por ejemplo, el
smbolo > se escribe &gt; y el smbolo < se escribe &lt;). Este es un recurso
estndar de XML, no es exclusivo de Google Earth.

Observa la diferencia entre las marcas HTML con etiquetas CDATA y sin ellas. En
primer lugar, el elemento de descripcin (<description>) con etiquetas CDATA.

<?xml version="1.0" encoding="UTF-8"?>


<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark>
<name>Ejemplo de CDATA</name> <description> <![CDATA[ <h1>Las
etiquetas CDATA son tiles!</h1> <p><font color="red">El texto es
<i>ms fcil de leer</i> y <b>ms fcil de escribir</b> cuando se
evita usar referencias de entidad.</font></p> ]]> </description>
<Point> <coordinates>102.595626,14.996729</coordinates> </Point>
</Placemark> </Document> </kml>

Y este es el elemento de descripcin (<description>) sin etiquetas CDATA, por lo


que los caracteres especiales deben usar referencias de entidades:

<?xml version="1.0" encoding="UTF-8"?>


<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark>
<name>Ejemplo de referencias de entidad</name> <description>
&lt;h1&gt;Las referencias de entidad son difciles de
escribir!&lt;/h1&gt; &lt;p&gt;&lt;font color="green"&gt;El texo es
&lt;i&gt;ms fcil de leer&lt;/i&gt; y &lt;b&gt;ms fcil de
escribir&lt;/b&gt; cuando puedes evitar el uso de referencias de
entidad.&lt;/font&gt;&lt;/p&gt; </description> <Point>
<coordinates>102.594411,14.998518</coordinates> </Point> </Placemark>
</Document> </kml>

Superposiciones de suelo
Las superposiciones de suelo permiten "colocar" una imagen sobre el relieve de la
Tierra. El elemento de icono (<Icon>) incluye el enlace al archivo .jpg que contiene
la imagen de superposicin. A continuacin se ofrece un ejemplo de superposicin
de suelo que aparece en el archivo de ejemplos de KML, en el que se muestra la
erupcin del volcn Etna en el ao 2001:

<?xml version="1.0" encoding="UTF-8"?>


<kml xmlns="http://www.opengis.net/kml/2.2"> <Folder>
<name>Superposiciones de suelo</name>
<description>Ejemplos de superposiciones de suelo</description>
<GroundOverlay>
<name>Superposicin a gran escala sobre relieve</name>
<description>La superposicin muestra la erupcin del Etna el 13 de
julio de 2001.</description>
<Icon>

<href>http://developers.google.com/kml/documentation/images/etna.jpg</
href>
</Icon>
<LatLonBox>
<north>37.91904192681665</north>
<south>37.46543388598137</south>
<east>15.35832653742206</east>
<west>14.60128369746704</west>
<rotation>-0.1556640799496235</rotation>
</LatLonBox>
</GroundOverlay>
</Folder> </kml>

Fjate en que el archivo empieza con las mismas dos lneas que el primer ejemplo:
el encabezado XML y la declaracin de espacio de nombres KML.
En este ejemplo se utiliza una carpeta (Folder) llamada "Ground Overlays"
(superposiciones de suelo) como mecanismo para agrupar y etiquetar el
contenido. Observa cmo aparece la carpeta en el panel "Lugares" cuando se
carga el archivo de ejemplos de KML en Google Earth.

La posicin de una superposicin de suelo est determinada por la etiqueta de


cuadro de latitud/longitud (<LatLonBox>). Se establecen los valores de
delimitacin para las latitudes Norte y Sur y para las longitudes Este y Oeste.
Adems, se establecen los valores de giro para las imgenes cuyo eje y no
coincida con el norte de la cuadrcula. En este ejemplo se usa una imagen JPEG
para la superposicin. Google Earth tambin admite los formatos BMP, GIF, TIFF,
TGA y PNG.

Rutas
Se pueden crear muchos tipos de rutas en Google Earth y es fcil ser creativo con
los datos. En KML, las rutas se crean con el elemento de cadena de lneas
(<LineString>). Observa el ejemplo con relieve absoluto (Absolute Extruded) que
se incluye en la carpeta de rutas (Paths) para ver cmo se ha generado la forma
con el siguiente cdigo:

<?xml version="1.0" encoding="UTF-8"?>


<kml xmlns="http://www.opengis.net/kml/2.2"> <Document>
<name>Rutas</name>
<description>Ejemplos de rutas. Observa que la etiqueta tessellate se
establece de forma predeterminada
en 0. Si quieres crear lneas teseladas, deben crearse
(o editarse) directamente en KML.</description> <Style
id="yellowLineGreenPoly">
<LineStyle>
<color>7f00ffff</color>
<width>4</width>
</LineStyle>
<PolyStyle>
<color>7f00ff00</color>
</PolyStyle>
</Style> <Placemark>
<name>Relieve absoluto</name>
<description>Pared verde transparente con contornos
amarillos</description>
<styleUrl>#yellowLineGreenPoly</styleUrl>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>
<altitudeMode>absoluto</altitudeMode>
<coordinates> -112.2550785337791,36.07954952145647,2357
-112.2549277039738,36.08117083492122,2357
-112.2552505069063,36.08260761307279,2357
-112.2564540158376,36.08395660588506,2357
-112.2580238976449,36.08511401044813,2357
-112.2595218489022,36.08584355239394,2357
-112.2608216347552,36.08612634548589,2357
-112.262073428656,36.08626019085147,2357
-112.2633204928495,36.08621519860091,2357
-112.2644963846444,36.08627897945274,2357
-112.2656969554589,36.08649599090644,2357 </coordinates>
</LineString> </Placemark>
</Document> </kml>

Observa que en realidad se trata solo de una lnea dibujada a cierta altitud sobre
el suelo. La etiqueta <tessellate>descompone la lnea en porciones pequeas y la
etiqueta <extrude> extiende la lnea hasta el suelo.

Polgonos
Los polgonos (Polygon) se pueden utilizar para crear edificios simples y otras
formas. Busca ejemplos en la carpeta de polgonos (Polygons) en el archivo
de ejemplos de KML.

El ejemplo del pentgono se genera dibujando la estructura interna y externa y, a


continuacin, hacindola sobresalir hasta el suelo. Este es el cdigo:

<?xml version="1.0" encoding="UTF-8"?>


<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark>
<name>El pentgono</name>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
-77.05788457660967,38.87253259892824,100
-77.05465973756702,38.87291016281703,100
-77.05315536854791,38.87053267794386,100
-77.05552622493516,38.868757801256,100
-77.05844056290393,38.86996206506943,100
-77.05788457660967,38.87253259892824,100
</coordinates>
</LinearRing>
</outerBoundaryIs>
<innerBoundaryIs>
<LinearRing>
<coordinates>
-77.05668055019126,38.87154239798456,100
-77.05542625960818,38.87167890344077,100
-77.05485125901024,38.87076535397792,100
-77.05577677433152,38.87008686581446,100
-77.05691162017543,38.87054446963351,100
-77.05668055019126,38.87154239798456,100
</coordinates>
</LinearRing>
</innerBoundaryIs>
</Polygon>
</Placemark> </kml>

2 Documentacin KML avanzada


En esta seccin se describen algunos de los elementos KML que se deben crear
con un editor de texto como, por ejemplo, los estilos compartidos para figuras
geomtricas, los iconos resaltados para las marcas de posicin y las
superposiciones de pantalla. Crear KML "a mano" es un poco ms complicado que
utilizar la interfaz de Google Earth para crear y modificar recursos pero, con un
poco de prctica, la mayora de los usuarios llega a dominar la tcnica para editar
archivos KML y aadirles estos efectos.

Estilos para elementos geomtricos


Cuando hayas creado los recursos en Google Earth y hayas examinado el cdigo
KML que genera Google Earth, observars que los estilos son una parte
importante para determinar cmo se muestran los datos. Los usuarios ms
avanzados querrn aprender a definir sus propios estilos.

Si defines un estilo al principio de un documento KML y tambin estableces un ID,


podrs usar dicho estilo en elementos geomtricos, marcas de posicin y
superposiciones que se definan en cualquier parte del documento. Un estilo se
define una nica vez y despus se puede hacer referencia a l muchas veces
gracias al elemento de URL de estilos compartidos (shared styles). Un estilo se
define una nica vez y despus se puede hacer referencia a l muchas veces
gracias al elemento de URL de estilo (<styleUrl>). Si la definicin de estilo est
dentro del mismo archivo, el ID de estilo deber estar precedido del signo #. Por el
contrario, si la definicin de estilo se encuentra en un archivo externo, habr que
incluir la direccin URL completa en el elemento <styleUrl>.

El archivo de ejemplos de KML contiene varios estilos compartidos, cada uno de


ellos definido con un ID al principio del archivo. Es mucho ms fcil si los ID son
cadenas descriptivas que indiquen el tipo de efecto que aplican. Este es un
ejemplo de un estilo (transBluePoly) que define un color azul transparente para las
caras del polgono y una lnea con un ancho de 1,5 (del color blanco
predeterminado) para los bordes del polgono. Es el estilo que se usa en el edificio
41 (Building 41) del ejemplo del campus de Google (Google Campus) incluido en
la carpeta de polgonos (Polygons):

<?xml version="1.0" encoding="UTF-8"?>


<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Style id="transBluePoly">
<LineStyle>
<width>1.5</width>
</LineStyle>
<PolyStyle>
<color>7dff0000</color>
</PolyStyle>
</Style> <Placemark>
<name>Building 41</name>
<styleUrl>#transBluePoly</styleUrl>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates> -122.0857412771483,37.42227033155257,17
-122.0858169768481,37.42231408832346,17
-122.085852582875,37.42230337469744,17
-122.0858799945639,37.42225686138789,17
-122.0858860101409,37.4222311076138,17
-122.0858069157288,37.42220250173855,17
-122.0858379542653,37.42214027058678,17
-122.0856732640519,37.42208690214408,17
-122.0856022926407,37.42214885429042,17
-122.0855902778436,37.422128290487,17
-122.0855841672237,37.42208171967246,17
-122.0854852065741,37.42210455874995,17
-122.0855067264352,37.42214267949824,17
-122.0854430712915,37.42212783846172,17
-122.0850990714904,37.42251282407603,17
-122.0856769818632,37.42281815323651,17
-122.0860162273783,37.42244918858722,17
-122.0857260327004,37.42229239604253,17
-122.0857412771483,37.42227033155257,17 </coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Document>
</kml>

Observa que el elemento de estilo (<Style>) es secundario con respecto al


elemento de marca de posicin (<Placemark>), no con respecto al geomtrico
(Geometry) al que afecta.

Estilos para iconos destacados


El icono resaltado (Highlighted Icon) de la carpeta de estilos y marcado (Styles
and Markup) muestra cmo se crea con KML un efecto de visualizacin de un
elemento al pasar el cursor por encima de l. El documento define dos estilos: uno
para la marca de posicin normal (normalPlacemark) y otro para la marca
resaltada (highlightPlacemark). El elemento de asignacin de estilo (<StyleMap>)
tiene dos pares clave/valor que asignan cada estilo de icono a un estado de icono.
Hay dos estados de icono: normal y highlight.

A continuacin se muestran los pasos bsicos:

1. Define un estilo (<Style>) para el icono normal de la marca de posicin y asgnale


un ID (que en este caso es "normal Placemark"). El estilo (<Style>) incluye un
icono (<Icon>) con una referencia de hipertexto (<href>) a la imagen actual que se
va a utilizar, tal y como se muestra a continuacin.
2. Define un estilo (<Style>) para el icono resaltado de la marca de posicin y
asgnale un ID (que en este caso es "highlightPlacemark").
3. Crea el elemento de asignacin de estilo (<StyleMap>) y asgnale un ID
("exampleStyleMap"). La marca de posicin (Placemark) har referencia a este ID.
4. En el elemento de asignacin de estilo (<StyleMap>), especifica el ID
"#normalPlacemark" para el estado normal.
5. En el elemento de asignacin de estilo (<StyleMap>), especifica el ID
"#highlightPlacemark" para el estado highlight.
6. En la marca de posicin, aade un elemento de URL de estilo (<styleUrl>) que
haya referencia al ejemplo de asignacin de estilo ("#exampleStyleMap").

<?xml version="1.0" encoding="UTF-8"?>


<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Icono destacado</name>
<description>Coloca el ratn sobre el icono para ver si muestra el
nuevo icono</description>
<Style id="highlightPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/red-stars.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="normalPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/wht-blank.png</href>
</Icon>
</IconStyle>
</Style>
<StyleMap id="exampleStyleMap">
<Pair>
<key>normal</key>
<styleUrl>#normalPlacemark</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#highlightPlacemark</styleUrl>
</Pair>
</StyleMap>
<Placemark>
<name>Pasa por encima de este icono</name>
<styleUrl>#exampleStyleMap</styleUrl>
<Point>
<coordinates>-122.0856545755255,37.42243077405461,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

Superposiciones de pantalla
Las superposiciones de pantalla no se pueden crear directamente en Google Earth
y, en consecuencia, son ms difciles de crear que las superposiciones de suelo.
Puedes encontrar una amplia gama de ejemplos en la carpeta de superposiciones
de pantalla (Screen Overlays) en el archivo de ejemplos de KML.

Como ejemplo, habilita la carpeta "Absolute Positioning: Top left" (Posicionamiento


absoluto: arriba a la izquierda) en el archivo de ejemplos de KML para ver una
superposicin de pantalla en la parte superior izquierda de la ventana de la vista.
Esto se ha creado con el siguiente cdigo KML:

<?xml version="1.0" encoding="UTF-8"?>


<kml xmlns="http://www.opengis.net/kml/2.2">
<ScreenOverlay>
<name>Absolute Positioning: Top left</name>
<Icon>

<href>http://developers.google.com/kml/documentation/images/top_left.j
pg</href>
</Icon>
<overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<screenXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
<size x="0" y="0" xunits="fraction" yunits="fraction"/>
</ScreenOverlay>
</kml>

El posicionamiento est controlado por la asignacin de un punto de la imagen


especificado por la superposicin <overlayXY> a un punto de la pantalla
especificado por <screenXY>. En este caso, la esquina superior izquierda de la
imagen (0,1) se ha hecho coincidir con el mismo punto de la pantalla.

Consulta los dems ejemplos de la carpeta para ver cmo se pueden obtener
otras posiciones fijas y crear imgenes con un tamao dinmico con respecto al
tamao de la pantalla. Ten en cuenta que las unidades de x (xunits) y las unidades
de y (yunits) tambin se pueden especificar en "pxeles" para conseguir un control
preciso. Para obtener informacin ms detallada, consulta la Referencia de KML
2.2.
Enlaces en la red
Un enlace de red contiene un elemento de enlace (<Link>) con una referencia de
hipertexto (<href>) que carga un archivo. Un enlace de red contiene un elemento
de enlace (<Link>) con una referencia de hipertexto (<href>) que carga un archivo.
A pesar del nombre "enlace de red" (<NetworkLink>), los archivos que se cargan
no han de proceder necesariamente de una red.

La referencia de hipertexto (<href>) de un enlace especifica la ubicacin de alguno


de los siguientes elementos:

Un archivo de imagen usado por los iconos en los estilos de icono, las
superposiciones de suelo y las superposiciones en pantalla.
Un archivo de modelo usado en el elemento de modelo (<Model>).
Un archivo KML o KMZ cargado por un enlace de red.

El archivo especificado puede ser un archivo local o uno que est ubicado en un
servidor remoto. En su forma ms sencilla, los enlaces de red constituyen una
forma til de dividir un archivo KML grande en archivos ms pequeos y
manejables en el mismo ordenador.

Hasta ahora, para todos nuestros ejemplos, el cdigo KML se ha tenido que
suministrar a Google Earth desde un ordenador local. Los enlaces de red te
permiten proporcionar el contenido desde una ubicacin remota y se utilizan
normalmente para distribuir datos a un amplio nmero de usuarios. De esta forma,
si es necesario corregir datos, solo hay que cambiarlos en la ubicacin de origen,
de forma que todos los usuarios recibirn los datos actualizados de manera
automtica.

Secuencias de comandos de CGI para KML


Adems de hacer referencia a archivos que contienen datos estticos, una
referencia de hipertexto (<href>) de un enlace de red puede hacer referencia a
datos generados de forma dinmica (por ejemplo, mediante una secuencia de
comandos de CGI que se encuentre en un servidor de red). Con algo de
conocimiento de un lenguaje de secuencias de comandos como, por ejemplo,
PHP, Python o Perl, se pueden crear secuencias de comandos que proporcionen
un flujo (o un archivo) de datos KML a cada enlace de red.

Hay dos cosas que son necesarias para enviar KML a travs de una secuencia de
comandos de CGI de red:

Cuando se hace una llamada desde el cliente (Google Earth) al servidor: el


servidor debe 1) devolver un cdigo de respuesta 200 de HTTP y 2) establecer el
tipo de contenido de la respuesta en text/plain o application/vnd.google-
earth.kml+xml.

La respuesta debe tener un formato KML vlido. Para las aplicaciones complejas,
es muy importante que los errores se gestionen correctamente.

Sugerencia: Una manera sencilla de gestionar los errores es analizar el error del servidor
como el texto de un nombre de carpeta. Por ejemplo, puedes tener la respuesta del servidor
de base de datos inaccesible (<Folder><name>database inaccessible</name></Folder>)
como una cadena. Esto proporciona ms informacin y es ms cmodo para el usuario que
dejar que la conexin se corte.

En los ejemplos siguientes se utiliza Python, pero son igualmente vlidos en otros
lenguajes de secuencias de comandos.

Cmo generar una marca de posicin aleatoria


La siguiente secuencia de comandos escrita en Python genera valores enteros
aleatorios para la latitud (latitude)y la longitud (longitude) y, a continuacin, inserta
dichos valores en el elemento de coordenadas (<coordinates>) de un punto
(<Point>). Cada vez que se actualice el enlace de red, la secuencia de comandos
escrita en Python se ejecutar de nuevo y generar KML con nuevos valores de
latitud y longitud.

#!/usr/bin/python

import random

latitude = random.randrange(-90, 90)

longitude = random.randrange(-180, 180)

kml = (

'<?xml version="1.0" encoding="UTF-8"?>\n'

'<kml xmlns="http://www.opengis.net/kml/2.2">\n'

'<Placemark>\n'

'<name>Marca de posicin aleatoria</name>\n'

'<Point>\n'
'<coordinates>%d,%d</coordinates>\n'

'</Point>\n'

'</Placemark>\n'

'</kml>'

) %(longitude, latitude)

print 'Content-Type: application/vnd.google-earth.kml+xml\n'

print kml

Este es un ejemplo de archivo KML que contiene un enlace de red que carga esta
secuencia de comandos escrita en Python:

<?xml version="1.0" encoding="UTF-8"?>


<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Enlaces de red</name>
<visibility>0</visibility>
<open>0</open>
<description>Enlace de red, ejemplo 1</description>
<NetworkLink>
<name>Marca de posicin aleatoria</name>
<visibility>0</visibility>
<open>0</open>
<description>Un lenguaje de comandos sencillo del servidor que genera
una nueva
marca de posicin aleatoria en cada llamada</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>http://yourserver.com/cgi-bin/randomPlacemark.py</href>
</Link>
</NetworkLink>
</Folder>
</kml>

Consultas de actualizacin basada en la vista


Un enlace de red estndar es un enlace unidireccional: solo hay flujo de datos
desde el servidor hacia Google Earth. Los datos actualizados basados en la vista
permiten la comunicacin bidireccional. Cuando est activa la actualizacin
basada en la vista, Google Earth devuelve las coordenadas de la vista al servidor
en el momento especificado. Puede ser cada n segundos, minutos, horas o una
vez cada cierta cantidad de tiempo transcurrido desde que la vista dej de
moverse. Consulta el modo de actualizacin de la vista (<viewRefreshMode>) en
la Referencia de KML 2.2.

Las coordenadas se devuelven al servidor mediante la instruccin GET HTTP que


anexa las coordenadas de la siguiente forma (esta es la informacin
predeterminada del cuadro delimitador):

GET /path/to/sever/script/query?BBOX=[longitude_west, latitude_south,


longitude_east, latitude_north] HTTP/1.1

Si la solicitud se hiciera mientras el usuario est mirando la ciudad de San


Francisco, las coordenadas seran:

GET /path/to/server/script/query?BBOX=-122.497790,37.730385,-
122.380087,37.812331 HTTP/1.1

Este recurso se puede usar para aplicaciones muy creativas pero, para que vayas
empezando, te ofrecemos este sencillo ejemplo.

Cmo realizar el seguimiento de un punto que est justo en el


punto de mira
La siguiente secuencia de comandos del servidor escrita en Python analiza el
mensaje de devolucin enviado por Google Earth y responde con una marca de
posicin en el centro de la pantalla. Cada vez que se actualiza el enlace de red, se
genera una nueva marca de posicin.

#!/usr/bin/python

import cgi

url = cgi.FieldStorage()

bbox = url['BBOX'].value

bbox = bbox.split(',')
west = float(bbox[0])

south = float(bbox[1])

east = float(bbox[2])

north = float(bbox[3])

center_lng = ((east - west) / 2) + west

center_lat = ((north - south) / 2) + south

kml = (

'<?xml version="1.0" encoding="UTF-8"?>\n'

'<kml xmlns="http://www.opengis.net/kml/2.2">\n'

'<Placemark>\n'

'<name>View-centered placemark</name>\n'

'<Point>\n'

'<coordinates>%.6f,%.6f</coordinates>\n'

'</Point>\n'

'</Placemark>\n'

'</kml>'

) %(center_lng, center_lat)

print 'Content-Type: application/vnd.google-earth.kml+xml\n'

print kml

Este es el cdigo KML para el enlace de red que carga la secuencia de comandos
escrita en Python:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Enlaces de red</name>
<visibility>0</visibility>
<open>0</open>
<description>Enlace de red, ejemplo 2</description>
<NetworkLink>
<name>Marca de posicin centrada en la vista</name>
<visibility>0</visibility>
<open>0</open>
<description>La actualizacin basada en la vista permite que el
servidor remoto calcule
el centro de tu pantalla y presente una marca de
posicin.</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>http://yourserver.com/cgi-bin/viewCenteredPlacemark.py</href>
<refreshInterval>2</refreshInterval>
<viewRefreshMode>onStop</viewRefreshMode>
<viewRefreshTime>1</viewRefreshTime>
</Link>
</NetworkLink>
</Folder>
</kml>

El principio que se ilustra en este ejemplo se puede usar para aplicaciones muy
complejas. Por ejemplo, si tienes una base de datos de informacin geogrfica,
podrs extraer las coordenadas del visor, hacer una llamada a la base de datos
para obtener los datos especficos de la vista y devolverlos a Google Earth como
KML.

3 Tipos MIME para KML


Al responder a una peticin de Google Earth (o de cualquier navegador terrestre),
un servidor KML debe seguir una serie de reglas de forma que Google Earth
pueda interpretar correctamente sus respuestas.

Si el proceso es correcto, el servidor debe devolver un cdigo de respuesta de


HTTP 200 y establecer el tipo de contenido de la respuesta en un tipo MIME
adecuado, tal y como se describe aqu.
Google Earth puede leer archivos KML y KMZ. El tipo MIME para archivos KML
es:

application/vnd.google-earth.kml+xml

El tipo MIME para archivos KMZ es:

application/vnd.google-earth.kmz

Para Apache, hay que aadir estas lneas al archivo httpd.conf:

AddType application/vnd.google-earth.kml+xml .kml


AddType application/vnd.google-earth.kmz .kmz

Consulta la documentacin de Microsoft para obtener informacin detallada sobre


la configuracin de tipos MIME en los servicios de informacin de Internet (IIS) de
Microsoft.

El cuerpo de la respuesta debe contener datos KML vlidos, incluida la


declaracin XML (<?xml version="1.0" encoding="UTF-8"?>). Si el servidor
devuelve KML no vlido, el enlace de red se detendr, quedar desactivado y
emitir un mensaje de error.

Ms informacin
Quieres saber ms? Consulta la Gua para desarrolladores, en la que se
describen los recursos principales de KML. Tambin puedes consultar
la Referencia de KML para obtener informacin sobre elementos especficos.

Except as otherwise noted, the content of this page is licensed under the Creative Commons
Attribution 3.0 License, and code samples are licensed under the Apache 2.0 License. For details,
see our Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated Enero 10, 2014.

Connect

Vous aimerez peut-être aussi