Spaces:
Running
Running
| 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 }; | |
| } | |