domingo, 4 de noviembre de 2012

Funcion javascript para calcular la distancia entre dos puntos

Ésta función espera dos objetos que tengan la propieadd lat y lon como grados.


var distanceBetween = function(lonlatA, lonlatB) {
var lat1 = lonlatA.lat.toRad();
var lat2 = lonlatB.lat.toRad();
var lon1 = lonlatA.lon.toRad();
var lon2 = lonlatB.lon.toRad();
var R = 6371; // earth radius (Km)
return Math.acos(Math.sin(lat1)*Math.sin(lat2) + Math.cos(lat1)*Math.cos(lat2) * Math.cos(lon2-lon1)) * R;
}


La funcion toRad se puede definir para todo número de JS así:

if (typeof Number.prototype.toRad == 'undefined') {
Number.prototype.toRad = function() {
return this * Math.PI / 180;
}
}

La formula utilizada es ésta
http://en.wikipedia.org/wiki/Spherical_law_of_cosines

No hay comentarios: