Клуб API Карт

Балун не открывается программно

Пост в архиве.
AcidCrash2005
28 мая 2013, 13:30

 

 myMap.geoObjects.events.add('click', function (e) {
     var point = e.get('target').geometry.getCoordinates();
     var data = e.get('target');
     soloCollection.removeAll();
     var new_placemark = new ymaps.Placemark(
         point,
         data.properties.getAll(),
         data.options.getAll());
     soloCollection.add(new_placemark);
     myMap.geoObjects.add(soloCollection);
     new_placemark.balloon.open(); // не работает - не открывает балун
 });

 

Точка строится, все ок. Если я проверяю данные не наличе балуна и его содержимого, все ок. Но сам балун не хочет открываться и карта тормозить начинает если идет авто сдивг.

вот ссылка http://shop.kena.com.ua/#b-map-tab

 

3 комментария
vadim.zhiltsov
28 мая 2013, 14:11

 

Не используйте полную перерисовку объектов при boundschange совместно с

 

 

                    myMap.panTo(coords,

                            {

                                flying: true

                            });

 

 

Они будут у вас перерисовываться почти при каждой итерации полёта. 

Да и воопще, перерисовывать всё при boundschange считается варварским методом. Хотябы не делайте removeAll(); 
Если интересно, то следите за хабром. Я собираюсь написать статью, как более грамотно организовать хранение данных на сервере для maps api

 

 

 

 

А как лучше сделать. Сейчас у меня получается, запрос точек, сторим колекцию точек, при boundschange удалаем коллекцию, делаем новый запрос и сторим новую колекцию. 

Пролема когда балун открывается, при removeAll() все стривается.

Если есть лушче способ подскажите как?

как минимум загружать надо по области с запасом (раза в 2 большим). а при boundschange проверять вышел ли viewport карты за эти границы.
А то у Вас сейчас при сдвиге карты даже на пиксель все заного стирается и загружается.