【发布时间】:2016-08-20 11:25:55
【问题描述】:
我正在使用 angularjs 和 ngmap (https://ngmap.github.io)。 该地图最初是从视图中隐藏的(使用 ng-show),我希望能够在视图之间切换而不必重新加载整个地图。 我还想在地图上显示一个公里数。
地图仅在页面的那部分显示时才被初始化(使用延迟初始化)。
它似乎工作正常,除了有时地图无法放大到 kml(使用 fitBounds)。我想我已经确定这是因为包含 div 的高度为零(由于控制器代码在视图实际呈现之前触发),而 fitBounds 需要它。
我正在尝试等待,直到我确定地图已准备就绪。我尝试了以下事件:
- bounds_changed
- 瓷砖加载
但也不做我想做的事。
目前我正在使用 $timeout,但我不喜欢它,因为我不知道初始化地图需要多长时间,以及我的代码是否会在这段时间内触发。
我的下一个想法是反复检查地图的高度,但我更喜欢更明确的。
另一个想法是始终将地图放在背景中,并在该部分可见时使用绝对定位用其他信息覆盖它,但这破坏了我当前的设计。
【问题讨论】:
-
我假设你试过这个ngmap.github.io/#/!map-initialized-callback.html?还要确保为包含的 div 设置了高度和宽度(在 css 甚至
style属性中) -
没有。看起来这就是我想要的。我可以愚蠢地关闭这个问题,或者如果你愿意,可以接受你的评论作为答案。
-
不……说得太早了。问题并不总是我必须初始化地图。我想保持地图初始化,但能够显示、隐藏它。我正在使用 ng-show (在包含元素上),这就是使高度为零的原因。我认为在这种情况下适合界限突破。
-
在这种情况下,我建议您在地图容器上设置高度/宽度,但在父 div 上执行
ng-show(这不应该影响地图容器的高度)。如果这不起作用 - 可能会在容器可见后尝试重新渲染地图。无论如何,一个有效的 js-fiddle 将有助于调试。 -
干杯@tborychowski。我已经放弃了。地图已经包含在一个 div 中。我做了一个小提琴来向自己证明,无论jsfiddle.net/dru_zod/9hau7zcg/1 是什么,隐藏元素的高度都是零。我有一个解决方案,基本上就是不尝试。会尽快回复
标签: angularjs google-maps ng-map