0

我正在使用 angularjs 和 ngmap ( https://ngmap.github.io )。该地图最初是从视图中隐藏的(使用 ng-show),我希望能够在视图之间切换而不必重新加载整个地图。我还想在地图上显示一个 kml。

仅在显示页面的该部分时才初始化地图(使用延迟初始化)。

它似乎工作正常,除了有时地图无法放大到 kml(使用 fitBounds)。我想我已经确定这是因为包含 div 的高度为零(由于控制器代码在视图实际呈现之前触发),而 fitBounds 需要它。

我试图等到我确定地图是好的并且准备好了。我尝试了以下事件:

  • bounds_changed
  • 已加载瓷砖

但也不做我想做的事。

目前我正在使用 $timeout,但我不喜欢它,因为我不知道初始化地图需要多长时间,以及我的代码是否会在这段时间内触发。

我的下一个想法是反复检查地图的高度,但我更喜欢更明确的东西。

另一个想法是始终将地图放在背景中,并在该部分可见时使用绝对定位用其他信息覆盖它,但这破坏了我当前的设计。

4

1 回答 1

0

我决定回避这个问题。

地图总是会在那里,但我使用一些 ng-class 使其“可见性:隐藏”并在未选择地图选项卡时隐藏不需要的滚动条。

只要可见性被隐藏(而不是显示:无),地图的初始化和定位就可以了。

它并不完美(我可能有一天需要滚动其他标签),但它现在对我有用。

于 2016-04-27T10:15:04.613 回答