Neue Seite um Betriebe zu überwachen
This commit is contained in:
20
src/utils/distance.js
Normal file
20
src/utils/distance.js
Normal file
@@ -0,0 +1,20 @@
|
||||
const toRadians = (value) => (value * Math.PI) / 180;
|
||||
|
||||
export function haversineDistanceKm(lat1, lon1, lat2, lon2) {
|
||||
if (
|
||||
!Number.isFinite(lat1) ||
|
||||
!Number.isFinite(lon1) ||
|
||||
!Number.isFinite(lat2) ||
|
||||
!Number.isFinite(lon2)
|
||||
) {
|
||||
return null;
|
||||
}
|
||||
const R = 6371;
|
||||
const dLat = toRadians(lat2 - lat1);
|
||||
const dLon = toRadians(lon2 - lon1);
|
||||
const a =
|
||||
Math.sin(dLat / 2) * Math.sin(dLat / 2) +
|
||||
Math.cos(toRadians(lat1)) * Math.cos(toRadians(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
|
||||
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
||||
return Number((R * c).toFixed(2));
|
||||
}
|
||||
Reference in New Issue
Block a user