我正在学习如何通过学习google的基本示例来创建谷歌地图。
我基本上复制并粘贴了head标签中的脚本,firebug控制台返回以下错误:
ReferenceError: google is not defined我有以下几个脚本加载在头部与谷歌地图脚本。不知道为什么会抛出这个错误。
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<!-- nmr is used to write my own scripts -->
<script>var nmr = jQuery.noConflict();</script>
<!-- Google Map scripts -->
<script>
function initialize() {
var mapOptions = {
zoom: 13,
center: new google.maps.LatLng(-34.397, 150.644),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
};
function loadScript() {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyB7CgOuhFLDkh2VAGW1S2Y" + "sensor=false" + "callback=initialize";
document.body.appendChild(script);
}
window.onload = loadScript;
</script>
我也试着在初始化函数之前添加这个,但它不起作用。
<script> var google = jQuery.noConflict(); </script>有人能帮上忙吗?谢谢!
发布于 2013-07-05 06:40:45
您的来源是错误的,我还建议指定您想要加载的确切版本:
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?v=3&sensor=false"></script>发布于 2014-07-12 14:32:11
让我们看看代码中发生了什么。
1)让我们忽略ajax.googleapis.com,因为它无论如何都不会在发布的代码中使用。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>2)抛出错误的google对象是由Google Maps3API本身定义的,与jQuery无关,而且v3接口不使用任何jQuery,因此需要删除下面这行代码,因为它与我们面前的问题没有任何关系。
<script> var google = jQuery.noConflict(); </script> 3)现在,当浏览器访问页面时,从javascript调用的第一件事是
window.onload = loadScript;4)那么上面这行到底是什么意思呢?在加载了所有外部文件(包括图像、样式、脚本和其他依赖资源)之后,以及在DOM加载、呈现并准备就绪很长一段时间后,windows.onload才会启动。
这就是我们要讨论的问题。在windows.onload调用loadScript函数之后,该函数将
script.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyB7CgOuhFLDkh2VAGW1S2Y" + "sensor=false" + "callback=initialize";(顺便说一句,您的查询字符串缺少查询变量之间的所有"& “ .../js?v=3&key=xyz&sensor=false&callback=initialize <-格式正确
5)期待已久的Google API。不是的。它只附加API的加载器,尽管url本身中具有单词api。打开并查看上面的文件,您将看到一个document.write和一个由API的各个部分组成的块,这些块将根据调用加载器时使用的查询字符串参数来有条件地加载。
6)那么这一切意味着什么呢?您正在调用initialize函数,以为您将获得Google API,但实际上您得到的是Google API Loader,其中包含API,而API又包含google对象的定义。因此,回调是在附加Maps API之前触发的,因此在初始化()回调函数被触发时,google是未定义的。
解决方案
看看这里的doktormolle解决方案,它使用了一种不同的方法加载初始函数--> http://jsfiddle.net/doktormolle/7cu2F/
这里提供了一个解决方案,它绕过了中间人--> http://jsfiddle.net/doktormolle/zJ5em/,直接将google地图加载器添加到您的页面
https://stackoverflow.com/questions/17478856
复制相似问题