(懒)加载谷歌地图在重构后无效

时间:2014-10-16 09:08:22

标签: javascript google-maps lazy-loading

我只在需要时加载Google地图。在我重构我的代码之前,它的工作原理如下:

function initialize_map_brand() {
  (...)
}

jQuery(document).ready(function ($) {
    load_google_map('initialize_map_brand');
});

重构后,我的代码如下所示:

lib = {
    loadGoogleMapScript: function(_callback) {
      (...)
      script.src = 'http://maps.google.com/maps/api/js?sensor=false&callback=' +_callback;
    }
}


Page = {
    viewPage: {
        init: function() {
            lib.loadGoogleMapScript(self.initialize_map);
        },
        initialize_map: function() {
            var locations = [ (...)
        }
    }
}

jQuery(document).ready(function ($) {
    Page.viewBPage.init();
});

现在我收到了这个错误:

  

" NetworkError:400错误请求 -   http://maps.google.com/maps/api/js?sensor=false&callback=function%20()%20 {VAR%20locations%20 = 20%[[%....

它似乎需要整个功能代码并将其传递到网址中。那么如何使用我的新代码正确加载Google Maps脚本?

Se my fiddle here.

1 个答案:

答案 0 :(得分:2)

根据documentation您需要为url callback参数提供一个字符串,其中包含全局范围内函数的名称。

您将函数作为参数传递,因此函数体将附加到url。

var Page = {
    viewPage: {
        init: function() {
            lib.loadGoogleMapScript('Page.viewPage.initialize_map');
        },
        initialize_map: function() {
        }
    }
};

window.Page = Page;