【发布时间】:2016-09-15 13:44:57
【问题描述】:
我正在处理一些必须使用 Angular 的项目。这是我第一次接触这个框架,所以我可能会犯一些错误。
我创建了由 Google Maps API 回调调用的函数 initMap()(当我调用 Google API 的文件时,<script src="..">.. 中的参数 &callback=initMap)。
我的函数 initMap() 等待 bag 变量值 - 它是包含我想用作标记的城市的全局变量。我知道这是非常糟糕的做法,但我花了很多时间从 Angular 范围获取数据——但我是菜鸟,我做不到。让我们继续 - 当我收到数据时,我正在通过
var map = new google.maps.Map(document.getElementById('map'), mapOptions)
之后我在等待idle 事件,然后在我的地图上放置标记。
google.maps.event.addListenerOnce(map, 'idle', function() {
// Put markers
});
这是一个魔法 - 有时地图没有加载。我收到灰色框、左下角的 Google 徽标,仅此而已。当我将 console.log(..) 放入此侦听器时,我会在控制台中收到我的日志消息。
当我进行硬刷新(例如Ctrl + F5)时,一切正常(总是)。
我的第一个想法是从 script 标记中删除 defer(因为在 FireBug Network 中我可以看到很长的加载分析脚本)-但这对我没有帮助。
真的请 - 不要使用诸如“noob,不要使用全局变量”之类的 cmets 发送垃圾邮件。如果它不能帮助我 - 请不要搞砸。
问候
【问题讨论】:
-
如果你能用我的回答解决你的问题,请告诉我。
标签: javascript angularjs google-maps google-maps-api-3