/** * Helper for Geo-Coordinates */ export class GeoHelper { /** * Earth-Radius * @return {number} */ private static get R() { return 6371e3; } /** * Calculate Distance between two GPS Koordinates * @param {number} lat1 * @param {number} lon1 * @param {number} lat2 * @param {number} lon2 * @return {number} number */ public static calculateDistance( lat1: number, lon1: number, lat2: number, lon2: number): number { const φ1 = lat1 * Math.PI/180; // φ, λ in radians const φ2 = lat2 * Math.PI/180; const Δφ = (lat2-lat1) * Math.PI/180; const Δλ = (lon2-lon1) * Math.PI/180; const a = Math.sin(Δφ/2) * Math.sin(Δφ/2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ/2) * Math.sin(Δλ/2); const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); return this.R * c; // in metres } }