Ce face navigator.geolocation
getCurrentPosition cere poziția o singură dată. Browserul întreabă utilizatorul, apoi apelează funcția de succes cu un obiect care are coords.latitude, coords.longitude și coords.accuracy (în metri), sau funcția de eroare (permisiune refuzată, poziție indisponibilă, timp depășit).
watchPosition apelează funcția la fiecare schimbare a poziției (navigație, alergare) și returnează un id; clearWatch(id) oprește urmărirea. Opțiuni: enableHighAccuracy (GPS, mai lent și mai costisitor), timeout, maximumAge.
Parametri
| Parametru | Descriere |
|---|---|
succes |
Primește poziția. |
eroare |
Opțional. Primește o eroare cu code și message. |
optiuni |
Opțional. enableHighAccuracy, timeout, maximumAge. |
Ce returnează
watchPosition: un id. Celelalte: undefined.
Exemple
Exemplul 1: Cel mai apropiat magazin
Rezultat pentru un utilizator din Iași care a acceptat cererea.
navigator.geolocation.getCurrentPosition(
(poz) => {
const { latitude, longitude, accuracy } = poz.coords;
console.log(latitude.toFixed(4), longitude.toFixed(4), `±${Math.round(accuracy)} m`);
},
(e) => console.log("eroare", e.code, e.message),
{ timeout: 10000 },
);
Rezultat în browser
47.1585 27.6014 ±35 m
Exemplul 2: Urmărire și oprire
const id = navigator.geolocation.watchPosition((poz) => console.log("viteză:", poz.coords.speed));
setTimeout(() => {
navigator.geolocation.clearWatch(id);
console.log("urmărire oprită");
}, 60000);
Rezultat în browser
viteză: 1.4
viteză: 1.6
urmărire oprită
Greșeli frecvente
- Ceri locația imediat la încărcarea paginii. Mulți utilizatori refuză o cerere fără context; cere-o după un clic pe „Găsește magazine în apropiere”.
Comenzi înrudite
Math.hypot: Calculează rădăcina pătrată a sumei pătratelor: ipotenuza sau distanța dintre două puncte.Notification: Afișează notificări ale sistemului de operare, după ce utilizatorul a dat permisiunea.async / await: Scrie cod asincron care se citește ca un cod obișnuit, de sus în jos.