Skip to content

Instantly share code, notes, and snippets.

@davemackintosh
Last active December 17, 2015 02:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davemackintosh/5539886 to your computer and use it in GitHub Desktop.
Save davemackintosh/5539886 to your computer and use it in GitHub Desktop.
Get the distance between a starting and ending lat/long in JavaScript.
;function getDistanceBetweenLatLongs (start, end) {
// Starting lat, long
var lat1 = start.lat.toRad();
var lng1 = start.lng.toRad();
// Destination lat, long
var lat2 = end.lat.toRad();
var lng2 = end.lng.toRad();
// Earths radius in km
var rad = 6371;
// Degree to radian converter
Number.prototype.toRad = function() {
return this * Math.PI / 180;
}
// Shorter namespaces
var m = Math,
cos = m.cos,
sin = m.sin,
atan2 = m.atan2,
sqrt = m.sqrt;
// The bearings
var bear = {
"lat": (lat2 - lat1).toRad(),
"lng": (lng2 - lng1).toRad()
};
// The point on our plane
var alpha = sin(bear.lat / 2) * sin(bear.lat / 2) + cos(lat1)
* cos(lat2) * sin(bear.lng / 2) * sin(bear.lng / 2);
// The multiplier
var theta = atan2(sqrt(alpha), sqrt(1-alpha));
// return the distance
return rad * theta;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment