Servicios de Google Maps I: Geoposicionamiento
jueves, 10 de abril de 2008
El API de Google Maps además de ofrecer capacidades para incluir un mapa en tu sitio web, controlarlo (cambiar el zoom o punto central) y añadir objetos o imágenes sobre él, también ofrece servicios. Estos servicios, podrían definirse como unas funciones destinadas a transformar, mejorar o procesar información del usuario antes de utilizarla para situarla en nuestro mapa o en nuestra web.
En este caso, vamos a analizar el servicio de geoposicionamiento que ofrece Google Maps. El geoposicionamiento consiste en convertir una dirección postal (Puerta del Sol 1, 28001, Madrid) en unas coordenadas de latitud y longitud (40.424931,-3.698187) que permiten posicionar inequívocamente esa dirección en el mundo y más concertamente en Google Maps o Google Earth.
Aunque a este servicio puede accederse directamente bajo HTTP, en este caso nos vamos a centrar en su versión en objeto Javascript que permite obtener fácilmente coordenadas dentro de nuestra página que luego pueden reutilizarse para realizar acciones sobre un mapa de Google Maps. Para ello necesitamos un objeto de la clase GClientGeocoder definida en el API de Google Maps.
La clase GClientGeocoder ofrece muchas posibilidades pero sin duda la más inportante es la que ofrece el método getLatLng. A este método se le pasa:
1. la dirección que se quiere geoposicionar
2. el nombre de la función que se invocará cuando el proceso de geoposicionamiento se haya completado, y a la que se le pasará como parámetro un punto de la clase GLatLng.
Con la función invocada, tras el intento de Geoposicionamiento, podrán relaizarse las acciones deseadas como situar el punto en el Mapa, o mostrar las coordenadas en pantalla. Siempre hay que tener en cuenta que si esta función recibe un null como parámetro, significará que Google Maps no consiguió geoposicionar esa dirección.
A continuación os muestro un ejemplo:
Y este es el principal código javascript utilizado:
function inicializar() {
map = new GMap2(document.getElementById("map_canvas"));
map.addControl(new GLargeMapControl());
map.setCenter(new GLatLng(40.424931, -3.698187), 5);
geocoder = new GClientGeocoder();
geocoder.setBaseCountryCode("es");
}
function obtenerCoordenadas(direccion) {
geocoder.getLatLng(direccion, pintarCoordenadas);
}
function pintarCoordenadas(point) {
if (!point) { alert("No se encuentra la dirección proporcionada.\n\n
Por favor, escribe la dirección con el formato:\n
nombre_calle, número, código_postal, ciudad \n\nPor ejemplo\n Goya, 24, 28001, Madrid");}
else {
//1. escribimos las coordenadas en la página
coordenadas_txt="Las coordenadas (latitud,longitud) son: "+point.lat()+","+point.lng();
document.getElementById('coordenadas').innerHTML = coordenadas_txt;
//2. Pintamos en punto en el mapa
map.setCenter(point, 15);
var marker = new GMarker(point);
map.addOverlay(marker); }
}
¡Espero que este servicio os parezca interesante y que sigaís investigando las capacidades del servicio de geoposicionamiento de Google Maps!