【问题标题】:Is there an event that is sure to fire when google maps is loaded, when using angular js?当加载谷歌地图时,使用角度js时,是否有一个事件肯定会触发?
【发布时间】: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


【解决方案1】:

我决定避免这个问题。

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

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

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

【讨论】:

    猜你喜欢
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    相关资源
    最近更新 更多