Geocodificación Inversa en Google Maps (Reverse Geocoding)

Antes de nada y de manera simple… ¿qué es la geocodificación? Entendemos por geocodificar una dirección dada, por obtener sus coordenadas de latitud y longitud, cosa que Google Maps nos permite desde tiempos inmemoriables :). Ahora Google Maps nos da la posibilidad de poder realizar reverse geocoding, o lo que es lo mismo, saber una dirección a partir de una latitud y longitud, una gozada vaya. La lástima es que permite 15.000 peticiones al día por IP, lo cual no te va a permitir cachear resultados (hacer un cron que te permita calcular esas direcciones con una tabla de posiciones que tengas y guardarlas, de esa manera no tendrías que llamar siempre a Google Maps cada vez que quieras geocodificar), a no ser que obtengas una licencia empresarial.

Aquí puedes ver un ejemplo de funcionamiento de geocodificación inversa.

Veamos la programación de la función lanzada en el “click”:

function clicked(overlay, latlng) {
  if (latlng) {
    geocoder.getLocations(latlng, function(addresses) {
      if(addresses.Status.code != 200) {
        alert("reverse geocoder failed to find
                an address for " + latlng.toUrlValue());
      }
      else {
        address = addresses.Placemark[0];
        var myHtml = address.address;
        map.openInfoWindow(latlng, myHtml);
      }
    });
  }
}

Vemos que la llamada la hace mediante el método getLocations del objeto GClientGeocoder (geocoder), exactamente el mismo método que usabamos para la geocodificación normal. Si todo va bien, la respuesta de google es un objeto que contendrá nuestro Placemark de datos y podremos escoger el formato de respuesta (JSON, XML, KML):

<kml>
  <Response>
    <name>36.712074,-4.440990</name>
    <Status>
      <code>200</code>
      <request>geocode</request>
    </Status>
    <Placemark>
      <address>
        Plaza de la Cruz del Humilladero,
        6, 29006, Málaga, España
      </address>
      <AddressDetails>
        <Country>
          <CountryNameCode>ES</CountryNameCode>
          <CountryName>España</CountryName>
          <AdministrativeArea>
            <AdministrativeAreaName>
              AL
            </AdministrativeAreaName>
            <SubAdministrativeArea>
              <SubAdministrativeAreaName>
                Málaga
              </SubAdministrativeAreaName>
              <Locality>
                <LocalityName>Málaga</LocalityName>
                <Thoroughfare>
                  <ThoroughfareName>
                    6 Plaza de la Cruz del Humilladero
                  </ThoroughfareName>
                </Thoroughfare>
                <PostalCode>
                  <PostalCodeNumber>29006</PostalCodeNumber>
                </PostalCode>
              </Locality>
            </SubAdministrativeArea>
          </AdministrativeArea>
        </Country>
      </AddressDetails>
      <Point>
        <coordinates>-4.4412090,36.7120501,0</coordinates>
      </Point>
    </Placemark>
  </Response>
</kml>

Y eso es todo, una nueva funcionalidad y bastante útil para aquellos que trabajen o estén aprendiendo a integrar Google Maps en sus aplicaciones.

Anuncios

Etiquetado:

Un pensamiento en “Geocodificación Inversa en Google Maps (Reverse Geocoding)

  1. john jairo abril 8, 2011 en 5:57 pm

    excelente lo andaba buscando como loco.. gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: