Клуб API Карт

Карта в попапе

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

Вот собственно код:

 

<!-- блок с картой -->
<div id="all_ptu_container" style="visibility: hidden;">
<div id="bc">
  <span id="all_ptu_toggle"><span class="pseudo_link" onclick="$('#all_ptu').fadeToggle('fast')">Показать карту</span></span>
</div>

<div id="all_ptu" style="display: none;">
<!-- Этот блок кода нужно вставить в ту часть страницы, где вы хотите разместить карту (начало) -->
<div id="ymaps-map-id_134096209544675844092" style="width: 998px; height: 350px;border: 1px solid #000;"></div>
<script type="text/javascript">
function fid_134096209544675844092(ymaps) {
var map = new ymaps.Map("ymaps-map-id_134096209544675844092", {
center: [34.12550784921267, 44.95037316356519],
zoom: 16,
type: "yandex#map"});

map.controls.add("zoomControl").add("mapTools").add(new ymaps.control.TypeSelector(["yandex#map", "yandex#satellite", "yandex#hybrid", "yandex#publicMap"]));
map.geoObjects.add(new ymaps.Placemark([34.124671, 44.949947], {
balloonContent: "Клиника Ортодонтии Соколовой"}, {
preset: "twirl#redDotIcon"}));};
</script>
<!-- Этот блок кода нужно вставить в ту часть страницы, где вы хотите разместить карту (конец) -->
</div>
</div>

<script type="text/javascript">
$('#all_ptu_container').css('visibility', 'visible');
</script>
  

При нажатии на " Показать карту" появляется слой #all_ptu, но сама карта не выводится. Интересно, что когда нажимаю "проинспектировать элемент" в опере - карта тут же показывается и дальше все работает как надо :) но после рефреша все по новой - появляется блок  

<div id="ymaps-map-id_134096209544675844092" style="width: 998px; height: 350px;border: 1px solid #000;"> </div>

то есть видно черную рамку и границы блока. Но самой карты в нем нет.

Что делать, товарищи? 

7 комментариев

после того как dom-элемент с картой станет видимым

сказать map.container.fitToViewport();

Вячеслав Мороз
28 января 2016, 04:17

спасибо за ответ, но...где "сказать"?))

сорри, я просто не очень понимаю в этом, штука вроде не оч сложная, так что решил не искать человека, а спросить у сообщества :) 

Сделайте map глобальной переменной

 

var map;
function fid_134096209544675844092(ymaps) {
map = new ymaps.Map("ymaps-map-id_134096209544675844092", {
...


И код отображения скрытого слоя примерно такой:

 

$('#all_ptu_container').show('fast', function () {

    map.container.fitToViewport();

});

 



Вячеслав Мороз
28 января 2016, 04:17

Не показывает слой с таким кодом

дайте ссылку

Вячеслав Мороз
28 января 2016, 04:17

сайт налокале, к сожалению. А вы пробовали ваш метод? Он работает? 

не понял зачем использовать jQuery и писать вызовы в onclick?

у меня работает такой вариант:

 

                              Показать карту