Добрый день!
Как динамически создавать метки на карте используя строковое представление адресса.
Функция myGeocoder работает асинхронно, поэтому не могу ее использовать для быстрого поиска нужного объекта на карте и его размещения (Placemark).
Если ипользовать координаты, то проблем вооще нет, но в данном кейсе нет такой возможности.
for (i = 0; i < jSonArray[0].results.length; i++) {
var url = serverUrl + "/main.aspx?etn=city_u&pagetype=entityrecord&id=" + jSonArray[0].results[i].city_uaId;
var City = (jSonArray[0].results[i].city_name != null) ? jSonArray[0].results[i].city_name : "";
var Region = (jSonArray[0].results[i].city_regionId.Name != null) ? jSonArray[0].results[i].city_regionId.Name : "";
//Используем сервис геокодирования
var adress = City + ", " + Region;
var myGeocoder = ymaps.geocode(adress);
myGeocoder.then(function (res) {
var firstGeoObject = res.geoObjects.get(0),
CoordAdress = firstGeoObject.geometry.getCoordinates();
}, function (err) {});
var coordinates = CoordAdress;
//Устанавливаем метку на карте
geoObjects[i] = new ymaps.Placemark(coordinates, {
name: 'Населенный пункт № ' + i,
clusterCaption: 'Населенный пункт № ' + jSonArray[0].results[i].city_name,
balloonContentBody: '<br><br>' +
'<a href=' + url + '>Открыть запись населенный пункт' + jSonArray[0].results[i].city_name + '</a> <br>',
balloonContentHeader: jSonArray[0].results[i].city_name,
balloonContentFooter: 'Населенный пункт'
}, {
preset: 'twirl#violetStretchyIcon'
});
//Конец цыкла
}