2014-02-26 3 views
0

Я работаю над сайтом, используя Require js, и мне нужно внедрить Карты Google. Я также использую плагин Google Maps Marker Manager.RequireJS - Плагин Google Maps & Marker Manager

Я использую плагин async Require для загрузки Google Maps api, но у меня проблема с плагином-маркером-менеджером. Он запускается перед загрузкой Google Maps Api (см. Ниже).

Как я могу заставить маркер-менеджера ждать, пока загрузится авина Google Maps api?

Спасибо, Скотт

define(['marker-manager', 
     'async!https://maps.google.com/maps/api/js?sensor=false'], 
    function (mm, gapi) { 
     // yadda, yadda 
     console.log("Finished loading"); 
    }); 

консольный вывод:

Uncaught ReferenceError: google is not defined 
["Finished loading"] 

ответ

0

Вы должны попытаться указать функцию обратного вызова в картах Google определить заявление. Пример:
https://developers.google.com/maps/documentation/javascript/examples/map-simple-async

Причина: Google Maps загружает много JS файлы асинхронно, поэтому прослушивание только при первой загрузке сценария не достаточно, чтобы проверить.

Другой пример с Google Maps обратного вызова и requirejs интеграция:
http://blog.pixelingene.com/2011/10/using-jquery-dot-deferred-and-requirejs-to-lazy-load-google-maps-api/
Резюмируя:
- Абстрактные API Карт Google с помощью объекта-оболочки
- создать единый $ .Deferred() объекта
- Queue до вызовов на картах API оберточного кода внутри сделана()
- Используйте опцию асинхронной загрузки в Google Maps API с помощью обратного вызова
- в картах обратного вызова, вызов решительности() по отложенным объекту