Клуб API Карт

Странная особенность балуна

cvek.ru
10 декабря 2009, 12:47

Здравствуйте!

В процессе работы с картой обнаружилась одна любопытная деталь.

У меня на странице div с картой по умолчанию скрыт. В window.onload прописана функция, которая в этот div помещает карту, div показывается после щелчка на ссылку a. Так вот, если я успеваю щёлкнуть на ссылку ДО срабатывания функции onload - балун на карте выглядит корректно (если надпись, которую я в него помещаю, длинная, балун принимает её размер). Если ПОСЛЕ - балун имеет стандартный размер и надпись в него, соответственно не влезает.

Вид балуна у меня описывается таким кодом:

            var t = new YMaps.Template('<div style="color:#0A0; margin:5px 5px 5px 5px;">$[description]</div>');
            YMaps.Templates.add("point#template", t);

            var s = new YMaps.Style();
            s.balloonContentStyle = new YMaps.BalloonContentStyle("point#template");

            //Создание метки в точке с заданными географическими координатами
            var placemark = new YMaps.Placemark(new YMaps.GeoPoint(latitude, longitude), {style: s});
            placemark.description = strAddress;
            map.addOverlay(placemark);
            placemark.openBalloon();
            map.getBalloon().setOptions({hasCloseButton: false});

Я пыталась уже и width:auto в div ставить, эффекта - 0. Что посоветуете в такой ситуации?

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

Если загрузка по требованию не подходит, то дайте ссылку на страницу - подскажу другое решение.
Когда показываете карту, тогда же и добавляйте на нее балун. Или как уже сказал Саша, можно все делать по клику на ссылку. А onload не использовать. Может у вас посетитель вообще по этой ссылке не кликнет, а вы ему в принудительном порядке карту уже грузите :)
Я решила проблему, поставив обработку балуна на щелчок по ссылке. Странно, но такая штука работает исправно. Что касается загрузки карты по требованию, то способ хороший, но что делать, если нужно передать в функцию параметры?
А в чем проблема с параметрами? По клику запускается функция, которая в свою очередь может загрузить какие угодно функции и с какими угодно параметрами. Или я вашей проблемы не понял?
Описываю ситуацию:
Предположим, есть function1. Её вызывает обработчик load. Если в function1(которая без параметров) вызвать функцию function2, откуда возьмутся параметры? Сейчас у меня на ссылке висит onclick="function1(param1, param2);". Эти param1 и param2 в ситуации выше откуда брать?
Не совсем понял проблему. Не могли бы вы дать ссылку на страницу или привести листинг кода?