Сообщение от 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) {
});
}
}