Веб-компоненты google-map отображают серую область справа после скрытия ящика приложения

У меня есть <google-map> внутри <app-drawer-layout>и работает нормально, за исключением того, что на карте отображается серая область справа, когда ящик скрыт.

Все обсуждения, которые я нашел по этому вопросу, говорят, что решение состоит в том, чтобы вызвать resize событие карты, но это не работает для меня. Я даже пытался добавить задержку, чтобы быть в безопасности, но все равно ничего не происходит.

document.querySelector('app-drawer').addEventListener('app-drawer-transitioned', function(){
    window.setTimeout(function(){
        console.log( map.clientWidth );
        google.maps.event.trigger(map, 'resize');
    }, 100);
});

Вывод на консоль подтверждает, что ширина карты действительно изменилась до запуска события resize, но серая область сохраняется. Даже если я перемещаю и масштабирую карту, серая область все еще там (хотя она становится шире или уже в зависимости от панорамы). Единственное, что может исправить это изменение размера всего окна браузера.

Это в Chrome на Mac, кстати.

1 ответ

Оказывается, я пытался вызвать resize событие в DOM-элементе вместо объекта API Карт. Объект API Карт можно получить через .map собственность <google-map> DOM-элемент.

Это работает для меня

<script>
    var mapElem = document.querySelector('google-map');

    mapElem.addEventListener('api-load', function(e) {
        var mapObj = mapElem.map;

        document.querySelector('app-drawer').addEventListener('app-drawer-transitioned', function(){
            google.maps.event.trigger(mapObj, 'resize');
        });
    });
</script>
Другие вопросы по тегам