Recent twitter entries...

  •  

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.

Comments (4)

Yises,

buen artículos para introducirse en el ámbito de la API de Google Maps.

Gracias.

Muchas gracias por los ánimos Zacarías!! Me alegro que te haya gustado el post!! ;)

Hola. Una pregunta. Este método calcula la distancia entre dos puntos, pero, ¿la distancia directa o el recorrido de google maps hasta llegar? Gracias y un saludo

Muy buenas Ibiza. Pues el método en sí lo que hace es calcular la distancia directa. En el caso de que quieras obtener el recorrido de google maps hasta llegar puede que te interese este ejemplo de Google

Write a comment