Как визуализировать карты в ng-hide divs с помощью ngMap без получения серого прямоугольника
Проблема: Google Maps элементы, которые находятся в пределах divs, которые изначально визуализированные как ng-скрытые появляются в виде серых прямоугольников, когда они ng-показаны.
Я собрал этот поршень, чтобы продемонстрировать: https://plnkr.co/edit/emzlIT?p=preview
Другие имели успех, используя google.maps.event.trigger(map,'resize'), но для
мне это не поможет, возможно, потому, что у меня есть несколько скрытых карт. На этом поршне,
'resize', кажется, имеет значение, но не последовательно. Если вы играете с
плунжер и ... все, кажется, работает, попробуйте панорамирование вокруг ng-показано
карта, и вы получите серый цвет.
ng-if вместо ng-show (также работало для других) не является вариантом, и не является
имея мои карты всегда показаны (хотя, если решения не найдены, я, возможно, придется думать
снаружи дива.)
Примечание: Если вы получаете серую карту, увеличение или уменьшение масштаба браузера кажется к jump-start визуализация и затем карты работают отлично , даже если скрыто и повторно показано я не знаю, что насчет масштабирование браузера запускает желаемое поведение, но, возможно, это ключ к вам.
1 ответ:
Это поведение, скорее всего, связано с директивой
ng-hide, которая, в свою очередь, добавляет стильdisplay: noneк родительскому элементу. Уже сообщалось (Ссылка ), что управление Google Maps имеет некоторые проблемы с визуализацией, как только карта находится внутри элемента, имеющего стильdisplay: none.Я бы предложил заменить директиву
ng-hide:<div ng-hide="div1Hide" class="mapCase"> <ng-map id="map1" class="map" center="[-33.851371, 151.277736]" zoom-level="18">Parsley</ng-map> </div>С, например,
ng-classдирективой:<div class="mapCase" ng-style="{'visibility': !div1Hide ? 'visible':'hidden'}"> <ng-map id="map1" class="map" center="[-33.851371, 151.277736]" zoom-level="18">Parsley</ng-map> </div>Модифицированный плунжер