Domanda

Ho problemi a ottimizzare il disegno di una mappa simile a Google. Funziona bene per centinaia di punti, ma quando si tratta di quantità maggiori come migliaia diventa sfocato e lento. Anche unzoomed sembra strano.

Mi piacerebbe sapere come ottimizzare l'algoritmo di disegno per disegnare meno posti in modo che sembri sconveniente su Google Maps.

Tuttavia, traccio anche collegamenti tra luoghi e non riesco a ottimizzarlo.

Per favore, pubblica tutto quello che ti viene in mente, devo finire questo e inviarlo domani.

Ecco come appare:

ingrandito ingrandito

È stato utile?

Soluzione

Penso che sarei tentato di non tracciare linee più corte di una soglia (e intendo questo in termini di viewport, non in termini di distanza assoluta). Ciò significa che quando la mappa viene ingrandita, avrai meno da disegnare e la mappa sembrerà meno occupata e quando la mappa verrà ingrandita le linee tra questi punti vicini diventeranno visibili. Modifica: in realtà, a pensarci un po 'di più, penso che applicherei questa limitazione di lunghezza solo quando ci sono un gran numero di linee sullo schermo - o rendere la soglia di lunghezza una funzione del numero di linee sullo schermo.

Penso che sarei anche tentato di non tracciare linee che provengono da punti fuori dallo schermo (fuori dal viewport) o, almeno, abbastanza lontano dallo schermo (una soglia dal centro del viewport). Suggerirei di provare prima questa modifica.

Questi cambiamenti possono sembrare come se nascondessero informazioni (e lo faranno) ma, allo stato attuale, la mappa è così occupata che queste informazioni presentate sono comunque quasi inutili.

Altri suggerimenti

Ecco due idee:

  1. Ogni oggetto che disegniamo su una mappa ha un valore extra nel database, "Livello di zoom". Quando si ingrandisce un numero maggiore di elementi, questo verrà mostrato in base a quel valore.

  2. Un secondo modo è utilizzare il raggruppamento. Se gli oggetti iniziano a sovrapporsi, mostra un punto con [10 articoli]. Mostra gli elementi sottostanti solo durante lo zoom in avanti.

alcuni suggerimenti:

  1. regione della clip, per disegnare punti solo nella regione della clip
  2. puoi controllare il progetto GIS opensource, vedere come ottimizzano il disegno.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top