Клуб API Карт

Очередной вопрос про Яндекс карты и AJAX

Пост в архиве.
Небольшой дисклеймер
Я понимаю, что грузить всю карту по аяксу - плохо, и что лучше бы грузить её отдельно, а потом подгружать только информацию о метках и балунах, которые нужно разместить. Но условия, в которые я поставлен (а в частности необходимость реализовать выбор аутпостов в битриксовом sale.order.ajax), очень часто исключают возможность "хороших" решений, и необходимость учитывать текущую архитектуру системы.

Всем привет!

Столкнулся с необходимостью грузить всю карту по ajax'у. Подскажите пожалуйста, каким образом это возможно сделать, на что обратить внимание. Сейчас по AJAX'у приходит HTML, содрежащий:

  1. скрипт подключения библиотеки яндекс.карт 
  2. скрипт инициализации карты: определение картовой переменной + init-функция
  3. тег самой карты <div id="map" style="width:500px; height:350px; "></div>
При таком раскладе, карта "полуинициализируется" - т.е. в теге можно обнаружить часть кода карты, но
  • размеры карты (первого тега внутри контейнера) 0 на 0, z-index 0
  • при расширении "руками" в инспекторе - имеем просто логотип и "серую" карту без всего
  • никакие контроллы на серую карту соответственно не добавляются, в т.ч. zoom

Надумано было ещё такое извращение "решение": прятать карту в не-ajax'овый скрытый слой, а после чего при завершении загрузки "подсосвывать" это в необходимый контейнер. Однако при таком раскладе, имеем такую же "серую" карту, которую не перерендерить никак, разве что на ней есть контролл zoom'а.

 

Каким образом правильно решить данную задачу: подгрузка через AJAX всей карты? Очень нужен совет.

 

Спасибо!

3 комментария

После того как контейнер с картой будет иметь размер отличный от нулевого, нужно вызвать myMap.container.fiToViewport();

Автор Комментария
28 января 2016, 01:12

не заработало, к сожалеию (

Лучше ссылку сразу постить, так вслепую много не насоветуешь