Algunas notas rápidas sobre Google Maps. Y sobre otras cosas.

API de Google Maps

Una de las cosas que te da la experiencia es una cierta intuición sobre cómo de difícil es hacer algo que no hayas hecho nunca antes. Y resulta muy molesto cuando esa intuición falla.

Necesitaba una prueba de concepto de una animación del mapa del mundo con javascript. Mi idea era hacerlo con la api de Google Maps, que sólo he utilizado para cosas muy básicas. El planteamiento era el siguiente: una animación de la tierra tal como se ve en Google Earth, que muestre, por ejemplo, Europa con unos indicadores encima; pasado un tiempo la animación hace zoom sobre una ciudad mostrando otros indicadores, tras lo cual se aleja para cambiar de continente y bla bla bla. Piece of cake, que dicen los ingleses.

Empiezo a buscar y me encuentro con que la api de Google Earth ya no está soportada (ups!), pero Google Maps tiene un modo 3D nativo que imita el efecto (¡bien!). Así que cojo mi key de Google Maps y empiezo a probar. “No debería llevar más de media hora”, me digo.

El mundo según Google Maps. Pero no según su API
El mundo según Google Maps. Pero no según su API

Pues no se puede. Resulta que el modo 3D de Google Maps no está soportado en mapas embebidos dentro de aplicaciones. Y tampoco es fácil verlo, porque no he encontrado referencias a ello en la docuemtación. Probablemente se pueda en alguna versión futura, pero de momento no.

De hecho, la versión para incrustar está aún más limitada. Después de asumir que no iba a mostrar el mapa del mundo, me puse a jugar con las animaciones en 2D, buscando transiciones entre puntos y niveles de zoom lo más fluidas posible. Lo que descubrí fue que no es posible hacerlas tan fluidas como las que se ven en la página de Google Maps. La única explicación que encontré al respecto es esta respuesta stackoverflow. La web de Google Maps utiliza un objeto canvas para pintar una versión vectorizada del mapa, mientras que la API trae un conjunto de imágenes para cada nivel de zoom. No sé si es correcto, pero es consistente con lo que se observa en las pruebas.

Hay alternativas a la API de Google Maps: mapbox (de pago) o cesiumjs (gratuita). Esta última tiene varios orígenes de datos cartográficos posibles, entre ellos los mapas de Bing (Microsoft).

El mundo visto a través de Cesium y Bing
El mundo visto a través de Cesium y Bing