Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 全局变量';地图';是未定义的_Javascript_Google Maps - Fatal编程技术网

Javascript 全局变量';地图';是未定义的

Javascript 全局变量';地图';是未定义的,javascript,google-maps,Javascript,Google Maps,我有一个全局变量map,在开始的脚本标记之后声明-我还有一个全局变量test_var,就在下面声明。在initialize函数中,我使用GoogleMapsAPI创建一个新的GoogleMap并将其分配给全局变量map。在函数之外,我初始化map并尝试console.log(map)和console.log(test_var)。前者返回undefined,后者返回42,但它们都是全局变量,所以我不明白为什么在初始化函数中为映射赋值后,调用该初始化函数现在有一个未定义的值 还有一件事:在控制台中,

我有一个全局变量map,在开始的脚本标记之后声明-我还有一个全局变量test_var,就在下面声明。在initialize函数中,我使用GoogleMapsAPI创建一个新的GoogleMap并将其分配给全局变量map。在函数之外,我初始化map并尝试console.log(map)和console.log(test_var)。前者返回undefined,后者返回42,但它们都是全局变量,所以我不明白为什么在初始化函数中为映射赋值后,调用该初始化函数现在有一个未定义的值

还有一件事:在控制台中,如果我尝试访问map,或者像map.getBounds()这样的map方法,它可以正常工作。问题是,为什么我不能以编程方式而不仅仅是在控制台窗口中执行此操作。谢谢

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Heatmaps</title>
    <style>
    //.......some styling.....//
    </style>
    <body>
       /....some html..../
    </body>

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=visualization"></script>
<script>
var map;
test_var = 42; 

var home = new google.maps.LatLng(50, -15) //map is centered somewhere in the atlantic ocean, change later

function initialize() {
  var mapOptions = {
    zoom: 3,
    center: home,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
      disableDefaultUI: true,
      panControl: false,
      zoomControl: true,
      mapTypeControl: false,
      scaleControl: false,
      streetViewControl: false,
      overviewMapControl: false
  };

  var styles = [
  {
    stylers: [
      { "gamma": 0.83 },
      { hue: "#00ffe6" },
      { saturation: -20 }
    ]
  },{
    featureType: "road",
    elementType: "geometry",
    stylers: [
      { lightness: 100 },
      { visibility: "simplified" }
    ]
  },{
    featureType: "road",
    elementType: "labels",
    stylers: [
      { visibility: "off" }
    ]
  }
];

  map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

}

google.maps.event.addDomListener(window, 'load', initialize);
console.log(test_var); //this works!
console.log(map); //get undefined error, why?????

 </script>
  </head>

</html>

热图
//……一些款式//
/…一些html/
var映射;
试验变量=42;
var home=new google.maps.LatLng(50,-15)//地图在大西洋的某个地方居中,稍后更改
函数初始化(){
变量映射选项={
缩放:3,
中心:家,
mapTypeId:google.maps.mapTypeId.ROADMAP,
disableDefaultUI:true,
泛控制:错误,
动物控制:对,
mapTypeControl:false,
scaleControl:false,
街景控制:错误,
概览地图控件:false
};
变量样式=[
{
样式:[
{“gamma”:0.83},
{hue:#00ffe6},
{饱和度:-20}
]
},{
特色类型:“道路”,
elementType:“几何体”,
样式:[
{亮度:100},
{可见性:“简化”}
]
},{
功能类型:“道路”,
elementType:“标签”,
样式:[
{可见性:“关闭”}
]
}
];
map=new google.maps.map(document.getElementById('map-canvas'),
地图选项);
}
google.maps.event.addDomListener(窗口“加载”,初始化);
console.log(test_var)//这管用!
控制台日志(map)//获取未定义的错误,为什么?????

这是因为调用
控制台.log(map)
时尚未调用事件处理程序(函数
初始化
)。尝试向按钮添加
console.log(map)

<input type=button onclick="console.log(map)" value="Test map" />


但是它是如何不被调用的我想
google.maps.event.adddomstener(窗口'load',initialize)
调用了它。另外,我知道button方法可以工作,但实际上我想访问javascript中的map方法(如map.getBounds()),而不是控制台中的,或者html
addDomListener
不调用该方法。它将事件处理程序附加到您指定的事件(
window.onload
),并且只有在该事件中才会调用您的方法。尝试在方法内部添加
console.log
,您将看到它在当前
console.log
调用后执行。