(async ( ) => { async function foo() { navigator.geolocation.getCurrentPosition(success, error, options) { var options = { enableHighAccuracy: true, timeout: 5000, maximumAge: 0 }; function success(pos) { var crd = pos.coords; console.log('Your current position is:'); console.log(`Latitude : ${crd.latitude}`); lat = crd.latitude; console.log(`Longitude: ${crd.longitude}`); long = crd.longitude; console.log(`More or less ${crd.accuracy} meters.`); return [lat, long]; } function error(err) { console.warn(`ERROR(${err.code}): ${err.message}`); } }; }; }) let result = await foo(); console.log(result); x = await result[1] console.log(x);Estaba tratando de obtener las coordenadas del mapa del navegador y asignarlas a variables para compararlas con otras coordenadas y encontrar la proximidad a un lugar. pero sigue regresando
No queda claro a partir de su pregunta de dónde provienen estas "otras" coordenadas, ya sea que estén codificadas, o cargadas desde cookies, o localStorage, pero este ejemplo obtiene las coordenadas y las guarda en una matriz que es luego se guarda en localStorage, que se carga cada vez que se actualiza la página.
Utiliza una promesa para devolver los resultados de la búsqueda de geolocalización y un método asíncrono para la función principal.
Nota: debido a problemas de seguridad, esto no se ejecutará en un fragmento, pero se probó por completo.
const posArr = JSON.parse(localStorage.getItem('pos')) || []; function getPos(options) { return new Promise((res, rej) => { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( (pos) => res(pos), (err) => rej(logError(err)), options ); } }); } function logPos(data) { const { accuracy, latitude, longitude } = data.coords; console.log('Your current position is:'); console.log(`Latitude : ${latitude}`); console.log(`Longitude: ${longitude}`); console.log(`More or less ${accuracy} meters.`); posArr.push({ accuracy, latitude, longitude }); localStorage.setItem('pos', JSON.stringify(posArr)); } function logError(err) { const { code, message } = err; console.error(`Error code ${code}: ${message}`); } const options = { enableHighAccuracy: true, timeout: 5000, maximumAge: 0 }; async function main(options) { try { const response = await getPos(options); if (response) { logPos(response); console.log(posArr); } } catch (err) { console.log('Position not available.'); } } main();