Georreferenciar inversamente con el API v3 de Google Maps utilizando Javascript
Introducción.
La georreferenciación inversa es el proceso contrario al descrito anteriormente, corresponde al obtener el nombre de una ubicación (topónimo) a partir de su ubicación geográfica, en términos de latitud y longitud.
La aplicación de demostración.
En el ejemplo equivale a conocer la ubicación del sitio: latitud = 5.073375 y longitud = -75.495155, y con esta información determinar que los siguientes sitios corresponden con esa posición.
- Carrera 12, Manizales, Caldas, Colombia.
- Manizales, Caldas, Colombia.
- Caldas, Colombia.
- Colombia.
La implementación.
Su implementación es una versión ligeramente mas simple que la georreferenciación directa.
A continuación se detallan a nivel general las variaciones de esta modalidad de georreferenciación con respecto a la expuesta en un artículo anterior.
Del lado de Javascript.
Se asocia el evento de clic sobre el mapa con la función que realizará la georreferenciación inversa (processReverseGeocoding).
google.maps.event.addListener(map, 'click', function(event) {
processReverseGeocoding(event.latLng, showMarkerInfo);
});En esta función se realiza el proceso de georreferenciación inversa el cual, al igual que su contraparte directa, es asíncrono y por este motivo se utiliza la misma estrategia del callback.
var request = {
latLng: location
}
geocoder.geocode(request, function(results, status) {
// ...
});La función showMarkerInfo es ejecutada cuando se finaliza la georreferenciación inversa y esta ha obtenido resultados válidos. Su misión es la mostrar la información resultante en el mapa.
function showMarkerInfo(locations)
{
// Centra el mapa en la ubicación especificada
map.setCenter(locations[0].geometry.location);
// Crea el mensaje para mostrar la información georreferenciada
var infoWindow = new google.maps.InfoWindow();
infoWindow.setPosition(locations[0].geometry.location);
// Prepara el mensaje con la información obtenida del proceso
// de georreferenciación inversa
var content = 'Latitud: ' + locations[0].geometry.location.lat() + '<br />' +
'Longitud: ' + locations[0].geometry.location.lng() + '<br />' +
'<br />Topónimos:<br /><ul>';
for (var i=0; i<locations.length; i++)
{
if (locations[i].formatted_address)
content += '<li>' + locations[i].formatted_address + '</li>';
else
content += '<li>No se encontró información.</li>';
}
content += "</ul>";
infoWindow.setContent(content);
// Muestra el mensaje sobre el mapa
infoWindow.open(map);
}Enlaces.
- Aplicación de demostración del API v3 de georreferenciación inversa de Google Maps 0.1.
http://demo.jorgeivanmeza.com/GMaps/GeocodeAPI3Demo/0.1/reverse.html - The Google Geocoding API.
http://code.google.com/apis/maps/documentation/geocoding/index.html - Geocoding service.
http://code.google.com/apis/maps/documentation/javascript/services.html#Geocoding

