我可以将谷歌地图功能放入关闭吗?

时间:2010-02-10 00:05:29

标签: javascript google-maps

我正在尝试编写一些谷歌地图功能,并玩javascript闭包,目的是尝试更好地组织和构建我的代码。

我有以下代码:

var gmapFn ={
    init : function(){
        if (GBrowserIsCompatible()) {
            this.mapObj = new GMap2($("#map_canvas"));
            this.mapObj.setCenter(new google.maps.LatLng(51.512880,-0.134334),16);
        }
    }
}

然后我稍后在jquery doc ready中调用它:

$(document).ready(function() {
    gmapFn.init();
})

我已经设置了Google地图密钥,但我在main.js上收到错误:

未捕获异常:[例外...“组件返回失败代码:0x80004005(NS_ERROR_FAILURE)”nsresult:“0x80004005(NS_ERROR_FAILURE)”位置:“JS frame :: http://maps.gstatic.com/intl/en_ALL/mapfiles/193c/maps2.api/main.js :: ig :: line 170”数据:没有] QO()

错误似乎是在GBrowserIsCompatible()测试中抛出的,我认为使用这个闭包对我来说,有没有办法将它保存在闭包中并使init()工作?

1 个答案:

答案 0 :(得分:15)

您的代码或实现没有任何问题,除了GMap2不能使用jQuery对象作为参考。使用普通的旧document.getElementById("map_canvas")

或者,您可以使用$("#map_canvas")[0]$("#map_canvas").get(0)来引用实际的DOM元素,并将其传递给GM​​ap2构造函数,如果您想与jQuery的使用保持一致。

顺便提一下,您似乎将v2与v3混合,例如new google.maps.LatLng() vs new GLatLng()