Współrzędne geograficzne

Wybierz platformę: Android iOS JavaScript

Pakiet SDK Map Google na Androida korzysta z tych układów współrzędnych:

  • Wartości szerokości i długości geograficznej, które odnoszą się w unikalny sposób do punktu na świecie. (Google używa standardu World Geodetic System WGS84).
  • Współrzędne świata, które jednoznacznie odnoszą się do punktu na mapie.
  • Współrzędne piksela, które odwołują się do konkretnego piksela na mapie przy określonym powiększeniu.
  • Współrzędne kafelka, które odwołują się do konkretnego kafelka na mapie przy określonym powiększeniu.

Współrzędne świata

Za każdym razem, gdy interfejs API musi przetłumaczyć lokalizację na świecie na lokalizację na mapie, najpierw przekształca szerokość i długość geograficzną na współrzędne światowe. Do wykonania tego tłumaczenia interfejs API wykorzystuje projekcję licznika.

Dla wygody przy obliczaniu współrzędnych w pikselach (patrz poniżej) zakładamy, że mapa przy powiększeniu 0 jest pojedynczym kafelkiem wielkości elementu podstawowego. Następnie określamy współrzędne świata względem współrzędnych piksela na poziomie powiększenia 0 – korzystając z odwzorowania, aby przekonwertować szerokości i długości geograficzne na pozycje pikseli na tym kafelku podstawowym. Ta współrzędna światowa to wartość zmiennoprzecinkowa mierzona od punktu początkowego odwzorowania mapy do określonej lokalizacji. Pamiętaj, że ta wartość jest wartością zmiennoprzecinkową, więc może być znacznie dokładniejsza niż obecna rozdzielczość wyświetlanego obrazu mapy. Inaczej mówiąc, współrzędna światowa jest niezależna od bieżącego poziomu powiększenia.

Współrzędne świata w Mapach Google są mierzone na podstawie punktu początkowego odwzorowania Merkator (północno-zachodni róg mapy przy 180 stopniach długości geograficznej i około 85 stopni szerokości geograficznej) oraz wzrost w kierunku x w kierunku wschodu (w prawo) i wzrost w kierunku y w kierunku południa (w dół). Podstawowy kafelek Map Google z Mercatorem ma wymiary 256 x 256 pikseli, więc użyteczna przestrzeń współrzędnych świata to {0-256}, {0-256}.

Zwróć uwagę, że odwzorowanie Merkatora ma skończoną szerokość geograficzną, ale nieskończoną szerokość geograficzną. Korzystając z odwzorowania Merkatora pod kątem około +/-85 stopni, wycinamy zdjęcia mapy podstawowej, aby powstały kształt mapy był kwadratowy, co ułatwia wybór kafelków. Pamiętaj, że odwzorowanie może dawać współrzędne świata poza użytkową przestrzenią współrzędnych mapy podstawowej, na przykład jeśli rysujesz bardzo blisko biegunów.

Współrzędne piksela

Współrzędne piksela odnoszą się do konkretnego piksela na mapie przy określonym powiększeniu, natomiast współrzędne światowe odzwierciedlają lokalizacje bezwzględne dla danej odwzorowania. Współrzędne piksela są obliczane w ten sposób:

pixelCoordinate = worldCoordinate * 2zoomLevel

Na podstawie powyższego równania każdy poziom powiększenia jest 2 razy większy w kierunkach x i y. Oznacza to, że każdy wyższy poziom powiększenia skutkuje 4 razy większą rozdzielczością niż poprzedni. Na przykład przy powiększeniu 1. mapa składa się z 4 kafelków o wymiarach 256 x 256 pikseli, co daje obszar pikseli od 512 x 512. Przy powiększeniu 19 każdy piksel x i y na mapie można odwoływać się za pomocą wartości z zakresu od 0 do 256 * 219.

Ze względu na to, że współrzędne świata opierają się na rozmiarze kafelka mapy, część całkowita we współrzędnych piksela wskazuje dokładny piksel w danej lokalizacji przy obecnym poziomie powiększenia. Pamiętaj, że w przypadku powiększenia na poziomie 0 współrzędne pikseli są równe współrzędnych świata.

Teraz możemy dokładnie oznaczyć każdą lokalizację na mapie przy każdym powiększeniu. Pakiet Maps SDK na Androida tworzy widoczny obszar z uwzględnieniem środka poziomu powiększenia mapy (jako LatLng) i rozmiaru zawierającego element DOM, po czym przekształca ramkę ograniczającą na współrzędne pikseli. Następnie interfejs API logicznie określa wszystkie kafelki mapy, które mieszczą się w określonych granicach pikseli. Do każdego z tych fragmentów mapy odnosi się odwołanie za pomocą współrzędnych, które znacznie ułatwiają wyświetlanie zdjęć mapy.

Współrzędne kafelka

Interfejs API nie może wczytać wszystkich obrazów mapy jednocześnie w przypadku większych poziomów powiększenia. Zamiast tego interfejs API dzieli zdjęcia przy każdym poziomie powiększenia na zestaw kafelków mapy, które są logicznie ułożone w kolejności zrozumiałej dla aplikacji. Gdy mapa przewija się do nowej lokalizacji lub do nowego poziomu powiększenia, interfejs API określa potrzebne kafelki za pomocą współrzędnych pikseli i przekształca je na zbiór kafelków do pobrania. Te współrzędne są przypisywane za pomocą schematu, który ułatwia logiczne określenie, który kafelek zawiera zdjęcia danego punktu.

Kafelki w Mapach Google są numerowane z tego samego pochodzenia co piksele. W przypadku implementacji odwzorowania Merkator przez Google kafelek origin znajduje się zawsze w północno-zachodnim rogu mapy, gdzie 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 współrzędnych x,y z tego źródła. Na przykład przy powiększeniu 2, gdy Ziemia jest podzielona na 16 kafelków, do każdego kafelka może się odwoływać unikalna para x,y:

Mapa świata podzielona na cztery rzędy i cztery kolumny z kafelkami.

Pamiętaj, że dzieląc współrzędne w pikselu przez rozmiar kafelka (256) i podzielając części całkowite, otrzymujesz jako iloczyn uboczny współrzędne kafelka przy bieżącym poziomie powiększenia.

Przykład

Poniższy przykład pokazuje współrzędne lokalizacji Chicago (IL): wartości szerokości i długości geograficznej, współrzędne świata, współrzędne w pikselach i współrzędne kafelków. Użyj elementów sterujących powiększeniem, aby wyświetlić wartości współrzędnych przy różnych poziomach powiększenia.

Aby sprawdzić, jak są obliczane współrzędne, wyświetl kod.