UNPKG

@mcabreradev/filter

Version:

A powerful, SQL-like array filtering library for TypeScript and JavaScript with advanced pattern matching, MongoDB-style operators, deep object comparison, and zero dependencies

29 lines (28 loc) 988 B
const EARTH_RADIUS_METERS = 6371000; export function calculateDistance(p1, p2) { const toRad = (deg) => (deg * Math.PI) / 180; const lat1 = toRad(p1.lat); const lat2 = toRad(p2.lat); const deltaLat = toRad(p2.lat - p1.lat); let lngDiff = p2.lng - p1.lng; if (lngDiff > 180) lngDiff -= 360; if (lngDiff < -180) lngDiff += 360; const deltaLng = toRad(lngDiff); const a = Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) + Math.cos(lat1) * Math.cos(lat2) * Math.sin(deltaLng / 2) * Math.sin(deltaLng / 2); const centralAngle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); return EARTH_RADIUS_METERS * centralAngle; } export function isValidGeoPoint(point) { if (!point || typeof point !== 'object') return false; const p = point; return (typeof p.lat === 'number' && typeof p.lng === 'number' && p.lat >= -90 && p.lat <= 90 && p.lng >= -180 && p.lng <= 180); }