window.Map不是Google Maps API v3中的构造函数

Use*_*ure 0 google-maps google-maps-api-3

我有一个带有新密钥的谷歌地图

但它在控制台中出现错误

错误:

Uncaught TypeError: window.Map is not a constructor
    at Zr (map.js:2)
    at ds.release (map.js:53)
    at gs (map.js:5)
    at _.rl.Ab (map.js:59)
    at map.js:46
Run Code Online (Sandbox Code Playgroud)

的HTML

<head>
<script async defer
        src="https://maps.googleapis.com/maps/api/js?key=mykey">
</script>
</head>

<body onload="init()">
    <div id="map_canvas"></div>
</body>
<script src="js/index.js"></script>
Run Code Online (Sandbox Code Playgroud)

index.js

Map = null;
function init() {
    var mapOptions = {***};
    Map = new google.maps.Map( document.getElementById( "map_canvas" ), mapOptions );
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间!

geo*_*zip 5

Map是EcmaScript中的保留字,因此您不应将其用作变量名:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

问题是这一行(jsfiddle认为Map是只读的):

Map =  null;
Run Code Online (Sandbox Code Playgroud)

将您的map变量重命名为其他名称(例如map,用小写的“ m”表示)。

概念证明

代码段:

Map =  null;
Run Code Online (Sandbox Code Playgroud)
map = null;

function init() {
  var mapOptions = {
    center: {
      lat: 0,
      lng: 0
    },
    zoom: 1
  };
  map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}
google.maps.event.addDomListener(window, "load", init);
Run Code Online (Sandbox Code Playgroud)
html,
body,
#map_canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
Run Code Online (Sandbox Code Playgroud)