Principiul de funcționare al geolocalizare
Posibilitatea de geolocalizare este destul de o mulțime de întrebări de la persoane care în mod normal nu pot fi numite paranoic. De exemplu, cum poate unele software-ul să știe că nu sunt bolnav, i-am spus șeful meu, și vizionarea de fotbal într-o cafenea? Este că există un cod ascuns care ține evidența tuturor acțiunilor mele? Mă întreb ce fel de o dubă pe stradă și sunt oameni care pretind a fi, în cazul în care schimbă roata?
Din fericire, capacitatea de a nu din funcție de localizarea geografică categoria de povești de groază despre supraveghere. Acest lucru se datorează faptului că, chiar dacă browser-ul este capabil să calculeze locația dvs., acesta nu va raporta site-ul său, fără permisiunea dvs. explicită:
Pagina web vrea să obțină informații despre locația vizitatorului. Vizitatorul poate permite să furnizeze aceste informații sau nu le furnizează. Un astfel de comportament a browser-ului Chrome nu este din proprie inițiativă, dezvoltatorii, și standardul oficial regula geolocalizare, care impune ca fiecare site-ul Web, încercarea de a obține informații cu privire la locația vizitatorului, a primit permisiunea de a face acest lucru.
Pentru a calcula locația vizitatorului, browser-ul cere ajutorul unui furnizor de servicii de poziționare (furnizor de locație). de exemplu, pentru Chrome este un serviciu de localizare Google Services. Poziționarea nu este o sarcină ușoară, și furnizorul utilizează mai multe abordări diferite pentru a le rezolva.
Cu toate acestea, chiar și acestea sunt de multe ori rezultate inexacte sunt utile. De exemplu, dacă utilizați instrumentul geolocalizare pentru a găsi un magazin care vinde pizza livrata acasa, puteți muta rapid într-o zonă care vă interesează cu adevărat - aproape de casa ta - chiar dacă nu sunt foarte aproape.
În cele din urmă, multe dispozitive mobile sunt echipate cu hardware speciale GPS (serviciu de poziționare globală - sistem de poziționare globală de navigare). care vă permite pentru a determina locația unor astfel de dispozitive, cu o precizie de doar câțiva metri. Dar această metodă are dezavantajul geolocalizare - este mai lentă și consumă mai multă energie, ceea ce este important pentru dispozitivele care funcționează pe baterii. În plus, nu este deosebit de bine funcționează în orașele cu clădiri mari și înalte din cauza reflexie semnal de clădiri.
Desigur, există și alte modalități de a determina locația. Nimic nu împiedică locații ale furnizorilor pentru a utiliza pentru că alte surse de informații, cum ar fi date de la RFID dispozitive (identificare prin radiofrecvență - RFID), date de la dispozitive Bluetooth, cookie-uri, informații pe site-urile de cartografiere, cum ar fi Google Maps, etc.
În ce domenii să folosească locația geografică?
Răspunsul la întrebarea de mare este modul în care localizarea geografică, trebuie să ne confruntăm cu o alta: ce beneficiem de ea?
Aici, un aspect cheie care trebuie înțeles este faptul că funcționalitatea geolocalizare pentru a determina coordonatele geografice pagina vizitatorilor aproximative. Și asta e tot. dezvoltator web ar trebui să combine aceste informații simple, dar importante, cu detalii despre locația vizitatorului. Aceste date pot fi obținute de la serverul web (de obicei, o mare bază de date back-end), sau orice servicii web geografice (de exemplu, Google Maps).
De exemplu, pentru o întreprindere mare, care are sucursale în mai multe locații, poate fi necesar pentru a compara locația unei pagini web vizitator localizarea diferitelor sale ramuri, în scopul de a determina cel mai apropiat de vizitator.
Deși serviciile cartografice și geografice oferite de alte companii, sunt destul de extinse, ne vom uita la unul dintre ei - Google Maps - un pic mai târziu.
Definiția de origine vizitatorilor
Posibilitatea de geolocalizare este foarte simplu. Se compune din trei metode de obiect navigator.geolocation. getCurrentPosition (), watchPosition () și clearWatch ().
getCurrentPosition () metodă se numește pentru a obține locația vizitatorului. Dar trebuie să se înțeleagă că procesul de determinare a amplasării ia ceva timp, în timpul căreia nici un browser care se respecta nu se va opri orice activitate pe pagină, în timp ce așteaptă datele. Prin urmare, getCurrentPosition (), metoda este executată asincron, adică după lansare continuă cu următorul cod în spatele ei. Atunci când poziționarea este terminată, să se ocupe de rezultatele cealaltă bucată de cod este activat.
În continuare, un exemplu de asteptare acestei metode:
În îndeplinirea acestui cod este getCurrentPosition metoda () și trece funcția. În cazul în care browser-ul finalizează procesul de determinare a locației, aceasta activează funcția care afișează o casetă de mesaj:
Nu uitați că utilizarea geolocalizare este permisă numai în cazul în care browser-ul acceptă, iar vizitatorul va permite utilizarea acestuia. De asemenea, este înțelept pentru a testa pagina, folosiți această oportunitate, înainte de introducerea pe un server web pentru utilizarea practică. În caz contrar, pot apărea probleme (de exemplu, nu va funcționa eroare de manipulare geolocalizare), și chiar unele browsere nu poate determina locația utilizatorului.
Determinarea acuratețea locației
Daca va avea succes, metoda getCurrentPosition () devine codul poziției obiectului. care are două proprietăți: timestamp (conține geolocalizării de rulare) și coords (conține coordonatele geografice).
Dar proprietatea coords la rândul său, este o subobject a poziției obiectului și proprietățile, cu excepția latitudinea și longitudinea. determinarea coordonatelor geografice ale vizitatorului, are o serie de alte caracteristici care furnizează informații suplimentare despre locație. Dispune cum ar fi altitudinea (înălțimea deasupra nivelului mării), poziția (direcția de deplasare) și viteza (viteza). Dar, în acest moment, aceste proprietăți nu sunt acceptate de orice browser.
Mai interesant este proprietatea de precizie. ceea ce indică precizia poziției în metri. (Acest lucru înseamnă că, cu o precizie de precizie descrescătoare localizare valoare de date crește de proprietate, care ar putea fi oarecum confuz.) De exemplu, precizia valorii proprietăților de 2135 de metri, ceea ce înseamnă că locația utilizatorului a fost determinată în acest interval.
Proprietatea este utilă pentru determinarea preciziei rezultatelor de calitate geolocalizare. De exemplu, în cazul în care valoarea de precizie a proprietății se măsoară în zeci de kilometri, date geolocalizare este puțin probabil să aibă nici o valoare practică:
În acest caz, este posibil, este înțelept să notifice utilizatorul datelor incerte ale locației sale și / sau să-l invite să introduceți informațiile corecte le.
eroare de manipulare
funcționalitate de localizare geografică nu funcționează, în cazul în care vizitatorul refuză să dea permisiunea pentru utilizarea acestuia. În acest caz, în acest exemplu, completează funcția nu este numit, iar pagina nu va ști dacă browser-ul este încă încearcă să determine locația sau o eroare a avut loc în executarea codului.
Pentru a rezolva această problemă atunci când apelați getCurrentPosition) metoda (, este necesar să se transmită mai mult de o funcție, ci două. Prima funcție, așa cum am discutat deja, este numit în cazul finalizarea cu succes a procesului de geolocalizare. În caz contrar, a doua funcție este invocată. În continuare, un exemplu de utilizare a acestor două funcții:
Atunci când apelați un browser funcție de eroare de geolocalizare trimite obiect o eroare care are două proprietăți: codul (conține un cod numeric care indică una dintre cele patru tipuri de eroare) și mesajul (care conține un termen scurt a problemei). De obicei, observați este destinat pentru codul de testare și codul de eroare funcție este utilizată pentru a determina modul de a rezolva această problemă.
Funcția de eroare modificată, care verifică toate valorile posibile ale codului de eroare, după cum urmează:
Instalarea setărilor de localizare geografică
Deci, ne-am uitat la modul de a invoca getCurrentPosition metoda () cu doi parametri: funcția să se ocupe funcția de succes și geolocalizare să se ocupe de erori atunci când încearcă să-l realizeze. Dar această metodă poate transmite o altă opțiune, care este obiectul de stabilire a anumitor parametri geolocalizare.
Este posibil acum să se stabilească trei parametri, fiecare dintre care corespunde unui singur obiect parametri Geolocation proprietate. Exemplul următor stabilește un parametru enableHighAccuracy:
În acest exemplu, toți cei trei parametri:
Care sunt aceste caracteristici? enableHighAccuracy proprietate foloseste de poziționare de înaltă precizie folosind sistemul GPS (dacă dispozitivul acceptă și vizitatorul permis utilizarea acestuia). Nu setați această opțiune dacă nu doriți să obțineți coordonatele exacte, după cum utilizarea acestuia crește puternic dispozitivul bateriei browser-ul de consum. Implicit enableHighAccuracy proprietate este setată la false.
timeout proprietate definește perioada de timp în care pagina va fi de așteptat pentru a obține date de localizare geografică înainte considerată o tentativă a eșuat.
Valorile timeout este setată în milisecunde, adică 10 000 ms este așteptați maxim 10 secunde. Numărătoarea inversă începe după ce utilizatorul a fost de acord să furnizeze date de localizare geografică. În mod implicit, proprietatea este atribuit un timp de expirare de la 0 înseamnă că pagina va aștepta rezultatele geolocalizare pe termen nelimitat fără a activa timeout-ul de eroare.
proprietate maximumAge permite punerea în cache a datelor de localizare. De exemplu, valoarea maximumAge de 60.000 de milisecunde, permite de a utiliza datele obținute geolocalizare un moment în urmă. Acest lucru economisește timp și resurse informatice, precum și, de asemenea, înseamnă că rezultatele vor fi mai puțin precise de localizare geografică, în cazul în care vizitatorul se mișcă. maximumAge proprietate implicit atribuit 0, ceea ce înseamnă că în cache rezultatele geolocalizare nu a folosit niciodată. Proprietatea poate fi atribuită o infinitate semnificație specială, caz în care informațiile din cache vor fi utilizate de geolocalizare orice limitare.
Afișare hartă
Determinarea locația coordonatelor geografice vizitator site-ul - desigur, un truc interesant. Dar el își pierde rapid recursul său, dacă nu găsim aceste informații orice aplicație utilă. Pentru această chestiune nu vor, pentru că pe Internet există date întreaga placer locație geografică. (De multe ori, problema este de a converti aceste informații într-un format util pentru o aplicație Web.)
În plus, există mai multe servicii harta, liderul de necontestat este Google Maps. estimări fiabile ale apelurilor către serviciul sugerează că Google Maps este cel mai utilizat pe scară largă aplicația web pentru orice scop.
Folosind Google Maps, puteți crea o hartă de orice dimensiune oriunde în lume. Puteți controla modul în care vizitatorii interacționează cu această hartă, de a genera trasee pentru deplasarea de la un punct la altul, și care este cel mai util să se impună pe acest card informațiile lor.
Figura de mai jos arată o versiune modificată a acestei pagini geolocalizare. Au obținut coordonatele geografice ale utilizatorului sunt utilizate pentru a afișa locația pe hartă:
În continuare, vom avea nevoie de elementul
Dimensiune hartă poate fi determinată printr-o foaie de stil reguli:
Acum sunteți gata de a utiliza funcționalitatea oferită de Google Maps. Primul pas este de a crea o hartă de suprafață. În acest exemplu, harta este creată atunci când se încarcă pagina, astfel încât acesta poate fi utilizat în succesul funcțiilor sau erori de geolocalizare. (În cele din urmă, eroarea geolocalizare înseamnă doar că pagina nu poate determina locația actuală a utilizatorului. În acest caz, are încă un sens pentru a afișa o hartă, dar numai în ceea ce privește punctul său central cu coordonatele implicite.)
Ceea ce urmează este un cod care urmează să fie executat atunci când se încarcă pagina. În primul rând, se creează o hartă, și apoi încearcă să determine locația vizitatorului:
Dar, pentru a crea acest card de cod nu este deja vizibil pe pagină, deoarece nu a stabilit încă o poziție geografică. Pentru a face acest lucru, trebuie să creați un punct specific la nivel mondial, folosind un obiect LatLng. care este apoi plasat pe hartă prin intermediul metodei setCenter () hărți. Ceea ce urmează este un cod care efectuează aceste acțiuni pentru a coordona vizitatorilor:
Acest cod va fi suficientă pentru a afișa harta cum se arată în figura de mai sus. Dar această hartă de bază, puteți adăuga diverse gadget-uri, cum ar fi afișarea altor locuri din cutie sau caseta de mesaje pop-up. Acesta din urmă este creat de obiect infoWindow. În plus, codul pentru a crea și afișa o fereastră pop-up de informații (așa cum este arătat mai sus):
În cele din urmă, în caz de eroare sau lipsa de geolocalizare sprijinul său în browser-ul vizitatorului poate efectua, în esență, aceeași procedură, dar utilizând pre-coordonate alternative în loc de coordonate vizitatorilor:
Urmărirea mișcărilor de vizitatori
Tot ce am considerat până acum exemple am folosit metoda getCurrentPosition (), care este o funcționalitate cheie a geolocalizare. Dar obiectul geolocalizare mai are două alte metode care fac posibilă pentru a urmări circulația vizitatorilor și să notifice pagina despre aceste mișcări.
Prima dintre aceste metode este watchPosition (), metoda care este în mare măsură similară cu metoda getCurrentPosition (). Ca getCurrentPosition () metoda, watchPosition () Metoda acceptă parametrii: succes funcția (singurul parametru obligatoriu) și funcția de eroare:
Diferența dintre aceste două metode este că watchPosition) metoda (poate activa succesul funcției în mod repetat - pentru a determina locația pentru prima dată și apoi de fiecare dată când detectează o nouă locație. Pentru computerele desktop, care nu se mișcă, tehnici getCurrentPosition () și watchPosition () au exact același efect.
Dar, în contrast cu metoda getCurrentPosition () watchPosition () metoda returnează numărul. Acest număr poate fi păstrată și transmisă clearWatch () metoda pentru a opri mișcarea pistei:
Acest pas poate fi sărite și să continue să primească mesaje cu privire la mișcările, atâta timp cât vizitatorul părăsește pagina.