我知道这个问题被多次询问,但所有其他线程都无法解决我的问题。 我的问题是:我有基于角度的应用程序,有些页面使用谷歌地图在地图上显示项目。一切都工作正常,我没有改变任何单行代码,并注意到谷歌地图现在不起作用。
我在索引文件中导入了google脚本,甚至没有在主页中使用它:
<script src="http://maps.google.com/maps/api/js?sensor=true&libraries=places&language=ru-RU"></script>
请打开此网址http://yuppi.com.ua并转到控制台,等待3秒钟,然后会显示这些错误。
ReferenceError: google is not defined stat.js
ReferenceError: google is not defined util.js
ReferenceError: google is not defined common.js
答案 0 :(得分:1)
显然,由于script.js file中的以下代码而导致出现这些错误:
yuppiApp.run(function($rootScope, $window) {
$rootScope.$on("$locationChangeStart", function() {
Object.keys($window).filter(function(k) {
return k.indexOf("google") >= 0
}).forEach(function(key) {
delete $window[key]
})
})
});
delete $window[key]
从google
对象中删除 window
属性,而打破加载Google地图库({{ 1}}是Google Maps API的根名称空间。
我不确定为什么在您的情况下会删除google
属性,但是一旦指定的行被注释:
google
错误将消失。
答案 1 :(得分:0)
在实际加载API之前,您似乎正在使用谷歌地图。 API是异步加载的,因此您必须确保在加载时引用它。 要实现这一点,我知道两种方式:
您可以使用带有全局范围函数的“回调”查询参数,在该函数中将初始化元素:
<script src="http://maps.google.com/maps/api/js?sensor=true&libraries=places&language=ru-RU&callback=initMap"></script>
自行导入Google Loader而不是API,并使用它来管理JS代码中的API加载:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
然后
google.load('maps', '3.exp', {
other_params: 'sensor=true&language=ru-RU&libraries=places',
callback: function () {
// You can now init your maps
}
});