UNPKG

@pranavstark/geo-distances

Version:

A geographical distance calculator. Calculates distance between two points using haversine formula.

48 lines (40 loc) 1.11 kB
'use strict'; 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();