jQuery getScript和Google Maps API错误消息

问题描述:

我在加载google maps api时遇到了问题。jQuery getScript和Google Maps API错误消息

我得到了一个函数初始化地图的自己的对象,谷歌地图API通过jquery.getscript加载。但我总是会在回调函数中收到一条错误消息:

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

什么是个错误信息,你得到? – meo 2010-06-03 12:38:21

您在脚本URL行中有async=2,这意味着异步加载映射核心 - 您需要等待它完成之后才能调用InitializeMaps。您可以尝试从网址中删除async=2,或使用Google地图的异步和回调代替getScript回调函数(例如,

$.getScript(MyGMap.GMapScriptURL + CurrentKey + "&callback=MyGMap.InitializeMaps"); 
+1

为了补充一点,[Dion Almaer在他的博客中提到使用'callback'](http://almaer.com/blog/dynamically-loading-google-maps-for-performance) (我正在输入我的答案当这个答案出现在第一次,所以我报废了我的。) – sirhc 2010-06-03 12:49:55

+0

奇怪...现在我得到一个错误:_mF没有定义 这是从哪里来的? – k0ni 2010-06-03 12:54:13

+0

噢,对不起,我推断'Initiazlize' - 我没发现你有一个z在中间。也许就是这样? : -/ – Rup 2010-06-03 12:55:39

你也可以使用async模式,但是你需要提供一个回调函数。

这里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});