Maps SDK for Android utilizza i seguenti sistemi di coordinate:
- Valori di latitudine e longitudine che fanno riferimento a un punto del mondo in modo univoco. Google utilizza lo standard World Geodetic System WGS84.
- Coordinate mondiali, che fanno riferimento a un punto sulla mappa in modo univoco.
- Coordinate pixel, che fanno riferimento a un pixel specifico sulla mappa a un livello di zoom specifico.
- Coordinate del riquadro, che fanno riferimento a un riquadro specifico sulla mappa a un livello di zoom specifico.
Coordinate mondiali
Ogni volta che l'API deve tradurre una località nel mondo in una località su una mappa, traduce prima i valori di latitudine e longitudine in una coordinata mondiale. L'API utilizza la proiezione Mercatore per eseguire questa conversione.
Per semplificare il calcolo delle coordinate dei pixel (vedi sotto), supponiamo che una mappa al livello di zoom 0 sia un'unica tessera delle dimensioni della tessera di base. Definiamo quindi le coordinate mondiali rispetto alle coordinate dei pixel al livello di zoom 0, utilizzando la proiezione per convertire latitudini e longitudini in posizioni dei pixel su questo riquadro di base. Questa coordinata mondiale è un valore in virgola mobile misurato dall'origine della proiezione della mappa alla posizione specifica. Tieni presente che, poiché questo valore è un valore in virgola mobile, potrebbe essere molto più preciso della risoluzione attuale dell'immagine della mappa visualizzata. Una coordinata del mondo è indipendente dal livello di zoom attuale.
Le coordinate mondiali in Google Maps vengono misurate dall'origine della proiezione di Mercatore (l'angolo nord-ovest della mappa a 180 gradi di longitudine e circa 85 gradi di latitudine) e aumentano in direzione x verso est (destra) e in direzione y verso sud (in basso). Poiché il
riquadro di base di Google Maps Mercatore è 256 x 256 pixel, lo spazio
delle coordinate mondiali utilizzabile è {0-256}, {0-256}.
![]()
Tieni presente che una proiezione di Mercatore ha una larghezza finita longitudinalmente, ma un'altezza infinita in senso latitudinale. Tagliamo le immagini della mappa base utilizzando la proiezione di Mercatore a circa +/- 85 gradi per rendere quadrata la forma della mappa risultante, il che consente una logica più semplice per la selezione delle tessere. Tieni presente che una proiezione può produrre coordinate mondiali al di fuori dello spazio delle coordinate utilizzabile della mappa di base se tracci un punto molto vicino ai poli, ad esempio.
Coordinate del pixel
Le coordinate pixel fanno riferimento a un pixel specifico sulla mappa a un livello di zoom specifico, mentre le coordinate mondiali riflettono le posizioni assolute su una determinata proiezione. Le coordinate dei pixel vengono calcolate utilizzando la seguente formula:
pixelCoordinate = worldCoordinate * 2zoomLevel
Dall'equazione precedente, nota che ogni livello di zoom crescente
è due volte più grande sia nella direzione x che in quella y. Pertanto, ogni livello di zoom più alto comporta una risoluzione quattro
volte superiore rispetto al livello precedente. Ad esempio, al livello di zoom 1,
la mappa è costituita da 4 riquadri di 256 x 256 pixel, con uno spazio pixel
di 512 x 512. Al livello di zoom 19, è possibile fare riferimento a ogni pixel x e y sulla mappa utilizzando un valore compreso tra 0 e 256 * 219.
Poiché abbiamo basato le coordinate mondiali sulle dimensioni del riquadro della mappa, la parte intera di una coordinata pixel ha l'effetto di identificare il pixel esatto in quella posizione nel livello di zoom corrente. Tieni presente che per il livello di zoom 0, le coordinate dei pixel sono uguali alle coordinate del mondo.
Questi sistemi di coordinate indicano con precisione ogni posizione sulla mappa, a ogni
livello di zoom. Maps SDK for Android crea un'area visibile in base al livello di zoom, al centro della mappa come LatLng e alle dimensioni dell'elemento DOM contenitore e traduce questo riquadro di delimitazione in coordinate pixel. L'API determina quindi logicamente
tutte le tessere della mappa che si trovano all'interno dei limiti dei pixel specificati. Fai riferimento
a ciascuno di questi riquadri mappa utilizzando le coordinate del riquadro, che
semplificano notevolmente la visualizzazione delle immagini della mappa.
Coordinate del riquadro
L'API non può caricare tutte le immagini della mappa contemporaneamente per i livelli di zoom più elevati. Al contrario, divide le immagini a ogni livello di zoom in un insieme di riquadri della mappa, che sono disposti logicamente in un ordine che la tua applicazione può utilizzare. Quando una mappa scorre verso una nuova posizione o un nuovo livello di zoom, l'API determina le tessere necessarie utilizzando le coordinate dei pixel, quindi traduce questi valori in un insieme di tessere da recuperare. Assegna queste coordinate dei riquadri utilizzando uno schema che consente di determinare facilmente quale riquadro contiene le immagini per un determinato punto.
Le tessere di Google Maps sono numerate dalla stessa origine dei pixel. Per l'implementazione della proiezione di Mercatore di Google, il
riquadro di origine si trova sempre nell'angolo nord-ovest
della mappa, con i valori x che aumentano da ovest a
est e i valori y che aumentano da nord a sud. Le tessere
vengono indicizzate utilizzando le coordinate x,y di questa origine. Ad esempio, al livello di zoom 2, quando la Terra è suddivisa in 16 riquadri, ogni riquadro può essere indicato da una coppia x,y univoca:

Tieni presente che dividendo le coordinate del pixel per le dimensioni del riquadro (256) e prendendo le parti intere del risultato, si ottengono come sottoprodotto le coordinate del riquadro al livello di zoom corrente.
Esempio
L'esempio seguente mostra le coordinate di Chicago, IL: valori di latitudine/longitudine, coordinate mondiali, coordinate pixel e coordinate del riquadro. Utilizza il controllo dello zoom per visualizzare i valori delle coordinate a vari livelli di zoom.
Per vedere come sono state calcolate le coordinate, visualizza il codice.