0

我正在使用 Google Maps API 来熟悉 JavaScript。我是一个糟糕的程序员,所以请原谅我。

我不太确定为什么以下代码不起作用,您可以在此处查看 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));

一切正常,但我不确定为什么 panTo 方法不起作用,据我所知,在所有函数之外声明 var map 使其成为全局,然后我在 initialize() 函数中设置 map 但在这个 initialize() 函数 panTo 方法不起作用,map 似乎未定义。

我确定我犯了一个新手错误,但我找不到答案(我确定我在谷歌搜索错误的东西)。

谢谢,如果有人能拯救我的理智。

4

1 回答 1

0

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

这会导致初始化函数在页面触发其“加载”事件时运行(已呈现完整的 DOM/页面):

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

这会立即执行,在“加载”事件触发并且地图变量被初始化之前:

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);
于 2013-11-03T13:05:15.430 回答