Клуб API Карт

Отрисовка карты в слое .dialog

timemanager
7 января 2015, 11:27

Добрый день!

Впервые сталкиваюсь с использованием карт, при вставке карты в скрытый слой (.dialog({autoOpen: false}) при его открытии загрузка элементов карт происходит, что видно в отладчике, однако в открытом диалоговом окне ничего не показывается...

Попытался сделать отдельно, без кучи "наворотов", что необходимы на работающем сайте, сделать карту во вначале скрытом диалоговом окне - там всё работает (пример http://ledagregator.ru/map.html)

На сайте, где нужна карта, используются кроме яндекс карт другие инструменты, например, tinyMCE - может что-то мешает картам?

 

Спасибо за подсказку.

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

Ссылка на неработающую карту?

по приведенной ссылке как раз работает.

Не показывает вот тут: http://ledagregator.ru/lesson.html
Имя и пароль для входа: demo demo

Кстати, надо в правой части переключить TAB на закладку "Технические данные" - в первом поле двойной клик открывает слой с картой (карты там не видать)

У вас там js-ошибка

Uncaught TypeError: Cannot read property 'fitToViewport' of undefined

"container.fitToViewport" надо вызывать на экземпляре карты, а не на функции-конструкторе

 

От отчания уже что только не городил...

Но если вызывать на экземпляре карты, то в какой момент?

Как это сделать?

И почему всё-таки не отрисовывает карту? (даже без этой ошибки)

ошибку надо убрать, потом будем смотреть дальше

так уже убрана.

Правда перерисовка в карту не добавлена.

у вас у div id="map" высота = 0

Спасибо!

Но я не вижу установки или задания для div размера в 0.

Подскажите, пожалуйста, где Вы это обнаружили? - я не могу найти...

Вижу в FireBug:

<ymaps class="ymaps-2-1-17-map ymaps-2-1-17-i-ua_js_yes ymaps-2-1-17-map-ru" style="width: 0px; height: 0px;">

но этот код формируется API или я что-то совсем не понимаю.

https://yadi.sk/i/Yq_OO0zTdpmJ3

Посмотрите размеры 404x0
У родительского div#map такие же

Да, видно. И в отладчике видно. Но откуда такие размеры взялись? В коде страницы я не присваиваю размеров. А в коде странички http://ledagregator.ru/map.html аналогично сделан вызов, но там карта отрисовывается.

Как такое может происходить?

При явном задании размеров, даже в % карта стала отрисовываться!

Спасибо Вам!

Правда, если честно, то я не понимаю почему так произошло.

Видимо потому что у родителя стоит min-height:0px

Вероятно. Но это также добавляется API карт.

нет, это ваш контейнер

 

 

АПИ не меняет DOM выше своего контейнера

Спасибо, более-менее становится понятно. Эти CSS свойства добавляются JQUERY.

Подскажите ещё, пожалуйста, почему не отрабатывает коэффициент масшатабирования?

У вас там геолокация вызывается (почему-то 2 раза) geolocation.get с опцией
mapStateAutoApply: true.
В случае контейнера карты 0-го размера это приводит в выставлению минимального масштаба

Увы, так-как с картами я занимаюсь впервые, то этот JS код был просто взят из примеров документации.

Какой из этих "mapStateAutoApply: true." лишний?

Зачем нужно 2 вызова?

Оставьте один.

Если хотите использовать масштабирование при определении местоположения, то geolocation.get нужно вызывать после отрисовки контейнера с картой

Дык пока имею весьма слабое представление как работает API. Параллельно с чтением доки пытаюсь сразу что-то сделать.

Если у вас табы через jQueryUI сделаны, там должно быть спец-событие показа содержимого таба, в его обработчике и надо вызывать geolocation.get

Наверное.

Спасибо Вам!