mod mooved gps functions from front end to back end

This commit is contained in:
Francesco De Carlo 2025-08-02 06:10:41 +02:00
parent 0066166765
commit 46b055c591
2 changed files with 30 additions and 29 deletions

View file

@ -7,7 +7,7 @@ function geolocation_to_simple_coords(coordinates: GeolocationCoordinates): Coor
return { latitude: coordinates.latitude, longitude: coordinates.longitude }
}
export function get_coords(): Promise<{ coords: Coordinates | null, error: string | null }> {
export function get_coords(): Promise<{ coords: Coordinates | null; error: string | null }> {
return new Promise((resolve) => {
if (!navigator.geolocation) {
resolve({ coords: null, error: "Geolocation is not supported by your browser" })
@ -18,7 +18,7 @@ export function get_coords(): Promise<{ coords: Coordinates | null, error: strin
console.log(gps_error)
resolve({
coords: null,
error: `Unable to retrieve your location: (${gps_error.message})`
error: `Unable to retrieve your location: (${gps_error.message})`,
})
return
}
@ -26,7 +26,7 @@ export function get_coords(): Promise<{ coords: Coordinates | null, error: strin
const success_callback = (gps_position: GeolocationPosition) => {
resolve({
coords: geolocation_to_simple_coords(gps_position.coords),
error: null
error: null,
})
return
}
@ -34,29 +34,3 @@ export function get_coords(): Promise<{ coords: Coordinates | null, error: strin
navigator.geolocation.getCurrentPosition(success_callback, error_callback)
})
}
function distance_between_coords(
lhs: Coordinates,
rhs: Coordinates
): number {
const R = 6371000; // earth radius in meters
const to_rad = (deg: number) => (deg * Math.PI) / 180;
const d_lat = to_rad(rhs.latitude - lhs.latitude);
const d_lon = to_rad(rhs.longitude - lhs.longitude);
const a =
Math.sin(d_lat / 2) ** 2 +
Math.cos(to_rad(lhs.latitude)) *
Math.cos(to_rad(rhs.latitude)) *
Math.sin(d_lon / 2) ** 2;
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return R * c; // distance in meters
}
export function is_within_range(my_coords: Coordinates, target_coords: Coordinates, max_range: number): boolean {
const distance = distance_between_coords(my_coords, target_coords)
return distance <= max_range
}