2012-12-16 17 views
9

Przeczytałem następujący article o tym, jak uzyskać Google Maps, i gmaps.js do pracy z RequireJS. Jednak kiedy buduję swój projekt, RequireJS zamienia się na Migdał. W powyższym artykule stwierdza, że ​​Almond nie będzie działał z wtyczką async RequireJS. Bez asynchronicznej wtyczki, zależności Google nie są ładowane, a gmaps.js wyświetla błąd.Uzyskiwanie wtyczki async RequireJS pracującej z almond.js

Czy istnieje sposób obejścia problemu i wciąż ładuje kod map Google w projekcie korzystającym z Almond zamiast RequireJS?

Odpowiedz

1

Tak, również to znajduję. Biblioteki dynamiczne nie mogą być ładowane, jak mówi. Chyba musisz pobrać go lokalnie.

0

Almond.js can't handle with asynchronous plugins. Możesz użyć jQuery.Deferred do załadowania bibliotek.

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" 
}); 

Spójrz na this example używając $ .Deferred i Maplace.