Skip to content

Instantly share code, notes, and snippets.

@obenjiro
Last active January 12, 2019 22:42
Show Gist options
  • Select an option

  • Save obenjiro/9853524 to your computer and use it in GitHub Desktop.

Select an option

Save obenjiro/9853524 to your computer and use it in GitHub Desktop.
Get distance between two coordinates
//get distance between two geo coordinates in kilometers
function distanceInKilometers(lat1, lon1, lat2, lon2) {
var rlat1 = Math.PI * lat1/180
var rlat2 = Math.PI * lat2/180
var rlon1 = Math.PI * lon1/180
var rlon2 = Math.PI * lon2/180
var theta = lon1-lon2
var rtheta = Math.PI * theta/180
var dist = Math.sin(rlat1) * Math.sin(rlat2) + Math.cos(rlat1) * Math.cos(rlat2) * Math.cos(rtheta);
dist = Math.acos(dist)
dist = dist * 180/Math.PI
dist = dist * 60 * 1.1515
dist = dist * 1.609344
return dist
}
//get distance between two geo coordinates in miles
function distanceInMiles(lat1, lon1, lat2, lon2) {
var rlat1 = Math.PI * lat1/180
var rlat2 = Math.PI * lat2/180
var rlon1 = Math.PI * lon1/180
var rlon2 = Math.PI * lon2/180
var theta = lon1-lon2
var rtheta = Math.PI * theta/180
var dist = Math.sin(rlat1) * Math.sin(rlat2) + Math.cos(rlat1) * Math.cos(rlat2) * Math.cos(rtheta);
dist = Math.acos(dist)
dist = dist * 180/Math.PI
dist = dist * 60 * 1.1515
dist = dist * 0.8684
return dist
}
// some examples
Math.round(distanceInKilometers(56.834167,60.600105, 56.837699,60.599051)*100)/100
//0.4 - this is correct
Math.round(distanceInKilometers(56.836127,60.599538, 56.837733,60.599034)*100)/100
//0.18 - this is correct
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment