Quiero obtener la geolocalización de mi sistema cada 5 segundos con useEffect, pero no sé por qué no llega navigator.geolocation.getCurrentPosition, ¿me equivoco?
const getPosition = () => { new Promise((resolve, reject) => { if(!("geolocation" in navigator)) { reject(); } else { navigator.geolocation.getCurrentPosition(position => { console.log('did not arrive here'); const { latitude } = position.coords.latitude; const { longitude } = position.coords.longitude; resolve({ latitude,longitude }); }) }; }) .then(async value => { const { latitude, longitude } = value; const data = await axios.get(`http://10.0.0.54:8000/api?latitude=${latitude}&longitude=${longitude}`); return data.data }) }; export default function Weather() { const [observationalData, setObservationalData] = useState({ stationId: '', stationName: '', timestamp: 0, time: '', observationDate: '', observationTime: '', temperature: 0, weather: '', title: '', humidity: 0 }); console.log(getPosition()); useEffect(()=> { const timer = setInterval(getPosition, 5000); console.log(new Date()); return ()=> { clearInterval(timer); } }); useEffect(()=> { setObservationalData(getPosition()); console.log(observationalData); }, []); }el archivo console.log('no llegó aquí') no funcionó, por lo que no puedo resolver esa promesa, cuando llamo a useEffect, solo obtengo "indefinido"
export default function Weather() { const [observationalData, setObservationalData] = useState({ stationId: "", stationName: "", timestamp: 0, time: "", observationDate: "", observationTime: "", temperature: 0, weather: "", title: "", humidity: 0, }); var options = { enableHighAccuracy: true, timeout: 5000, maximumAge: 0, }; const getPosition = (data) => { //use data to destructure //setObservationalData(customdata); }; function error(err) { console.warn(`ERROR(${err.code}): ${err.message}`); } useEffect(() => { const timer = setInterval(getPosition, 5000); console.log(new Date()); return () => { clearInterval(timer); }; }); useEffect(() => { navigator.geolocation.getCurrentPosition(getPosition, error, options); }, []); }