Клуб API Карт

Временное отключение boundschange

ridjie
10 сентября 2013, 17:13

Друзья, такая ситуация:

 На карте есть различные метки фирм, при событие boundschange метки обновляются(показываются 20 меток, ранжированных по условному рейтингу). Когда мы кликаем по метке, которая находится скраю карты, то там открывается балун, и ввиду расположения метки, происходит автоматическое смещение карты, срабатывает boundschange, коллекция меток обновляется, и открытый балун соответственно пропадает.  Как мне отследить промежуток времени смещения карты из за балуна и отключить прослушивание boundschange в данный промежуток.

Update: код ниже ничего не выводит...

myPlacemark.balloon.events.add('autopanbegin', function(e) {

      console.log("event start");

});

6 комментариев
Подписаться на комментарии к посту

"Временное отключение boundschange" - это костыль.

Правильное решение - загружать метки по области с запасом.

И при boundschange проверять вышел ли bounds карты из этой области.

Иначе каждый сдвиг карты даже на 1 пиксель будет приводить к перезагрузке всех меток с сервера.

Сейчас так и происходит.....

Не пойму, почему 

myMap.balloon.events.add('open', function(e) {

                                console.log("gfgd");

                            });

дает вывод, а 

myMap.balloon.events.add('autopenbegin', function(e) {

                                console.log("gfgd");

                            });

пусто......, смещение карты происходит

autopenbegin -> autopanbegin

Прошу прощение, в коде все верно, только в посте опечатался

возможно это баг, будем разбираться, спасибо.

Вот рабочий вариант:

 myMap.balloon.events.add('open', function(e) {

                                        b = e.get('balloon');

                                        b.events.add('autopanbegin', function() {

                                            myMap.events.remove('boundschange', processBoundschange);

                                        });

                                        b.events.add('autopanend', function() {

                                            myMap.events.add('boundschange', processBoundschange);

                                        });

                                    });

Вообщем через  myMap.balloon.events.add доступны только события  open и close, для доступа вот к этому списку http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Balloon.xml#events-summary, нужно такая штука e.get('balloon').

Спасибо за участие и терпение,  javascript учить в планах, но позже :)))