谷歌地图变量的范围和调用方法

Scope of Google Map variable and calling method

本文关键字:调用 方法 范围 变量 谷歌地图      更新时间:2023-09-26

我正在使用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 似乎未定义。

我确定我

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

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

您正在尝试在初始化映射之前使用 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);