Клуб API Карт

Подстраивающийся под содержимое балун кластера

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

Есть кластер с макетом балуна (2 колонки). Из документации понял, что балун по умолчанию ставит высоту 300. Можно ли сделать высоту балуна динамической, в зависимости от высоты правой/левой колонки?

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

Готового решения для вашей проблемы нет. Можете либо самостоятельно следить за размером контента и менять высоту балуна, либо написать собственный макет балуна и там реализовать эту динамику.

Upd: ещё немного поправил, чтобы чуть менее криво работало

Прошлый раз неправильно написал. В общем решение кривовато, но работает, использовать только если совсем лень собственный макет балуна писать:

cluster.events.add('balloonopen',function(){
        $('.ymaps-b-balloon').css('bottom', '0px');
        $('.ymaps-b-balloon').css('top','');
        $('.ymaps-b-balloon__content-holster').parent().parent().height('100%');
        $('.ymaps-b-cluster-tabs__menu').height('100%');
        $('.ymaps-b-cluster-content').height('100%');
        $('.ymaps-b-cluster-tabs__content-item').height('100%');
    });

Благодарю за ваши ответы!

Судя по всему буду колдовать с css по совету комрада newlook2008.

Хотел сделать по ссылке уважаемой бабушки, но не смог разобраться с возникновением события clientboundschange. Как, например, получить размер содержимого правой панельки (та, содержимое которой меняется в зависимости от выбора в левой панеле)?

 

На самом деле я сейчас сам с этим мучаюсь. Дошёл до вот такого костыля:

$('.ymaps-b-balloon').css({bottom:'15px',top:''});
            $('.ymaps-b-balloon__content-holster').parent().parent().css('minHeight','210px');
            $('.ymaps-b-balloon__content-holster').parent().parent().height('100%');
            $('.ymaps-b-cluster-tabs__menu, .ymaps-b-cluster-content, .ymaps-b-cluster-tabs__content-item').height('100%');

Так в отличии от предыдущего варианта ножка балуна не съезжает с метки. Но остаётся проблема с тем, что после закрытия балуна карта не позиционируется так как была до открытия, ну и естественно при изменении высоты балуна тоже не позиционируется, поэтому часть балуна может выйти за область просмотра. Ну и желательно проверять открываете ли вы балун кластера или обычной метки, и применять этот костыль только к балуну кластера, тогда решается ещё часть косяков этого костыля.

Пришёл к выводу что единственный некостыльный вариант это писать собственный макет и свои обработчики для того чтобы балун всегда был виден при изменении размеров.

имена классов могут меняться в новой версии АПИ и твое решение сломается. Лучше конечно делать через макет.

Так я же и говорю: "костыль". в итоге отказался от этой идеи совсем. оставил стандартный балун со скролом. Заниматься буду позже, когда с остальным закончу

я выше кинул ссылку, как сделать такой макет с изменяющимся после открытия балуна размером и чтобы правильно работал автопан. посмотри, когда займешься

Спасибо, я её видел, обязательно займусь попозже.