Показать сообщение отдельно
  #5 (permalink)  
Старый 05.02.2013, 15:36
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от megagramm
Пока пытаюсь понять как мне это в моем случае использовать
Да никак. Это все я добавил для обеспечения работы твоего кода. Мой пример показывает что все в порядке с областью видимости. Проблема походу в том, что метод then выполняет переданную агрументом функцию асинхронно, с задержкой (а название метода на это и намекает). Когда значение k уже сто раз поменялось и имеет последнее присвоенное значение.

Сообщение от megagramm
Но вроде бы then - это не их метод, а jquery
А причем тут jquery вообще

Можно делать "снапшоты" значений k таким образом:

function loadCourierHomeAddressPoints(ymaps) {
    for ( var k in courier) {
// это геокодирвание в яндекскартах. получаю координаты.
        var myGeocoder = ymaps.geocode(courier[k].address, {
            results : 1,
            boundedBy : cityBound,
            strictBounds : true
        });
// обрабатываем результаты, подготавливаем данные метки, создаем метрку.
        myGeocoder.then((function(k){ return function(res) {
            console.log('k=' + k);
            var courierHomeAddressPlacemarkContentLayot = ymaps.templateLayoutFactory.createClass('<div>'
                    + '<div style="color:red;background-color:rgba(255,255,255,0.7);">$[properties.courier], $[properties.name], $[properties.address]</div>'
                    + '');
            var properties = {
                courier : k,
                name : courier[k].name,
                address : courier[k].address
            };
            var options = {
                iconLayout : "default#imageWithContent",
                iconContentLayout : courierHomeAddressPlacemarkContentLayot,
                cursor : 'grab',
                hasBalloon : false,
                iconContentOffset : [ 0, -10 ], // смещение содержимого метки
                iconImageHref : '../tpl/img/points/pm' + colors[k].colorLabel + 'm.png',// метка курьера
            };
            // collectionCourierHomeAddress.add(res.geoObjects);
            coordinates = res.geoObjects.get(0).geometry.getCoordinates();// результат геокодирования - координаты
            courierHomeAddressPoint[k] = new ymaps.Placemark(coordinates, properties, options); // создаю метку
        })(k), function(err) {
        });
    }
}
Ответить с цитированием