<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8" />
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false®ion=vi&language=vi">
</script>
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
var map;
</script>
<style type="text/css">
html {
height: 100%;
}
body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width: 100%; height: 100%"></div>
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(10.79, 826.694),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
}
</script>
<script>
alert(map);
</script>
</body>
</html>
我的一些函数需要使用map
变量,但是,我一直收到抱怨map
变量未识别的警报。
如何让浏览器记住地图是在map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
上定义的
谢谢
答案 0 :(得分:3)
那是因为你在onLoad上调用了函数initialize()
,这意味着在onLoad上分配了map-variable。
但脚本
<script>
alert(map);
</script>
在触发onLoad
之前调用
尝试:
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(10.79, 826.694),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
alert(map);
}
</script>
答案 1 :(得分:2)
由于
<script>
alert(map);
</script>
在
之前被解雇onload="initialize()"
被调用。
答案 2 :(得分:1)
map
运行时, undefined
将为alert()
。这是因为alert()
将在initialize()
方法之前执行。
<script>
标记将立即运行,但您指定的onload
函数将在所有正文标记内容(及其中的脚本)被解析并执行之后才会运行。
因此,一旦initialize()
被调用,此设置将按您的需要运行,全局变量map
将随处可用。