L'API Maps JavaScript utilizza i seguenti sistemi di coordinate:
- Valori di latitudine e longitudine, che fanno riferimento a un punto nel mondo in modo univoco. Google utilizza lo standard World Geodetic System WGS84.
- Coordinate del mondo, che fanno riferimento a un punto sulla mappa in modo univoco.
- Coordinate dei pixel, che fanno riferimento a un pixel specifico sulla mappa a un livello di zoom specifico.
- Coordinate dei riquadri, che fanno riferimento a un riquadro specifico sulla mappa a un livello di zoom specifico.
Coordinate globali
Ogni volta che l'API deve tradurre una località nel mondo in una località su una mappa, converte prima i valori di latitudine e longitudine in una coordinata mondiale. L'API utilizza la proiezione di Mercatore per eseguire questa conversione.
Per comodità nel calcolo delle coordinate dei pixel (vedi sotto), supponiamo che una mappa con livello di zoom 0 sia un singolo riquadro della dimensione del riquadro di base. Quindi definiamo le coordinate del mondo relative alle coordinate dei pixel al livello di zoom 0, utilizzando la proiezione per convertire le latitudini e le longitudini in posizioni dei pixel su questo riquadro di base. Questa coordinata globale è un valore in virgola mobile misurato dall'origine della proiezione della mappa alla posizione specifica. Tieni presente che, poiché questo valore è in virgola mobile, potrebbe essere molto più preciso della risoluzione corrente dell'immagine della mappa visualizzata. In altre parole, una coordinata del mondo è indipendente dal livello di zoom corrente.
Le coordinate del mondo 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 nella direzione x verso est (destra) e nella direzione y verso sud (giù). Poiché il riquadro di base di Google Maps con proiezione di Mercatore è di 256 x 256 pixel, lo spazio delle coordinate del mondo utilizzabile è {0-256}, {0-256}.
![]()
Tieni presente che una proiezione di Mercatore ha una larghezza finita longitudinalmente, ma un'altezza infinita latitudinalmente. Le immagini della mappa base che utilizzano la proiezione di Mercatore vengono tagliate a circa +/- 85 gradi per rendere quadrata la forma della mappa risultante, il che consente una logica più semplice per la selezione dei riquadri. Tieni presente che una proiezione potrebbe produrre coordinate del mondo al di fuori dello spazio delle coordinate utilizzabile della mappa base se, ad esempio, tracci un grafico molto vicino ai poli.
Coordinate dei pixel
Le coordinate pixel fanno riferimento a un pixel specifico sulla mappa a un livello di zoom specifico, mentre le coordinate del mondo riflettono le posizioni assolute su una determinata proiezione. Le coordinate dei pixel vengono calcolate utilizzando la seguente formula:
pixelCoordinate = worldCoordinate * 2zoomLevel
Dall'equazione precedente, tieni presente 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 genera una risoluzione quattro volte superiore rispetto al livello precedente. Ad esempio, al livello di zoom 1, la mappa è composta da 4 riquadri da 256 x 256 pixel, con uno spazio pixel di 512 x 512. Al livello di zoom 19, ogni pixel x e y
sulla mappa può essere indicato utilizzando un valore compreso tra
0 e 256 * 219.
Poiché le coordinate del mondo si basano sulle dimensioni dei riquadri 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. L'API Maps JavaScript crea un'area visibile in base al livello di zoom, al centro della mappa come LatLng e alle dimensioni dell'elemento DOM contenitore, quindi traduce questo riquadro di delimitazione in coordinate pixel. L'API determina quindi logicamente tutti i riquadri della mappa che rientrano nei limiti dei pixel specificati. Puoi fare riferimento a ciascuno di questi riquadri di mappa utilizzando le coordinate dei riquadri, che semplificano notevolmente la visualizzazione delle immagini della mappa.
Coordinate dei riquadri
L'API non può caricare tutte le immagini della mappa contemporaneamente per livelli di zoom più elevati. Invece, suddivide le immagini di ogni livello di zoom in un insieme di riquadri della mappa, che sono disposti logicamente in un ordine che l'applicazione può utilizzare. Quando una mappa scorre verso una nuova posizione o un nuovo livello di zoom, l'API determina i riquadri necessari utilizzando le coordinate dei pixel e poi traduce questi valori in un insieme di riquadri da recuperare. Assegna queste coordinate dei riquadri utilizzando uno schema che semplifica la determinazione del riquadro che contiene le immagini per un determinato punto.
I riquadri di Google Maps sono numerati a partire dalla stessa origine dei pixel. Per l'implementazione della proiezione di Mercatore da parte di Google, la
scheda 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. I riquadri vengono indicizzati utilizzando le coordinate x,y da quell'origine. Ad esempio, al livello di zoom 2, quando la Terra è divisa in 16 riquadri, ogni riquadro può essere identificato da una coppia x,y univoca:

Tieni presente che dividendo le coordinate dei pixel per le dimensioni dei riquadri (256) e prendendo le parti intere del risultato, ottieni come sottoprodotto le coordinate dei riquadri al livello di zoom corrente.
Esempio
L'esempio seguente mostra le coordinate di Chicago, Illinois: valori di latitudine/longitudine, coordinate del mondo, coordinate dei pixel e coordinate dei riquadri. 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.