Współrzędne geograficzne

Wybierz platformę: Android iOS JavaScript

Pakiet Maps SDK na iOS używa tych układów współrzędnych:

  • wartości szerokości i długości geograficznej, które odnoszą się w sposób unikalny 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 odnoszą się do konkretnego piksela na mapie przy określonym poziomie powiększenia.
  • Współrzędne kafelka, które odnoszą 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 przekłada szerokość i długość geograficzną na współrzędne świata. Do wykonania tego translacji interfejs API używa rzutowania Mercator.

Dla wygody podczas obliczania współrzędnych w pikselach (patrz poniżej) zakładamy, że mapa na poziomie powiększenia 0 to pojedynczy kafelek o rozmiarze podstawowego kafelka. Następnie określamy współrzędne świata względem współrzędnych pikseli na poziomie powiększenia 0, a odwzorowanie umożliwia przekształcenie szerokości i długości geograficznej na pozycję w pikselach na tym podstawowym kafelku. Ta współrzędna światowa to wartość zmiennoprzecinkowa mierzona od początku odwzorowania mapy do konkretnej lokalizacji. Pamiętaj, że jest to wartość zmiennoprzecinkowa, więc może być znacznie dokładniejsza niż bieżąca 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 od punktu początkowego odwzorowania Merkatora (północno-zachodni róg mapy na 180 stopniach długości geograficznej i około 85 stopni szerokości geograficznej) i wzrasta w kierunku x w kierunku x (w prawo) i wzrasta w kierunku y w kierunku południowym (w dół). Ponieważ podstawowy kafelek Map Google Mercator ma wymiary 256 x 256 pikseli, użyteczna przestrzeń współrzędnych świata to {0-256}, {0-256}.

Pamiętaj, że odwzorowanie Merkatora ma skończoną szerokość w dół i wysokość na nieskończoność. Usunęliśmy zdjęcia mapy podstawowej z użyciem odwzorowania Merkatora pod kątem około +/-85 stopni, aby powstały kształt mapy był kwadratowy, co ułatwia logikę wyboru kafelków. Pamiętaj, że w przypadku rzutowania bardzo blisko biegunów rzutowanie może na przykład pokazywać współrzędne świata poza dostępną przestrzenią współrzędnych mapy podstawowej.

Współrzędne piksela

Współrzędne piksela odnoszą się do określonego piksela na mapie przy określonym poziomie powiększenia, a współrzędne świata odzwierciedlają bezwzględne lokalizacje na danym odwzorowywaniu. Współrzędne pikseli są obliczane według tego wzoru:

pixelCoordinate = worldCoordinate * 2zoomLevel

Zgodnie z powyższym równaniem każdy rosnący poziom powiększenia jest 2 razy większy zarówno w kierunkach x, jak i y. Dlatego każdy wyższy poziom powiększenia powoduje czterokrotnie większą rozdzielczość niż poprzedni poziom. Na przykład przy poziomie powiększenia 1 mapa składa się z 4 kafelków o wymiarach 256 x 256 pikseli, co daje obszar pikselowy o wymiarach 512 x 512. Przy powiększeniu 19 do każdego piksela x i y na mapie można się odwoływać za pomocą wartości z zakresu od 0 do 256 * 219.

Ze względu na to, że współrzędne świata są oparte na rozmiarze kafelka mapy, część całkowita współrzędnych pikselowych ma wpływ na identyfikację konkretnego piksela w danej lokalizacji przy bieżącym 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żesz dokładnie wskazać każdą lokalizację na mapie przy każdym powiększeniu. Pakiet Maps SDK na iOS tworzy widoczny obszar na podstawie środka powiększenia mapy (w postaci LatLng) i rozmiaru zawierającego element DOM, a następnie przekłada ramkę ograniczającą na współrzędne w pikselach. Następnie interfejs API logicznie określa wszystkie fragmenty mapy, które znajdują się w określonych granicach podanych pikseli. Do każdego z tych fragmentów mapy odnosi się współrzędne kafelków, co znacznie upraszcza wyświetlanie obrazów.

Współrzędne kafelka

Interfejs API nie może wczytać wszystkich zdjęć map jednocześnie dla wyższych poziomów powiększenia. Zamiast tego interfejs API dzieli zdjęcia przy każdym poziomie powiększenia na zestaw fragmentó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 wymagane fragmenty za pomocą współrzędnych pikseli i przekłada te wartości na zbiór kafelków do pobrania. Te współrzędne kafelków są przypisywane za pomocą schematu, który ułatwia logiczne określenie, który kafelek zawiera obraz danego punktu.

Kafelki w Mapach Google są numerowane od tego samego początku co w przypadku pikseli. W przypadku implementacji odwzorowania Merkatora przez Google kafelek punktu początkowego znajduje się zawsze w północnym zachodnim rogu mapy, przy czym wartości x rosną z zachodu na wschód, a wartości y rosną z północy na południe. Kafelki są indeksowane za pomocą współrzędnych x,y z tego punktu początkowego. Na przykład, na poziomie powiększenia 2, gdy Ziemia jest podzielona na 16 kafelków, do każdego z nich może się odwoływać unikalna para x,y:

Mapa świata podzielona na 4 wiersze i 4 kolumny z kafelkami.

Pamiętaj, że dzieląc współrzędne pikselowe przez rozmiar kafelka (256) i wykorzystując liczby całkowite wyniku, otrzymujesz jako produkt uboczny współrzędną kafelka na bieżącym poziomie powiększenia.

Przykład

Poniższy przykład przedstawia współrzędne geograficzne Chicago (Illinois): wartości szerokości i długości geograficznej, współrzędne świata, współrzędne pikseli i współrzędne kafelków. Za pomocą elementu sterującego powiększeniem możesz wyświetlać wartości współrzędnych przy różnych poziomach powiększenia.

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