1
<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8" />
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&region=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); 谢谢

4

3 回答 3

3

那是因为您调用函数initialize()onLoad,这意味着映射变量被分配 onLoad。但是剧本

<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>
于 2013-02-19T18:22:55.300 回答
2

因为

<script>            
    alert(map);
</script>

之前被解雇

onload="initialize()"

叫做。

于 2013-02-19T18:22:53.920 回答
1

mapundefinedalert()运行时。这是因为alert()将在您的initialize()方法之前执行。

<script>正文中的标签将立即运行,但onload您指定的函数在所有正文标签内容(及其中的脚本)都被解析和执行后才会运行。

所以一旦initialize()被调用,这个设置就会像你想要的那样工作,并且全局变量map将在任何地方都可用。

于 2013-02-19T18:24:47.990 回答