2009-04-29 16 views

risposta

0

possibili modi per risolvere questo problema:

  • costruire il JSON su serverside, in base alla zoomlevel (Con: esigenze ricaricare dopo uno zoom, pro: cani di piccola amouts di dati devono essere caricato)
  • Includere le informazioni su come un marcatore è accessibile nei dati JSON (pro: devono essere caricati, con un solo dati temporali: scorrere i dati con JavaScript)
  • Calcolare marcatori visibili in JavaScript (pro: molto dinamico, con: calcolo del carico pesante)
8

C'è la nozione di un "rettangolo di delimitazione" per una mappa. La mappa api ti fornisce queste due coppie di coordinate lat/long: una per l'angolo SW e una per l'angolo NE.

Quindi, se si dispone di un servizio dati personalizzato che restituisce punti JSON, è necessario accettare queste coordinate come input e regolare di conseguenza il set di dati restituito (molto probabilmente come clausola WHERE nell'istruzione SELECT).

Non ho i dettagli necessari per ottenere questo rettangolo di delimitazione memorizzato, ma è per questo che sono API docs.

1

Sì, ho fatto qualcosa di simile in un'applicazione per un'autorità locale in cui stavamo visualizzando il volume di ciascuna casa riciclata su 6.000 famiglie dispari. Poiché il volume totale di dati (che includeva indirizzo e informazioni statistiche per ogni nucleo familiare) era piuttosto ampio, il ritiro dell'intero file di dati in un colpo solo causava la sospensione del browser.

Quindi invece nella chiamata AJAX al database abbiamo inviato le coordinate del rettangolo di delimitazione (latitudine, longitudine) dell'area della mappa, quindi restituito solo quei punti che abbiamo visto. A causa della natura dell'applicazione, un pulsante guidato dall'utente per 'recuperare i dati' era abbastanza accettabile, ma ovviamente ci sono molte altre varianti che puoi giocare sul tema - una volta che stai distribuendo le coordinate di delimitazione sul lato server puoi decidere cosa fare lì - ad esempio, restituire un sottoinsieme solo se il livello di zoom è troppo alto. Dovresti essere in grado di catturare anche l'evento di disegno della mappa e agire automaticamente.

1

Quando lo zoom cambia, inviare il nuovo livello di zoom al servizio JSON e restituire i marcatori che dovrebbero essere visibili a quel livello. Utilizzare addMarkers() per aggiungere i risultati a MarkerManager e renderli visibili solo al livello di zoom corrente.

Le altre risposte qui suggeriscono di restituire solo i marker all'interno della vista corrente, ma è anche possibile restituire tutti i marker a quel livello di zoom. Dipende da quanto sai su quali marcatori vuoi mostrare ad ogni livello.

6

C'è una nuova libreria chiamata MarketClustered che vi aiuterà a

alt text http://gmaps-samples.googlecode.com/svn/trunk/images/screenshot_clusterereffect.jpg

Anche se i dati è troppo grande, penso che sarà meglio per alimentare la carta saranno tutti i dati, e lasciarlo fai è una cosa

+7

Qualsiasi cosa su oltre 2.000 marcatori con MarkerClusterer diventa troppo lento per me (che è in Firefox - Chrome e Safari 4 sono buoni fino a circa 8.000). Sebbene dipenda da quanto sono densi i marcatori. Sono d'accordo che sarebbe probabilmente meglio importare i dati tutti in una volta, piuttosto che inviare blocchi quando lo zoom cambia. –

+1

Bene, hai dati reali. Commento potenziato –

Problemi correlati