Яндекс Карты и подгруженный контент по аяксу

218
11 апреля 2018, 07:21

На сайте есть контент, которые обновляется по фильтрам (выбрал чекбокс - перезагрузка контента по аяксу). В контенте есть ссылки на попап-карты. После загрузки контента по аяксу начинаются чудеса: на мобильной версии не работает выход из полноэкранного режима (крашится с ошибкой Uncaught TypeError: Cannot read property 'container' of null at FullscreenControl.deselect), в полной версии через раз работает закрытие балуна (Uncaught Error: popup was destroyed at ChildClass.clear)

ymaps.ready(init);
function init() {
        jQuery('body').on('click', '.open-map', function (event) {
            map1 = new ymaps.Map(idYandexmap, {
                center: center,
                zoom: zoom,
                controls: ['routeButtonControl', 'geolocationControl', 'zoomControl', 'trafficControl']
            });
            ...
           var fullscreenControl = new ymaps.control.FullscreenControl();
           map1.controls.add(fullscreenControl);
           fullscreenControl.enterFullscreen();
           fullscreenControl.events.add('fullscreenexit', function () {
               jQuery('#header').show();
               jQuery('html').removeClass('ymaps-fullscreen');
               map1.destroy();
               map1 = null;
           });
           if (balloonId)
            {
                map1.balloon.open([dataMap[idYandexmap][balloonId]['latitude'], dataMap[idYandexmap][balloonId]['longitude']], {content: dataMap[idYandexmap][balloonId]['data']}, {maxWidth: 500});
            }
           for (var i in dataMap[idYandexmap])
            {

                Placemark = new ymaps.Placemark([dataMap[idYandexmap][i]['latitude'], dataMap[idYandexmap][i]['longitude']], {
                    //  hintContent:data[idYandexmap][i]['title'],
                    balloonContent: dataMap[idYandexmap][i]['data']
                }, {
                    iconLayout: 'default#image',
                    iconImageHref: dataMap[idYandexmap][i]['icon'],
                    iconImageSize: [Number(dataMap[idYandexmap][i]['icon_w']), Number(dataMap[idYandexmap][i]['icon_h'])],
                    iconImageOffset: [-Number(dataMap[idYandexmap][i]['icon_w']) / 2, -Number(dataMap[idYandexmap][i]['icon_h'])],
                    balloonMaxWidth: 500
                });
                map1.geoObjects.add(Placemark);
            }

  });
}

При этом без аякса карты нормально работают. По ощущениям - я делаю что-то неправильно, не пойму что именно.

READ ALSO
Как подключить jQuery Migrate к webpack?

Как подключить jQuery Migrate к webpack?

Я подключаю jQuery следующим образом:

180
Универсальный метод скриншота окна

Универсальный метод скриншота окна

Нашел здесь отличное решения для создания скриншотов по дескриптору окнаЯ его немного подредактировал под свои нужды, получилось следующее:

180
Как изменить ссылку на сборку?

Как изменить ссылку на сборку?

Пишу бота для дискордаВзял либу Discord

275