Los hemos visto muchas veces, entramos a un sitio y el navegador no dice que el sitio en custión quiere obtener nuestra ubicación, ¿pero cómo lo hace?
Es muy simple
Desde hace tiempo que los navegadores traen incluído un objeto dentro navigator llamado geolocation que nos permite consultar la ubicación
navigator.geolocation.getCurrentPosition(function(pos){ console.log(pos); });
El único tema es que el navegador por defecto nos advierte que el sitio en cuestión quiere saber nuestra ubicación (lo cual, en principio, no está mal)
Complicando un poco las cosas
Podeoms hacer un poco más que obtener la position, si nos referimos a la documentación del método getCurrentPosition vemos que acepta 3 parámetros, además del callback que nos devuelve la posicion tenemos otros para errores y un objeto para indicar algunos detalles, como el timeout y la precisión.
function getLocation() { navigator.geolocation.getCurrentPosition(function(position){ console.log(position); }, function(error){ console.log(error); }, { enableHighAccuracy: true, timeout: 5000 }); }
Un poco más bonito, en caso de que la obtención de la posición tome más tiempo llama al callback de error
PositionError { code: 3, message: "Position acquisition timed out" }
No nos queda más que usar la posición para hacer nuestras cosas.
Nos leemos.