Coordinate mappa e riquadri

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.
Seleziona piattaforma: Android iOS JavaScript

L'SDK Maps per Android utilizza i seguenti sistemi di coordinate:

  • Valori di latitudine e longitudine, che fanno riferimento a un punto sul mondo in modo univoco. Google utilizza lo standard World Geodetic System WGS84.
  • Le coordinate globali, che fanno riferimento a un punto sulla mappa in modo univoco.
  • Coordinate di 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à del mondo in una località su una mappa, traduce innanzitutto i valori della latitudine e della longitudine in una coordinata world. L'API utilizza la proiezione di Mercator per eseguire la traduzione.

Per comodità nel calcolo delle coordinate dei pixel (vedi sotto), supponiamo che una mappa al livello di zoom 0 sia un singolo riquadro delle dimensioni di quest'ultimo. Definiamo quindi le coordinate globali in relazione alle coordinate di pixel al livello di zoom 0 e 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 località specifica. Poiché questo valore è in virgola mobile, potrebbe essere molto più preciso dell'attuale risoluzione dell'immagine visualizzata. Le coordinate globali sono indipendenti dal livello di zoom corrente, in altre parole.

Le coordinate globali in Google Maps vengono misurate dall'origine della proiezione di Mercator (l'angolo nord-ovest della mappa a 180 gradi di longitudine e circa 85 gradi di latitudine) e aumentano nella direzione di x verso est (a destra) e di aumento in direzione y verso sud (in basso). Poiché il riquadro di base Google Maps di Mercator ha una dimensione di 256 x 256 pixel, lo spazio di coordinamento utilizzabile del mondo è {0-256}, {0-256}.

Tieni presente che una proiezione di Mercatore ha una larghezza limitata, longitudinalmente, ma un'altezza infinita latitudinalmente. Le immagini della mappa di base vengono ritagliate utilizzando la proiezione di Mercator a circa +/- 85 gradi per rendere quadrata la forma della mappa risultante, per consentire una logica più semplice per la selezione delle schede. Tieni presente, ad esempio, che una proiezione potrebbe produrre coordinate dal mondo al di fuori dello spazio di coordinate utilizzabile della mappa di base se traccia molto vicino ai poli.

Coordinate di Pixel

Le coordinate di Pixel fanno riferimento a un pixel specifico sulla mappa a un livello di zoom specifico, mentre le coordinate di tutto il mondo riflettono le posizioni assolute di una determinata proiezione. Le coordinate di Pixel vengono calcolate utilizzando la formula seguente:

pixelCoordinate = worldCoordinate * 2zoomLevel

Dall'equazione di cui sopra, tieni presente che ogni livello di zoom in aumento è due volte più grande in entrambe le direzioni x e 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 256x256 pixel, che generano uno spazio di pixel da 512x512. 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 globali sulle dimensioni del riquadro della mappa, una parte intera di una coordinata di 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 in pixel sono uguali a quelle del mondo.

Ora abbiamo a disposizione un modo per indicare con precisione ogni posizione sulla mappa, a ogni livello di zoom. L'SDK di Maps per Android crea un'area visibile in base al livello di zoom della mappa (come LatLng) e alle dimensioni dell'elemento DOM contenitore; questo riquadro di traduzione viene tradotto in coordinate di pixel. L'API determina quindi logicamente tutti i riquadri della mappa che rientrano nei limiti di pixel specificati. Ognuno di questi riquadri della mappa viene fatto riferimento utilizzando le coperture del riquadro, che semplificano notevolmente la visualizzazione delle immagini della mappa.

Coordinate di piastrelle

L'API non può caricare tutte le immagini della mappa in una sola volta per livelli di zoom più elevati. Piuttosto, l'API suddivide le immagini a ogni livello di zoom in un insieme di riquadri di mappa, che sono logicamente disposti in un ordine facilmente comprensibile dall'applicazione. Quando una mappa scorre fino a una nuova posizione o a un nuovo livello di zoom, l'API determina quali riquadri sono necessari utilizzando le coordinate in pixel e converte tali valori in un insieme di riquadri da recuperare. Queste coordinate vengono assegnate utilizzando uno schema che semplifica la logica per determinare quale riquadro contiene le immagini per un determinato punto.

I riquadri in Google Maps sono numerati con la stessa origine dei pixel. Per l'implementazione di Google della proiezione di Mercator, il riquadro di origine si trova sempre nell'angolo nord-ovest della mappa, con valori x aumentati da ovest a est e valori y che vanno da nord a sud. I riquadri vengono indicizzati utilizzando le coordinate x,y di quell'origine. Ad esempio, al livello di zoom 2, quando il valore della Terra è diviso in 16 riquadri, a ogni riquadro può essere fatto riferimento una coppia x,y univoca:

Mappa del mondo divisa in quattro righe e quattro colonne di riquadri.

Tieni presente che dividendo le coordinate di pixel per le dimensioni del riquadro (256) e dividendo le parti intere del risultato, ottieni come coordinata secondaria il livello di zoom corrente.

Esempio

L'esempio seguente mostra le coordinate per Chicago, IL: valori di latitudine/longitudine, coordinate del mondo, coordinate di pixel e coordinate del riquadro. Utilizza il controllo dello zoom per vedere i valori delle coordinate ai vari livelli di zoom.

Per vedere come sono state calcolate le coordinate, visualizza il codice.