Клуб API Карт

инициализация карты в (display:none) контейнере, после его отображения (display:block;)

Пост в архиве.
sergey-ignatenkov
22 апреля 2010, 15:06

Сгенерировал карту в конструкторе, получил код вставки.. далее этот код из базы поместил на странице в div c  display:none, по клику я меняю display:none на display:block, соответственно контейнер карты появляется а сама карта нет..
Вопрос: Как переинициализировать карту ?..
Желательно решение которое не будет менять первоначальный код вставки, так как хочется чтоб все вставлялось без лишнего редактирования, ... на страницу подгружается несколько компаний каждая со своей картой

5 комментариев
по ссылке посмотрел но там, насколько я понимаю, рассмотрен вариант когда код вставляется в и надо самому дописать для каждой карты инициализацию

(в моем варианте их несколько на странице и код(конструктора карт) грузиться динамически из базы, который я сразу втавляю в div's c display:none и вешаю на них click c display:block),
соответственно никаких изм с кодом не делаю и не хочеться ).. как вариант можно все блоки грузить в открытые дивы тогда все сразы отображается ), но, единственное, не хочется грузить сразу несколько карт на страницу...

Ключевое в том пример - это метод map.redraw(), который позволяет перерисовать карту.

а как мне эту фукцию использовать, в каком участке, если map, вроде как, локальная переменная для каждого куска кода она своя, доступа к ней из вне нет..

вот примерный кусок моего шаблона..

здесь подключен Api-ключ

   

   

      Карта 1 отображение

   

   

   

      Карта 2 отображение

   

Тоесть при клике контейнер получает display:block.. контейнер карты отоьражается вместе с меню и балунами, а сама карта улиц нет.

во внешнем скрипте map.redraw() не могу использовать , пишет переменная map не определена... как быть..

Создайте обработчик для клика по ссылке в локальной области видимости (там где видна переменная map). Например, вот так:
YMaps.jQuery("#link-show-map").bind("click", function () {
    YMaps.jQuery("#map-container").css("display", "block");
    map.redraw();
});

Думаю, что вам поможет вот этот пример:
http://rodlex.narod.ru/examples/display-none.html