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 kuli ziemskiej; (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 odwołują się do konkretnego kafelka na mapie przy określonym poziomie powiększenia;
Współrzędne na mapie ś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 tego tłumaczenia.
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 świata to wartość zmiennoprzecinkowa zmierzona od początku projekcji mapy do konkretnej lokalizacji. Pamiętaj, że ta wartość jest wartością zmiennoprzecinkową, może być więc znacznie dokładniejsza niż bieżąca rozdzielczość wyświetlanego obrazu mapy. Innymi słowy, współrzędna globalna jest niezależna od bieżącego poziomu powiększenia.
Współrzędne geograficzne na mapie świata w Mapach Google są mierzone od punktu początkowego projekcji Mercatora (północno-zachodni róg mapy o długości geograficznej 180° i szerokości geograficznej około 85°) i wzrastają w kierunku x
na wschód (w prawo) i wzrastają w kierunku y
na południe (w 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 równoleżnikowym, ale wysokość jest nieskończona w kierunku południka. 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 globalne 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 przy 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żemy dokładnie oznaczać na mapie każdą lokalizację na każdym poziomie powiększenia. Interfejs Maps JavaScript API tworzy widok na podstawie poziomu powiększenia środka mapy (jako LatLng
) i rozmiaru elementu DOM zawierającego oraz przekształca ten ograniczający obszar w współrzędne pikseli. 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, korzystając z koordynat 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 przez Google projekcji Mercatora kafelek początkowy znajduje się zawsze w narożniku północno-zachodnim mapy, a wartości x
rosną od zachodu do wschodu, a wartości y
– od północy do południa. Płytki są indeksowane za pomocą współrzędnych x,y
z tego punktu wyjścia. 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 pikseli przez rozmiar płytki (256) i biorąc pod uwagę całkowitą część wyniku, otrzymasz jako produkt uboczny współrzędną płytki na bieżącym poziomie powiększenia.
Przykład
Ten przykład przedstawia współrzędne Chicago w Illinois: współrzędne szerokości i długości geograficznej, współrzędne świata, współrzędne pikseli i współrzędne płytki. Użyj suwaka powiększenia, aby zobaczyć wartości współrzędnych na różnych poziomach powiększenia.
Aby sprawdzić, jak zostały obliczone współrzędne, otwórz kod.