Динамически загружать Google Maps API v3 с функцией обратного вызова пространства имен - PullRequest
2 голосов
/ 29 сентября 2011

Недавно я столкнулся со следующей проблемой, когда лениво загружал / динамически загружал API-карты Google v3: Чтобы проверить, полностью ли загружен API-интерфейс, я следовал инструкциям на странице документации Google.Прекрасно работает с обычным именем обратного вызова функции, таким как & callback = initialize в глобальной области видимости.Также отлично работает с функцией обратного вызова, которая находится в определенном пространстве имен, например & callback = Namespace.initialize .

Теперь моя функция помещена в Namespace.foo [0] .initialize («Пространство имен» и «foo» относятся к типу object).Проблема в том, что я не могу правильно получить доступ к этой функции.Я попробовал несколько способов создания строки обратного вызова, каждый из которых приведен ниже с тем, что, по словам Firebug, не работает:

&callback=Namespace.foo[0].initialize
Firebug: NetworkError: 403 Forbidden - <http://maps.googleapis.com/maps/api/js?v=3...&callback=Namespace.foo[0].initialize...>

&callback=Namespace.foo.0.initialize
Firebug: missing ; before statement
Firebug: [Break On This Error] window.Namespace.foo[0].initialize()

&callback=Namespace.foo%5B0%5D.initialize
Firebug: NetworkError: 403 Forbidden - <http://maps.googleapis.com/maps/api/js?v=3...&callback=Namespace.foo[0].initialize...>

Я благодарен за каждую подсказку и / или решение!

Справочная информация: То, что я делаю, также может быть интересным.Скрипт динамически загружает HTML, CSS, данные и API карт Google на внешнюю веб-страницу (внутри веб-виджета).Теперь я использую отложенный объект jQuery для постановки в очередь различных включений, таких как сначала загрузка css / javascript / html, затем получение данных и, наконец, настройка карты Google в ранее загруженной структуре.Отложенный объект работает намного лучше, чем обработка различных шагов с помощью обратных вызовов (и намного проще!), Но когда метод jQuery.getScript выполнен (загружает API Google Maps), срабатывает событие успеха и возвращается deferred.resolve.Жаль, что это, вероятно, просто обрабатывает аутентификацию (через ключ клиента), а затем асинхронно загружает карты Google main.js.Это отстой, потому что мне нужно дождаться полной загрузки API ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...