Необходимо определить координаты местоположения и отобразить карту согласно определенному местоположению. Если местоположение определить не удается, то центр карты установить на Москве.
Проблема в том, что ymaps.geolocation.get работает асинхронно и не получается создать карту с координатами местоположения.
Вкратце что я хочу сделать:
var current_coords = null;ymaps.geolocation.get, если координаты не определены, то возвращаем координаты Москвыcurrent_coords полученные на шаге 2 координатыvar myMap = new ymaps.Map('map', {center: current_coords, zoom: 6});Получается, что надо ожидать, пока шаг 2 не отработает, а только затем выполнять шаги 3-5. Не могу понять, как это можно реализовать.
В этом примере показано как обрабатывать получение местоположения https://tech.yandex.ru/maps/jsbox/2.1/geolocated_map
Получилось сделать таким образом:
var current_coords = null; // координаты текущего местоположения
ymaps.vow.Promise.all([getGeolocation()]).then(function(res){
myMap = new ymaps.Map('map', {
center: res[0],
zoom: 6
});
});
/* Определение координат местоположения */
function getGeolocation(){
var сoordinates_promise = ymaps.geolocation.get({
provider: 'yandex',
mapStateAutoApply: true
}).then(
function(res){
return res.geoObjects.get(0).geometry.getCoordinates();
}
).catch(function (err){
console.log('Ошибка определения местоположения');
return [37.61691485505143, 55.7517318022522];
});
return сoordinates_promise;
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости