2012-12-16 9 views
9

Ich lese die folgenden article wie Sie Google Maps und gmaps.js mit RequireJS arbeiten zu lesen. Wenn ich jedoch mein Projekt erstelle, wird RequireJS mit Almond ausgetauscht. Im obigen Artikel heißt es, dass Almond nicht mit dem Async-Plugin RequireJS arbeiten wird. Ohne das Async-Plugin werden die Abhängigkeiten von Google nicht geladen, und gmaps.js gibt einen Fehler aus.RequireJS Async-Plugin mit Mandel.js

Gibt es eine Möglichkeit, das Problem zu umgehen und Google Maps-Code immer noch in einem Projekt zu laden, das Almond anstelle von RequireJS verwendet?

Antwort

1

Ja, ich finde das auch. Dynamische Bibliotheken können nicht geladen werden, heißt es. Ich denke, du musst es lokal herunterladen.

0

Almond.js can't handle with asynchronous plugins. Sie können jQuery.Deferred verwenden, um die Bibliotheken zu laden.

var googleMapsLoader = function(func, options) { 
    var defaults = { 
     "sensor" : "false", 
     "v"  : "3", 
     "key"  : "", 
     "language" : "pt", 
     "region" : "br", 
     "libraries": "" 
    }; 

    $.when($.ajax({ 
     type: "GET", 
     dataType: "script", 
     data: $.extend({}, defaults, options), 
     url: "https://maps.google.com/maps/api/js", 
     crossDomain: true 
    })).then(function() { 
     func(); 
    }); 
}; 

/* 
* Loading Google Maps API with $.Deferred. 
*/ 
googleMapsLoader(function() { 
    // You may call your code here. 
}, { 
    "libraries" : "geometry,places", 
    "v"   : "3.7" 
}); 

Blick auf this example mit $ .Deferred und Maplace.