Клуб API Карт

Загрузка карты ajax

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

Добрый день, 

такая проблема: div для карты и код для ее инициализации загружается с помощью ajax, карта отображается корректно только в том случае, если код инициализации ymaps.ready(...) вызывать с небольшой задержкой, т.е. обернуть ее setTimeout, в противном случае показывается серый квадрат.

Есть какие-то стандратные варианты решения не через таймаут?

 

Спасибо.

3 комментария
Максим Горчаков
28 января 2016, 04:45

Почему бы диву карты не задать display:none. А скрипт подгружать ajax`om? У вас проблема в чем именно? При попытки карты "создать себя" она не находит контрейнер куда ей нужно вставиться?

 

И никаких видимых ошибок скриптов конечно нет?

В общем случае - если вы подключаете какой либо блок динамически - его составные скрипты также подгружаются динамически.

jQuery.html это даже делает "насильно"

Получается что в момент срабатывания ymaps.ready сами карты, которые в том числе "несут" данную функцию еще не существуют.

Воспользуйтесь параметров onload при загрузки карты.

если нужна чистая загрузка карт по требованию - вот пример кода:


var initMaps = function() {var self = this;if (!(window.ymaps)){varinitFunc = '_citymap'+Math.round(Math.random()*1000);window[initFunc] = function() {ymaps.load(['geometry.pixel.Point', 'overlay.staticGraphics.Placemark', 'layer.tileContainer.DomContainer'], function() {initMap.call(self, options)} );};$('HEAD').append($('