我正在尝试编写一些谷歌地图功能,并玩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()工作?
答案 0 :(得分:15)
您的代码或实现没有任何问题,除了GMap2不能使用jQuery对象作为参考。使用普通的旧document.getElementById("map_canvas")
。
或者,您可以使用$("#map_canvas")[0]
或$("#map_canvas").get(0)
来引用实际的DOM元素,并将其传递给GMap2构造函数,如果您想与jQuery的使用保持一致。
顺便提一下,您似乎将v2与v3混合,例如new google.maps.LatLng()
vs new GLatLng()
。