ArsenBespalov
@ArsenBespalov
Сам себе разработчик

Как показывать пользовательский город при загрузке страницы?

Есть страница, на которой подгружаются Яндекс.карты, и вот так инициализируются:
$(funcntion(){
    var userCityId = 234 // Это мы узнаем от пользователя или при инициализации приложения, данные берутся из настроек пользователя.
    ymaps.ready(initMap).then(function() {;
        selectUserCity(userCityId);
    });
});

// Инициализируем с городом по-умолчанию
var initMap = function() {
    myMap = new ymaps.Map('map', {
        center: [55.751574, 37.573856],
        zoom: 9,
        controls: ["geolocationControl", "trafficControl", "typeSelector", "zoomControl"]
    });
    myMap.behaviors.disable('scrollZoom');
};

var selectUserCity = function(cityId) {
    $.get('/data/get/cityName/json', {id: cityId}, function (data) {
        // некоторые манипуляции с переменными
        setUserCityAtMap(data.name);
    });
};

// Если вызывать эту функцию после изменения настроек в интерфейсе пользователя, то все отлично отрабатывает.
// А при загрузке страницы не правильно работает.
var setUserCityAtMap = function (cityName) {
    ymaps.geocode(cityName, { result: 1 }).then(function (res) {
        var firstGeoObject = res.geoObjects.get(0),
              bounds = firstGeoObject.properties.get('boundedBy');

        myMap.setBounds(bounds, { checkZoomRange: true });
        myCollection = new ymaps.GeoObjectCollection();
    });
};


Также, если допустим пользователь меняет свой город на другой или на этот же, то на карте все правильно отображается, при этом вызывается та же функция selectUserCity().

Где я делаю не правильно?
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Попробуй перенеси функцию setUserCityAtMap в начало, до её вызова.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы