Współrzędne mapy i kafelków

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 jednoznacznie wskazują punkt na świecie. Google używa standardu World Geodetic System WGS84.
  • Współrzędne świata, które jednoznacznie wskazują punkt na mapie.
  • Współrzędne piksela, 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 kafelka na mapie na określonym poziomie powiększenia.

Współrzędne świata

Za każdym razem, gdy interfejs API musi przełożyć lokalizację na świecie na lokalizację na mapie, najpierw przekłada wartości szerokości i długości geograficznej na współrzędne świata. Do wykonania tego przekształcenia interfejs API używa odwzorowania walcowego równokątnego.

Dla ułatwienia obliczania współrzędnych pikseli (patrz poniżej) zakładamy, że mapa na poziomie powiększenia 0 jest pojedynczym kafelkiem o podstawowym rozmiarze. Następnie definiujemy współrzędne świata względem współrzędnych pikseli na poziomie powiększenia 0, używając rzutu do przekształcania szerokości i długości geograficznej na pozycje pikseli na tym kafelku podstawowym. Ta współrzędna świata jest wartością zmiennoprzecinkową mierzoną od początku rzutu mapy do określonej lokalizacji. Pamiętaj, że ta wartość jest wartością zmiennoprzecinkową, więc może być znacznie bardziej precyzyjna niż bieżąca rozdzielczość wyświetlanego obrazu mapy. Innymi słowy, 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 odwzorowania walcowego równokątnego (północno-zachodni róg mapy przy 180 stopniach długości geograficznej i około 85 stopniach szerokości geograficznej). Wartości rosną w kierunku x na wschód (w prawo) i w kierunku y na południe (w dół). Podstawowy kafelek Map Google w odwzorowaniu Merkatora ma wymiary 256 x 256 pikseli, więc przestrzeń współrzędnych świata wynosi {0-256}, {0-256}.

Zwróć uwagę, że rzut Mercatora ma skończoną szerokość wzdłuż długości geograficznej, ale nieskończoną wysokość wzdłuż szerokości geograficznej. Obrazy mapy podstawowej wykorzystujące odwzorowanie Merkatora są odcinane na poziomie około +/- 85 stopni, aby uzyskać kwadratowy kształt mapy, co ułatwia wybór kafelków. Pamiętaj, że rzutowanie może wygenerować współrzędne świata poza użyteczną przestrzenią współrzędnych mapy podstawowej, jeśli na przykład wykreślisz punkt bardzo blisko biegunów.

Współrzędne pikseli

Współrzędne piksela odnoszą się do konkretnego piksela na mapie przy określonym poziomie powiększenia, natomiast współrzędne świata odzwierciedlają bezwzględne lokalizacje w danym rzucie. Współrzędne piksela 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 zarówno w kierunku x, jak i y. Dlatego każdy wyższy poziom powiększenia zapewnia rozdzielczość 4 razy większą niż poprzedni poziom. 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 każdy piksel x i y na mapie można odwołać za pomocą wartości z zakresu od 0 do 256 * 219.

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

Te układy współrzędnych dokładnie oznaczają każdą lokalizację na mapie na każdym poziomie powiększenia. Pakiet Maps SDK na iOS tworzy widoczny obszar na podstawie poziomu powiększenia, środka mapy jako LatLng i rozmiaru zawierającego go elementu DOM, a następnie przekształca tę ramkę ograniczającą we współrzędne pikseli. Następnie interfejs API logicznie określa wszystkie kafelki mapy, które znajdują się w podanych granicach pikseli. Każdy z tych kafelków mapy jest określany za pomocą współrzędnych mapy, co znacznie upraszcza wyświetlanie zdjęć mapy.

Współrzędne mapy

Interfejs API nie może wczytać wszystkich zdjęć mapy naraz przy wyższych 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ć aplikacja. Gdy mapa zostanie przewinięta 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 te współrzędne mapy za pomocą schematu, który ułatwia określenie, który kafelek zawiera zdjęcia dla danego punktu.

Kafelki w Mapach Google są numerowane od tego samego punktu początkowego co piksele. W przypadku implementacji odwzorowania walcowego równokątnego przez Google kafelek początkowy zawsze znajduje się w północno-zachodnim rogu mapy, a wartości x rosną z zachodu na wschód, natomiast wartości y – 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 kafelka można odwoływać się za pomocą unikalnej pary x,y:

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

Zauważ, że dzieląc współrzędne piksela przez rozmiar fragmentu mapy (256) i biorąc części całkowite wyniku, otrzymujesz jako produkt uboczny współrzędną mapy na bieżącym poziomie powiększenia.

Przykład

W przykładzie poniżej pokazujemy współrzędne Chicago w stanie Illinois: wartości szerokości i długości geograficznej, współrzędne świata, współrzędne piksela i współrzędne mapy. Użyj suwaka powiększenia, aby zobaczyć wartości współrzędnych na różnych poziomach powiększenia.

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