Карты Google js api v3: Панорама StreetView закончила загрузку? - PullRequest
4 голосов
/ 10 августа 2011

У меня проблемы с просмотром улиц. Я хочу показать вид улицы только после того, как он закончит загрузку, чтобы серый цвет не отображался. Я искал API, но я не думаю, что есть какие-либо события, которые я могу использовать: Документация

Есть ли способ (включая неофициальные) показать улицу ПОСЛЕ того, как она полностью загружена? Спасибо!

Ответы [ 3 ]

0 голосов
/ 10 июня 2013

скрытие и отображение div после загрузки карты должно помочь ...

вот так

<div id="pano" style="position:absolute; left:410px; top: 8px; width: 400px; height: 300px;visibility:hidden;"></div>

<script> google.maps.event.addDomListener(window, 'load',initialize);
setTimeout('showPano()',1000);
function showPano(){
document.getElementById('pano').style.visibility='visible';}
</script>

надеюсь, это помогло вам

0 голосов
/ 10 июня 2013

Если вы хотите загрузить панораму после загрузки, для этого вы можете использовать iframe, и с этим у вас может быть оболочка с загрузчиком AJAX, которая не изменится, пока карта не загружена (состояние готовности == 4), (или еще один Оболочка загрузчика ajax с некоторой глобальной переменной в качестве флага для определения состояния готовности .., Примечание: это нестабильная идея, но работает с некоторыми браузерами)

Это будет простой способ, в API, если вы хотите это сделать,

ссылаются на слушателей событий,

иначе

опции имеют одну опцию в документации,

т.е.

visible :: boolean :: Если true, панорама просмотра улиц видна при загрузке.

Надеюсь, это облегчит вашу жизнь ..

Надеюсь, я ответил в контексте ваших реальных требований ..

0 голосов
/ 08 июня 2013

Я провел некоторый тест (отредактировал пример vinod_vh, см. http://jsfiddle.net/nDwSC/2/) и обнаружил, что событие links_changed является последним запущенным:

  1. Червен 2013 17: 48: 28.775 ===== НАЖМИТЕ НАЖМИТЕ ===== / nDwSC / 2 / show / (строка 210)
  2. Червен 2013 17: 48: 28.780 изменить размер / nDwSC / 2 / show / (строка 170)
  3. Червен 2013 17: 48: 28.843 zoom_changed / nDwSC / 2 / show / (строка 173)
  4. Червен 2013 17: 48: 29.603 pano_changed / nDwSC / 2 / show / (строка 158)
  5. Червен 2013 17: 48: 29.622 позиция_ изменена / nDwSC / 2 / show / (строка 161)
  6. červen 2013 17: 48: 29.634 ссылки изменены

Так что вы можете использовать это событие! Он также будет запущен в разных контекстах, но вы можете справиться с этим, имея некоторую переменную flag, которая будет установлена ​​при нажатии кнопки и протестирована в обработчике с возможным таймаутом.

Итак, что вы должны сделать:

  1. скрыть улицу; но не используйте display: none, используйте трюк с техникой скрытия слева, как в jQuery UI <1.9 (для новых версии <a href="http://forum.jquery.com/topic/jquery-ui-tabs-1-10-off-left-hiding-of-charts-and-maps" rel="nofollow"> есть не работает к сожалению :

    .hide { position: absolute !important; left: -10000px !important; }

    оставьте скрытую рамку с теми же размерами, что и полученную!

  2. обработайте событие links_changed - удалите класс hide и измените размер карты.

Если вы видите, что событие links_changed происходит слишком рано, у вас нет другой возможности сделать это чисто, обрабатывая события. Вы даже не можете использовать карту idle событие idle событие для google.maps.StreetViewPanorama не существует). Таким образом, последнее средство, вероятно, заключается в использовании некоторого фиксированного тайм-аута - это прекрасно работает!

...