繁体   English   中英

全局变量“ map”未定义

[英]global variable 'map' is undefined

我有一个全局变量map,在打开脚本标签之后声明-我还有一个全局变量test_var,在下面声明。 在初始化函数中,我使用google maps api创建一个新的google map并将其分配给全局变量map。 在函数之外,我初始化映射并尝试使用console.log(map)和console.log(test_var)。 前者返回未定义,而后者返回42,但是它们都是全局变量,因此我不明白为什么在初始化函数中为其分配了值然后调用该初始化函数的映射现在具有未定义的值。

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

<!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>

这是因为调用console.log(map)时尚未调用事件处理程序(函数initialize console.log(map) 尝试将console.log(map)添加到按钮

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM