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







