Клуб API Карт

window.open - в чём проблем?

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

Не получается открыть карту в новом окне, созданным с помощью функции JS window.open() Алгоритм такой: карта, как положено, подгружается в DIV контейнер странички, на карту добавлена кнопка (типа "на весь экран"), при нажатии на эту кнопку создаётся новое окно с кодом Яндекс.Карт. Однако, сама карта не отображается, просто пустой экран, хотя видно, что api подгружается, но что-то ему не нравится. Что?

Кстати, если в качестве контейнера для карт в новом окне назначить <body></body>, то подгружается инструментарий, правовая инфа, но карты нет. В случае же с DIV контейнером результат - вообще пустой экран.

Яндекс.Карты умеют работать в окне создаваемом JS или я что-то не так делаю?

5 комментариев
Александр Новиков
28 января 2016, 07:52
Проблем не должно быть. А так, не видя кода, сложно сказать в чем у вас ошибка.


Карта местности







Объект YMaps существует, а YMaps.Map уже нет. Соответственно, невозможно ничего с картой сделать, в т.ч. и отобразить. Из-за ключа такая ошибка возможна? Ключ на .ru, значит действителен для любого URL содержащего .ru, а т.к. все манипуляции производятся в границах адресного пространства сайта, то ключ должен работать.

Ёлки-палки! Получается, что в DIV контейнере обязательно должны присутствовать width и height, иначе Карты считают его размер равным 0, более того, указание размеров в процентах, например, 100% бесполезно - Карты не поддерживают процентные величины, и размер DIV контейнера, в этом случае тоже равен 0. Вопрос: так как заставить карты открываться в новом окне на весь экран, только средствами CSS?
Не обязательно. Чтобы карта открывалась во весь экран необходимо высоту и ширину в 100% указать и для корневого тега:
html {width: 100%; height: 100%}
Посмотрите пример:
http://api.yandex.ru/maps/jsapi/examples/mapcontroltoolbartogglebutton.html

При щелчке на кнопку карта раскрывается во весь экран.
Спасибо, Саша! Именно так - html {width: 100%; height: 100%} и всё работает как надо!