Javascript 如何使用require js shim使用函数加载GoogleMaps依赖项?

Javascript 如何使用require js shim使用函数加载GoogleMaps依赖项?,javascript,html,requirejs,Javascript,Html,Requirejs,我必须加载一个JS文件 requirejs([ MyCode/mapview ], function () { }); 现在这取决于谷歌地图 我也是 require( ["http://maps.google.com/maps/api/js?v=3.2&sensor=false"], function() { var gm = document.createElement('script'); gm

我必须加载一个JS文件

requirejs([
MyCode/mapview
    ],
    function   () {

});
现在这取决于谷歌地图 我也是

require( ["http://maps.google.com/maps/api/js?v=3.2&sensor=false"],
function() {
                var gm = document.createElement('script'); 
                gm.type = 'text/javascript'; gm.async = true;
                gm.src = document.location.protocol + "//maps.google.com/maps/api/js?v=3.2&sensor=false";
                var s = document.getElementsByTagName('script')[0]; 
                s.parentNode.insertBefore(gm, s);
            }
 );
就在这之前,在我的reuqire js include文件中。我使用了shim命令来加载其他本地JS依赖项,但我不知道如何将此依赖项(google地图、http访问的文件)分配给MyCode/mapview

我应该如何在shim中执行此操作?并在加载mapview.js之前运行该函数

requirejs.config({
    shim: 
    {
        'MyCode/mapview': ['????'],         
    }
});
当我得到这个错误时,我知道依赖关系,这是一个谷歌地图类型
未捕获的TypeError:无法读取未定义的属性“HYBRID”

这里有一个模块模式可能会有所帮助

模块 要点如下:

用法 要使用上述模块并利用promise与google.maps解析的事实,请执行以下操作:

    define([ 'app/lib/google-maps-loader' ], function(GoogleMapsLoader){
        GoogleMapsLoader.done(function(GoogleMaps){
            // your google maps code here!
            var geocoder = new GoogleMaps.Geocoder();
        }).fail(function(){ 
            console.error("ERROR: Google maps library failed to load");
        });
    });
或者,正常情况下只需引用
google.maps
对象即可

    define([ 'app/lib/google-maps-loader' ], function(GoogleMapsLoader){
        GoogleMapsLoader.done(function(){
            // your google maps code here!
            var geocoder = new google.maps.Geocoder();
        }).fail(function(){ 
            console.error("ERROR: Google maps library failed to load");
        });
    });
我写了一篇博客文章,解释了这个问题,以及为什么我更喜欢上面的方法而不是异步插件,它可能有一些用处:

    define([ 'app/lib/google-maps-loader' ], function(GoogleMapsLoader){
        GoogleMapsLoader.done(function(){
            // your google maps code here!
            var geocoder = new google.maps.Geocoder();
        }).fail(function(){ 
            console.error("ERROR: Google maps library failed to load");
        });
    });