开发者问题收集

谷歌地图:未捕获的 ReferenceError:谷歌未定义

2015-12-12
1138

我正在编写一个谷歌地图脚本,它抛出了这个错误。 问题出在这行:

var map = new google.maps.Map(document.getElementById('google-map'), {

对应的 Javascript 文件是: https://goo.gl/xS5912 对应的 HTML 代码段是:

<!-- Google Maps -->
    <div id="google-map"></div>

完整 HTML 是: https://goo.gl/xHD2wL

问题的屏幕截图在这里: http://prntscr.com/9dgplc

该网站已托管在这里: https://goo.gl/8x76Ux

我看到过一些针对此问题提出解决方案的问题,但我并没有真正理解其中的大部分:异步加载脚本或拥有开发人员 API 密钥。
我只是在寻找问题的解决方案,最好是对问题是什么的逻辑解释。

完整代码位于 此处

编辑 1: API 链接缺失。我已添加该链接,错误已消失,但地图仍未显示。 (请注意,我已使用 PHP 将代码分成几段。)

2个回答

我没看到您在任何地方将其链接到 Google Maps API?

您需要链接此脚本才能定义 google:

<script src="https://maps.googleapis.com/maps/api/js"></script>

Ashley
2015-12-12

我运行了您的脚本,似乎以下错误非常常见。

Uncaught TypeError: Cannot read property 'offsetWidth' of null

我发现了这个问题: Google MAP API Uncaught TypeError:无法读取 null 的属性“offsetWidth” ,答案表明该错误是由于在 js 脚本运行之前未呈现地图 div 造成的。

尝试:

<script>
/* Your location */
function initialize () {
    var locations = [
        ['IIIT Hyderabad, Gachibowli, Hyderabad <span>Head Office</span>', 17.444792, 78.348310, 1]
    ];

    /* Map initialize */
    var mapCanvas = document.getElementById('google-map');
    var mapOptions = {
        zoom: 10,
        center: new google.maps.LatLng(17.444792, 78.348310),
        panControl: false,
        zoomControl: true,
        scaleControl: false,
        mapTypeControl: false,
        mapTypeId: google.maps.MapTypeId.ROADMAP
        }
    var map = new google.maps.Map(mapCanvas, mapOptions);
    }

google.maps.event.addDomListener(window, 'load', initialize);
</script>

这仅在页面加载后调用脚本。我运行了它,它对我来说是有效的。

Ashley
2015-12-14