Клуб API Карт

Да как же работает .redraw()???

spirit-drive
1 ноября, 00:09
ymaps.ready(init);

var myMap1,
    myMap2,
    myPlacemark1,
    myPlacemark2,
    myPlacemark3;
function maps() {
    myPlacemark1 = new ymaps.Placemark([45.02388357, 39.06877350], {
        balloonContentHeader: 'Локация 1',
        balloonContent: 'ул. Сормовская, дом 12/11',
    },{
        iconLayout: 'default#image',
        iconImageClipRect: [[0,0], [85, 124]],
        iconImageHref: 'img/label_map.png',
        iconImageSize: [33.33, 50],
        iconImageOffset: [-16.66, -50]
    });
    myPlacemark2 = new ymaps.Placemark([45.03811357, 39.02389400], {
        balloonContentHeader: 'Локация 2',
        balloonContent: 'ул. Школьная, дом 15/6'
    },{
        iconLayout: 'default#image',
        iconImageClipRect: [[85,0], [170, 124]],
        iconImageHref: 'img/label_map.png',
        iconImageSize: [33.33, 50],
        iconImageOffset: [-16.66, -50]
    });
    myPlacemark3 = new ymaps.Placemark([45.05108607, 38.93185250], {
        balloonContentHeader: 'Локация 3',
        balloonContent: 'ул. 2-ая линия, дом 49'
    },{
        iconLayout: 'default#image',
        iconImageClipRect: [[170,0], [255, 124]],
        iconImageHref: 'img/label_map.png',
        iconImageSize: [33.33, 50],
        iconImageOffset: [-16.66, -50]
    });
}
function init(){
    myMap1 = new ymaps.Map("map_1", {
        center: [45.04544779, 39.00158981],
        zoom: 11
    });
    maps();
    myMap1.geoObjects.add(myPlacemark1);
    myMap1.geoObjects.add(myPlacemark2);
    myMap1.geoObjects.add(myPlacemark3);

    myMap2 = new ymaps.Map("map_2", {
        center: [45.04544779, 39.00158981],
        zoom: 11
    });
    maps();
    myMap2.geoObjects.add(myPlacemark1);
    myMap2.geoObjects.add(myPlacemark2);
    myMap2.geoObjects.add(myPlacemark3);
}

Вот такой код карты. 

$('.faq .address-button').click(function () {
    var time = 600;
    $('.faq__maps').slideToggle(time);
    ymaps.myMap1.redraw();
});

Вот такой код

Пробовал и 

myMap1.redraw();

и 

ymaps.redraw();

Так как на самом деле работает эта функция?

4 комментария
Добрый вечер. А что вы пытаетесь сделать? Я такого метода в документации не нашёл https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/concepts/About-docpage/
При поиске нашел такую тему https://yandex.ru/blog/mapsapi/31615
Тут надо не просто заменить, а дождаться окончания slidetoggle см. второй параметр (complete)
$('.faq__maps').slideToggle(time, function() {
  ymaps.myMap1.container.fitToViewport();

});

Обновлено 1 ноября, 11:10
dimik,
Похоже на правду, но у меня почему то "Cannot read property 'container' of undefined"
Я просто делаю самые первые шаги в яндекс картах, еще плохо понимаю, как они работают и какие могут быть подводные камни.
Может не тот скрипт подключен?
script(src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript")
dimik,


Может еще проблема в видимости. Но по идее при такой структуре карты должны быть видны везде
//Здесь код карт


$(document).ready(function () {

//Куча всяких функций не имеющий отношения к картам
   $('.faq__maps').slideToggle(time, function() {
   ymaps.myMap1.container.fitToViewport();
  });
})
$(window).on('load',function () {

//Всякий код не относящийся к картам, хотя здесь по инструкции (вроде) он должен находиться
})