Клуб API Карт

Странное поведение при открытии балуна

w1ldzer0
1 августа 2012, 09:42
Определил layout для балуна через ymaps.templateLayoutFactory.createClass.
Так же переопределил build:
build:function(){
    this.constructor.superclass.build.call(this)
    /*Ищем высоту балуна*/
    var balloonOffset = -parseInt(jQuery(this.getParentElement()).find('.b-simple-balloon-layout').outerHeight());
    var balloon = this.getData().geoObject.balloon
    var geoObject = this.getData().geoObject
    geoObject.options.freeze()
    /*Устанавливаем значение смещения для балуна*/
    geoObject.options.set({
        balloonOffset:[-170,balloonOffset],
    })
}

и странность поведения заключается в том, что свойство balloonOffset срабатывает только после второго открытия балуна, при первом нажатии на метку, оно как будто [0,0]. Как можно это побороть?
1 комментарий
Подписаться на комментарии к посту

Потому что build вызывается уже после отрисовки балуна, а options не инициирует его перерисовку по какой-то причине.

Мне в моем случае помогли авторы Апи2.0, и еще это: залез в исходники, посмотрел публичные методы и переопределил их шаблоне рядом с build. Можете тоже попробовать: найдите в исходниках, где описывается шаблон балуна по умолчанию, и попробуйте поиграться с их методами - весьма вероятно, что вы решите свою проблему, через переопределение одного из тех методов.

P.S. методы, которые не обфусцируются, это те, что без _ в начале. остальные, похоже, через гугл компайлер или что-то такое пакуются и не угадаешь, как оно будет называться в след. сборке.