UNPKG

geo-distance-helper

Version:

Get distance between two points in kilometers or nautical miles

42 lines (41 loc) 1.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.geoDistance = void 0; function geoDistance(point1, point2, unit = "K") { const { lat: lat1 = undefined, lng: lng1 = undefined } = point1; const { lat: lat2 = undefined, lng: lng2 = undefined } = point2; if (!lat1 || !lng1 || !lat2 || !lng2) { throw new Error("Points must have valid lat and lng attributes"); } if (typeof lat1 != "number" || typeof lng1 != "number") { throw new Error("Point-1 must have valid lat and lng attributes"); } if (typeof lat2 != "number" || typeof lng2 != "number") { throw new Error("Point-2 must have valid lat and lng attributes"); } if (lat1 === lat2 && lng1 === lng2) { return 0; } else { var radlat1 = (Math.PI * lat1) / 180; var radlat2 = (Math.PI * lat2) / 180; var theta = lng1 - lng2; var radtheta = (Math.PI * theta) / 180; var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta); if (dist > 1) { dist = 1; } dist = Math.acos(dist); dist = (dist * 180) / Math.PI; dist = dist * 60 * 1.1515; if (unit === "K") { dist = dist * 1.609344; } if (unit === "N") { dist = dist * 0.8684; } return dist; } } exports.geoDistance = geoDistance;