Calcular la distancia entre dos puntos en Google Maps V3
¿Cómo se calcula la distancia entre dos marcadores en Google Maps V3? (Similar a la distanceFrom
función en V2.)
Gracias..
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
};
De hecho, parece haber un método en GMap3. Es un método estático del google.maps.geometry.spherical
espacio de nombres.
Toma como argumentos dos LatLng
objetos 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);
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));
//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);
}