Calcular la distancia entre dos puntos en Google Maps V3

Resuelto Waheed asked hace 14 años • 17 respuestas

¿Cómo se calcula la distancia entre dos marcadores en Google Maps V3? (Similar a la distanceFromfunción en V2.)

Gracias..

Waheed avatar Oct 01 '09 15:10 Waheed
Aceptado

Si desea calcularlo usted mismo, puede utilizar la fórmula de Haversine:

var rad = function(x) {
  return x * Math.PI / 180;
};

var getDistance = function(p1, p2) {
  var R = 6378137; // Earth’s mean radius in meter
  var dLat = rad(p2.lat() - p1.lat());
  var dLong = rad(p2.lng() - p1.lng());
  var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
    Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) *
    Math.sin(dLong / 2) * Math.sin(dLong / 2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  var d = R * c;
  return d; // returns the distance in meter
};
Mike Williams avatar Oct 01 '2009 09:10 Mike Williams

De hecho, parece haber un método en GMap3. Es un método estático del google.maps.geometry.sphericalespacio de nombres.

Toma como argumentos dos LatLngobjetos y utilizará un radio terrestre predeterminado de 6378137 metros, aunque el radio predeterminado se puede anular con un valor personalizado si es necesario.

Asegúrate de incluir:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&v=3&libraries=geometry"></script>

en la sección de tu cabeza.

La convocatoria será:

google.maps.geometry.spherical.computeDistanceBetween (latLngA, latLngB);
Emil Badh avatar Feb 02 '2011 12:02 Emil Badh

Ejemplo utilizando latitud/longitud GPS de 2 puntos.

var latitude1 = 39.46;
var longitude1 = -0.36;
var latitude2 = 40.40;
var longitude2 = -3.68;

var distance = google.maps.geometry.spherical.computeDistanceBetween(new google.maps.LatLng(latitude1, longitude1), new google.maps.LatLng(latitude2, longitude2));       
joan16v avatar Apr 07 '2015 12:04 joan16v
//p1 and p2 are google.maps.LatLng(x,y) objects

function calcDistance(p1, p2) {
          var d = (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 1000).toFixed(2);
          console.log(d);              
}
Aishwat Singh avatar Oct 12 '2015 13:10 Aishwat Singh