-
Notifications
You must be signed in to change notification settings - Fork 6
/
script.js
93 lines (74 loc) · 2.84 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/**
Programado por Luis Cabrera Benito
____ _____ _ _ _
| _ \ | __ \ (_) | | |
| |_) |_ _ | |__) |_ _ _ __ _____| |__ _ _| |_ ___
| _ <| | | | | ___/ _` | '__|_ / | '_ \| | | | __/ _ \
| |_) | |_| | | | | (_| | | / /| | |_) | |_| | || __/
|____/ \__, | |_| \__,_|_| /___|_|_.__/ \__, |\__\___|
__/ | __/ |
|___/ |___/
Blog: https://parzibyte.me/blog
Ayuda: https://parzibyte.me/blog/contrataciones-ayuda/
Contacto: https://parzibyte.me/blog/contacto/
*/
const funcionInit = () => {
if (!"geolocation" in navigator) {
return alert("Tu navegador no soporta el acceso a la ubicación. Intenta con otro");
}
const RUTA_API = "./loguear.php";
let idWatcher = null;
const $latitud = document.querySelector("#latitud"),
$longitud = document.querySelector("#longitud"),
$btnIniciar = document.querySelector("#btnIniciar"),
$btnDetener = document.querySelector("#btnDetener"),
$log = document.querySelector("#log");
const onUbicacionConcedida = ubicacion => {
const coordenadas = ubicacion.coords;
$latitud.innerText = coordenadas.latitude;
$longitud.innerText = coordenadas.longitude;
loguear(`${ubicacion.timestamp}: ${coordenadas.latitude},${coordenadas.longitude}`);
enviarAServidor(ubicacion);
}
const enviarAServidor = ubicacion => {
// Debemos crear otro objeto porque el que nos mandan no se puede codificar
const otraUbicacion = {
coordenadas: {
latitud: ubicacion.coords.latitude,
longitud: ubicacion.coords.longitude,
},
timestamp: ubicacion.timestamp,
};
console.log("Enviando: ", otraUbicacion);
fetch(RUTA_API, {
method: "POST",
body: JSON.stringify(otraUbicacion),
}); // No esperamos el then porque no hacemos nada cuando se termine
};
const loguear = texto => {
$log.innerText += "\n" + texto;
};
const onErrorDeUbicacion = err => {
$latitud.innerText = "Error obteniendo ubicación: " + err.message;
$longitud.innerText = "Error obteniendo ubicación: " + err.message;
console.log("Error obteniendo ubicación: ", err);
}
const detenerWatcher = () => {
if (idWatcher) {
navigator.geolocation.clearWatch(idWatcher);
}
}
const opcionesDeSolicitud = {
enableHighAccuracy: true, // Alta precisión
maximumAge: 0, // No queremos caché
timeout: 5000 // Esperar solo 5 segundos
};
$btnIniciar.addEventListener("click", () => {
detenerWatcher();
idWatcher = navigator.geolocation.watchPosition(onUbicacionConcedida, onErrorDeUbicacion, opcionesDeSolicitud);
});
$btnDetener.addEventListener("click", detenerWatcher);
$latitud.innerText = "Cargando...";
$longitud.innerText = "Cargando...";
};
document.addEventListener("DOMContentLoaded", funcionInit);