Współrzędne mapy i kafelków

Wybierz platformę: Android iOS JavaScript

Interfejs Maps JavaScript API korzysta z 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 pikseli, które odnoszą się do konkretnego piksela na mapie przy 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

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. Interfejs API używa do tego 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 konwersji szerokości i długości geograficznej na pozycje pikseli na tym kafelku podstawowym. Ta współrzędna świata to wartość zmiennoprzecinkowa mierzona od punktu początkowego 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 na 180 stopniach długości geograficznej i około 85 stopniach szerokości geograficznej) i rosną w kierunku x na wschód (w prawo) oraz w kierunku y na południe (w dół). Podstawowy kafelek Map Google w odwzorowaniu Merkatora ma wymiary 256 x 256 pikseli, więc użyteczna przestrzeń współrzędnych świata to {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ą przycinane 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 punkty bardzo blisko biegunów.

Współrzędne pikseli

Współrzędne pikseli 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 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 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 pozwala określić dokładny piksel w danej lokalizacji na bieżącym poziomie powiększenia. Pamiętaj, że na 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. Interfejs Maps JavaScript API 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ą na współrzędne pikseli. Następnie interfejs API logicznie określa wszystkie kafelki mapy, które znajdują się w podanych granicach pikseli. Do każdego z tych kafelków mapy odwołujesz się za pomocą współrzędnych kafelka, 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, w jakiej aplikacja może ich używać. 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 te współrzędne mapy za pomocą schematu, który ułatwia określenie, która mapa zawiera zdjęcia dla danego punktu.

Kafelek w Mapach Google jest numerowany 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, przy czym wartości x rosną z zachodu na wschód, a 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ędne 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 pikseli i współrzędne mapy. Użyj elementu sterującego powiększeniem, 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.