Hace un calor insoportable, el ventilador empuja aire caliente y llevo tres horas pegándome cabezazos con un problema de márgenes que, cómo no, solo pasa en Internet Explorer. En lugar de seguir intentando arreglar esa maqueta endemoniada o revisar los logs del Apache, he cerrado el Zend Studio. He abierto ese programita que sacaron hace mes y medio tras comprar Keyhole. Y aquí estoy, enganchado como un idiota.
Llevo literalmente todo el verano usando Google Earth para sobrevolar mi barrio, buscar el barrio de mis abuelos y acercarme a ver la resolución del estadio de fútbol. Es absurdamente adictivo.
Cómo renderiza todo el planeta
A nivel de ingeniería, lo que han montado es una bestialidad. No estás descargando un mapa estático en el navegador. Estás cargando un globo 3D que hace streaming de imágenes de satélite según las coordenadas y el nivel de zoom de la cámara.
Mi pobre ADSL sufre cada vez que bajo de altitud rápido, pero el cliente tiene un sistema de caché en disco muy agresivo. Si miras la configuración, te deja reservar hasta 2 GB de disco duro y unos 128 MB de RAM solo para guardar las celdas que ya has visitado.
En mi PC de casa tengo una gráfica GeForce FX 5200, nada del otro mundo, pero el motor te da a elegir entre DirectX y OpenGL. Lo he configurado en OpenGL y va sorprendentemente fluido, al menos cuando los servidores de Google no se ahogan intentando mandarte los mosaicos de texturas de alta resolución.
Jugando con KML y coordenadas
Pero lo más divertido no es hacer turismo virtual. Lo que me tiene cacharreando toda la madrugada es cómo puedes interactuar con el mapa. Resulta que usan un formato basado en XML que llaman KML (Keyhole Markup Language). Puedes crear tus propias capas, añadir puntos de interés, polígonos, o incluso modelos si te vuelves loco.
Para que veáis lo fácil que es, he montado un pequeño snippet para marcar sitios. Creas un archivo de texto plano, le pones la extensión .kml, y Google Earth te lo abre del tirón y te lleva hasta allí:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Placemark>
<name>La Cueva</name>
<description>Aquí estamos tirando líneas de PHP hasta las tantas.</description>
<Point>
<coordinates>39.706901, -31.107265</coordinates>
</Point>
</Placemark>
</kml>
Ideas desde la trinchera
Estaba pensando en lo que se puede llegar a hacer programando alrededor de esto. ¿Te imaginas poder enchufar los logs geolocalizados de las visitas de tu servidor web y ver de dónde vienen los usuarios en un globo terráqueo? Solo tienes que parsear las IPs a coordenadas, meterlo en un XML generado al vuelo desde un script en PHP o Perl, y servirlo con su tipo MIME correspondiente. Se podría montar en media hora.
Todavía le falta resolución a muchas zonas de España —mi pueblo natal parece una mancha de píxeles marrones y verdes difuminados—, pero tener un Sistema de Información Geográfica de uso doméstico que no requiera montar un servidor ArcIMS es alucinante.
Ojalá algún día se puedan conectar estas capas por USB con los dispositivos GPS de Garmin, o que el del bar de la esquina pueda subir su ubicación al mapa usando alguna API. De momento, me conformo con que se sigan viendo los coches aparcados en mi calle, y con intentar no fundir el disco duro con la caché local.