Есть список адресов в массиве с дополнительным полем
status. Необходимо на сайте вывести карту с пометками и флажками определенного цвета в зависимости от статуса. Через геокодирование координаты получаю, на карту все выводится через коллекцию меток. А как можно передать внутрь
geocoder.then(); параметр уникальный для каждой итерации?
Попытался через увеличение глобальной переменной
а получать изнутри функции текущий элемент массива, но получается несоответствие координат и меток с флажками.
Пример кода:
// Создаем коллекцию.
myAdressCollection = new ymaps.GeoObjectCollection();
// Создаем массив с данными.
myAdressPoints = [
{ adress: 'Сыктывкар, ул.Новый Север, 19/1', status : '1'},
{ adress: 'Сыктывкар, ул.Пальшина, 16', status : '1'},
{ adress: 'Сыктывкар, ул.Пионерская, 35', status : '1'},
{ adress: 'Сыктывкар, с.Выльгорт, ул.Домны Каликовой, 107/1а', status : '3'},
{ adress: 'Сыктывкар, ул.Шудалун, 38', status : '1'},
{ adress: 'Сыктывкар, ул.Ольховая, 35', status : '1'}
];
// Заполняем коллекцию данными.
for (var i = 0, l = myAdressPoints.length; i < l; i++) {
var point = myAdressPoints[i];
geocoder = ymaps.geocode(point.adress);
geocoder.then(
function (res) {
var coordinates = res.geoObjects.get(0).geometry.getCoordinates();
addr = myAdressPoints[a].adress;
m = myAdressPoints[a].status;
if (m == '1'){metka='/single-window-service/tselevaya-model-podklyuchenie-k-setyam-gazoraspredeleniya/red_flag.png'};
if (m == '2'){metka='/single-window-service/tselevaya-model-podklyuchenie-k-setyam-gazoraspredeleniya/green_flag.png'};
if (m == '3'){metka='/single-window-service/tselevaya-model-podklyuchenie-k-setyam-gazoraspredeleniya/blue_flag.png'};
console.log("Координаты:", a);
// Добавление метки (Placemark) на карту
myAdressCollection.add(new ymaps.Placemark(
coordinates, {
'hintContent': addr -Сюда нужно вставить адрес из массива
}, {
'iconLayout': 'default#image',
'iconImageHref': '/single-window-service/tselevaya-model-podklyuchenie-k-setyam-gazoraspredeleniya/red_flag.png',
'iconImageSize': [20, 30],
'iconImageOffset': [-5, -38]
}
));
a++;
}
);
}
// Добавляем коллекцию меток на карту.
map.geoObjects.add(myAdressCollection);