我在加载google maps api时遇到了问题。
我使用初始化地图的函数获得了自己的对象,并且通过jquery.getscript加载了google maps api。但我总是在回调函数中收到错误消息:
var MyGMap = {
GMapScriptURL: "http://maps.google.com/maps?file=api&v=2&async=2&key=",
Map: null,
Geocoder: null,
InitiazlizeMaps: function () {
if (GBrowserIsCompatible()) {
this.Map = new GMap2(document.getElementById("map_canvas"));
this.Map.setCenter(new GLatLng(37.4419, -122.1419), 13);
this.Geocoder = new GClientGeocoder();
}
}
}
$(function(){
var CurrentKey = "MY_KEY";
$.getScript(MyGMap.GMapScriptURL + CurrentKey, function () {
MyGMap.InitiazlizeMaps();
// throws GMap2 is undefined
});
});
怎么了?为什么这不运行?
答案 0 :(得分:6)
脚本URL行中有async=2
,这意味着异步加载映射核心 - 在调用InitializeMaps之前,需要等待它完成。您可以尝试从网址中删除async=2
,也可以使用Google Map的异步和回调代替getScript回调函数,例如
$.getScript(MyGMap.GMapScriptURL + CurrentKey + "&callback=MyGMap.InitializeMaps");
答案 1 :(得分:1)
您也可以使用异步模式,但需要提供回调函数。
在这里http://lucamanzo-soluzione-software.it/wp/?p=5,您可以找到一个简单的jquery插件,显示使用异步加载和jquery的所有步骤,以及使用几行代码构建地图:
$.gmapstools.init();
$("#my_map_canvas").gmap({lat:37.4221913, lng:-122.08458530000001, draw_marker:true, zoom_level:13});