2011-08-03 9 views
6

¿Alguien ha tenido que lidiar y logró encontrar una solución viable para el problema de geolocalización de Firefox 5 que publiqué en el siguiente informe de errores. Es más fácil vincular al informe que volver a describirlo aquí.Firefox 5, Geolocalización y "No ahora" Problema

https://bugzilla.mozilla.org/show_bug.cgi?id=675533

Seguramente no soy el único en el planeta esto ha mordido.

+1

Mismo problema aquí. Los ingenieros que comentan en el informe de errores hacen un buen punto (su UI debe manejar con gracia el caso donde no se recibió respuesta), pero en mi opinión debería expirar y por lo tanto desencadenar la devolución de llamada de error en ese caso. – brianjcohen

Respuesta

2

Esto realmente no resuelve la raíz de su problema, pero mi estrategia para manejar esto es establecer un punto de ubicación predeterminado que utilizo de inmediato (sin esperar a que se responda la pregunta de geolocalización).

Si obtengo una ubicación del usuario, simplemente la cambio a la nueva ubicación. Si recibo un rechazo o no respondo, me quedo en la ubicación predeterminada.

También es mi experiencia que un cliente de escritorio (en mi caso Firefox en una computadora Windows estacionaria) toma mucho más tiempo para responder que un cliente móvil (en mi caso, Safari en iPhone). Me vi obligado a establecer el tiempo de espera en 10 segundos (10000) para dar al cliente de escritorio el tiempo suficiente para responder. Entonces, si tiene un mapa, inicializarlo y centrarlo en una ubicación predeterminada directamente le dará al usuario un mapa en la pantalla mucho más rápido que si tuviera que esperar una respuesta.

¡Buena suerte con su proyecto de posicionamiento!

+0

buena idea - valor predeterminado –

2

Podría llegar un poco tarde pero espero poder ayudar a los demás. Mi solución se basa en una llamada retrasada. Si no hay ninguna solución cuando la llamada demorada se activa, me vuelvo sospechoso :)

var timeIsPassig = false; 

function anyThing(){ 
    timeIsPassig = true; 
    setTimeout(
    function(){ 
     if (timeIsPassig) { 
     timeIsPassig = false; 
     console.log("Waiting too much... Or did you say not now? :-P"); 
     } 
     }, 
    10000 
    ); 
    navigator.geolocation.getCurrentPosition(
    function (pos) {timeIsPassig = false; /* rest of positioning*/}, 
    function (err) {timeIsPassig = false; /* rest of error handling*/}, 
    {maximumAge: 30000, timeout: 10000, enableHighAccuracy: true} 
    ) 
    } 
+0

Buena respuesta. Y también resuelve el caso que los desarrolladores de Mozilla están haciendo: que debemos manejar el caso "¿Qué pasa si el usuario lo ignora?". Por cierto, IE11 ni siquiera tiene una opción de "denieguelo esta vez", por lo que esta es la solución que estoy recomendando a mi equipo de desarrollo. –

Cuestiones relacionadas