Come gestire la memorizzazione e il recupero delle posizioni in Google Maps

0

Sto sviluppando un'applicazione google maps con 50 posizioni / marcatori e mi aspetto che raggiunga circa 1000 in un mese, ogni posizione ha un record di database separato con proprietà:

Name, Description, Latitude, Longitude, Address (Country, City, Street,..). 

Per evitare problemi durante il ridimensionamento dell'applicazione, ho 2 problemi:

  1. Se le posizioni possono raggiungere fino a 1000, è consigliabile recuperare tutti i dati sul caricamento della pagina o solo le posizioni che rientrano nei limiti della vista in modo che una chiamata al database si verifichi ogni volta che la mappa rimane inattiva (arresta in movimento)?

  2. Se tutti i record di posizione contengono le coordinate e le informazioni sull'indirizzo o stanno solo salvando il PlaceId (Google Maps Id per ogni posizione) una buona alternativa.

    • Pro: Lavorare con PlaceId farà in modo che non ci siano informazioni inutili o errate nel database.
    • Pro: quando aggiungi una nuova posizione, gli utenti possono facilmente utilizzare la funzionalità di completamento automatico di Google Maps Place per cercare l'indirizzo, ad esempio:

    • Contro: prima di mostrare le posizioni all'interno del viewport, è necessario eseguirne il looping e, per ciascuna, l'API Place dovrebbe essere richiamata per ottenere le coordinate e le informazioni sull'indirizzo utilizzando PlaceId, solo che il marker può essere posizionato sul Mappa.

posta Sam 26.07.2017 - 11:24
fonte

1 risposta

1

ho implementato la tua versione (1) con openstreetmap (osmdroid) su Android con circa 16000 posizioni in cui i luoghi sono selezionati dal database dopo ogni zoom / spostamento: (sql pseudocode)

 select ... from location
 where currentZoomlevel >= location.zoomLevelMin and 
       currentZoomlevel <= location.zoomLevelMax and
       currentLatMin >= location.lat and 
       currentLatMax >= location.lat and 
       currentLonMin >= location.lon and 
       currentLonMax >= location.lon

il trucco è che per ogni livello di zoom non sono più visibili 100 posizioni alla volta.

Ad esempio, se hai 100 ristoranti in una città, non ha senso mostrare tutti i 100 luoghi di una città mentre zoomlevel è 1 (mappa del mondo)

sul mio dispositivo Android 4.2 debole, selezionando 100 località e aggiungendo 100 icone alla mappa, più la redenerazione viene eseguita in meno di 1 secondo

    
risposta data 26.07.2017 - 12:13
fonte

Leggi altre domande sui tag