Клуб API Карт

Редактирование макета балуна

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

Добрый день!

Допустим я переопределил стандартный  макет балуна для подсказки и для самого балуна:

var myStyle = new YMaps.Style(
myStyle.hintContentStyle = new YMaps.HintContentStyle(
new YMaps.Template("тут хтмл со множеством $[]")

myStyle.balloonContentStyle = new YMaps.BalloonContentStyle(
new YMaps.Template("аналогично")

При создании метки я соответственно указываю этот стиль для метки и устанавливаю свойства метки. Все o'k!

Теперь, взависимости от некоторых свойств метки, другие мне нужно скрывать/отображать. Т.е., допустим у данной метки не нужно показывать заголовок(ее свойство, скажем, ShowCaption=false). Как мне это сделать?

Я вижу два варианта: 

1) нужно указать это в самом макете шаблона

" $[ShowCaption]==true?$[Caption]:' ' " но такая конструкция не проходит.

2)получить макет методом placemark.getBalloonContent().getRootNodes() и покопаться в нем. Но при создании метки getBalloonContent() возвращает null

 

Надеюсь, вы поняли что я имею ввиду. Наверняка кто-либо сталкивался с подобным, как решали проблему?
 

3 комментария

 

" $[ShowCaption]==true?$[Caption]:' ' " но такая конструкция не проходит.

нужно использовать не тернарный оператор, а символ "|"

$[имя_поля|значение_по_умолчанию]

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

макет:
"

$[Caption]</h1>"
код:
if(placemark.ShowCaption)
placemark.CaptionDisplay='block';

 

Получается какой-то костыль. 

 

Я же хотел именно "достучаться" до макета(в примере выше myStyle) и как-то его изменить.

достучаться можно после того как балун открыт

// Открытие балунаplacemark.openBalloon();            console.log(placemark.getBalloon().getContentLayout().getRootNodes());

Вообще шаблоны они для простых вещей,

если нужно какое-то хитрое поведение - лучше использовать макеты