谷歌地图:ReferenceError - 未定义谷歌

时间:2015-12-22 20:36:57

标签: javascript angularjs google-maps

我知道这个问题被多次询问,但所有其他线程都无法解决我的问题。 我的问题是:我有基于角度的应用程序,有些页面使用谷歌地图在地图上显示项目。一切都工作正常,我没有改变任何单行代码,并注意到谷歌地图现在不起作用。

我在索引文件中导入了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

2 个答案:

答案 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
        }
    });