Tematem zainteresowałem się z powodu mojej pracy magisterskiej w której implementowałem algorytmy metaheurystyczne. Jako dane wejściowe musiałem dostarczyć macierz połączeń pomiędzy punktami zaznaczonymi na mapie. Z początku funkcję mapy pełnił zwykły plik *.jpg prezentujący wycinek jakiegoś miasta. Minusów takiego rozwiązania było wiele więc zacząłem interesować się mapami internetowymi.
Pojęcie Google kojarzy się przede wszystkim z wyszukiwarką internetową - według rankingów - najczęściej używaną w Polsce i na świecie. Coraz częściej Google kojarzy się z bezpłatnymi kontami e-mail. Jedną z usług, trochę mniej znanych, jest Google Maps. Jest to interaktywna mapa złożona ze zdjęć satelitarnych i lotniczych całego świata. Mapy można przeglądać w kilkunastu skalach. W zależności od miejsca występuje w różnych maksymalnych przybliżeniach. Największe przybliżenie dostępne jest w znacznych skupiskach aglomeracyjnych. W związku z tym, że zdjęcia były robione przez wiele lat (najmłodsze mają rok), w niektórych regionach można zauważyć śnieg, a parę kilometrów dalej krajobraz charakterystyczny dla lata. Do poruszania się po mapach stosuje się współrzędne geograficzne oraz możliwe jest skorzystanie z wyszukiwarki.
W celu udostępnienia pełni możliwości korzystania z map – firma Google udostępniła interfejs programowania aplikacji – API, który wygrał w rankingu na najlepsze internetowe API (
link). Dostęp do API odbywa się z poziomu JavaScript, ActionScript lub Static Map. Korzystanie z map jest bezpłatne. Regulamin usługi Google zastrzega sobie prawo do ich wprowadzania. Głównym ograniczeniem jest ilość zapytań z jednego IP (ang. Internet Protocol) do 500 000 dziennie oraz bezpłatne pobranie klucza, który jest wymagany przy próbie połączenia. Obecnie najbardziej popularne funkcje udostępnione przez API to:
- zaznaczanie punktów,
- możliwość geokodowania adresu punktu,
- rysowanie trasy biegnącej po drogach,
- obliczanie odległości pomiędzy punktami,
- wyznaczanie drogi pomiędzy punktami.
Szczególnie godna uwagi jest metoda łączenia się z mapami przez tzw: Static Maps API. Metoda działania jest bardzo prosta. Zapytania zadaje się wykorzystując adres internetowy (URL) z odpowiednimi parametrami. Odpowiedzią Google Maps na zapytanie poprzez HTTP jest przesłanie obrazka w jednym z formatów: *.GIF, *.PNG, *.JPG. Zapytania tworzone są według szablonu:
http://maps.google.com/staticmap?parameters.
Przykładowe zapytanie:
http://maps.google.com/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&key=MAPS_API_KEY&sensor=true_or_false,
powoduje dodanie punktu na mapie we wskazanym położeniu.
Google Maps umożliwia wyświetlanie pięciu typów map:
- drogową,
- na urządzenia mobilne,
- satelitarną,
- terenową,
- hybrydową.
Metoda pracy z tzw: Static Maps API jest prosta do oprogramowanie lecz niezwykle pracochłonna. Obudowanie całości funkcji Google Maps w kod zaszyty w pojedynczej bibliotece dll zajęła by sporo czasu. Okazało się, że nie jest to jednak konieczne. Użytkownik portalu CodePlex.com - radioman stworzył genialne API umożliwiające korzystanie z internetowych map w aplikacjach windowsowych (WPF i Windows Forms).
Pod
adresem dostępna jest prezentacja rozwiązania, a całość można ściągnąć z
link. Wszystkie punkty (markery) zaznaczane na mapie określane są przez współrzędne geograficzne:
- Latitude - szerokość
- Longitude - długość
Po wprowadzeniu punktów istnieje możliwość wytyczenia najkrótszej trasy pomiędzy nimi, sprawdzenie długości, itp. .
O jednej z możliwej sytuacji wykorzystanie tej potężnej biblioteki napiszę w jednym z kolejnych postów.
Linki:
poznaj Google Maps API
Google Earth and Google Maps
Jak zbudowano maps.google.com
Historia i Google Maps
Google Maps API i Java