2013-11-03 29 views
0

我正在玩Google Maps API以熟悉JavaScript。我是一个可怕的程序员,所以请原谅我。Google地图变量的范围和调用方法

我不明白为什么下面的代码不工作,你可以在这里检查的jsfiddle:http://jsfiddle.net/m9QLx/

var map; 

function initialize() { 

var myOptions = { 
     center : new google.maps.LatLng(34.053228, -118.259583), 
     zoom : 11, 
     zoomControl: true, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }, 

map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

}; 

google.maps.event.addDomListener(window, 'load', initialize); 

map.panTo(new google.maps.LatLng(37.4569, -122.1569)); 

一切工作正常,但我不知道为什么哑剧方法不工作,据我所知,在所有函数之外声明var map使其成为全局函数,然后在initialize()函数中设置映射,但在此initialize()函数之外,panTo方法不起作用,map显示为未定义。

我敢肯定,我正在犯一个菜鸟的错误,但我找不到答案(我确定我在用谷歌搜索错误的东西)。

谢谢,如果任何人都可以拯救我的理智。

回答

1

您正尝试在映射初始化之前使用map.panTo方法。

这将导致初始化函数当页面触发了“load”事件(完整DOM /页已经被渲染)来运行:

google.maps.event.addDomListener(window, 'load', initialize); 

这立即执行时,“load”事件触发之前和地图变量初始化:

map.panTo(new google.maps.LatLng(37.4569, -122.1569)); 

所以它什么都不做。在地图初始化后,您应该将它移动到初始化函数中。

var map; 

function initialize() { 

var myOptions = { 
     center : new google.maps.LatLng(34.053228, -118.259583), 
     zoom : 11, 
     zoomControl: true, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
map.panTo(new google.maps.LatLng(37.4569, -122.1569));  
}; 

google.maps.event.addDomListener(window, 'load', initialize); 
+0

非常好,非常感谢。如果我可能如此大胆,使用以下更新的JSFiddle:http://jsfiddle.net/m9QLx/3/ - 我应该做一些与点击按钮时调用的函数不同的东西吗?我不确定panTo方法应该在哪里工作? – Jim

+0

由于myOptions声明后的逗号。应该是分号。 http://jsfiddle.net/m9QLx/5/ – geocodezip

+0

男人我很愚蠢。非常感谢您的帮助geocodezip – Jim