Spaces:
Running
Running
File size: 1,235 Bytes
0dd2082 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import { useState } from 'react';
export function useGeolocation() {
const [location, setLocation] = useState(null);
const [error, setError] = useState(null);
const [isLoading, setIsLoading] = useState(false);
const requestLocation = () => {
setIsLoading(true);
setError(null);
if (!navigator.geolocation) {
setError('Geolocation is not supported by your browser');
setIsLoading(false);
return;
}
navigator.geolocation.getCurrentPosition(
(position) => {
setLocation({
lat: position.coords.latitude,
lng: position.coords.longitude
});
setIsLoading(false);
},
(err) => {
setError(err.message || 'Failed to retrieve location');
setIsLoading(false);
},
{
enableHighAccuracy: true,
timeout: 10000,
maximumAge: 0
}
);
};
const clearLocation = () => {
setLocation(null);
setError(null);
};
return { location, error, isLoading, requestLocation, clearLocation };
}
|