Skip to Content

Posicionamiento en tiempo real con la Geolocation API

Geolocation APICuando hablamos de posicionamiento lo primero que se nos viene a la cabeza es saber dónde estamos en este momento. Pero también es interesante  conocer por dónde nos vamos moviendo para de esta forma decidir sobre una ruta a seguir o, por qué no, recibir ofertas según nuestra ubicación física a medida que la misma cambia, la API de Geolocalización, la que comenzamos a describir hace un par de días nada más nos provee de ambas herramientas:

  1. La posibilidad de determinar nuestra posición en un momento dado.
  2. Poder realizar un seguimiento de nuestra posición en tiempo real.

Lo primero ya lo vimos en nuestro artículo anterior, para hacer lo segundo tenemos un nuevo método a conocer:

var watchId = navigator.geolocation.watchPosition(fnPosicion, fnError, objOpciones);

El método watchPosition recibe tres parámetros, una función a ejecutar cuando la lectura de posicionamiento se produjo en forma exitosa, una a ejecutar cuando las cosas no salieron de la forma en que lo esperábamos y por último un objeto Javascript con algunas opciones que se pueden configurar (las opciones ya las describimos en el artículo previo). Al igual que con getCurrentPosition,  sólo el primero de los parámetros es obligatorio y recibe un objeto Position (el que también describimos).

La diferencia entre este método y getCurrentPosition es que la función fnPosicion se ejecutará cada vez que la posición cambie, cómo funciona entonces?

  1. Una vez ejecutada la función esta retorna un ID (la variable watchID en nuestro ejemplo) que identifica al "watch" que ejecutará nuestra función callback en forma continua. El método intenta retornar un objeto Position y si lo hace ejecuta la función fnPosicion. En caso contrario, y si fue definida, se ejecuta la función fnError.
  2. Cada vez que la posición cambia (lo cual depende de la implementación) se ejecuta la función callback con el nuevo objeto Position como parámetro.

Un ejemplo vale más que mil palabras...

navigator.geolocation.watchPosition(function(posicion) {
  document.getElementById('Latitud').innerHTML = posicion.coords.latitude;
  document.getElementById('Longitud').innerHTML = posicion.coords.longitude;
});

Y ya tenemos nuestro monitor de posición en tiempo real...

Lo único que nos resta conocer es como "apagar" nuestro monitor de posición y para eso es que tenemos el ID que el método watchPosition nos devolvió:

navigator.geolocation.clearWatch(watchId);

Este último método nos permite detener la ejecución de nuestra función callback y la recolección de posiciones.

Es importante destacar que, en general, las lecturas sucesivas de una posición van mejorando su exactitud, sobre todo si la lectura del posicionamiento se basa en triangulación GSM en lugar de posiciones GPS (de nuevo, el método a utilizar depende de la implementación). En una implementación típica de triangulación GSM la primer lectura de posición es muy probable que sea la posición de la antena a la que estamos conectados lo cual es prácticamente inútil para nuestros objetivos por lo que es buena idea al menos darle "un tiempito" para que se estabilice la lectura mediante un watch.

Una respuesta para “Posicionamiento en tiempo real con la Geolocation API” Deje un comentario ›

Deje una respuesta

Menciones a este artículo

  1. Bitacoras.com

Seguime en Twitter