Спасибо за ответ. Пока пытаюсь понять как мне это в моем случае использовать. Много непонятных мне действий bind, prototype,call и || - вне if(). Есть с чем разбираться.
Сообщение от danik.js
|
а что за then ?
|
Не совсем понял вопрос. Рабтаю с yandex.maps api. Но вроде бы then - это не их метод, а jquery.
Думаю лучше мне будет привести пример. почикал все лишнее, чтобы не отвлекало.
function loadCourierHomeAddressPoints(ymaps) {
for ( var k in courier) {
// это геокодирвание в яндекскартах. получаю координаты.
var myGeocoder = ymaps.geocode(courier[k].address, {
results : 1,
boundedBy : cityBound,
strictBounds : true
});
// обрабатываем результаты, подготавливаем данные метки, создаем метрку.
myGeocoder.then(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); // создаю метку
}, function(err) {
});
}
}
Как видите я использую содержимое хеша courier. Но для того чтобы добраться до содержимого, мне необходимо оперировать k внутри функции. А для оптимизации еще и переменную шаблона вынести за пределы, чтобы не создавать ее всякий раз.