initMap不是使用谷歌地图API的功能

时间:2017-09-20 10:30:21

标签: javascript google-maps-api-3

<html>
<script src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY&callback=initMap">
 </script>
<body onload="showMap()">
    <div id="map"></div>
    <script type="text/javascript">
    function showMap() {
        console.log('at maps');
                var map = new google.maps.Map(document.getElementById('map'), {
                    zoom: 10,
                    center: { lat: -34.397, lng: 150.644 }
                });
    }
    </script>
</body>
</html>

我是脚本新手。这是我显示地图的代码。但它抛出了一个未被捕获的错误“initMap不是一个函数”。谁能帮忙?

6 个答案:

答案 0 :(得分:2)

showMap重命名为initMap。由于您在Maps API中加载时传递的initMap网址参数,Google希望调用名为callback=initMap的函数。但是你没有具有该名称的函数,你只有一个名为showMap的函数。

此外,通过指定该回调参数,您无需自己显式调用initMap或showMap。因此,请从onload="initMap()"代码中删除<body>

此外,当您在Maps API中加载时,您在网址中输入了拼写错误,而不是:

jskey=YOUR_API_KEY

它应该是:

js?key=YOUR_API_KEY

最后,你错过了我添加的任何<head>部分,并且我已将该函数移到<head>中,因此它应该在回调函数获取的时间内定义调用。

所以这应该有效:

<html>
<head>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
 </script>

 <script type="text/javascript">
    function initMap() {
        console.log('at maps');
                var map = new google.maps.Map(document.getElementById('map'), {
                    zoom: 10,
                    center: { lat: -34.397, lng: 150.644 }
                });
    }
    </script>
</head>
<body>
    <div id="map"></div>
</body>
</html>

答案 1 :(得分:1)

迟到的答案,但您可能需要检查此answer。主要问题是,在定义script之后没有放置map。代码只是在页面上创建Web元素之前先寻找它。

答案 2 :(得分:0)

向我们谷歌地图你必须首先包括对谷歌地图javascript文件的引用。

将此脚本包含在您的身体下方。

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

请同时阅读谷歌地图的文档。您也可能需要api密钥。

答案 3 :(得分:0)

将此脚本标记放在您的头部。

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>

请务必使用您可以从此处获得的密钥替换YOUR_API_KEY标签..

https://developers.google.com/maps/documentation/javascript/

答案 4 :(得分:0)

您好我也在玩谷歌地图,我看到当您在导航器的不同标签中打开相同的文件时会出现此错误...

我正在谈论&#34;未知:Vb&#34;

当您重新启动计算机时,此错误会消除,因此如果不重启,您可以按 F12 &#39;然后转到网络&#39;选项卡(F5),右键单击任何内容然后清除浏览器chache &#39; &安培; &#39; 清除浏览器Cookie &#39; ..

如果错误未捕获:Vb仍按F5两次或三次

此问题的其他参考:

GoogleMaps does not load on page load

无论如何,您的错误都会被抛出,因为您没有指定YOUR_API_KEY并且网址中的参数格式不正确(js?key =)

检查一下:

https://developers.google.com/maps/documentation/embed/get-api-key

答案 5 :(得分:0)

移动google.map API调用

<script src="https://maps.googleapis.com/maps/api/js?key=API_CODE&callback=initMap" async defer></script>
在定义function initMap()之后的

为我解决了此问题。我猜Javasrcipt是​​按顺序运行的,因此在google.map回调中定义时,它不能使用initMap()函数。