Interfejs Maps JavaScript API korzysta z tych systemów współrzędnych:
- Wartości długości i szerokości geograficznej, które reprezentują unikalny punkt na świecie. (Google korzysta ze standardu World Geodetic System WGS84).
- Współrzędne świata, które odnoszą się do punktu na mapie w unikalny sposób.
- Współrzędne pikseli, które odnoszą się do konkretnego piksela na mapie przy określonym powiększeniu.
- współrzędne mapy, które odwołują się do określonego kafelka na mapie przy określonym powiększeniu.
Współrzędne świata
Za każdym razem, gdy interfejs API musi tłumaczyć lokalizację na świecie, aby przetłumaczyć ją na lokalizację na mapie, najpierw tłumaczy się wartości szerokości i długości geograficznej na współrzędne świat. Do wykonania tego interfejsu API jest używany projekcja RLP.
Dla ułatwienia przy obliczaniu współrzędnych piksela (patrz poniżej) zakładamy, że mapa przy poziomie powiększenia 0 to pojedynczy kafelek rozmiaru kafelka podstawowego. Następnie definiujemy współrzędne geograficzne w porównaniu ze współrzędnymi pikselowymi na poziomie powiększenia 0. Odwzorowujemy je, zmieniając liczbę i szerokość geograficzną na położenie pikseli na tym kafelku podstawowym. Ta współrzędna świata to wartość zmiennoprzecinkowa mierzona od punktu początkowego wyświetlenia mapy do określonej lokalizacji. Ponieważ jest to wartość zmiennoprzecinkowa, może być o wiele dokładniejsza niż bieżąca rozdzielczość mapy. 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 stopni i ok. 85 stopni szerokości geograficznej) i rosną w kierunku x
w kierunku wschodnim (z prawej) i zwiększają się o y
w kierunku południowym (w dół). Podstawowy kafelek Mercator w Mapach Google ma rozmiar 256 x 256 pikseli, więc użyteczna współrzędna świata to {0-256}, {0-256}
.
Odwzorowanie Merkatora ma skończoną szerokość, ale nieskończoną wysokość. Odcinamy podstawowe zdjęcia mapy za pomocą odwzorowania Merkatora na poziomie około +/- 85 stopni, aby uzyskać kwadratowy kształt mapy, który ułatwia wybór kafelków. Pamiętaj, że odwzorowanie może powodować wykrycie współrzędnych świata poza użytecznym obszarem mapy podstawowej, na przykład na podstawie biegunów.
Współrzędne Pixela
Współrzędne pikselowe odnoszą się do konkretnych pikseli na mapie przy określonym powiększeniu, natomiast współrzędne globalne odzwierciedlają bezwzględne lokalizacje podczas wyświetlania. Współrzędne pikseli są obliczane według tego wzoru:
pixelCoordinate = worldCoordinate * 2zoomLevel
Na podstawie powyższego równania pamiętaj, że każdy wzrost poziomu powiększenia jest dwukrotnie większy w kierunkach x
i y
. Dlatego każdy wyższy poziom powiększenia prowadzi do rozdzielczości 4 razy wyższej niż poprzedni. Na przykład w przypadku powiększenia na poziomie 1 mapa składa się z 4 kafelków o rozmiarze 256 x 256 pikseli. W przypadku powiększenia na poziomie 19 każdy piksel x
i y
na mapie może się odnosić do wartości od 0 do 256 * 219.
Ze względu na to, że nasze współrzędne geograficzne są określane na podstawie rozmiaru kafelka mapy, w przypadku konkretnej liczby pikseli piksel ma dokładną lokalizację w danym miejscu 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 świata.
Teraz możesz precyzyjnie oznaczać każdą lokalizację na mapie przy każdym powiększeniu. Maps JavaScript API tworzy widoczny obszar na podstawie środka powiększenia poziomu mapy (jako LatLng
) i rozmiaru elementu DOM, a następnie przekształca to okno na współrzędne geograficzne. Następnie interfejs API określa logicznie wszystkie kafelki mapy, które mieszczą się w określonych granicach piksela. Do każdego z tych fragmentów mapy są stosowane współrzędne, które znacznie ułatwiają wyświetlanie zdjęć.
Współrzędne fragmentu
Interfejs API nie może wczytać wszystkich zdjęć mapy jednocześnie, co pozwoli uzyskać wyższy poziom powiększenia. Zamiast tego interfejs API dzieli zdjęcia na poszczególnych poziomach powiększenia na zbiór kafelków mapy, które są logicznie ułożone w kolejności zrozumiałej dla aplikacji. Gdy mapa jest przewijana do nowej lokalizacji lub na nowym poziomie powiększenia, interfejs API określa, które kafelki są potrzebne, używając współrzędnych w pikselach i konwertuje te wartości na zestaw fragmentów. Współrzędne te są przypisywane za pomocą schematu ułatwiającego logiczną ocenę, który kafelek zawiera zdjęcia danego punktu.
Kafelki w Mapach Google są policzane z tego samego źródła co piksele. W przypadku implementacji odwzorowania Merkatora model Google zawsze znajduje się w północno-zachodnim rogu mapy. Wartości x
rosną w kierunku północno-wschodnim, a y
– z północy na południe. Kafelki są indeksowane przy użyciu współrzędnych x,y
z tego źródła. Na przykład przy powiększeniu na poziomie 2, gdy Ziemia jest podzielona na 16 kafelków, każdy kafelek może mieć odwołania do unikalnej pary x,y
:
Pamiętaj, że dzieląc współrzędne piksela przez rozmiar kafelka (256) i biorąc część liczb całkowitych wyniku, tworzysz ułożenie kafelka jako produkt uboczny i na obecnym poziomie powiększenia.
Przykład
Poniższy przykład pokazuje współrzędne Chicago, IL: wartości szerokości i długości geograficznej, światowe współrzędne, piksele i fragmenty. Użyj elementu sterującego powiększeniem, aby zobaczyć wartości współrzędnych na różnych poziomach powiększenia.
Aby zobaczyć, jak są obliczane współrzędne, wyświetl kod.