Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00311 004936 15028985 na godz. na dobę w sumie
HTML5. Zaawansowane programowanie - książka
HTML5. Zaawansowane programowanie - książka
Autor: , , Liczba stron: 296
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-4809-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> html i xhtml - programowanie
Porównaj ceny (książka, ebook, audiobook).

Twórz zaawansowane aplikacje - funkcjonalne, szybkie i łatwe w użytkowaniu!

HTML5 szturmem zdobywa rynek stron (a w zasadzie już aplikacji) WWW. Dziś ten odświeżony, bogaty w nowe możliwości język ma ogromny potencjał. Dlatego warto poświęcić mu trochę czasu i zacząć tworzyć jeszcze bardziej zaawansowane strony. To na pewno się opłaci!

Dzięki tej książce poznasz najbardziej zaawansowane możliwości HTML5. Nauczysz się wykorzystywać mechanizm geolokalizacji i będziesz w stanie dostarczać użytkownikom spersonalizowane treści w zależności od ich miejsca pobytu. Ponadto przekonasz się, jaki potencjał kryje element canvas. Za jego pomocą stworzysz niezwykle atrakcyjny interfejs bez konieczności stosowania dodatków do przeglądarki. W dalszych rozdziałach sprawdzisz, jak prosta może być komunikacja przeglądarki z serwerem za pośrednictwem WebSockets oraz jak zachować funkcjonalność Twojej aplikacji w przypadku braku połączenia z siecią. Dzięki tej książce zdążysz na czas opanować nowości z HTML5 i wykorzystać je w Twoim kolejnym projekcie!

Sięgnij po tę książkę i:

