How to render maps within ng-hide divs using ngMap without getting a gray rectangle

我怕爱的太早我们不能终老 提交于 2019-12-11 01:11:32

问题


The problem: Google Maps elements that are within divs that are initially rendered as ng-hidden come up as gray rectangles when they are ng-shown.

I've put together this Plunker to demonstrate: https://plnkr.co/edit/emzlIT?p=preview

Others have had success using google.maps.event.trigger(map,'resize'), but for me it is no help, perhaps because I have multiple maps hidden. On this plunker, 'resize' seems to make a difference, but not consistently. If you play with the Plunker and everything seems to be working, try panning around an ng-shown map and you'll get the gray.

The example shown is, of course, a very simplified version of the actual web-app I'm working on. Suffice it to say that using ng-if instead of ng-show (also worked for others) isn't an option, nor is having my maps always shown (though if no solutions are found, I may have to think outside the div.)

Note: if you get a grayed out map, zooming the browser in or out seems to jump-start the render & then the maps work perfectly, even if hidden and re-shown I don't know what about the browser zoom triggers the desired behavior, but perhaps that's a clue to you.


回答1:


This behavior is most likely related with ng-hide directive which in turn adds display: none style on the parent element. It was already reported (link) that Google Maps control has some issues with rendering once the map is located inside the element that has display: none style.

I would suggest to replace ng-hide directive:

<div ng-hide="div1Hide" class="mapCase">
    <ng-map id="map1" class="map" center="[-33.851371, 151.277736]" zoom-level="18">Parsley</ng-map>
</div>

with, for example, ng-class directive:

<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>

Modified plunker



来源:https://stackoverflow.com/questions/34886358/how-to-render-maps-within-ng-hide-divs-using-ngmap-without-getting-a-gray-rectan

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!