Strategia di ottimizzazione per la creazione di migliaia di finestre informative su una mappa di Google

StackOverflow https://stackoverflow.com/questions/6372634

Domanda

Sono nuovo nell'API di Google Maps e ho appena rilevato un'applicazione RoR che traccia fino a 2.000 indicatori su una mappa utilizzando MarkerClusterer e ogni indicatore ha una finestra informativa associata.

L'attuale implementazione crea un array di stringhe di contenuto di infowindow in JavaScript e scarica JavaScript nel browser. Non compresso (senza compressione del contenuto del server), l'array e Javascript possono arrivare fino a 9 MB.

I colli di bottiglia delle prestazioni associati a questa implementazione che ho trovato sono: 1. Tempo sul server per creare 2000 stringhe e inserirle nell'array JavaScript. (~ 4-5 secondi) 2. Tempo sul server per comprimere il JavaScript multi-megabyte prima di inviarlo al browser. (~ 2-3 secondi)

Il mio pensiero iniziale è quello di creare un modello per la stringa di contenuto di infowindow che contenga tutta la formattazione HTML in modo che gli unici dati contenuti nella matrice dei contenuti di infowindow siano i numeri grezzi effettivi da visualizzare. Ciò dovrebbe ridurre notevolmente il tempo di elaborazione per l'assemblaggio dell'array di stringhe di contenuto sul server e di conseguenza ridurre la memoria consumata dall'array nel browser. Inoltre, deve essere aperta solo una finestra informativa alla volta.

Non avendo familiarità con l'API di Google Maps v3, sto cercando indicazioni per stabilire se questa sia la migliore strategia per l'ottimizzazione. E qualsiasi puntatore a esempi di codice che implementano questo tipo di strategia.

Grazie in anticipo,

-Scott

È stato utile?

Soluzione

Penso che non dovresti caricare tutti i 2000 set di dati nel tuo array, ma facendo una delle 2 alternative:

  1. Carica solo i marker e quindi le finestre informative che si trovano nella visualizzazione corrente.
  2. Si carica il contenuto della finestra delle informazioni tramite ajax, quando si fa clic sul contrassegno.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top