Współrzędne mapy i kafelków

Wybierz platformę: Android iOS JavaScript

Pakiet Maps SDK na Androida korzysta z tych systemów współrzędnych:

  • Wartości szerokości i długości geograficznej, które jednoznacznie odwołują się do punktu na świecie. Google korzysta ze standardu World Geodetic System WGS84.
  • Współrzędne świata, które jednoznacznie odwołują się do punktu na mapie.
  • Współrzędne pikseli, które odnoszą się do konkretnego piksela na mapie na określonym poziomie powiększenia.
  • Współrzędne mapy, które odnoszą się do konkretnego fragmentu mapy na określonym poziomie powiększenia.

Współrzędne świata

Gdy interfejs API musi przetłumaczyć lokalizację na świecie na lokalizację na mapie, najpierw przekształca wartości szerokości i długości geograficznej na współrzędne światowe. Interfejs API używa do tego projekcji Mercatora.

Dla ułatwienia obliczania współrzędnych pikseli (patrz poniżej) zakładamy, że mapa na poziomie powiększenia 0 to jeden kafelek o rozmiarze kafelka podstawowego. Następnie definiujemy współrzędne świata względem współrzędnych pikseli na poziomie powiększenia 0, używając projekcji do przekształcania szerokości i długości geograficznej na pozycje pikseli na tym kafelku bazowym. Ten współrzędny punkt świata to wartość zmiennoprzecinkowa mierzona od początku projekcji mapy do określonej lokalizacji. Pamiętaj, że ta wartość jest liczbą zmiennoprzecinkową, więc może być znacznie dokładniejsza niż bieżąca rozdzielczość wyświetlanego obrazu mapy. Współrzędna świata jest niezależna od bieżącego poziomu powiększenia.

Współrzędne świata w Mapach Google są mierzone od początku projekcji Merkatora (północno-zachodni róg mapy przy 180 stopniach długości geograficznej i około 85 stopniach szerokości geograficznej) i wzrasta w kierunku x na wschód (w prawo) oraz w kierunku y na południe (w dół). Podstawowy kafelek Map Google w projekcji Mercatora ma wymiary 256 x 256 pikseli, więc użyteczna przestrzeń współrzędnych świata to {0-256}, {0-256}.

Pamiętaj, że projekcja Mercatora ma skończoną szerokość wzdłużnie, ale nieskończoną wysokość w kierunku poprzecznym. Obcinamy zdjęcia mapy podstawowej, korzystając z odwzorowania Merkatora, przy około +/- 85 stopniach, aby uzyskać kwadratowy kształt mapy, co ułatwia wybór fragmentów mapy. Pamiętaj, że projekcja może generować współrzędne świata poza użyteczną przestrzenią współrzędnych mapy bazowej, jeśli na przykład wykreślasz punkty bardzo blisko biegunów.

Współrzędne piksela

Współrzędne pikseli odnoszą się do konkretnego piksela na mapie na określonym poziomie powiększenia, natomiast współrzędne geograficzne odzwierciedlają bezwzględne lokalizacje w danej projekcji. Współrzędne pikseli są obliczane według tego wzoru:

pixelCoordinate = worldCoordinate * 2zoomLevel

Z powyższego równania wynika, że każdy kolejny poziom powiększenia jest 2 razy większy w kierunku x i y. Dlatego każdy wyższy poziom powiększenia zapewnia rozdzielczość 4 razy większą niż poprzedni. Na przykład na poziomie powiększenia 1 mapa składa się z 4 kafelków o wymiarach 256 x 256 pikseli, co daje przestrzeń pikseli o wymiarach 512 x 512. Na poziomie powiększenia 19 do każdego piksela x i y na mapie można się odwołać za pomocą wartości z przedziału od 0 do 256 * 219.

Ponieważ współrzędne świata są oparte na rozmiarze kafelka mapy, część całkowita współrzędnych piksela identyfikuje dokładny piksel w danej lokalizacji na bieżącym poziomie powiększenia. Pamiętaj, że przy poziomie powiększenia 0 współrzędne pikseli są równe współrzędnym świata.

Te systemy współrzędnych dokładnie oznaczają każdą lokalizację na mapie na każdym poziomie powiększenia. Pakiet Maps SDK na Androida tworzy widoczny obszar na podstawie poziomu powiększenia, środka mapy jako LatLng i rozmiaru zawierającego element DOM, a następnie przekształca tę ramkę ograniczającą na współrzędne pikseli. Interfejs API logicznie określa wszystkie kafelki mapy, które mieszczą się w podanych granicach pikseli. Do każdego z tych kafelków mapy odwołujesz się za pomocą współrzędnych mapy, co znacznie upraszcza wyświetlanie obrazów mapy.

Współrzędne mapy

Interfejs API nie może załadować wszystkich zdjęć mapy naraz przy większych poziomach powiększenia. Zamiast tego dzieli zdjęcia na każdym poziomie powiększenia na zestaw kafelków mapy, które są logicznie ułożone w kolejności, z której może korzystać Twoja aplikacja. Gdy mapa przewija się do nowej lokalizacji lub nowego poziomu powiększenia, interfejs API określa, które kafelki są potrzebne, używając współrzędnych pikseli, a następnie przekształca te wartości w zestaw kafelków do pobrania. Przypisuje on te współrzędne mapy za pomocą schematu, który ułatwia określenie, który fragment mapy zawiera zdjęcia dla danego punktu.

Kafelki w Mapach Google są numerowane od tego samego punktu początkowego co piksele. W przypadku implementacji rzutu Merkatora przez Google kafel źródłowy zawsze znajduje się w północno-zachodnim rogu mapy, a wartości x rosną z zachodu na wschód, a wartości y – z północy na południe. Kafelki są indeksowane przy użyciu x,y współrzędnych pochodzących z tego punktu. Na przykład na poziomie powiększenia 2, gdy Ziemia jest podzielona na 16 kafelków, do każdego z nich można się odwołać za pomocą unikalnej pary x,y:

Mapa świata podzielona na 4 wiersze i 4 kolumny kafelków.

Pamiętaj, że dzieląc współrzędne pikseli przez rozmiar kafelka (256) i wybierając części całkowite wyniku, uzyskasz przy okazji współrzędne kafelka na bieżącym poziomie powiększenia.

Przykład

W przykładzie poniżej wyświetlają się współrzędne Chicago w stanie Illinois: wartości szerokości i długości geograficznej, współrzędne świata, współrzędne pikseli i współrzędne kafelków. Użyj elementu sterującego powiększeniem, aby wyświetlić wartości współrzędnych na różnych poziomach powiększenia.

Aby zobaczyć, jak obliczono współrzędne, wyświetl kod.