Interfejs Maps JavaScript API wykorzystuje te układy 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 geograficzne, które jednoznacznie wskazują punkt na mapie;
- współrzędne pikseli, które odwołują 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
Gdy interfejs API musi przekształcić lokalizację na świecie w lokalizację na mapie, najpierw przekształca wartości szerokości i długości geograficznej w współrzędne świata. Interfejs API używa projekcji Mercatora do wykonania tej operacji.
Dla wygody przy obliczaniu współrzędnych pikseli (patrz poniżej) przyjmujemy, że mapa na poziomie powiększenia 0 to pojedyncza podstawowa plansza. Następnie definiujemy współrzędne świata w stosunku do współrzędnych pikseli na poziomie powiększenia 0, używając projekcji do konwersji szerokości i długości geograficznej na pozycje pikseli na tej podstawowej płycie. 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 początku odwzorowania Merkatora (północno-zachodni róg mapy na 180 stopniach długości geograficznej i około 85 stopni szerokości geograficznej) oraz rosnący w kierunku x
w kierunku x
(w prawo) i wzrasta w kierunku y
w kierunku południowym (dół). Ponieważ podstawowa płytka Map Google w układzie Mercatora ma rozmiar 256 x 256 pikseli, dostępna przestrzeń współrzędnych świata to {0-256}, {0-256}
.
Pamiętaj, że w projekcji Mercatora szerokość jest ograniczona w kierunku południkowym, ale wysokość jest nieskończona w kierunku równoleżnikowym. Obraz mapy bazowej jest przycinany przy użyciu projekcji Mercatora przy około +/- 85 stopniach, aby uzyskać kwadratowy kształt mapy. Pozwala to na uproszczenie logiki wyboru płytek. Pamiętaj, że projekcja może wygenerować współrzędne globalne spoza dostępnej przestrzeni współrzędnych mapy bazowej, jeśli na przykład zaznaczysz punkt bardzo blisko biegunów.
współrzędne piksela,
Współrzędne piksela odnoszą się do konkretnego piksela na mapie przy określonym powiększeniu, podczas gdy współrzędne świata odzwierciedlają bezwzględne położenie na danej mapie. 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 x
i y
jest dwukrotnie większy. Dlatego każdy wyższy poziom powiększenia powoduje, że rozdzielczość jest 4 razy większa niż w przypadku poprzedniego poziomu. Na przykład przy powiększeniu 1 mapa składa się z 4 płytek o wymiarach 256 x 256 pikseli, co daje przestrzeń pikseli 512 x 512. Na poziomie powiększenia 19 każdy piksel x
i y
na mapie może być wskazywany za pomocą wartości z przedziału od 0 do 256 * 219.
Ponieważ współrzędne globalne są oparte na rozmiarze płytki mapy, część całkowita współrzędnej piksela służy do identyfikacji dokładnego piksela w danej lokalizacji na bieżącym poziomie powiększenia. Pamiętaj, że w przypadku poziomu powiększenia 0 współrzędne pikseli są równe współrzędnym globalnym.
Teraz możesz dokładnie wskazać każdą lokalizację na mapie przy każdym poziomie powiększenia. Interfejs Maps JavaScript API tworzy widoczny obszar na podstawie środka mapy (w postaci elementu LatLng
) i rozmiaru zawierającego ją elementu DOM, a następnie przekłada tę ramkę ograniczającą na współrzędne piksela. Następnie interfejs API określa logicznie wszystkie płytki mapy, które znajdują się w danych granicach pikseli. Każda z tych płytek mapy jest wskazywana za pomocą koordynat płytki, które znacznie ułatwiają wyświetlanie obrazów mapy.
współrzędne mapy,
Interfejs API nie może wczytać wszystkich obrazów mapy naraz na wyższych poziomach powiększenia. Zamiast tego interfejs API dzieli obrazy na każdym poziomie powiększenia na zestawy kafelków mapy, które są logicznie uporządkowane w taki sposób, aby aplikacja je zrozumiała. Gdy mapa przewija się do nowej lokalizacji lub nowego poziomu powiększenia, interfejs API określa, które płytki są potrzebne, na podstawie współrzędnych pikseli, i przekształca te wartości w zbiór płytek do pobrania. Te współrzędne są przypisywane za pomocą schematu, który pozwala łatwo określić, która płytka zawiera obrazy dla danego punktu.
Płytki w Mapach Google są numerowane od tego samego punktu początkowego co piksele. 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 przy powiększeniu 2, gdy Ziemia jest podzielona na 16 płytek, każda z nich może być oznaczona za pomocą niepowtarzalnej pary x,y
:
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
Ten przykład przedstawia współrzędne Chicago w Illinois: wartości szerokości i długości geograficznej, współrzędne światowe, współrzędne pikseli i współrzędne płytki. Za pomocą elementu sterującego powiększeniem możesz wyświetlać wartości współrzędnych przy różnych poziomach powiększenia.
Aby sprawdzić, jak zostały obliczone współrzędne, otwórz kod.