Geolokalizacja jest jedną z usług, z której możemy korzystać za pomocą Google Maps API. Dzięki niej posługując się odpowiednimi słowami kluczowymi odnajdziemy na mapie świata dowolną lokację: ulicę, miasto, państwo, obiekt architektoniczny czy krainę geograficzną.
Spis treści
- Aplikacja
- Przygotowanie komunikacji z usługą
- Parametry geolokalizacji
- Wysłanie zapytania geolokalizacji
- Odebranie wyniku zapytania geolokalizacji
Aplikacja
Poniższa aplikacja demonstruje możliwości usługi Geocoding. Dodatkowo pokazuje wszystkie informacje zwrócone przez serwer po pomyślnym przetworzeniu zapytania. Dostęp do źródła można uzyskać poprzez kliknięcie prawym przyciskiem myszy w obszar aplikacji i wybranie opcji “View Source” z menu kontekstowego.
![]()
Przygotowywania komunikacji z usługą
Z usługi gelokalizacji będziemy korzystać za pomocą klasy ClientGeocoder. Jej konstruktor przyjmuje tylko jeden, opcjonalny parametr, którym jest obiekt klasy ClientGeocoderOptions definiujący parametry geolokalizowania.
Po utworzeniu instancji klasy ClientGeocoder dodajemy do niej nasłuchiwanie zdarzeń: GeocodingEvent.GEOCODING_SUCCESS i GeocodingEvent.GEOCODING_FAILURE, które będą informować nas odpowiednio o pomyślnym lub niepomyślnym zakończeniu procesu geolokalizacji.
clientGeocoder.addEventListener(GeocodingEvent.GEOCODING_SUCCESS, clientGeocoder_GEOCODING_SUCCESS);
clientGeocoder.addEventListener(GeocodingEvent.GEOCODING_FAILURE, clientGeocoder_GEOCODING_FAILURE);
Parametry geolokalizacji
Parametry geolokalizacji określamy za pomocą obiektu klasy ClientGeocoderOptions, który możemy przekazać do konstruktora klasy ClientGeocoder lub ustawić ustawić w dowolnym momencie za pomocą metody setOptions klasy ClientGeocoder. Określić możemy trzy parametry:
- countryCode: Oznaczenie kraju (“PL”,”EN” itp.) dla zapytania geolokalizacji. W przypadku nie ustawienia tego parametru jego wartość zostanie ustalona na podstawie ustawień przeglądarki. Nie zauważyłem żadnych zmian w działaniu aplikacji przy różnych ustawieniach tego parametru.
- language: Język (“en”, “pl” itd.) dla zapytania dla geolokalizacji. W przypadku nie ustawienia tego parametru jego wartość zostanie ustalona na podstawie ustawień przeglądarki. Wartość tego parametru wpływa na język w jakim będą dostępne informacje o lokacji.
- viewport: Współrzędne wyznaczające obszar podwyższonego priorytetu w procesie geolokalizacji. Jeżeli w wyznaczonym obszarze znajdzie się lokacja pasująca do słów kluczowych wtedy wtedy zostanie zwrócona tylko ona, w przeciwnym razie zostaną zwrócone wszystkie odnalezione lokacje
Przykład:
countryCode: "EN",
language: "en",
viewport: new LatLngBounds(
new LatLng(51.00,22.05),
new LatLng(51.53,23.10)
)
});
Wysłanie zapytania geolokalizacji
Zapytanie geolokalizacji wysyłamy za pomocą metody geocode klasy ClientGeocoder, która jako parametr przyjmuje łańcuch opisujący szukaną lokację.
Przykład:
Odebranie zapytania geolokalizacji
Po wywołaniu metody geocode wykonany zostanie kod jednej z dwóch funkcji obsługujących zdarzenia pomyślnego i niepomyślnego zakończenia procesu geolokalizacji.
Geolokalizacja zakończyła się sukcesem
W przypadku pomyślnego zakończenia geolokalizacji wywołana zostanie funkcja obsługująca zdarzenie GeocodingEvent.GEOCODING_SUCCESS. W niej odwołujemy się kolejno do pól request i placermarks zdarzenia w celu uzyskania dostępu do danych wszystkich lokacji pasujących do klucza. Dane przechowywane są w tablicy ponieważ do jednego klucza może pasować wiele lokacji. Wystarczy np. zlecić geolokalizatorowi odnalezienie “starej wsi” aby przekonać się o tym, że jest ich w Polsce co najmniej dziesięć.
Przykład:
var placemarks:Array = event.response.placemarks;
}
Tablica placemarks zawiera obiekty klasy Placemark, które przechowują dane o:
- adresie lokacji (typ: String),
- szczegółach adresu lokacji (typ: Object),
- współrzędnych geograficznych lokacji (typ: LatLng).
Dostęp do powyższych danych uzyskujemy poprzez odwołanie się do następujących pól klasy Placemark:
| adres lokacji: | address |
| kod kraju: | AddressDetails.Country.CountryNameCode |
| nazwa kraju: | AddressDetails.Country.CountryName |
| województwo: | AddressDetails.Country.AdministrativeArea.AdministrativeAreaName |
| powiat: | AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName |
| miasto: | AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName |
| ulica: | AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName |
| kod pocztowy: | AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber |
| dokładność: | AddressDetails.Accuracy |
| współrzędne: | point |