Distance between two Points
What's the distance, in meters, between two points (given as latitude / longitude pairs)?
HTML
<div id="output"></div>
JavaScript
var path = [
{name: 'Baltimore, MD, US', location: [39.28333333333333, -76.61666666666666]}
];
path.forEach(function(point, index, path) {
var from = point;
var to = path[(index + 1) % (path.length)];
var meters = distanceBetweenLatLonPairs(from.location, to.location);
var km = (meters / 1000).toFixed(2);
var text = '<p>' + from.name + ' to ' + to.name + ' is '+ km + ' km';
document.getElementById('output').innerHTML += text;
})
// Adopted from http://en.wikipedia.org/wiki/Haversine_formula
function distanceBetweenLatLonPairs(one, two) {
// Earth's radius, in meters
var r = 6371000;
var lat1 = deg2rad(one[0]);
var lon1 = deg2rad(one[1]);
var lat2 = deg2rad(two[0]);
var lon2 = deg2rad(two[1]);
var deltaLat = lat2 - lat1;
var deltaLon = lon2 - lon1;
var h = haversin(deltaLat) + Math.cos(lat1) * Math.cos(lat2) * haversin(deltaLon);
var d = (2 * r) * Math.asin(Math.sqrt(h));
return d;
}
function haversin(rad) {
return Math.pow(Math.sin(rad / 2), 2);
}
function deg2rad(deg) {
return (deg / 180) * Math.PI;
}