2013-03-28 14 views
6

Ho usato Google Maps su molti siti Web in passato, ma mi è stato posto un problema che non avevo mai sperimentato prima. La finestra delle mappe viene mostrata, ma mostra solo i segmenti di mappe in alto a sinistra, e qualsiasi cosa dopo di ciò (anche quando sto navigando in giro), nulla carica a destra. È come se la finestra che è navigata intorno abbia un offset interno che lo spinge dal lato del viewport. Qualcuno sa cosa potrebbe causarlo?Finestra Google Maps Finestra che mostra solo parte della mappa

EDIT

ho appena scoperto che quando la finestra viene ridimensionata, le rinfresca mappa, e il layout è fisso.

La mappa è contenuta in una scheda che viene visualizzata tramite javascript (e nascosta tramite display:none). Il contenitore di schede viene caricato tramite ajax e, quando viene caricato, viene richiamata la funzione loadMap. Ho provato a posticipare la funzione loadMap racchiudendola all'interno di una funzione setTimeout che ritarda la creazione della mappa di 1 secondo, ma continua a fare lo stesso (richiedendo che la finestra venga ridimensionata per correggerla)

risposta

2

Righto, non lo sono certo perché non funziona, ma ho cambiato il mio codice per eseguire solo la funzione di creazione della mappa quando la scheda viene aperta per la prima volta. Questo lo fa funzionare correttamente

4

Questo è un tipico problema che si verifica quando il contenitore della mappa è nascosto o ha zero dimensioni al momento della creazione della mappa.

La soluzione più comune è quello di fare una di queste:

  • Defer creando la mappa fino a quando l'elemento contenitore è visibile e dimensionato correttamente, o

  • chiamata google.maps.event.trigger(map, 'resize') dopo la mappa diventa visibile o è ridimensionato. Questo evento indica all'API di Maps di riadattare i suoi calcoli relativi a ciò che è visibile nella mappa.

Sembra che tu l'abbia già risolto utilizzando la prima opzione, che è sicuramente la scelta migliore tra le due. La tua pagina si caricherà più velocemente perché non stai spendendo il tempo per creare una mappa invisibile. Se si ha una situazione in cui la dimensione della mappa può cambiare (ad esempio una finestra ridimensionabile), è possibile attivare l'evento di ridimensionamento quando ciò accade.

Problemi correlati