Google Maps API:TypeError:a 未定义
Posted
技术标签:
【中文标题】Google Maps API:TypeError:a 未定义【英文标题】:Google Maps API: TypeError: a is undefined 【发布时间】:2015-12-17 22:06:52 【问题描述】:我已经在整个网络上搜索了这个问题,但似乎都没有给我任何解决方案。我有一个简单的脚本来显示南非的地图。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge, chrome=1" />
<title>Map Test</title>
<script language="javascript" src="https://maps.googleapis.com/maps/api/js?sensor=true"></script>
<style>
#map-canvas
height: 300px;
width: 980px;
margin: 0;
padding: 0;
margin-top: 10px;
</style>
</head>
<body>
<div id="map-canvas" class="map_canvas"></div>
<script type="text/javascript">
function initialize()
var mapOptions =
center: new google.maps.LatLng(-29.09958,26.18434),
zoom: 5,
mapTypeControlOptions:
position: google.maps.ControlPosition.TOP_LEFT
;
map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</body>
</html>
但我一遍又一遍地遇到同样的错误。我什至在不同的服务器上尝试过。
请帮忙
【问题讨论】:
我无法使用 Chrome 44 ~ 45 复制此问题。我什至尝试了 Firefox 并且没有错误。 @KimHonridez,这个问题似乎不会影响 Chrome。该错误在 Firefox 41.0.1 中是间歇性的。 【参考方案1】:如果有一个名为Map
的全局变量,3.30+ 版本会受到此问题的影响。
例如:
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOURKEYHERE&v=3&callback=init" async defer></script>
<script type="text/javascript">
function init()
Map.go();
var Map =
go: function()
console.log("start engine");
;
</script>
我们收到了这个错误:
TypeError: a.prototype is undefined
重命名window.Map
然后一切正常。
【讨论】:
【参考方案2】:Google 地图在加载脚本和触摸事件时开始出现错误。我将它用于 android 和 ios 上的 cordova 应用程序。
这些是我得到的错误,但更改加载版本并没有解决它。
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=MYKEY&v=3.21&libraries=geometry,places"></script>
【讨论】:
我刚刚意识到当设备联机时我正在异步加载 GMaps,并且我的 URL 不正确。给你,我的星期六过去了,我很愚蠢。 很好地解决了这个问题,感谢您发布您的发现。总是乐于助人【参考方案3】:最近几天我也经常看到这个错误,似乎是实验性 API 版本有问题。
改为加载发布版本(基本上您应该始终在生产中加载发布版本)
<script language="javascript" src="https://maps.googleapis.com/maps/api/js?sensor=true&v=3"></script>
【讨论】:
我很惊讶谷歌默认提供实验(即不稳定)版本。但是,经常出现这种情况:“如果您没有明确指定版本,您将默认收到实验版本。指定客户端 ID 的 Google Maps API for Work 客户将默认收到发布版本。” (来自developers.google.com/maps/documentation/javascript/versions) 答案将加载 v3 API 的最新“发布”版本。对于某些应用程序,请求特定版本(例如 3.21)可能更合适。有关更多指导,请参阅 Google 的“最佳做法”:developers.google.com/maps/documentation/javascript/… @Dr.Molle,“不再需要传感器参数。”:developers.google.com/maps/documentation/javascript/… 非常感谢。这个问题导致 Firebug 非常缓慢并且经常冻结 - 使调试成为一场噩梦。使用“v=3”解决了这个问题。 男人!我对此很着迷......我已经使用相同的代码一年多了,突然新的 API 密钥不起作用。以上是关于Google Maps API:TypeError:a 未定义的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:google.maps.latLng 不是构造函数[关闭]
angular-google-maps TypeError: $scope.map.control.refresh 不是函数
为啥使用默认的 React Google Maps 得到“TypeError:无法将类调用为函数”?
Google Maps 脚本破坏了 Safari TypeError:表达式“document.body”[null] 的结果不是对象
Google Maps Place API 和 Google Maps Time Zone API 之间的区别
Google Maps API DirectionsService.route 与 Google Maps Directions 不同