Last active
January 12, 2019 22:42
-
-
Save obenjiro/9853524 to your computer and use it in GitHub Desktop.
Get distance between two coordinates
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //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