Клуб API Карт

Joomla, s5box, IE 8.0 = серая карта

riazantsev
11 декабря 2011, 17:30

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

К сожалению, не хватает навыков, чтобы реализовать правильное открытие яндекс.карты во всплывающем окне.

Прочитал много тем, но разобраться так и не смог.

Во всех браузерах открывается правильно, в IE - все функции есть, но вместо самой карты серый фон.

S5box для Joomla 1.5 - лайтбокс в который можно подгружать картинки и модули.

Яндекс карта добавлена в тело как модуль с помощью iframe.

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

Надеюсь, что решение несложное для профи в js, а я перепробовал много вариантов и так и не добился правильного открытия карты в IE.

Пожалуйста, помогите, господа!

___

Подозреваю, что добавить строчку нужно либо в karta.php (собственно, сам файл карты), либо в jquery.colorbox.js (обработчик скрипта лайтбокса). Но вот какую именно и куда - я в тупике... 5 файлов в архиве:

http://narod.ru/disk/33985840001/Desktop.rar.html

3 комментария
Подписаться на комментарии к посту

Как минимум чтобы сделать redraw у карты - переменная map не должна быть объявлена внутри обработчика window.load

так как ее не будет видно из родительского окна

 

var map;

YMaps.jQuery(window).load(function () {

    map = new YMaps.Map(YMaps.jQuery("#YMapsID-3833")[0]);

Спасибо за ответ!

Удалось реализовать по примеру:

http://api.yandex.ru/maps/articles/tasks/map.xml#how-to-load-map-in-hidden-div

Однако мне требуется, чтобы карта делала redraw подгружаясь вместе с контейнером, а не перерисовывалась по клику на ссылке внутри контейнера.

И вот тут главная проблема. Не понимаю, как связать между собой два разных скрипта из двух разных файлов.

Чтобы скрипт colorbox`а влиял на скрипт внутри karta.php

судя по тому что вы прислали

в этом плагине используется jQuery ColorBox.

На странице его документации в самом низу есть пример с обработкой события cbox_complete

Примерно его вам и надо реализовать, т.е. если у вашего iframe с картой аттрибут id и name, допустим = map_frame, т.е.

то надо на страницу вставить примерно следующий javascript-код

 

$(document).bind('cbox_complete', function(){
    ($('#map_frame').get(0).contentWindow || frames['map_frame'].window).map.redraw(); 
});