Maps SDK for Android utilizza i seguenti sistemi di coordinate:
- Valori di latitudine e longitudine, che fanno riferimento a un punto sul unico nel suo genere. (Google utilizza Geodetica mondiale standard di sistema WGS84.
- Coordinate mondiali, che fanno riferimento in modo univoco a un punto sulla mappa.
- Coordinate di pixel, che fanno riferimento a un pixel specifico sulla mappa in un livello di zoom specifico.
- Coordinate dei riquadri, che fanno riferimento a un riquadro specifico sulla mappa in un livello di zoom specifico.
Coordinate mondiali
Ogni volta che l'API deve tradurre una località del mondo in una località una mappa, prima converte i valori di latitudine e longitudine in un coordinata mondiale. L'API utilizza Mercatore di testo per eseguire questa traduzione.
Per praticità nel calcolo delle coordinate dei pixel (vedi sotto) supponiamo che una mappa a livello di zoom 0 sia una singola casella delle dimensioni di una sezione di base. Definiamo poi le coordinate mondiali rispetto alle coordinate dei pixel quando esegui lo zoom livello 0, utilizzando la proiezione per convertire latitudini e longitudini in posizioni in pixel su questo riquadro di base. Questa coordinata mondiale è fluttuante valore in punti misurato dall'origine della proiezione sulla mappa una località specifica. Poiché questo valore è una rappresentazione in virgola mobile, potrebbe essere molto più precisa dell'attuale risoluzione dell'immagine della mappa che viene mostrato. Una coordinata mondiale è indipendente dal livello di zoom corrente in altre parole.
Le coordinate mondiali in Google Maps sono misurate dalla stazione di Mercatore
l'origine della proiezione (l'angolo nord-ovest della mappa a 180 gradi
di longitudine e circa 85 gradi di latitudine) e l'aumento delle
direzione x
verso est (destra) e aumenta
direzione y
verso sud (in basso). Poiché
il riquadro di base di Mercator per Google Maps è di 256 x 256 pixel,
spazio di coordinate mondiali è {0-256}, {0-256}
.
Nota che una proiezione di Mercatore ha una la larghezza longitudinalmente ma un'altezza infinita in latitudine. Interrompiamo immagini della mappa base che utilizzano la proiezione di Mercatore a circa +/- 85 gradi per rendere quadrata la forma della mappa risultante, consentendo una logica più semplice per la selezione dei riquadri. Tieni presente che una proiezione può produrre coordinate mondiali al di fuori dello spazio di coordinate utilizzabile della mappa base se tracciati molto vicino ai poli, ad esempio.
Coordinate pixel
Le coordinate di pixel fanno riferimento a un pixel specifico sulla mappa in una un livello di zoom specifico, mentre le coordinate mondiali riflettono posizioni assolute su una una data proiezione. Le coordinate dei pixel vengono calcolate utilizzando: formula:
pixelCoordinate = worldCoordinate * 2zoomLevel
Dall'equazione sopra riportata, nota che ogni livello di zoom crescente
è due volte più grande in x
e y
indicazioni stradali. Pertanto, ogni livello di zoom più elevato comporta una risoluzione pari a 4
volte superiore al livello precedente. Ad esempio, a livello di zoom 1,
La mappa è composta da 4 riquadri di 256 x 256 pixel, che occupano uno spazio di pixel
da 512 x 512. A livello di zoom 19, ogni pixel x
e y
sulla mappa è possibile fare riferimento utilizzando un valore compreso tra
0 e 256 * 219.
Poiché le coordinate del mondo sono basate sulle dimensioni dei riquadri della mappa, la parte intera della coordinata dei pixel ha l'effetto di identificare i pixel esatti in quella posizione con il livello di zoom corrente. Tieni presente che per il livello di zoom 0, le coordinate dei pixel sono uguali alle coordinate del mondo.
Ora abbiamo un modo per indicare con precisione ogni località sulla mappa,
a ogni livello di zoom. Maps SDK for Android crea un'area visibile
dato il centro del livello di zoom della mappa (come LatLng
) e
le dimensioni dell'elemento DOM contenitore
trasla questo riquadro di delimitazione in coordinate pixel. L'API determina quindi
logicamente tutti i riquadri della mappa che si trovano entro i limiti di pixel specificati. Ciascuno di
a questi riquadri della mappa viene fatto riferimento utilizzando
coordinate dei riquadri, che semplificano notevolmente la visualizzazione della mappa.
immagini.
Coordinate dei riquadri
L'API non è in grado di caricare contemporaneamente tutte le immagini della mappa per livelli di zoom più elevati. L'API suddivide invece le immagini a ogni livello di zoom in una serie di riquadri di mappe, disposti logicamente in un ordine l'applicazione. Quando una mappa scorre verso una nuova posizione o verso una nuova posizione. livello di zoom, l'API determina quali riquadri sono necessari utilizzando le coordinate dei pixel e converte questi valori in un insieme di riquadri da recuperare. Queste coordinate di riquadri vengono assegnate uno schema che rende logicamente facile determinare quale riquadro contiene le immagini per un determinato punto.
I riquadri di Google Maps sono numerati della stessa origine di quella
per i pixel. Per l'implementazione da parte di Google della proiezione di Mercatore, il valore
il riquadro dell'origine si trova sempre nell'angolo nord-ovest
della mappa, con i valori x
che aumentano da ovest a
est e y
aumentano da nord a sud. Riquadri
sono indicizzati utilizzando le coordinate x,y
di tale origine. Per
ad esempio, a livello di zoom 2, quando la terra è divisa in 16 riquadri,
ogni riquadro può essere referenziato da una coppia univoca di x,y
:
Tieni presente che dividendo le coordinate in pixel per le dimensioni del riquadro (256) e prendendo le parti intere del risultato, lo produciamo come sottoprodotto la coordinata del riquadro al livello di zoom corrente.
Esempio
L'esempio seguente mostra le coordinate per Chicago, IL: valori di latitudine/longitudine, coordinate del mondo, coordinate in pixel e riquadro coordinate. Utilizza il controllo zoom per vedere i valori delle coordinate livelli di zoom.
Per vedere come sono state calcolate le coordinate: visualizza il codice.