Wykorzystaj moc najnowszych technologii, wchodzących w skład HTML5!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Pro HTML5 Programming, Second Edition Tłumaczenie: Jakub Hubisz ISBN: 978-83-246-4809-2 Original edition copyright © 2011 by Peter Lubbers, Brian Albers, and Frank Salim. All rights reserved. Polish edition copyright © 2013 by HELION SA. All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Wydawnictwo HELION dołożyło wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Wydawnictwo HELION nie ponosi również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/htm5zp.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/htm5zp Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treĂci Przedmowa ..............................................................................................................13 O autorach ...............................................................................................................14 O korektorze merytorycznym ...................................................................................15 PodziÚkowania ........................................................................................................16 Wprowadzenie .........................................................................................................17 Dla kogo jest ta książka .......................................................................................................................... 17 Przegląd zawartości książki ................................................................................................................... 18 Przykładowe kody i strona książki ....................................................................................................... 18 Rozdziaï 1. PrzeglÈd HTML5 .......................................................................................................19 Do tej pory — historia HTML5 ............................................................................................................ 19 Mit roku 2022 i dlaczego nie ma on znaczenia .................................................................................. 20 Kto tworzy HTML5? .............................................................................................................................. 21 Nowa wizja .............................................................................................................................................. 21 Kompatybilność i wytyczanie ścieżek ........................................................................................ 21 Użyteczność i priorytet użytkownika ......................................................................................... 21 Uproszczenie współpracy ............................................................................................................ 22 Uniwersalny dostęp ...................................................................................................................... 23 Paradygmat braku wtyczek ................................................................................................................... 23 Co przyszło, a co odeszło? ........................................................................................................... 24 Co nowego w HTML5? .......................................................................................................................... 25 Nowy DOCTYPE i deklaracja zestawu znaków ....................................................................... 25 Nowe i wycofane elementy .......................................................................................................... 26 Znaczniki semantyczne ................................................................................................................ 27 Uproszczone wybieranie przy wykorzystaniu API selektorów .............................................. 32 SPIS TRE¥CI Logowanie i debugowanie JavaScript ........................................................................................ 34 window.JSON ................................................................................................................................ 35 DOM poziom 3 ............................................................................................................................. 36 Wzrost wydajności ........................................................................................................................ 36 Podsumowanie ........................................................................................................................................ 37 Rozdziaï 2. Wykorzystanie Canvas API .......................................................................................39 Wprowadzenie do canvas w HTML5 .................................................................................................. 39 Historia ........................................................................................................................................... 39 Czym jest canvas ........................................................................................................................... 40 Koordynaty .................................................................................................................................... 40 Kiedy nie używać elementu canvas ............................................................................................ 40 Zawartość zastępcza ..................................................................................................................... 41 CSS i canvas ................................................................................................................................... 42 Wsparcie przeglądarek dla elementu canvas ............................................................................ 42 Wykorzystanie Canvas API .................................................................................................................. 42 Sprawdzenie wsparcia w przeglądarce ....................................................................................... 42 Dodanie elementu na stronę ....................................................................................................... 43 Wykonywanie transformacji na rysunkach .............................................................................. 45 Praca ze ścieżkami ........................................................................................................................ 47 Praca ze stylami obramowania ................................................................................................... 49 Praca ze stylami wypełnienia ...................................................................................................... 49 Wypełnienie prostokątnego obszaru ......................................................................................... 50 Rysowanie krzywych .................................................................................................................... 51 Wstawianie obrazów na elemencie canvas ............................................................................... 53 Wykorzystanie gradientów .......................................................................................................... 53 Wykorzystanie deseni tła ............................................................................................................. 55 Zmiana rozmiaru obiektów na elemencie canvas .................................................................... 56 Wykorzystanie operacji transformacji ....................................................................................... 58 Renderowanie tekstu na elemencie canvas ............................................................................... 60 Tworzenie cieni ............................................................................................................................. 61 Praca z pikselami ........................................................................................................................... 62 Implementacja zasad bezpieczeństwa ........................................................................................ 64 Budowanie aplikacji za pomocą elementu canvas HTML5 ............................................................. 65 Porady praktyczne: szklany panel na całą stronę ..................................................................... 68 Porady praktyczne: synchronizowanie animacji ...................................................................... 68 Podsumowanie ........................................................................................................................................ 70 Rozdziaï 3. Praca ze skalowalnÈ grafikÈ wektorowÈ .................................................................73 Przegląd SVG .......................................................................................................................................... 73 Historia ........................................................................................................................................... 73 Zrozumieć SVG ............................................................................................................................. 74 Grafika skalowalna ....................................................................................................................... 75 Tworzenie grafiki 2D za pomocą SVG ...................................................................................... 76 6 SPIS TRE¥CI Umieszczenie SVG na stronie ..................................................................................................... 76 Proste kształty ................................................................................................................................ 77 Transformacje elementów SVG .................................................................................................. 78 Powtórne wykorzystanie zawartości .......................................................................................... 78 Desenie i gradienty ....................................................................................................................... 79 Ścieżki SVG .................................................................................................................................... 80 Tekst w SVG .................................................................................................................................. 81 Budowanie sceny ........................................................................................................................... 81 Budowanie interaktywnej aplikacji z wykorzystaniem SVG ............................................................ 83 Dodawanie drzew ......................................................................................................................... 83 Dodanie funkcji updateTrees ...................................................................................................... 83 Dodanie funkcji removeTree ...................................................................................................... 84 Dodanie styli CSS .......................................................................................................................... 84 Pełen kod ........................................................................................................................................ 84 Podsumowanie ........................................................................................................................................ 87 Rozdziaï 4. Praca z elementami audiowizualnymi .....................................................................89 Przegląd informacji o elementach audio i video ................................................................................ 89 Kontenery wideo ........................................................................................................................... 89 Kodeki audio i wideo .................................................................................................................... 90 Restrykcje audio i wideo .............................................................................................................. 91 Wsparcie przeglądarek dla dźwięku i wideo ............................................................................. 91 Wykorzystanie API dla dźwięku i wideo ............................................................................................ 92 Sprawdzanie wsparcia przeglądarek .......................................................................................... 92 Dostępność ..................................................................................................................................... 93 Zrozumieć elementy audio i video ............................................................................................. 94 Praca z dźwiękiem ........................................................................................................................ 98 Praca z wideo ................................................................................................................................. 99 Praktyczne dodatki ..................................................................................................................... 106 Podsumowanie ...................................................................................................................................... 108 Rozdziaï 5. Wykorzystanie geolokalizacji .................................................................................109 Informacje o lokalizacji ........................................................................................................................ 109 Szerokość i długość geograficzna ............................................................................................. 110 Skąd pochodzą informacje ........................................................................................................ 110 Dane wynikające z adresu IP ..................................................................................................... 111 Dane GPS ..................................................................................................................................... 111 Dane pobierane w oparciu o Wi-Fi .......................................................................................... 111 Dane pobierane z telefonu komórkowego .............................................................................. 112 Dane podawane przez użytkownika ........................................................................................ 112 Wsparcie geolokalizacji przez przeglądarki ...................................................................................... 112 Prywatność ............................................................................................................................................ 113 Uruchomienie mechanizmu ochrony prywatności ............................................................... 113 Obchodzenie się z danymi geolokalizacyjnymi ...................................................................... 114 7 SPIS TRE¥CI Wykorzystanie Geolocation API ........................................................................................................ 115 Sprawdzenie wsparcia w przeglądarce ..................................................................................... 115 Prośby o podanie lokalizacji ...................................................................................................... 115 Budowa aplikacji wykorzystującej geolokalizację ............................................................................ 120 Stworzenie kodu HTML ............................................................................................................ 121 Przetwarzanie danych geolokalizacyjnych .............................................................................. 122 Kompletny kod ............................................................................................................................ 124 Praktyczne dodatki ............................................................................................................................... 127 Jaki jest mój status? ..................................................................................................................... 127 Pokaż mnie na mapie ................................................................................................................. 128 Podsumowanie ...................................................................................................................................... 129 Rozdziaï 6. Wykorzystanie API komunikacji .............................................................................131 Cross Document Messaging ............................................................................................................... 131 Zrozumieć bezpieczeństwo pochodzenia ................................................................................ 133 Wsparcie w przeglądarce dla API komunikacji ..................................................................... 134 Wykorzystanie API postMessage ............................................................................................. 134 Budowa aplikacji za pomocą API postMessage ..................................................................... 135 XMLHttpRequest Level 2 .................................................................................................................... 140 Przesyłanie żądań XMLHttpRequest pomiędzy różnymi domenami ................................ 140 Zdarzenia postępu ...................................................................................................................... 142 Wsparcie w przeglądarkach dla XMLHttpRequest Level 2 .................................................. 142 Wykorzystanie XMLHttpRequest API .................................................................................... 142 Budowanie aplikacji wykorzystującej XMLHttpRequest ...................................................... 144 Praktyczne dodatki ............................................................................................................................... 147 Struktury danych ........................................................................................................................ 147 Framebusting ............................................................................................................................... 148 Podsumowanie ...................................................................................................................................... 148 Rozdziaï 7. Wykorzystanie mechanizmu WebSocket ................................................................149 Informacje ogólne o mechanizmie WebSocket ............................................................................... 149 Komunikacja w czasie rzeczywistym i HTTP ......................................................................... 149 Zrozumieć mechanizm WebSocket ......................................................................................... 151 Prosty serwer WebSocket .................................................................................................................... 156 Ramki WebSocket ....................................................................................................................... 157 Wykorzystanie WebSocket API ......................................................................................................... 163 Sprawdzenie wsparcia w przeglądarce ..................................................................................... 163 Podstawowe wykorzystanie API ............................................................................................... 164 Tworzenie aplikacji WebSocket ......................................................................................................... 168 Utworzenie pliku HTML ........................................................................................................... 169 Kod WebSocket ........................................................................................................................... 170 Kod geolokalizacji ....................................................................................................................... 171 Połączenie komponentów ......................................................................................................... 171 Kompletny kod ............................................................................................................................ 173 Podsumowanie ...................................................................................................................................... 175 8 SPIS TRE¥CI Rozdziaï 8. Wykorzystanie Forms API ......................................................................................177 Przegląd formularzy HTML5 ............................................................................................................. 177 Formularze HTML kontra XForms ......................................................................................... 177 Formularze funkcjonalne .......................................................................................................... 178 Wsparcie przeglądarek dla formularzy HTML5 .................................................................... 178 Katalog elementów input ........................................................................................................... 178 Wykorzystanie API formularzy .......................................................................................................... 182 Nowe atrybuty i funkcje ............................................................................................................. 182 Sprawdzanie formularzy za pomocą walidacji ....................................................................... 185 Pola i funkcje walidujące ........................................................................................................... 188 Informacja o poprawności ......................................................................................................... 189 Tworzenie aplikacji z formularzami HTML5 ................................................................................... 190 Praktyczne dodatki ..................................................................................................................... 193 Podsumowanie ...................................................................................................................................... 195 Rozdziaï 9. Praca z technikÈ „przeciÈgnij i upuĂÊ” ...................................................................197 Internetowe „przeciągnij i upuść” — historia .................................................................................. 197 Przegląd elementów „przeciągnij i upuść” w HTML5 .................................................................... 198 Obraz całości ............................................................................................................................... 198 Zdarzenia, o których należy pamiętać ..................................................................................... 200 Udział w przeciąganiu ................................................................................................................ 202 Przenoszenie i kontrola .............................................................................................................. 203 Budowa aplikacji „przeciągnij i upuść” ............................................................................................. 203 Dotrzeć do strefy zrzutu ............................................................................................................ 211 Obsługa „przeciągnij i upuść” dla plików ......................................................................................... 211 Praktyczne dodatki ............................................................................................................................... 215 Modyfikacja wyglądu przeciąganego obiektu ......................................................................... 215 Podsumowanie ...................................................................................................................................... 215 Rozdziaï 10. Wykorzystanie wÈtków roboczych .........................................................................217 Wsparcie w przeglądarkach ................................................................................................................ 218 Wykorzystanie Web Workers API .................................................................................................... 218 Sprawdzenie wsparcia w przeglądarce ..................................................................................... 218 Tworzenie wątków roboczych .................................................................................................. 219 Ładowanie i wykonywanie dodatkowego kodu JavaScript ................................................... 219 Komunikacja z wątkami roboczymi ........................................................................................ 219 Tworzenie strony głównej ................................................................................................................... 220 Obsługa błędów ........................................................................................................................... 221 Zatrzymywanie wątków roboczych .......................................................................................... 221 Wykorzystanie wątków wewnątrz innych wątków ................................................................ 221 Wykorzystanie liczników czasu ................................................................................................ 223 Kod przykładu ............................................................................................................................. 223 Budowa aplikacji wykorzystującej wątki robocze ............................................................................ 224 Tworzenie pliku pomocniczego blur.js ................................................................................... 225 Tworzenie strony aplikacji blur.html ....................................................................................... 226 9 SPIS TRE¥CI Tworzenie pliku blurWorker.js dla wątku .............................................................................. 227 Komunikacja z wątkami ............................................................................................................ 228 Aplikacja w akcji ......................................................................................................................... 229 Kod przykładu ............................................................................................................................. 229 Podsumowanie ...................................................................................................................................... 234 Rozdziaï 11. Wykorzystanie API Web Storage ............................................................................235 Informacje ogólne o Web Storage ...................................................................................................... 235 Wsparcie w przeglądarkach ................................................................................................................ 236 Wykorzystanie API Web Storage ....................................................................................................... 236 Sprawdzanie wsparcia w przeglądarce ..................................................................................... 236 Zapisywanie i pobieranie danych ............................................................................................. 237 Zatykanie wycieków danych ..................................................................................................... 238 Magazyn lokalny kontra magazyn sesji ................................................................................... 240 Inne atrybuty i funkcje API Web Storage ............................................................................... 240 Aktualizacje magazynu .............................................................................................................. 242 Przeglądanie magazynu ............................................................................................................. 243 Budowa aplikacji przy wykorzystaniu magazynu ............................................................................ 245 Przyszłość baz danych magazynu przeglądarki ............................................................................... 254 Baza Web SQL ............................................................................................................................. 254 API Indexed Database ................................................................................................................ 256 Praktyczne dodatki ............................................................................................................................... 258 Przechowywanie obiektów JSON ............................................................................................. 258 Współdzielenie danych między oknami .................................................................................. 258 Podsumowanie ...................................................................................................................................... 260 Rozdziaï 12. Tworzenie aplikacji lokalnych ................................................................................261 Informacje ogólne o aplikacjach lokalnych HTML5 ....................................................................... 261 Wsparcie w przeglądarkach ...................................................................................................... 263 Wykorzystanie bufora aplikacji HTML5 .......................................................................................... 263 Sprawdzanie wsparcia w przeglądarce ..................................................................................... 263 Prosta aplikacja lokalna ............................................................................................................. 263 Praca w trybie offline .................................................................................................................. 264 Pliki manifestu ............................................................................................................................ 264 API aplikacji lokalnych .............................................................................................................. 266 Pamięć podręczna w akcji .......................................................................................................... 267 Budowa aplikacji przy wykorzystaniu API aplikacji lokalnych ..................................................... 268 Tworzenie pliku manifestu dla aplikacji ................................................................................. 270 Tworzenie struktury HTML i arkuszy stylów CSS ................................................................ 270 Tworzenie pliku JavaScript dla trybu offline .......................................................................... 271 Sprawdzanie wsparcia w przeglądarce ..................................................................................... 273 Dodanie obsługi dla przycisku .................................................................................................. 273 Dodanie kodu geolokalizacyjnego ............................................................................................ 274 Dodanie kodu obsługującego magazyn lokalny ..................................................................... 274 Dodanie obsługi dla zdarzeń trybu offline .............................................................................. 275 Podsumowanie ...................................................................................................................................... 275 10 SPIS TRE¥CI Rozdziaï 13. PrzyszïoĂÊ HTML5 ...................................................................................................277 Wsparcie w przeglądarkach dla HTML5 .......................................................................................... 277 HTML ewoluuje .................................................................................................................................... 277 WebGL ......................................................................................................................................... 278 Urządzenia ................................................................................................................................... 280 API dźwięku ................................................................................................................................ 280 Zdarzenia urządzeń z ekranem dotykowym ........................................................................... 280 Sieci peer-to-peer ........................................................................................................................ 282 Kierunek rozwoju ....................................................................................................................... 283 Podsumowanie ...................................................................................................................................... 283 Skorowidz...............................................................................................................285 11 SPIS TRE¥CI 12 R O Z D Z I A ’ 5 „ „ „ Wykorzystanie geolokalizacji Załóżmy, że chcesz stworzyć aplikację oferującą zniżki i promocje na buty biegowe w sklepach znajdujących się w niewielkiej odległości od użytkownika. Korzystając z Geolocation API, możesz poprosić użytkownika, aby podał swoją aktualną pozycję. Jeżeli wyrazi zgodę, możesz przekazać mu instrukcje na temat tego, w jaki sposób dostać się do pobliskiego sklepu po nową parę butów w obniżonej cenie. Innym przykładem wykorzystania geolokalizacji może być aplikacja mierząca odległość, jaką przebiegłeś (lub przeszedłeś). Wyobraź sobie aplikację działającą w przeglądarce Twojego telefonu komórkowego, którą włączasz, kiedy zaczynasz bieg. Aplikacja śledzi trasę, jaką przebyłeś. Koordynaty trasy mogą nawet zostać nałożone na mapę, być może wraz z profilem wysokościowym. Jeżeli ścigasz się z innymi uczestnikami biegu, aplikacja może nawet pokazywać pozycje Twoich przeciwników. Pomysły na skorzystanie z możliwości geolokalizacji to na przykład aplikacja nawigująca przez kolejne etapy trasy, aplikacja społecznościowa pokazująca, gdzie dokładnie znajdują się Twoi znajomi, tak abyś mógł wybrać dogodną dla wszystkich kawiarnię, a także wiele innych, bardziej niecodziennych. W tym rozdziale pokażemy, co można osiągnąć dzięki Geolocation API — ekscytującemu interfejsowi pozwalającemu użytkownikom na dzielenie się swoimi lokalizacjami w aplikacjach webowych, tak aby możliwe było wykorzystywanie uzależnionej od lokalizacji usługi. Najpierw zapoznamy się ze źródłem informacji geograficznych — szerokości, długości i innych atrybutów — i dowiemy się, skąd mogą one pochodzić (GPS, Wi-Fi, triangulacja itd.). Następnie omówimy problemy związane z prywatnością podczas korzystania z takich usług oraz opiszemy, jak przeglądarki obchodzą się z danymi geolokalizacyjnymi. Potem zagłębimy się w praktyczną dyskusję na temat dwóch różnych funkcji (metod) żądania pozycji udostępnianych przez Geolocation API: jednorazowego żądania pozycji oraz ciągłej aktualizacji. Powiemy, kiedy i w jaki sposób z nich korzystać. W końcu pokażemy, jak zbudować praktyczną aplikację przy wykorzystaniu Geolocation API. Zakończymy opisem kilku ciekawych przypadków użycia oraz praktycznymi wskazówkami. Informacje o lokalizacji Interfejs Geolocation jest przejrzysty. Żądasz podania pozycji i jeżeli użytkownik wyrazi zgodę, przeglądarka zwraca informacje o lokalizacji. Pozycja podawana jest do wspierającej geolokalizację przeglądarki przez urządzenie (np. laptop lub telefon komórkowy), na którym została ona uruchomiona. Informacje obejmują zestaw koordynatów geograficznych (długość i szerokość geograficzna) wraz z towarzyszącymi metadanymi. Mając dostęp do tych informacji, możesz stworzyć aplikację zależną od lokalizacji użytkownika. ROZDZIA’ 5. „ WYKORZYSTANIE GEOLOKALIZACJI Szerokość i długość geograficzna Informacje o lokalizacji składają się przede wszystkim z długości i szerokości geograficznej — podobnych do tych pokazanych w kolejnym przykładzie, które składają się na koordynaty pięknego Tahoe City, położonego na brzegu jeziora Tahoe, najpiękniejszego jeziora górskiego Ameryki: SzerokoĂÊ: 39.17222, DïugoĂÊ: -120.13778 W tym przykładzie szerokość geograficzna (wartość liczbowa reprezentująca odległość na północ lub południe od równika) wynosi 39.17222, natomiast długość (wartość liczbowa reprezentująca odległość na wschód lub zachód od południka) ma wartość –120.13778. Wartości te mogą być wyrażone w różny sposób: x w formacie liczbowym — np. 39.17222, x jako „stopnie-minuty-sekundy” (DMS — Degree Minute Second) — np. 39° 10 20 , „ Uwaga. W Geolocation API koordynaty podawane sÈ zawsze w formacie liczbowym. Oprócz długości i szerokości geograficznej udostępniana jest także dokładność koordynatów. Zależnie od urządzenia, na jakim uruchamiana jest przeglądarka, dostępne mogą być także dodatkowe metadane — mogą one zawierać wysokość nad poziomem morza wraz z dokładnością, kąt odchylenia i prędkość. Jeżeli dodatkowe informacje nie będą dostępne, przyjmą wartość null. Skąd pochodzą informacje Geolocation API nie definiuje, z jakiej technologii musi skorzystać urządzenie w celu określenia lokalizacji użytkownika — udostępnia jedynie możliwość pobrania tych informacji oraz poziomu dokładności, z jaką urządzenie zostało zlokalizowane. Nie ma żadnej gwarancji, że współrzędne zwrócone przez urządzenie są poprawne. Lokalizacja, lokalizacja Peter mówi: Oto ciekawy przykïad. W domu korzystam z sieci bezprzewodowej. Otwarïem przykïadowÈ aplikacjÚ pokazanÈ w tym rozdziale w przeglÈdarce Firefox i dowiedziaïem siÚ, ĝe jestem w Sacramento (ok. 120 km od mojego rzeczywistego poïoĝenia). Wynik jest bïÚdny, ale nie zaskakujÈcy — dostawca internetu, z którego usïug korzystam, ma siedzibÚ w Sacramento. Poprosiïem wtedy moich synów — Seana i Rocky’ego — aby otwarli stronÚ na iPhonie (przy wykorzystaniu tego samego poïÈczenia bezprzewodowego). Safari pokazaïo, ĝe znajdujÈ siÚ w Marysville w Kalifornii — mieĂcie znajdujÈcym siÚ 50 km od Sacramento. Dane o lokalizacji mogą pochodzić z następujących źródeł: x adresu IP, x triangulacji: x systemu globalnego pozycjonowania (GPS — Global Positioning System), x Wi-Fi z adresami MAC z sieci RFID, Wi-Fi lub Bluetooth, x identyfikatorów GSM lub CDMA, x danych podanych przez użytkownika. 110 ROZDZIA’ 5. „ WYKORZYSTANIE GEOLOKALIZACJI Wiele z urządzeń wykorzystuje kombinację różnych źródeł w celu zapewnienia większej dokładności. Każda z tych metod ma wady i zalety, które opiszemy w kolejnym podrozdziale. Dane wynikające z adresu IP Dane wynikające z adresu IP były dawniej jedyną możliwością uzyskania informacji o lokalizacji użytkownika, często jednak były niepoprawne. W tej metodzie automatycznie zwracany jest adres fizyczny rejestratora danego adresu IP. W związku z tym jeżeli adres IP uzyskujesz od dostawcy internetu, Twoja lokalizacja będzie często równoznaczna z jego fizycznym adresem, który może się znajdować wiele kilometrów od Ciebie. Tabela 5.1 przedstawia wady i zalety stosowania geolokalizacji opartej na adresie IP. Tabela 5.1. Wady i zalety stosowania geolokalizacji opartej na adresie IP Zalety Dostępna wszędzie. Przetwarzanie po stronie serwera. Wady Niezbyt dokładna (często albo błędna, albo z dokładnością ograniczoną do miejscowości). Może być kosztowną operacją. Wiele stron wyświetla reklamy w oparciu o lokalizację adresu IP. Możesz to zaobserwować podczas podróży do innego kraju, kiedy nagle zobaczysz reklamy lokalnych firm (zależnie od adresu IP regionu lub kraju, w którym się znalazłeś). Dane GPS Dopóki widać niebo, GPS może być źródłem bardzo dokładnych danych geolokalizacyjnych. Pozycja wyliczana jest na podstawie sygnału z wielu satelitów okrążających Ziemię. Sporo czasu może jednak zająć uzyskanie sygnału z odpowiedniej ich liczby, co nie jest dobre w przypadku aplikacji, które muszą rozpocząć działanie natychmiast. Z powodu czasu potrzebnego na uzyskanie informacji można próbować wykonywać tę operację asynchronicznie. Aby pokazać użytkownikom, że pobierana jest ich lokalizacja, można wyświetlić pasek postępu. Tabela 5.2 pokazuje wady i zalety stosowania geolokalizacji opartej na GPS-ie. Tabela 5.2. Wady i zalety stosowania geolokalizacji opartej na GPS-ie Zalety Bardzo dokładna. Wady Uzyskanie informacji o pozycji może zająć dużo czasu, co może doprowadzić do szybszego wyczerpania baterii urządzenia. Niezbyt dobrze działa wewnątrz budynków. Może wymagać dodatkowego sprzętu. Dane pobierane w oparciu o Wi-Fi Pobierane informacji w oparciu o sieć bezprzewodową działa na zasadzie triangulacji — sprawdzana jest odległość użytkownika od znanych punktów dostępowych (głównie w miastach). W przeciwieństwie do GPS-u dane uzyskiwane tą metodą są równie dokładne wewnątrz budynków. Tabela 5.3 przedstawia wady i zalety stosowania geolokalizacji opartej na Wi-Fi. 111 ROZDZIA’ 5. „ WYKORZYSTANIE GEOLOKALIZACJI Tabela 5.3. Wady i zalety stosowania geolokalizacji opartej na Wi-Fi Zalety Dokładna. Działa wewnątrz budynków. Namierzanie jest szybkie i tanie. Wady Niezbyt dobrze działa na terenach z małą liczbą punktów dostępu. Dane pobierane z telefonu komórkowego Te dane także są pobierane w oparciu o triangulację — w tym przypadku jednak mierzona jest odległość użytkownika od nadajników telekomunikacyjnych. Dzięki temu otrzymujemy wynik o umiarkowanej dokładności. Metoda ta często wykorzystywana jest w połączeniu z metodą opartą na GPS-ie lub Wi-Fi. Tabela 5.4 przedstawia wady i zalety stosowania geolokalizacji działającej na podstawie telefonu komórkowego. Tabela 5.4. Wady i zalety stosowania geolokalizacji działającej na podstawie telefonu komórkowego Zalety Dość dokładna. Działa wewnątrz budynków. Namierzanie jest szybkie i tanie. Wady Wymaga urządzenia z dostępem do telefonu lub modemu komórkowego. Niezbyt dobrze działa na terenach z małą liczbą nadajników telekomunikacyjnych. Dane podawane przez użytkownika Zamiast próbować uzyskać lokalizację użytkownika programistycznie, możesz pozwolić mu na jej samodzielne wprowadzenie. Aplikacja może pozwalać na wprowadzenie adresu, kodu pocztowego lub innych informacji; te dane możesz wykorzystać do zaserwowania użytkownikowi usług zależnych od lokalizacji. Tabela 5.5 przedstawia wady i zalety danych podawanych przez użytkownika. Tabela 5.5. Wady i zalety danych podawanych przez użytkownika Zalety Użytkownik może dysponować danymi dokładniejszymi niż dostępne programistycznie. Pozwala na wprowadzanie alternatywnych lokalizacji. Wprowadzenie danych przez użytkownika może być szybsze niż detekcja lokalizacji. Wady Dane mogą być bardzo niedokładne, zwłaszcza gdy lokalizacja ulega zmianie. Wsparcie geolokalizacji przez przeglÈdarki Interfejs Geolocation był jednym z pierwszych elementów HTML5, który został w pełni zaimplementowany, i wspierany jest obecnie przez wszystkie istotne przeglądarki. Jeżeli interesują Cię dokładniejsze informacje na temat wsparcia geolokalizacji, wejdź na stronę http://caniuse.com/ i poszukaj hasła Geolocation. Jeśli musisz zapewnić wsparcie dla starszych przeglądarek, przed skorzystaniem z API warto sprawdzić, czy interfejs Geolocation jest obsługiwany. W podrozdziale „Sprawdzenie wsparcia przeglądarki” pokażemy, w jaki sposób to zrobić. 112 ROZDZIA’ 5. „ WYKORZYSTANIE GEOLOKALIZACJI PrywatnoĂÊ Specyfika geolokalizacji wymaga, aby zapewniony został mechanizm ochrony prywatności użytkownika. Co więcej, informacje nie powinny być udostępniane, jeżeli użytkownik nie wyrazi na to zgody. Jest to odpowiedź na problem „wielkiego brata”, często poruszany przez użytkowników aplikacji wykorzystujących geolokalizację. Jak jednak widać z niektórych przypadków użycia Geolocation API w aplikacjach, użytkownicy zachęcani są do dzielenia się swoimi lokalizacjami. Na przykład użytkownik może chętniej podzielić się danymi geolokalizacyjnymi, jeżeli w zamian może uzyskać informację o rabacie na buty biegowe, dostępnym w sklepie oddalonym parę przecznic od miejsca, w którym właśnie pije kawę. Przyjrzyjmy się bliżej architekturze prywatności pokazanej na rysunku 5.1. Rysunek 5.1. Architektura prywatności przeglądarki i urządzenia Na diagramie pokazano następujące kroki: 1. Użytkownik uruchamia w przeglądarce aplikację korzystającą z geolokalizacji. 2. Strona aplikacji ładuje się i przesyła prośbę o koordynaty poprzez wywołanie funkcji z Geolocation API. Przeglądarka przechwytuje zapytania i pyta użytkownika o pozwolenie. Załóżmy, że użytkownik udziela pozwolenia. 3. Przeglądarka pobiera koordynaty z urządzenia, na którym została uruchomiona. W tym przypadku jest to kombinacja danych pochodzących z adresu IP, Wi-Fi i GPS-u. Jest to wewnętrzna funkcjonalność przeglądarki. 4. Przeglądarka przesyła dane do zaufanej, zewnętrznej usługi lokalizacyjnej — zwracane koordynaty mogą być przekazane do aplikacji. „ Waĝne. Aplikacja nie ma bezpoĂredniego dostÚpu do urzÈdzenia; moĝe jedynie wysïaÊ do przeglÈdarki proĂbÚ o podanie informacji. Uruchomienie mechanizmu ochrony prywatności Kiedy uruchamiasz stronę korzystającą z Geolocation API, powinien zostać uruchomiony mechanizm ochrony prywatności. Rysunek 5.2 pokazuje, jak wygląda to w przeglądarce Firefox. 113 ROZDZIA’ 5. „ WYKORZYSTANIE GEOLOKALIZACJI Rysunek 5.2. Jeżeli w przeglądarce Firefox wykorzystywany jest interfejs Geolocation, pojawia się panel informacyjny Mechanizm uruchamiany jest w momencie uruchomienia kodu Geolocation. Dodanie kodu, który nie jest wywoływany (np. w zdarzeniu onload), nie spowoduje reakcji. Jeżeli jednak kod Geolocation zostanie uruchomiony, na przykład wywołaniem navigator.geolocation.getCurrentPosition (w dalszej części metoda zostanie omówiona dokładniej), użytkownik zostanie poproszony o podzielenie się informacjami o lokalizacji. Rysunek 5.3 pokazuje, co stanie się w przeglądarce Safari działającej na iPhonie. Rysunek 5.3. Jeżeli w przeglądarce Safari wykorzystywany jest interfejs Geolocation, pojawia się okno dialogowe z powiadomieniem W niektórych przypadkach (np. w Firefoksie) oprócz mechanizmu pytającego użytkownika o zezwolenie na pobranie lokalizacji możliwe jest także zapamiętanie decyzji użytkownika i uwzględnienie jej podczas kolejnych wizyt na stronie. Działa to podobnie do zapamiętywania haseł w przeglądarce. „ Uwaga. Jeĝeli w Firefoksie ustawiïeĂ, aby dla strony zawsze byïo udzielane pozwolenie, a póěniej zmienisz zdanie, moĝesz ïatwo odwoïaÊ pozwolenie. Musisz wejĂÊ na stronÚ, wybraÊ Informacje o stronie z menu NarzÚdzia, a nastÚpnie zmieniÊ ustawienie dla opcji UdostÚpnij poïoĝenie na zakïadce Uprawnienia. Obchodzenie się z danymi geolokalizacyjnymi Są to dane wrażliwe, więc jeżeli je otrzymasz, musisz być ostrożny podczas ich obsługi, przechowywania i powtórnej transmisji. Jeżeli użytkownik nie wyrazi zgody na przechowywanie danych, powinieneś się ich pozbywać zawsze po zakończeniu pracy z nimi. Jeżeli retransmitujesz pozyskane dane, pamiętaj, że powinieneś je najpierw zaszyfrować. Twoja aplikacja powinna też zawsze w jasny sposób informować użytkownika: x że zbierasz dane geolokalizacyjne, x dlaczego je zbierasz, x jak długo są przechowywane, x w jaki sposób są zabezpieczone, x z kim i jak dzielisz się tymi danymi, x w jaki sposób użytkownik może sprawdzić i zaktualizować swoje dane. 114 ROZDZIA’ 5. „ WYKORZYSTANIE GEOLOKALIZACJI Wykorzystanie Geolocation API W tym podrozdziale bardziej szczegółowo omówimy wykorzystanie Geolocation API. Stworzymy prostą stronę — geololocation.html. Pamiętaj, że cały kod możesz pobrać pod adresem: ftp://ftp.helion.pl/przyklady/htm5zp.zip. Sprawdzenie wsparcia w przeglądarce Zanim wywołasz funkcje z Geolocation API, dobrze jest sprawdzić, czy to, co zamierzasz zrobić, wspierane jest przez przeglądarkę. Dzięki temu, jeżeli przeglądarka nie wspiera odpowiednich funkcji, możesz przekazać użytkownikowi odpowiednią informację lub poprosić go o zainstalowanie zewnętrznej wtyczki (np. Gears), która poprawi funkcjonalność przeglądarki. Na listingu 5.1 przedstawiony został jeden ze sposobów sprawdzenia wsparcia w przeglądarce. Listing 5.1. Sprawdzenie wsparcia w przeglądarce script function loadDemo() { if(navigator.geolocation) { document.getElementById( support ).innerHTML = Geolokalizacja jest wspierana. ; } else { document.getElementById( support ).innerHTML = Twoja przeglÈdarka nie wspiera geolokalizacji. ; } } /script Funkcja loadDemo sprawdza wsparcie dla geolokalizacji w przeglądarce — może zostać wywołana po załadowaniu strony. Jeżeli będzie to możliwe, wywołanie navigator.geolocation (można także wykorzystać Modernizr) zwróci obiekt Geolocation — w przeciwnym razie wykonany zostanie wariant braku wsparcia. Skrypt aktualizuje zdefiniowany wcześniej element support tekstem informującym o możliwości wykorzystania geolokalizacji w przeglądarce. Prośby o podanie lokalizacji Dostępne są dwa typy prośby o podanie lokalizacji: x jednorazowa prośba, x ciągła aktualizacja. Jednorazowa proĂba W wielu przypadkach akceptowalne będzie jednorazowe pobranie lokalizacji użytkownika. Na przykład jeżeli ktoś szuka najbliższego kina pokazującego najnowszy film w ciągu najbliższej godziny, może zostać wykorzystana najprostsza forma geolokalizacji, pokazana na listingu 5.2. Listing 5.2. Jednorazowe pobranie lokalizacji void getCurrentPosition(in PositionCallback successCallback, in optional PositionErrorCallback errorCallback, in optional PositionOptions options); Przyjrzyjmy się dokładniej wywołaniu tej funkcji. 115 ROZDZIA’ 5. „ WYKORZYSTANIE GEOLOKALIZACJI Funkcja ta udostępniana jest przez obiekt navigator.geolocation, więc aby z niej skorzystać, należy najpierw pobrać sam obiekt. Jak już wcześniej wspominaliśmy, przed pobraniem obiektu warto sprawdzić, czy przeglądarka wspiera geolokalizację — jeżeli nie, należy zapewnić jakąś formę treści zastępczej. Funkcja przyjmuje jeden obowiązkowy i dwa opcjonalne argumenty: x Parametr successCallback mówi przeglądarce, która funkcja ma zostać wywołana po udostępnieniu danych geolokalizacyjnych. Jest to ważne, ponieważ operacja uzyskania informacji o lokalizacji może być długotrwała. Użytkownik nie będzie chciał, aby przeglądarka była zablokowana podczas pobierania danych. Programista także nie będzie chciał, aby jego program był zatrzymany na nieznany okres — zwłaszcza że przedłużenie tego czasu może być spowodowane oczekiwaniem na udzielenie przez użytkownika pozwolenia. Funkcja successCallback jest miejscem, w którym dostaniesz właściwe dane i będziesz mógł z nich skorzystać. x Jak w przypadku większości działań programistycznych, dobrze jest zabezpieczyć się przed wystąpieniem błędów. Możliwe jest, że proces pobierania lokalizacji zakończy się niepowodzeniem z przyczyn będących poza Twoją kontrolą — w takich przypadkach wykorzystywana jest funkcja errorCallback, która może przekazać użytkownikowi wyjaśnienia lub spróbować powtórnie pobrać dane. Mimo że parametr ten jest opcjonalny, warto z niego skorzystać. x Można także przekazać obiekt opcji, aby zmodyfikować sposób pobierania informacji. Jest to parametr opcjonalny, który bardziej szczegółowo omówimy w dalszej części rozdziału. Załóżmy, że stworzyłeś funkcję JavaScript o nazwie updateLocation(), która aktualizuje dane na stronie zgodnie z nową pozycją geograficzną, oraz funkcję handleLocationError() do obsługi ewentualnych błędów (szczegóły tych funkcji pokażemy w dalszej części). Oznacza to, że wywołanie żądania podania pozycji będzie wyglądało następująco: navigator.geolocation.getCurrentPosition(updateLocation, handleLocationError); Funkcja updateLocation Co dzieje się wewnątrz funkcji updateLocation()? Funkcja zostanie wywołana, gdy tylko przeglądarka uzyska dostęp do danych geolokalizacyjnych. Zostanie do niej wówczas przekazany pojedynczy parametr: obiekt lokalizacji. Obiekt będzie zawierał koordynaty (atrybut coords) oraz stempel czasowy oznaczający moment pobrania danych. O ile stempel czasowy może być dla Ciebie nieprzydatny, o tyle atrybut coords zawiera najważniejsze informacje. Koordynaty zawsze zawierają kilka atrybutów, jednak od przeglądarki i urządzenia, na którym została uruchomiona, zależy, czy atrybuty zostaną wypełnione wartościami. Pierwsze trzy atrybuty są następujące: x latitude — szerokość geograficzna, x longitude — długość geograficzna, x accuracy — dokładność. Te atrybuty muszą posiadać wartość, a ich znaczenie jest jasne. Atrybuty latitude i longitude będą przechowywać określoną przez usługę Geolocation lokalizację, wyrażoną w stopniach dziesiętnych. Atrybut accuracy informuje, w jakiej odległości (w metrach) od podanej lokalizacji znajduje się lokalizacja właściwa — informacja ta jest podawana z prawdopodobieństwem 95 , może więc zostać wykorzystana do zaprezentowania promienia odległości, który zobrazuje użytkownikowi poziom dokładności. Ze względu na specyfikę Geolocation API dane często będą podawane w przybliżeniu. Zawsze sprawdzaj dokładność uzyskanych danych, zanim zaprezentujesz wyniki. Polecenie użytkownikowi „pobliskiego” sklepu, do którego musiałby jechać wiele godzin, może mieć nieprzewidziane konsekwencje. Pozostałe atrybuty nie muszą być podawane, a jeżeli nie zostaną uzupełnione, będą zawierały wartość null (np. jest mało prawdopodobne, że dostęp do tych informacji uzyskasz na komputerze stacjonarnym): x altitude — wysokość nad poziomem morza wyrażona w metrach, x altitudeAccuracy — dokładność wysokości w metrach lub null, jeżeli wysokość (altitude) nie zostanie podana, 116 ROZDZIA’ 5. „ WYKORZYSTANIE GEOLOKALIZACJI x heading — wyprzedzenie, czyli kierunek w stopniach relatywny do kierunku północnego, x speed — prędkość w metrach na sekundę. Jeżeli nie jesteś pewien, czy użytkownicy dysponują urządzeniami podającymi takie informacje, nie powinieneś polegać na nich w swojej aplikacji. Urządzenia GPS prawdopodobnie będą udostępniać te dane, jednak prosta triangulacja już na to nie pozwoli. Przyjrzyjmy się teraz implementacji funkcji updateLocation — wykonuje ona proste aktualizacje na podstawie pobranych informacji (listing 5.3). Listing 5.3. Przykład wykorzystania funkcji updateLocation function updateLocation(position) { var latitude = position.coords.latitude; var longitude = position.coords.longitude; var accuracy = position.coords.accuracy; var timestamp = position.timestamp; document.getElementById( latitude ).innerHTML = latitude; document.getElementById( longitude ).innerHTML = longitude; document.getElementById( accuracy ).innerHTML = accuracy; document.getElementById( timestamp ).innerHTML = timestamp; } W przykładzie funkcja updateLocation aktualizuje tekst elementów na stronie. Długość, szerokość, dokładność i stempel czasowy wstawiamy w odpowiednie pola. Funkcja handleLocationError Bardzo istotnym elementem Geolocation API jest obsługa błędów; wiele jej części jest zmiennych i istnieje spore prawdopodobieństwo niedostępności usługi geolokalizacyjnej. Na szczęście API definiuje kody błędów dla wszystkich przypadków, z jakimi możesz mieć do czynienia. Do funkcji obsługi błędów przekazywany jest obiekt, którego atrybut code zawiera odpowiedni kod. Oto dostępne kody: x PERMISSION_DENIED (kod 1) — użytkownik nie zezwolił na pobranie danych geolokalizacyjnych, x POSITION_UNAVAILABLE (kod 2) — podjęta została próba pobrania danych, jednak zakończyła x TIMEOUT (kod 3) — przekroczony został, zdefiniowany jako opcja, maksymalny czas oczekiwania się niepowodzeniem, na dane. W przypadku wystąpienia któregoś z błędów będziesz najprawdopodobniej chciał dać użytkownikowi znać, że coś poszło nie tak. W dwóch ostatnich przypadkach możesz także spróbować ponownie pobrać dane. Listing 5.4 zawiera przykład funkcji obsługującej błędy. Listing 5.4. Funkcja obsługująca błędy function handleLocationError(error) { switch(error.code){ case 0: updateStatus( Podczas pobierania lokalizacji wystÈpiï bïÈd: + error.message); break; case 1: updateStatus( Uĝytkownik nie zezwoliï na dostÚp do danych geolokalizacyjnych. ); break; case 2: updateStatus( PrzeglÈdarka nie byïa w stanie uzyskaÊ informacji o lokalizacji: + blad.message); break; case 3: updateStatus( Maksymalny dozwolony czas pobierania danych zostaï przekroczony. ); 117 ROZDZIA’ 5. „ WYKORZYSTANIE GEOLOKALIZACJI break; } } Kody błędów udostępniane są w atrybucie code obiektu error, atrybut message zawiera bardziej szczegółowy opis napotkanego błędu. We wszystkich przypadkach wywołujemy stworzoną przez nas metodę aktualizującą status na stronie. Opcjonalne atrybuty geolokalizacji Obsłużyliśmy już zarówno poprawne, jak i niepoprawne pobranie lokalizacji. Możemy teraz przyjrzeć się możliwości wpływania na sposób pobierania danych przez usługę geolokalizacyjną poprzez przekazanie jednego z trzech atrybutów opcjonalnych. Mogą być one przekazane przy wykorzystaniu skróconej notacji obiektowej, dzięki czemu ich wykorzystanie jest bardzo proste. x enableHighAccuracy — jest to informacja dla przeglądarki, że jeżeli jest to możliwe, powinna wykorzystać metodę pobierania lokalizacji gwarantującą najwyższą dokładność. Domyślne ustawienie przyjmuje wartość false, jednak jego włączenie może nie spowodować żadnej różnicy lub uzyskanie informacji może zająć więcej czasu. Opcji tej należy używać ostrożnie. „ Uwaga. Ustawienie wysokiej dokïadnoĂci jest tylko przeïÈcznikiem true/false. API nie pozwala na definiowanie róĝnych poziomów dokïadnoĂci za pomocÈ wartoĂci numerycznych. ByÊ moĝe zostanie to zmienione w kolejnych wersjach specyfikacji. x timeout — wartość podawana jest w milisekundach — oznacza maksymalny czas pobierania danych geolokalizacyjnych. Jeżeli obliczenia nie zostaną zakończone w podanym przedziale czasu, wywoływana jest funkcja obsługująca błędy. Domyślnie limit nie jest ustawiany. x maximumAge — wartość ta określa, po jakim czasie dane geolokalizacyjne muszą być powtórnie przeliczone — podawana jest w milisekundach. Domyślna wartość to 0, co oznacza, że przeglądarka musi przeliczyć lokalizację natychmiast. „ Uwaga. ByÊ moĝe zastanawiasz siÚ, jaka jest róĝnica pomiÚdzy timeout a maximumAge. Mimo ĝe ich nazwa jest podobna, ich zastosowanie jest róĝne. WartoĂÊ timeout odnosi siÚ do czasu potrzebnego na pobranie danych, natomiast maximumAge okreĂla czÚstotliwoĂÊ pobierania lokalizacji. Jeĝeli czas pobierania lokalizacji bÚdzie dïuĝszy niĝ podany w parametrze timeout, wywoïywany jest bïÈd. Jeĝeli jednak przeglÈdarka nie posiada aktualnej lokalizacji (mïodszej niĝ wynikajÈca z parametru maximumAge), bÚdzie musiaïa pobraÊ jÈ ponownie. Moĝliwe jest przypisanie specjalnych wartoĂci: ustawienie wartoĂci na 0 powoduje jej kaĝdorazowe pobranie, ustawienie na Infinity oznacza, ĝe wartoĂÊ nigdy nie bÚdzie powtórnie pobierana. Geolocation API nie pozwala Ci na poinstruowanie przeglądarki, jak często ma aktualizować pozycję, leży to całkowicie w jej gestii. Jedyne, co możemy zrobić, to przekazać jej parametry maximumAge. Nie możemy niestety dokładnie kontrolować czasu pobierania danych geolokalizacyjnych. Zmodyfikujmy wcześniejsze wywołanie, dodając opcje przy wykorzystaniu skróconej notacji obiektowej: navigator.geolocation.getCurrentPosition(updateLocation, handleLocationError, {timeout:10000}); Nowe wywołanie gwarantuje, że jeżeli pobieranie lokalizacji będzie trwało dłużej niż 10 sekund (10 000 milisekund), wywołany zostanie błąd — funkcja handleLocationError zostanie uruchomiona z kodem błędu timeout. Możemy połączyć powyższe fragmenty kodu w celu wyświetlenia danych na stronie (rysunek 5.4). 118 ROZDZIA’ 5. „ WYKORZYSTANIE GEOLOKALIZACJI CiÈgïa aktualizacja lokalizacji Czasami musisz cyklicznie powtarzać pobieranie lokalizacji. Dzięki projektantom Geolocation API modyfikacja aplikacji w celu ciągłego pobierania danych geolokalizacyjnych jest niezwykle prosta. Wystarczy tylko podmienić wywołanie głównej metody, jak pokazano w następujących przykładach. Rysunek 5.4. Dane geolokalizacyjne wyświetlane w telefonie komórkowym Jednorazowa aktualizacja: navigator.geolocation.getCurrentPosition(updateLocation, handleLocationError); Ciągła aktualizacja: navigator.geolocation.watchPosition(updateLocation, handleLocationError); Ta prosta zmiana spowoduje, że usługa geolokalizacji będzie wywoływała metodę updateLocation, jeżeli lokalizacja klienta ulegnie zmianie. Działa, jakby aplikacja obserwowała lokalizację klienta — zostaniesz poinformowany, jeżeli dane geograficzne się zmienią. Po co miałbyś z tego korzystać? Wyobraź sobie aplikację, która podaje kolejne wskazówki dotarcia do jakiegoś miejsca, lub stronę, która jest ciągle aktualizowana, pokazując Ci najbliższe stacje benzynowe, podczas gdy poruszasz się po mieście lub
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

HTML5. Zaawansowane programowanie
Autor:
, ,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: