Grupa MagazynyInternetowe
Online: 924Zanim 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):
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:
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".
1. function onGDirectionsLoad(){ 2. startPoint = directions.getRoute(0).getStep(0).getLatLng(); 3. alert(startPoint); 4. }
szukaj:
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.
Brak komentarzy
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:
Ankiety można przygotować na wiele sposobów. Zebraliśmy kilka najciekawszych propozycji, które przydadzą się do różnych zadań.
Polecamy:
Na skróty:
Magazyny Internetowe| Co za ile| Programy| Praca| Magazyn Internet| Internet Maker| Web Toster| ForumNasze serwisy: