Клуб API Карт

Событие после размещения меток на карте

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

Здравствуйте! Есть карта, на которую при загрузке заносятся метки со следующим шаблоном:

var IconLayout = ymaps.templateLayoutFactory.createClass(

'<div></div>', {

    build: function () {

        this.constructor.superclass.build.call(this);

        $('.mark').bind('click', function(e){

            switch(e.type){

                case "click":

                break;

            }

        });

    },

    clear: function () {

        $('.mark').unbind(click');

        this.constructor.superclass.clear.call(this);

    }

});

 

При загрузке страницы, нужно сделать клик по одной из меток. Вопрос в том как отловить момент когда они все загрузятся на карту?

9 комментариев

метки на карту добавляются синхронно

Спасибо! Я имел ввиду немного другое:
ymaps.ready(function() { 
    // тут код, который в первом сообщении

 

    // тут я ещё не могу обратится к меткам,
    //т.к. их в этот момент ещё нет на странице
});

 

Мне нужно узнать когда на карту загрузятся метки (все) и программно щёлкнуть по одной из них.

а как вы загружаете метки?

 

var collection = new ymaps.GeoObjectArray({}, {iconLayout: IconLayout});

 

for(var key in array){
    var placemark = new ymaps.Placemark([array[key].point[1], array[key].point[0]], {id: array[key].id, name: array[key].name});
    collection.add(placemark);
}

 

var obmap = $('#map-conteiner');
if(collection.getLength()>1){
    var cc = ymaps.util.bounds.getCenterAndZoom(getBounds(collection),[obmap.width(), obmap.height()]);

    map = new ymaps.Map(obmap[0], cc);
}else{
    ...
}

 

map.geoObjects.add(collection);

// если обратиться к метке тут, то она не будет найдена; обращаемся через jQuery, в шаблоне меток есть класс

 

а как вы обращаетесь к метке?

У дива из первого сообщения - '', есть класс class="placemark" и атрибут curid="". Обращаюсь так: $('.placemark[curid="3"]').click();
Число соответственно меняется. Причём, после полной загрузки, если в консоли написать такую же строку, всё отрабатывает - т.е. элемент есть. 

Никто не подскажет как быть?

cлушай overlaychange

Спасибо! Получилось сделать так:

collection.events.add("overlaychange", function (e) {

    var object = e.get('target');

    console.log(object.properties.get('divprops'));

});