Клуб API Карт

Я.Карты в Tabs меню

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

Такая ситуация при использовании таб меню карта не грузится если она находится на любой другой кроме первой вкладке (пример), начинает грузится если только обновить страницу на этой вкладке (вкладки сохраняют куки). Если же карта на первой вкладке всё нормально грузится (пример). В IE во всех случаях работает корректно, в остальных браузерах возникает описанная выше ситуация. Что делать? может кто знает DHTML Tabs скрипт где всё корректно работает, (я перебрал скриптов уже порядка > 10). Или может есть решение как исправить проблемму в данном случае?

18 комментариев
После открытия таба попробуй что-то типа map.redraw();
если window.onload = function() заменить на function init() и подгружать карту не при загрузке, а при нажатии... как тут: http://api.yandex.ru/maps/jsapi/examples/maploadbyrequire.html а если в куках записан таб с картой то по загрузке подгружать... ?
NeOn спасибо за совет. повесил на onclick обработчика табов YMaps.load(init); стала грузится карты с других вкладок. Пришлось ещё и в body вставить onload="init();" иначе карта не грузилась в активный таб когда в куках записан. А так всё вроде работает пример тут
глюк с перерисовкой полоски зумера тока я вижу? =)
и еще, когда по табам переключаешься, масшаб карты не первоначальный скидывается..
Есть решение незнаю насколько это верно с точки зрения разработчиков, но все таки... заменяем function init() {.........}; на

+ так же
на
Вроде все работает нормально =)
2-ое решение оставить все без изменений, но на остальные табы забиндить чет типа map.destructor()... http://api.yandex.ru/maps/jsapi/examples/mapremoval.html тогда init() не будет накладывать карты...
ну скидывается потому что карта заново перезагружается по событию load(init) на табе.
Sergey Konstantinov
28 января 2016, 08:55
Боюсь, данный конкретный скрипт не позволит обойтись без танцев с бубном, поскольку как-то подписаться на событие смены таба возможности нет. Вообще-то нужно всего лишь вызывать map.redraw(), когда открывается таб с картой.
и куда этод map.redraw() вставить, точнее как реализовать?
twirl-team, бубен действительно не нужен =) David Blaine, поменяй тут http://webmaps.t35.com/tabs/tabpane.js строчку oThis.select();YMaps.load(init); на oThis.select();YMaps.load(map.redraw());
Sergey Konstantinov
28 января 2016, 08:55
можно просто map.redraw(), без всяких YMaps.load.
Пробовал в tabpane.js ставить и oThis.select();YMaps.load(map.redraw()); и просто map.redraw(); карта при переключении на таб тогда вообще не грузится :)
А кто-нибудь может привести какой-нибудь пример карты с использованием map.redraw(); по назначению.
Проще всего сделать событие при клике на конкретный таб, например:

...

Просто и работает:)
А вот и не работает... почему-то не передается внутрь этой конструкции переменная map... )
Скорее всего переменная map не доступна в области видимости обработчика.
Если сделать переменную map глобальной (вынести ее объявление за пределы обработчика onload), то она будет доступна.

Если не получится починить, то дайте ссылку на страничку. Подскажу как сделать.
У меня все работает)) юзаю http://flowplayer.org/tools/demos/tabs/index.html)

P.S. а вот в IE 9 не работает здешний режим ответа "с оформлением" )) только HTML :)