Клуб API Карт

Как в API 2.0 показать карту из скрытого контейнера

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

В первом было легко, map.redraw( решал проблему. 

Честно перерыв документацию ничего на эту тему не нашел. 

Попробовал использовать map.container.fitToViewport(true); 

НЕ помогает. Занятно что при открытие дебагера карта сразу появляется. 

 


$('li.m-3 a').click(function(e){

 

// Как проехать

 

e.preventDefault(

 

image_block.slideDown(slide_delay);

 

visual.slideUp(slide_delay);

 

gallery.slideUp(slide_delay);

 

panorama.slideUp(slide_delay);

 

yandex_map.slideDown(slide_delay);

 

content_block.slideDown(slide_delay);

 

yandex_rasp.slideUp(slide_delay);

 

map.container.fitToViewport(true);

 

}

 

$('li.m-4 a').click(function(e){

 

// Расписания

 

e.preventDefault(

 

image_block.slideUp(slide_delay);

 

content_block.slideUp(slide_delay);

 

yandex_rasp.slideDown(slide_delay);

 

}

 

}

 

 

 

map = undefined;

 

    ymaps.ready(function() {

 

    var map = new ymaps.Map("ymaps-map-container", {

 

        center: [50.11977712221436, 53.184252002377754],

 

        zoom: 14,

 

        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([50.122292, 53.185487], {

 

            balloonContent: "Вокзал Самара"

 

        }, {

 

            preset: "twirl#redDotIcon"

 

        })

 

}

 


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

map.container.fitToViewport нужно вызывать в callback-е slideUp-а

Спасибо за оперативный ответ. 

Я не программист и не очень в теме. 

Буду очень  признателен если подскажешь куда конкретно. 

я не очень в теме логики твоего кода, 

но если yandex_rasp.slideUp(slide_delay);

как раз показывает карту, что судя по документации к этому методу

он принимает второй опциональный параметр - функцию которая будет вызвана когда анимация закончится, в этой функции тебе и надо вызвать map.container.fitToViewport, т.е. чтото типа

 

yandex_rasp.slideUp(slide_delay, function () {
    map.container.fitToViewport();
});

ну и еще тебе надо что-нибудь прочитать про область видимости (scope) функций в javascript

потому что переменная map объявленная внутри ymaps.ready и снаружи (так как ты это сейчас сделал) это 2 разных переменных и твой код работать не будет.

Была ли решена проблема? Хотелось бы узнать решение...