Newsletter

Grupa MagazynyInternetowe

Online: 924

Wyszukiwarka

Google, Aplikacje internetowe

Google Maps API - zostań wielkim bratem (2)

Zanim jednak zaczniemy, zmodyfikujemy funkcję makeRoute, aby przekazywać do niej zbiór większej liczby punktów (chcemy bowiem, by trasa mogła mieć wiele punktów pośrednich):

[+]
 
JavaScript
Pobierz
1. function makeRoute(waypoints) {
2.   directions = new Gdirections(map, document.getElementById('directions'));
3.   GEvent.addListener(directions, "load", onGDirectionsLoad);
4.   GEvent.addListener(directions, "error",onGDirectionsError);
5.   directions.loadFromWaypoints(waypoints);
6. }

Sposób wywołania:

 
 
JavaScript
Pobierz
makeRoute(Array('Dworzec Centralny,Warszawa, PL', 'Czerska 8, Warszawa,
   PL','Wiertnicza 166, Warszawa, PL'));

Teraz wprowadzimy nową funkcjonalność do funkcji obsługującej zdarzenie "load".

[+]
 
JavaScript
Pobierz
1. function onGDirectionsLoad(){
2.   startPoint = directions.getRoute(0).getStep(0).getLatLng();
3.   alert(startPoint);
4. }

szukaj:

[+]
 
JavaScript
Pobierz
 1. for (i = 0; i < directions.getNumRoutes(); i++) {
 2.   for (j = 0; j < directions.getRoute(i).getNumSteps(); j++) {
 3.     point = directions.getRoute(i).getStep(j).getLatLng();
 4.     if (point.distanceFrom(startPoint) >= 5000) {
 5.       alert(point.distanceFrom(startPoint) +" " +
    directions.getRoute(i).getStep(j).getDescriptionHtml());
 6.       break szukaj;
 7.     }
 8.   }
 9.   alert(i);
10. }

Czas na krótką analizę powyższego kodu. Metoda getNumRoutes() klasy GDirections dostarcza informację o tym, z ilu odcinków składa się wytyczona trasa (w przypadku powodzenia operacji powinna być to liczba o jeden mniejsza od liczby zadanych punktów). Korzystamy z niej w celu określenia warunku wyjściowego pierwszej (zewnętrznej) pętli.

Klasa GDirections posiada również metodę getRoute(), która jako parametr przyjmuje kolejny numer odcinka, licząc od 0. Zwraca ona odpowiadający danemu odcinkowi obiekt klasy GRoute. Ta z kolei posiada funkcję getNumSteps(), która zwraca liczbę kroków przejścia z początku do końca odcinka. Wykorzystujemy tę wartość do określenia warunku wyjściowego drugiej (wewnętrznej) pętli.

W ten sposób zapewniliśmy sobie przejście przez każdy krok każdego odcinka trasy. Sprawdzamy więc każdy kolejny krok z założeniem początkowym (odległość 5 km w linii prostej od punktu startu trasy). Metoda getLatLng() klasy GStep zwraca obiekt klasy GLatLng, czyli w istocie odwzorowanie współrzędnych punktu na Ziemi - dla miejsca początkowego danego kroku.

Możemy teraz wykorzystać opisywaną we wcześniejszej części artykułu metodę distanceFrom() klasy GLatLng. Jeśli otrzymany dystans w metrach jest większy lub równy 5000, oznacza to, że osiągnęliśmy poszukiwany krok. Wyświetlamy okno dialogowe z wyliczonym dystansem oraz opisem danego punktu. Opis ten w postaci sformatowanej jest zwracany przez metodę getDescriptionHtml() klasy GStep.

Tu nasz algorytm się kończy. Zwróć jeszcze uwagę na ciekawe zastosowanie wyrażenia break. Służy ono standardowo do wyjścia z jednej, najbardziej wewnętrznej pętli. Ponieważ jednak wcześniej nadaliśmy etykietę blokowi pętli zewnętrznej, to podając tę etykietę przy funkcji break, osiągamy efekt wyjścia z obu pętli jednocześnie. Koncepcja etykietowania jest tu nieco podobna do stosowanej w języku Basic.

Jak widzisz, Google Maps API udostępnia potężne możliwości w zakresie wytyczania tras w swoim systemie geolokalizacyjnym. Dla większości polskich miast wprowadzono szeroki zakres informacji o adresach. System uwzględnia nawet dane o ulicach jednokierunkowych.

Co ciekawe, ponieważ odnajdywanie punktu może zostać przeprowadzone nie tylko dla zadanego adresu w postaci nazwy ulicy i numeru domu, ale także przy podaniu bardzo precyzyjnych współrzędnych geograficznych, nie ma przeciwskazań do zintegrowania Google Maps z praktycznie dowolnym systemem GPS. Jeśli tylko masz możliwość nawiązania w urządzeniu przenośnym odpowiednio stabilnego połączenia z internetem, możesz pokusić się o stworzenie własnego systemu nawigacji samochodowej.

28 maja 2008

Powiązane publikacje

20 najlepszych internetowych API

20 najlepszych internetowych API

Google Maps API - zostań wielkim bratem

Google Maps API - zostań wielkim bratem

 
Skomentuj
ten artykuł

Brak komentarzy

Kod obrazkowy
(Kliknij, aby zmienić)
 

Autor

Paweł Gruszecki

Jest administratorem, programistą systemów operacyjnych i aplikacji internetowych. Internetem zajmuje się od 1998 roku, niemal od początku działając również jako dziennikarz branżowy. W 2001 roku rozpoczął współpracę w charakterze dziennikarza i specjalisty z Magazynem Internet, aby kilka lat później uczestniczyć w postawaniu magazynu Internet Maker.

Ma na koncie kilka biznesów internetowych, obecnie w jednej ze współtworzonych przez siebie spółek zajmuje się koordynacją projektów informatycznych i zarządzaniem marką Vbiz.pl (vbiz.pl ). Posiada wyższe wykształcenie informatyczne ze specjalizacją związaną z prawem komputerowym. Zarówno informatyka, jak i dziennikarstwo są jego pasją. Od 10 lat z przyjemnością obserwuje rozwój internetu w Polsce.

Artykuły tego autora:

Newsletter

Jesli chcesz być na bieżąco z tym co się dzieje na stronie magazynu INTERNET Maker zapisz się do naszego newslettera.