Как / Где я могу прочитать значение, чтобы узнать, когда моя карта API Карт Google V3 завершила рендеринг? - PullRequest
1 голос
/ 12 сентября 2010

У меня есть карта Google, созданная с использованием более нового API Карт Google V3 из сценария Perl.Сценарий создает карту из значений, переданных ему из скрытых полей формы на родительской странице, и возвращает карту в iframe на той же родительской странице.

Причина, по которой карта находится в iframe, заключается в том, чтоЯ обнаружил проблемы с браузером как в Firefox, так и в IE при попытке отобразить карту непосредственно в div на родительской странице.Это не происходит, когда карта в противном случае отображается в окне iframe.Я пришел к выводу, что это потому, что новый API Карт Google V3 немного странен в том, как он интерпретирует наследование CSS, и более или менее требует, чтобы карта отображалась в блочном элементе со 100% значениями ширины и высоты.Отрисовывая окно iframe в div, я могу контролировать нужный размер с помощью CSS div, в то же время предоставляя API Карт Google 100% значения ширины и высоты через документ iframe.

Этовозникла изначально, потому что я действительно хотел, чтобы карта отображалась в скрытом элементе div, который становится видимым с помощью jQuery, когда пользователь нажимает на ссылку Map.Однако это не будет работать ни в Firefox, ни в IE, и карта не будет отображаться в элементе, исходное свойство отображения CSS которого установлено в none.Это даже не сработает при попытке использовать внешнюю оболочку div, где он должен был унаследовать значения из этой оболочки div.

Так что теперь у меня есть обходной путь, при котором div изначально не скрыт, iframe показывает:карты строятся идеально, а затем событие setTimeout, записанное на странице iframe, закрывает div, чтобы скрыть карту на родительской странице.Я знаю, я знаю, это довольно хак, но она позволяет карте правильно отображаться, а затем скрывает ее из поля зрения.

Итак, то, что я ищу здесь, это способ узнать, когда карта имеетзакончил рендеринг, чтобы инициировать событие jQuery, чтобы скрыть div, вместо метода setTimeout, который используется в настоящее время (что также не гарантирует, что карта действительно закончила рендеринг. В лучшем случае это всего лишь хорошее предположение).

Я просмотрел документацию по API Карт Google V3 и осмотрел другие места в Интернете, чтобы узнать, есть ли какой-нибудь способ узнать, когда карта завершила рендеринг безуспешно, и надеюсь, что кто-то, знакомый с новым API Карт Google, мог быесть ответ, который я стараюсь, по крайней мере, сделать этот обходной путь немного более изящным:)

Спасибо за любое направление, которое вы можете указать мне, чтобы достичь того, чего я пытаюсь достичь здесь.

Ответы [ 2 ]

0 голосов
/ 11 октября 2010

Насколько я знаю, нет никакого способа, так как браузер не предоставляет эту функциональность через JavaScript.

Если вы просто хотите узнать, загружены ли мозаичные изображения, прослушайте tilesloadedсобытие.

0 голосов
/ 13 сентября 2010

Как насчет перемещения iframe за пределы экрана с использованием абсолютного позиционирования, тогда вам не нужно его скрывать ...

Кстати, я не видел ни одной проблемы, которую вы описываете в моей работе с V3,так что, возможно, это всего лишь побочные эффекты от других проблем в вашем коде.

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