3

我目前正在尝试使用 require.js 模块定义和依赖处理程序加载 Google 地图库及其扩展RichMarker 。

我已经声明了 Google Maps 模块和扩展的路径,如下所示:

"gmaps": "modules/google_maps",
"richmarker": "vendor/google/maps/richmarker.min"

google_maps 模块看起来像

define('gmaps', ['async!http://maps.googleapis.com/maps/api/js?key=mykey&sensor=true'],
function(){
  return window.google.maps;
});

最后,使用谷歌地图库和高级标记扩展的模块定义如下:

define(['common', 'gmaps','jquery','jqueryui',  'bootstrap',"vendor/google/maps/clusterer.min", "tmp/clusteringData", "richmarker"],
function(common, gmaps){

然而,googlemap 正确地启动了加载,但我在控制台中收到有关 Richmarker 扩展的错误:

Uncaught ReferenceError: google is not defined richmarker.min.js:1
Uncaught ReferenceError: RichMarker is not defined google.init.js:267

我在哪里做错了?谢谢您的帮助。

4

2 回答 2

2

我有同样的问题,infobox.js这完全取决于谷歌地图。

我做了什么:

  1. 我已经定义了返回整个 google 对象(而不是单个属性)的模块google(而不是 )gmapsmaps

    define('google', ['async!http://maps.googleapis.com/maps/api/js?key=mykey&sensor=true'],
      function() {
        return window.google;
      });
    
  2. 我已经定义了RequireJS配置文件infobox之间的依赖关系:google

    paths: {
      google: 'ref/google',
      infobox: 'ref/infobox'
    },
    shim: {
      infobox: {
        deps: ['google']
      }
    }
    
于 2014-10-10T11:47:23.740 回答
0

不久前我回答了同样的问题:

https://stackoverflow.com/a/13955963/1916258

我认为您需要“填充” google 对象。

require.config({
   baseUrl: 'js',
   paths: {
      gmaps: 'path/to/gmaps'
   },
   shim: {
      gmaps: {
         exports: 'google'
      }
   }
});
于 2012-12-20T14:36:21.343 回答