Как визуализировать карты в 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>
Модифицированный плунжер