Здравствуйте. Есть такая задача: получаю на вход строку, в которой перечислены адреса. Строку нужно разбить на на отдельные адреса, получить координаты каждого адреса, и вывести точки на карту.
Я столкнулся с проблемой, при проходе по массиву с адресами и получая их координаты, конечный массив, куда я записываю координаты (myPoints) так и остаётся пустым.
var locations = params['locations'].split(' - '); // в каждой ячейке массива - адрес
ymaps.ready(function(params){
var myMap = new ymaps.Map('map', {
center: [58.602901, 49.668077],
zoom: 12
});
/* Настройки карты */
myMap.behaviors.disable("scrollZoom");
if(locations !== undefined){
var myPoints = [],
myPlacemark;
console.log(locations);
// Создаем коллекцию.
for (key in locations) {
var myGeocoder = ymaps.geocode(locations[key]);
myGeocoder.then(
function (res) {
var adress = res.geoObjects.get(0).geometry.getCoordinates();
myPoints.push({ coords: adress });
}
);
}
console.log(myPoints);
}
});
Если смотреть в самом for, то видно, что координаты получаются, записываются в массив, но как только цикл заканчивается, массив myPoints пустой.
На скрине видно, что сначала вызывается самый последний лог, а уже потом идёт сам цикл. В исходном массиве два адреса.
Подскажите, где я допустил ошибку, взгляд замылился и найти не могу. Заранее спасибо.