Angular 8 个未显示地图的手风琴

Angular 8 Accordion with map not showing

我有以下 Angular 使用 bootstap 手风琴的项目。 当用户点击面板时,折叠面板会显示 openstreet 地图,但由于某种原因地图没有显示

https://stackblitz.com/edit/angular-jdbzhe

如果我将行为更改为始终像这样显示面板:class="collapse show" 那么地图就会正确初始化

实施https://getbootstrap.com/docs/4.1/components/collapse/

我不熟悉您用于地图的库,但由于您没有在任何地方指定大小,我假设它会自动调整地图元素的大小以适合指定的容器。

由于您的容器的父级设置为显示:none "collapse" class,宽度和高度将被取消设置,这意味着地图很可能具有 0 宽度和0 高度。

我快速查看了 OL 文档,您似乎可以使用 this.map.updateSize(); 根据容器大小更新地图大小。如何以及何时调用它取决于您 - 在当前的实现中,我会说尝试听取您的应用程序地图组件上的样式更改。

一方面的建议 - 不要使用 "classic" bootstrap 尝试使用更多 angular 友好的框架之一,它将为您提供事件和方法,使您可以使用代码长 运行.

更容易

问题来自于它在应该呈现 canvas 的区域上有一个 display: none;

在展开手风琴后添加一个 map.updateSize()

看看这个working StackBlitz edit我看了。