Как я могу "предварительно загрузить" Google Maps API в FLEX 3.5 TabNavigator Tab? - PullRequest
2 голосов
/ 06 мая 2010

У меня Flex 3.5 Air Application; В главном окне, кроме заголовка, есть TabNavigator. На вкладке я поместил объект Google Maps. Он работает нормально, за исключением того, что он «загружается» очень медленно и все приложение зависает (проблема не отвечает).

Теперь я хотел бы это исправить, но пока не знаю, как реализовать одно из следующих решений: 1) Загрузите API до загрузки всего приложения. 2) Загрузить API как-то асинхронно, когда вкладка нажата. Мне действительно не нужен модный предварительный загрузчик, достаточно, чтобы мое приложение не зависало.

Обратите внимание, что я "на 110%" уверен, что это ошибка GoogleMaps, поскольку холст вкладки пуст, и никакого другого кода там нет [дважды проверил это]. Также обратите внимание, что карта только загружается, тогда я вызываю метод setCenter, поэтому никаких других операций, которые могли бы ее заморозить, нет.

РЕДАКТИРОВАТЬ: мне удалось определить, что не создание объекта Api идет медленно, а фактическое его отображение в графическом интерфейсе. Вот строка кода. ResellersMapClass только расширяет класс API Карт Google, так как я собираюсь добавить туда дополнительную функциональность. Но сейчас все чисто.

this.map = new ResellersMapClass();
//between here
this.mapContainer.addChild( this.map  );
//and here

Теперь есть способ предварительно загрузить это? Или любое другое решение, которое предотвратит зависание графического интерфейса.

Спасибо, Gabriel

1 Ответ

0 голосов
/ 30 марта 2011

У меня была такая же проблема с Yahoo! API карты. В итоге я просто уронил его в модуль и дал ProgressBar для загрузки. Это должно помочь по крайней мере с асинхронными проблемами. Если проблема заключается в сложном алгоритме в библиотеке, это не обойдется, пока flash не развернет истинную многопоточность (скрещивает пальцы).

...