使用带有requirejs的异步插件来加载谷歌地图

时间:2014-07-24 19:05:28

标签: google-maps google-maps-api-3 asynchronous map requirejs

我正在尝试使用https://github.com/millermedeiros/requirejs-plugins的异步模块来加载googlemap api。我的index.html文件包含以下requirejs配置:

 <script data-main="scripts/myscript" src="scripts/require.js"></script>
<script>
    requirejs.config({
"baseUrl": "scripts",
"paths": {
   "async": "require_plugins/async",
   "gmaps": "gmaps",
  "infobox":"http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox",
  "jquery":"//code.jquery.com/jquery-2.1.1.min",
  "jquery_mob":"//code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min"
},
waitSeconds: 15

});

我的所有javascript文件都存储在脚本文件夹中(相对于index.html) 例如script / myscript.js和script / require.js以及async插件存储在名为require_plugins的脚本的子文件夹中,例如:脚本/ require_plugins / async.js

我定义googlemap模块的javascript名为gmaps.js(存储在脚本文件夹中),如下所示:

define("GMAP",['async!https://maps.googleapis.com/maps/api/js?  &key=xxxxxx&region=uk&libraries=places,geometry'], function () {
return window.google.maps;
}); 

我在这里故意模糊了关键参数。根据文档,我应该能够在其他javascript文件中的任何位置使用gmaps模块,只需通过调用它:

require(["gmaps"],function(GMAP)
{
map= new GMAP.Map("#map-div");
 //and then some code to display the map
} 

不幸的是,它根本不起作用。似乎googlemap库根本没有加载。我使用jquery的绝对URL,并且工作正常,但googlemap失败了。我的问题是:我的requirejs配置有问题吗?我无法想到造成这种错误的其他因素:(

1 个答案:

答案 0 :(得分:0)

我的理解是,您在define()中设置的名称是编写依赖项时需要使用的名称。

e.g:

define('GMAP', ['async!<path>'], function() { return window.google.maps; });

require(['GMAP'], function(GMaps) { ... });

这就是我为GM加载GMaps的方法。我现在有一个次要问题,依赖于地图的其他库不再加载。