@pranavstark/geo-distances
Version:
A geographical distance calculator. Calculates distance between two points using haversine formula.
48 lines (40 loc) • 1.11 kB
JavaScript
;
let radiusUnits = {
'feet': 20908800,
'yards': 6969600,
'miles': 3960,
'mi': 3960,
'kilometers': 6371,
'km': 6371,
'meters': 6371000
};
class Utils {
distance(lat1, lon1, lat2, lon2, unit) {
let RaE = getEarthRadius(unit);
let dLat = degreeToRadian(lat2 - lat1);
let dLon = degreeToRadian(lon2 - lon1);
return distance_formula(RaE, dLat, dLon, lat1, lat2);
}
}
let degreeToRadian = (degree) => {
return degree * (Math.PI / 180);
}
//Haversine formula
let distance_formula = (RaE, dLat, dLon, lat1, lat2) => {
let calc1 = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(degreeToRadian(lat1)) * Math.cos(degreeToRadian(lat2))
* Math.sin(dLon / 2) * Math.sin(dLon / 2)
let calc2 = 2 * Math.atan2(Math.sqrt(calc1), Math.sqrt(1 - calc1))
return RaE * calc2
}
let getEarthRadius = ((unit) => {
if (unit == null) {
unit = "km";
}
unit = unit.toLowerCase();
if (!radiusUnits[unit]) {
unit = "km";
}
return radiusUnits[unit];
})
module.exports = new Utils();