Клуб API Карт

Fancybox + Yandex Map - как закрыть карту

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

На странице располагается несколько адресов офисов фирмы.

Для каждого есть схема проезда - ссылка, при клике на которую открыватся fancybox,туда подгружается карта с балуном. Точно так же успешно и закрывается fancybox по нажатию на крестик.

Беда в том, что при повторном клике на ссылку схемы проезда - открывается fancybox, содержащий две карты. И так по нарастающей при открытии -закрытии.

Пытался вызвать метод map.desctructor() на событие fancybox beforeClose. Фаербаг сообщает что map is undefined.

var map; выносил в глобальную переменную - не помогает.

 

 

Код

 

<script type=\"text/javascript\">
var map;
$(document).ready(function() {
 
     $(".shema").fancybox({
        'afterShow' : function () {
           
            var lng =  37.472213;       
            var lat =  55.738267;
           
            var mapContainer = YMaps.jQuery('<div style="width:545px;height:445px"></div>')
                                    .appendTo(YMaps.jQuery('#map')),
                map = new YMaps.Map(mapContainer[0]
              
             map.setCenter(new YMaps.GeoPoint(lng, lat), 15);

             var placemark = new YMaps.Placemark(new YMaps.GeoPoint(lng, lat)
             placemark.name = 'Офис 1';
             placemark.description = 'Адрес 1';
             map.addOverlay(placemark);

             // Открывает балун
             placemark.openBalloon(
        },
        'beforeClose' : function(){
           map.destructor(
        }
    }
}
</script>

 

2 комментария
Александр Новиков
28 января 2016, 05:14
У вас видимо небольшая путаница в понятиях что есть что.

Что бы подчищать под собой - просто очищайте содержимое контейнера c id="map"

Это делать можно либо перед созданием новой карты, либо в обработчике befoteClose.

Например сделать это можно так: YMaps.jQuery('#map').html(''); или YMaps.jQuery('#map').empty();

точно!

Пробовал сделать подобное. но похоже не то очищал.

Спасибо!