Distance between two points
Calculate distance between two co-ordinates
by danharper
JavaScript
// thanks to:
// http://www.movable-type.co.uk/scripts/latlong.html
// convert numeric degress to radians
toRad = function (value) {
return value * Math.PI / 180;
}
// simple distance calculation
// works fine for small distances
// http://en.wikipedia.org/wiki/Equirectangular_projection
Equirectangular = function(point1, point2) {
var R = 6371; // earth radius in km
var x = (toRad(point2.lon)-toRad(point1.lon)) *
Math.cos((toRad(point1.lat)+toRad(point2.lat))/2);
var y = (toRad(point2.lat)-toRad(point1.lat));
return Math.sqrt(x*x + y*y) * R;
};
// complex distance calculation
// for greater distances involving curvature of Earth
// http://en.wikipedia.org/wiki/Haversine_formula
Haversine = function(point1, point2) {
var R = 6371; // earth radius in km
var dLat = toRad(point2.lat-point1.lat);
var dLon = toRad(point2.lon-point1.lon);
var lat1 = toRad(point1.lat);
var lat2 = toRad(point2.lat);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) *
Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
return R * c;
};
// START HERE
pointOne = {
lat: 51.5136,
lon: -0.0983
};
pointTwo = {
lat: 51.4778,
lon: -0.0015
};
x = Equirectangular(pointOne, pointTwo);
y = Haversine(pointOne, pointTwo);
$('body').append('<p>' + JSON.stringify(pointOne));
$('body').append('<p>' + JSON.stringify(pointTwo));
$('body').append('<p><b>Equirectangular</b> ' + x);
$('body').append('<p><b>Haversine</b> ' + y);
$('body').append('<p><i>distances in km');