Distance between two points on the Earth's surface
"Astronomical Algorithms, Second Edition" by Jean Meeuscode:
function latlng2distance(lat1,lng1,lat2,lng2){
var rad=Math.PI/180;
var earth_radius = 6378.14;
var earth_flattening = 1/298.257;
var e = ((lng1-lng2)/2)*rad;
var f=((lat1+lat2)/2)*rad;
var g=((lat1-lat2)/2)*rad;
var s =Math.sin(g)*Math.sin(g)*Math.cos(e)*Math.cos(e) + Math.cos(f)*Math.cos(f)*Math.sin(e)*Math.sin(e);
var c =Math.cos(g)*Math.cos(g)*Math.cos(e)*Math.cos(e) + Math.sin(f)*Math.sin(f)*Math.sin(e)*Math.sin(e);
var w=Math.atan(Math.sqrt(s/c));
var r=Math.sqrt(s*c)/w;
var d=2*w*earth_radius;
var h1 = (3*r-1)/(2*c);
var h2 = (3*r+1)/(2*s);
var distance = d*(1+earth_flattening*h1*Math.sin(f)*Math.sin(f)*Math.cos(g)*Math.cos(g)-earth_flattening*h2*Math.cos(f)*Math.cos(f)*Math.sin(g)*Math.sin(g))
return distance;
}
example:
//Paris :
var lng1 = -2.33722222, lat1=48.8363889;
//Washington:
var lng2 = 77.0655556, lat2 = 38.9213889;
var results = latlng2distance(lat1,lng1,lat2,lng2)
results =