通过jQuery访问Google maps变量

时间:2010-06-26 16:51:17

标签: javascript jquery google-maps

如何加载Google地图,如下所示:

function loadScript() {
    var script = document.createElement("script");
    script.setAttribute("src", "http://maps.google.com/maps?file=api&v=2.x&key=ABQIAAAAAXN1Nhid00zgr5mrYEM7MhQE7kuAsiuX3WD62vgNgdNYG4wQzhQs7fQD8XzGkuXLIejRfouX3li8xg&async=2&callback=loadMap");
    script.setAttribute("type", "text/javascript");
    document.documentElement.firstChild.appendChild(script);
}
function loadMap(){
    var map = new GMap2(document.getElementById("google_map"));
}

$(document).ready(function(){
  loadMap();
  //How I can access the map variable here ?
});

可以通过jQuery访问map变量吗?

我收到一个未定义的错误,因为在我尝试访问map变量的时候它还没有定义。

2 个答案:

答案 0 :(得分:2)

更改map变量的范围,比如在loadMap()函数外声明它 将loadMap()函数修改为,

     var map;
     function loadMap(){
            loadScript() ;
            map = new GMap2(document.getElementById("google_map"));
        }

答案 1 :(得分:2)

你不能这样。 map在本地声明为loadMap,您无法在该函数之外访问它。此外,您必须先执行loadScript。顺便说一句,请勿使用setAttribute设置srctype

使用在外部作用域中声明的变量(最好不是全局作用域),比如

<script>
    function loadScript() {
        var script = document.createElement("script");
        script.src = "http://maps.google.com/maps?file=api&v=2.x&key=ABQIAAAAAXN1Nhid00zgr5mrYEM7MhQ
        script.type = "text/javascript";
        document.documentElement.firstChild.appendChild(script);
    }

    loadScript();
</script>
<!-- close script element here to update DOM -->
<script>
    var map;  // declared outside loadMap

    function loadMap(){
        map = new GMap2(document.getElementById("google_map"));
    }

    $(document).ready(function(){
      loadMap();
      // Now map is available here
    });
</script>