Клуб API Карт

Передача дополнительных свойств для последующего использования при множественном геокодировании

Пост в архиве.

Можно ли при подготовке данных передать свой параметр (-ы) в geocode, для того, чтобы в случае успешного поиска, использовать эти данные для дальнейшей работы? В примере ниже, это просто для вывода сообщение (alert), но можно было бы добавить в описание объекта, вывести на метку текст и т.п.

//------------------------------------------- мой вариант -----------------------------------------------------------------------------

function init() {

    var myMap = new ymaps.Map('map', {

            center: [55.734046, 37.588628],

            zoom: 9

        });      

    var objects = ymaps.geoQuery(ymaps.geocode('Москва, Слесарный переулок, д.3',{results:1, human:'Victor'}))   

        .add(ymaps.geocode('упс, не нашли адрес! Ну ладно, бывает...',{results:1human:'Maxim'}}))

        .add(ymaps.geocode('Люберцы, Октябрьский проспект д.143',{results:1human:'Sergey'}))

        .addToMap(myMap);  

    

    objects.then(function () {

        // Этот код выполнится после того, как все запросы к геокодеру

        // вернут ответ и объекты будут добавлены на карту.

        alert(objects.get(0).properties.get('human'));

    });

}

ymaps.ready(init);

//-------------------------------------------------------------------------------------------------------------------------------------------

В Руководстве разработчика есть такой пример:

//------------------------------------ вариант из руководства разработчика -------------------------------------------------------------------------------

var objects = ymaps.geoQuery(ymaps.geocode('Москва, Слесарный переулок, д.3'))
 .add(ymaps.geocode('Люберцы, Октябрьский проспект д.143'))
 .add(ymaps.geocode([55.734046, 37.588628])) 
.addToMap(myMap); 
var balloons = ['содержимое балуна 1', 'содержимое балуна 2', 'содержимое балуна 3'], 
i = 0
// Все операции асинхронные, поэтому следует дождаться готовности данных.
 objects.then(function () { 
objects.each(function (object) { 
object.properties.set('balloonContentBody', balloons[i++]); 
}); 
});
//-------------------------------------------------------------------------------------------------------------------------------------------
Но тут есть один подвох: если хоть один из адресов не будет найден, то метод перебора даст ошибку. Если бы можно было передать свои данные, тогда этого можно было избежать. Но как это сделать?

3 комментария

зачем геокодировать одни и теже адреса на каждом клиенте?

Это два разных примера: первый - пока не рабочий, т.к. не могу разобраться как передать свой параметр, второй из руководства разработчика, но он будет давать некорректное содержание в балун, если вдруг среди искомых объектов какой-то не будет найден.

Сколько всего у вас адресов и почему их надо геокодировать на каждом клиенте заного, а не 1 раз на сервере?