Достать геоданные асинхронно

207
29 декабря 2021, 07:00

есть фрагмент кода, который возвращает геоданные пользователя(широта, долгота) в таком варианте:

как отсюда можно вытащить только широту и долготу?

function getCurrentLocation(options) { 
	return new Promise((resolve, reject) => { 
		navigator.geolocation.getCurrentPosition(resolve, ({code, message}) => 
		reject(Object.assign(new Error(message), {name: "PositionError", code})), 
		options); 
		}); 
	}; 
	async function inout() { 
		try { 
			console.log(await this.getCurrentLocation({ 
			enableHighAccuracy: true, 
			timeout: 5000, 
			maximumAge: 0 
			})); 
		} catch (e) { 
			if (e.name == 'PositionError') { 
			console.log(e.message + ". code = " + e.code); 
			} 
		} 
	}; 
	inout().catch(e => console.log(e)); // User denied geolocation prompt. code = 1

Answer 1

как отсюда можно вытащить только широту и долготу?

Если в отдельные const-переменные (latitude и longitude):

const {
  coords: { latitude, longitude }
} = await this.getCurrentLocation(); 

Если в новый объект (obj):

const obj = { ...({
  latitude, longitude
} = (await this.getCurrentLocation()).coords) }; 
// или
const obj = { ...({
  coords: { latitude, longitude }
} = await this.getCurrentLocation()) }.coords; 

Эти выражения будут работать только внутри async метода, конечно же.

READ ALSO
Uncaught TypeError: Cannot read property 'checked' of undefined [закрыт]

Uncaught TypeError: Cannot read property 'checked' of undefined [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

169
Способы работы со строками

Способы работы со строками

Написать функцию, которая принимает двузначное число и возвращает его в текстовом виде

171
можно ли дописать js

можно ли дописать js

Возможно ли сделать воспроизведение треков с разрешение json

190