Здравствуйте, вопрос состоит в следующем: Как правильно перегнать массив адресов в массив меток на карте? Сейчас использую следующий способ:
function ymap(msg) {
var arAdress = eval(msg);
// Создание обработчика для события window.onLoad
YMaps.jQuery(function () {
// Создание экземпляра карты и его привязка к созданному контейнеру
var map = new YMaps.Map(YMaps.jQuery("#map")[0]);
// Создание объекта геокодера
map.addControl(new YMaps.TypeControl());
map.addControl(new YMaps.ToolBar());
map.addControl(new YMaps.Zoom());
map.addControl(new YMaps.MiniMap());
map.addControl(new YMaps.ScaleLine());
map.addControl(new YMaps.SearchControl());for(var Element in arAdress){
var street = arAdress[Element];
var geocoder = new YMaps.Geocoder(street);
// По завершению геокодирования инициализируем карту первым результатом
YMaps.Events.observe(geocoder, geocoder.Events.Load, function (geocoder) {
if (geocoder.length())
{
map.setBounds(geocoder.get(0).getBounds());
var geoResult = geocoder.get(0);
var point = geoResult.getCoordPoint();
// Создает метку и добавляет ее на карту
var placemark = new YMaps.Placemark(point, {style:'default#redPoint'});
placemark.setBalloonContent(street);
map.addOverlay(placemark);
//Открыает балун
placemark.openBalloon();
}
});
}});
}
Казалось бы все логично, метки расставляются по правильным адресам, но геокодирование адреса занимает какое-то время, и к тому моменту когда функции постановки меток завершат свою работу, в качестве контента меткам передается только последний элемент массива (так как цикл for уже давно пробежал все адреса). То есть для решения проблемы надо дождаться заершения построения метки, а потом переходить к следующей итерации, но вот как это сделать я ума не приложу, может быть есть еще варианты решения проблемы?