Google Maps: Distancias entre dos puntos
Posted by | Posted in Google Maps | Posted on 06-02-2010
4
Hace unos días me encontraba ante el problema de cómo obtener la distancia entre dos puntos con la tecnología de Google Maps.
La solución que al final implementamos es la que puedes ver en esta página.
Tiene dos funciones principales, que son:
Initialize, que se ejecutará nada más cargar la página.
function initialize() {
geocoder = new GClientGeocoder();
}
ShowLocation, que se ejecutará en el momento en que pulsemos el botón de calcular las distancias. Se encargará de tomar las direcciones, obtener el punto donde se encuentran y llamar a la función calculateDistance.
function showLocation() {
geocoder.getLocations(document.forms[0].address1.value, function (response) {
if (!response || response.Status.code != 200){
alert("Lo siento, pero hemos sido incapaces de geolocalizar la primera dirección");
} else {
location1 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
geocoder.getLocations(document.forms[0].address2.value, function (response) {
if (!response || response.Status.code != 200){
alert("Lo siento, pero hemos sido incapaces de geolocalizar la segunda dirección");
} else {
location2 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
calculateDistance();
}
});
}
});
}
calculeDistance es la función que se encarga de calcular dicha distancia en kilómetros y en millas y sustituir el p con id results por una cadena con dicha información.
function calculateDistance(){
try{
var glatlng1 = new GLatLng(location1.lat, location1.lon);
var glatlng2 = new GLatLng(location2.lat, location2.lon);
var miledistance = glatlng1.distanceFrom(glatlng2, 3959).toFixed(1);
var kmdistance = (miledistance * 1.609344).toFixed(1);
document.getElementById('results').innerHTML = 'Dirección 1: ' + location1.address + ' (' + location1.lat + ':' + location1.lon + ')
Dirección 2: ' + location2.address + ' (' + location2.lat + ':' + location2.lon + ')
Distancia: ' + kmdistance + ' kilómetros (o ' + miledistance + ' millas)';
} catch (error) {
alert(error);
}
}
Nota: Recuerda que si quieres exportarla a tu máquina local o a tu propia web necesitas modificar la clave API.

