import React from 'react'; // constraints_sample = { // enableHighAccuracy: true, // timeout: 5000, // maximumAge: 0, // }; export function useGeoLocation(constraints) { const [location, setLocation] = React.useState(null); const [accuracy, setAccuracy] = React.useState(null); const [loading, setLoading] = React.useState(false); const [error, setError] = React.useState(false); const success = ({ coords: { latitude, longitude, accuracy } }) => { setLoading(false); setLocation([latitude, longitude]); setAccuracy(accuracy); }; const err = (err) => { setLoading(false); setError(err); }; function requestGeoLocation() { if (navigator.geolocation) { setLoading(true); navigator.geolocation.getCurrentPosition(success, err, constraints); } else { setError(true); } } function cleanGeoLocation() { setLocation(null); setAccuracy(null); } return [ location, accuracy, loading, error, requestGeoLocation, cleanGeoLocation, ]; }