Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/11/2013, 08:42
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Geolocalización HTML5

Hola Carlos:

Con el código que presentas, el setInterval(ubica, 10000); recarga la página cada 10 segundos. Es normal que, a menos que el navegador te de la opción de aceptar la geocolalización para "esta página, siempre", te la vuelva a pedir. Es normativo y ajustado al derecho de privacidad del usuario.

Geolocalización W3C (ver Geolocalización API Especificación) te permite dos formas de acceso, con los parámetros correspondientes:
El primero, el que estás usando (getCurrentPosition), es:
Código Javascript:
Ver original
  1. navigator.geolocation.getCurrentPosition(successCallback, errorCallback,{maximumAge:10000});

maximumAge:10000 le está diciendo al código "Si el agente de usuario no tiene un fresco mayor que 10 segundos" (es decir, que no la hayas pedido antes de 10 segundos Lo normal sería:
Código Javascript:
Ver original
  1. var PositionOptions = {
  2.     timeout: 600000,
  3.     maximumAge: 50000,
  4.     enableHighAccurace: true
  5. };
  6. navigator.geolocation.getCurrentPosition(successCallback, errorCallback, PositionOptions);

timeout: 5000, es el tiempo de espera (5 segundos) antes de lanzar errorCallback, si no encuentra la posición. Y ahora he extendido a que no la hayas pedido en los 10 minutos anteriores.

Lo que tu estás queriendo hacer es que repita la posición "actual" sin la correspondiente reiteración de autorización. En este caso acudimos a watchPosition para iniciar la geolocalización y clearWatch para detenerla.
Código Javascript:
Ver original
  1. navigator.geolocation.watchPosition(successCallback, errorCallback);
  2. navigator.geolocation.clearWatch(watchId);

En este caso, reiterará la nueva posición siempre que verifique un cambio de la misma

Todo ello dentro de variables e invocación de funciones como se indica en el API.