Maps SDK na Androida używa tych układów współrzędnych:
- szerokości i długości geograficznej, które odnoszą się do punktu na świat w niepowtarzalny sposób. (Google korzysta z Świat geodetyczny Standard WGS84).
- Współrzędne świata, które jednoznacznie odnoszą się do punktu na mapie.
- Współrzędne piksela, które odnoszą się do konkretnego piksela na mapie odpowiedni poziom powiększenia.
- Współrzędne kafelka, które odnoszą się do konkretnego kafelka na mapie odpowiedni poziom powiększenia.
Współrzędne świata
Za każdym razem, gdy interfejs API musi przetłumaczyć lokalizację na świecie na lokalizację na mapie, przekształca wartości szerokości i długości geograficznej cały świat. Interfejs API wykorzystuje Mercator odwzorowanie, by wykonać to tłumaczenie.
Dla wygody obliczania współrzędnych w pikselach (patrz poniżej) zakładamy, że mapa w powiększeniu 0 to pojedynczy kafelek o rozmiarze kafelka podstawowego. Następnie określamy współrzędne świata względem współrzędnych pikseli przy powiększeniu poziomu 0, używając odwzorowania do konwertowania szerokości i długości geograficznej na pozycji pikseli na tym podstawowym kafelku. Ta współrzędna świata jest pływająca wartość punktowa mierzona od początku odwzorowania mapy do konkretnej lokalizacji. Pamiętaj, że jest to wartość zmiennoprzecinkowa, może być znacznie dokładniejsza niż bieżąca rozdzielczość obrazu mapy które są wyświetlane. Współrzędna światowa jest niezależna od bieżącego poziomu powiększenia, Innymi słowy.
Współrzędne świata w Mapach Google są mierzone na podstawie współrzędnych Merkatora.
początek odwzorowania (północno-zachodni róg mapy, 180 stopni
długość i około 85 stopni szerokości geograficznej) i wzrost w
x
w kierunku wschodu (w prawo) i zwiększa się
kierunek y
w kierunku południowym (w dół). Ponieważ
podstawowy kafelek Map Google Mercator ma wymiary 256 x 256 pikseli.
przestrzeń współrzędna świata to {0-256}, {0-256}
.
Zauważ, że odwzorowanie Merkatora ma wartość skończoną szerokości i długości, ale nieskończonej wysokości. Przecinamy podstawowe zdjęcia mapy z użyciem odwzorowania Merkatora: +/- 85 stopni, aby wynikowy kształt mapy łatwiejszą logikę wyboru kafelków. Pamiętaj, że rzutowanie może dawać współrzędne świata poza użytecznej przestrzeni mapy podstawowej np. w pobliżu biegunów.
Współrzędne piksela
Współrzędne piksela odnoszą się do konkretnego piksela na mapie, określonego poziomu powiększenia, a współrzędne świata odzwierciedlają absolutne położenie dla danej prognozy. Współrzędne pikseli są obliczane według tego wzoru wzór:
pixelCoordinate = worldCoordinate * 2zoomLevel
W równaniu powyżej widać, że każdy rosnący poziom powiększenia
jest 2 razy większy w wymiarach x
i y
wskazówek dojazdu. Dlatego każdy większy poziom powiększenia daje po 4
razy więcej niż poprzedni poziom. Na przykład: przy powiększeniu 1.
mapa składa się z 4 kafelków o wymiarach 256 x 256 pikseli,
od formatu 512 x 512. Przy poziomie powiększenia 19 każdy piksel: x
i y
na mapie można przywołać za pomocą wartości między
0 i 256 * 219.
Ponieważ współrzędne świata są ustalane na podstawie rozmiaru kafelka mapy, Część całkowita współrzędnej piksela ma wpływ na identyfikację dokładnego piksela przy bieżącym powiększeniu. Pamiętaj, że przy poziomie powiększenia 0 współrzędne w pikselach są równe współrzędnych świata.
Mamy obecnie sposób na
precyzyjne oznaczenie każdej lokalizacji na mapie,
przy każdym powiększeniu. Pakiet Maps SDK na Androida tworzy widoczny obszar
ze środkami poziomu powiększenia mapy (w postaci LatLng
) oraz
rozmiaru elementu DOM,
przekłada tę ramkę ograniczającą na współrzędne pikselowe. Następnie interfejs API określa,
logicznie wszystkie fragmenty mapy, które znajdują się w określonych granicach pikseli. Każda z tych wartości:
odwołanie do tych fragmentów mapy:
współrzędne mapy, które znacznie ułatwiają wyświetlanie mapy.
zdjęcia.
Współrzędne kafelka
Interfejs API nie może wczytać wszystkich zdjęć map jednocześnie dla wyższych poziomów powiększenia. Zamiast tego interfejs API dzieli zdjęcia na każdym poziomie powiększenia. w zestaw kafelków, które są logicznie ułożone w kolejności Twojej aplikacji. Gdy mapa przewinie się do nowej lub nowej lokalizacji poziom powiększenia, interfejs API określa wymagane kafelki za pomocą współrzędnych pikseli, i przekształca te wartości w zbiór kafelków do pobrania. Te współrzędne są przypisywane za pomocą schemat, który pozwala logicznie łatwo ustalić, który kafelek zawiera zdjęcia wybranego punktu.
Kafelki w Mapach Google są numerowane z tego samego punktu początkowego
w pikselach. Podczas implementacji przez Google odwzorowywania Merkatora
kafelek początkowy jest zawsze w północno-zachodnim rogu
mapy, przy czym wartości x
rosną od zachodu do
wschód i y
wartości rosną z północy na południe. Kafelki
są indeksowane za pomocą współrzędnych x,y
z tego punktu początkowego. Dla:
na przykład przy powiększeniu drugim, gdy Ziemia jest podzielona na 16 kafelków,
do każdego kafelka może się odwoływać unikalna para x,y
:
Pamiętaj, że dzieląc współrzędne pikseli przez rozmiar kafelka (256) i analizując całkowite części wyniku, otrzymujesz jako iloczyn uboczny współrzędną kafelka przy bieżącym poziomie powiększenia.
Przykład
Poniższy przykład przedstawia współrzędne geograficzne Chicago w stanie Illinois: wartości szerokości i długości geograficznej, współrzędnych świata, współrzędnych pikseli oraz kafelków . Za pomocą elementu sterującego powiększeniem możesz wyświetlać wartości współrzędnych w różnych poziomów powiększenia.
Aby zobaczyć, jak zostały obliczone współrzędne, wyświetl kod.