Центровка карты по местоположению

189
19 января 2019, 01:40

Необходимо определить координаты местоположения и отобразить карту согласно определенному местоположению. Если местоположение определить не удается, то центр карты установить на Москве.

Проблема в том, что ymaps.geolocation.get работает асинхронно и не получается создать карту с координатами местоположения.

Вкратце что я хочу сделать:

  1. Создаем переменную текущих координат местоположения: var current_coords = null;
  2. Определяем координаты местоположения с помощью ymaps.geolocation.get, если координаты не определены, то возвращаем координаты Москвы
  3. Присваиваем переменной current_coords полученные на шаге 2 координаты
  4. Создаем и отображаем карту: var myMap = new ymaps.Map('map', {center: current_coords, zoom: 6});
  5. Добавляем на карту точки, зоны в виде многоугольников и т.д.

Получается, что надо ожидать, пока шаг 2 не отработает, а только затем выполнять шаги 3-5. Не могу понять, как это можно реализовать.

Answer 1

В этом примере показано как обрабатывать получение местоположения https://tech.yandex.ru/maps/jsbox/2.1/geolocated_map

Answer 2

Получилось сделать таким образом:

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; 
}

READ ALSO
Tab контрол с эффектом collapse работает не правильно

Tab контрол с эффектом collapse работает не правильно

Нужно сделать tab-control , чтобы вкладки открывались с эффектом slideDownВ начале все формы скрыты , нажимаем кнопку "Форма 1", открывается блок с эффектом...

118
Eslint перестал исправлять ошибки

Eslint перестал исправлять ошибки

После обновления пакетов eslint перестал работать autofix, он находит и подчеркивает ошибки, но сам не корректируетЯ использую eslint c webpack 4

161
Как показать form при нажатии на кнопку с помощью javascript?

Как показать form при нажатии на кнопку с помощью javascript?

В общем, есть несколько одинаковых форм и кнопок под нимиИзначально формы скрыты:

129
Как исправить баг sticky topbar + выпадающие меню?

Как исправить баг sticky topbar + выпадающие меню?

Есть topbar для мобильной навигации, при скороле использую sticky от foundation, что бы прикрепить его к верхней части страницыКогда полностью открывается...

211