2012-02-09 13 views
14

Ok, estoy construyendo una aplicación que utiliza la API de geolocalización. Me parece que no puede conseguir un pedazo muy simple de código para trabajar en Firefox 10. Aquí está el código:navigator.geolocation.getCurrentPosition Callbacks no funcionará en Firefox 10

window.onload = function() { 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position) { 
       alert('it works'); 
      }, function(error) { 
       alert('Error occurred. Error code: ' + error.code);   
      }); 
     }else{ 
      alert('no geolocation support'); 
     } 
    }; 

Así, por ejemplo, en cromo, después de ejecutar la página que le preguntará si quiero compartir mi ubicación, y después de hacer clic en Sí, me alertará con "funciona". Ahora en Firefox 10 me pedirá que comparta mi ubicación y después de hacer clic en compartir no hace nada ... He estado tratando de obtener la devolución de llamada para ejecutar cualquier tipo de código pero sin suerte. ¿Es esto un error con Firefox o estoy haciendo algo mal? Tengo un ejemplo del código aquí para probar: http://dev-hub.com/geolocation.html.

Editar --- Mi sistema operativo es Windows 7 de 64 bits

+0

en qué hardware está ejecutando Firefox? –

+0

En Windows 7 64 – Zaptree

+0

La función de geolocalización requiere un dispositivo móvil que admita la geolocalización. [Puede encontrar más información aquí.] (Http://stackoverflow.com/questions/1349064/which-devices-support-javascript-geolocation-via-navigator-geolocation) –

Respuesta

18

bien he encontrado que el problema es de hecho Firefox y que no funciona correctamente o igualmente en todas las plataformas. En cuanto a http://dev.w3.org/geo/api/spec-source.html encontré la siguiente opción de añadir:

window.onload = function() { 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position) { 
       alert('it works'); 
      }, function(error) { 
       alert('Error occurred. Error code: ' + error.code);   
      },{timeout:5000}); 
     }else{ 
      alert('no geolocation support'); 
     } 
    }; 

Como se puede ver aquí el tiempo de espera: 5000 se ha añadido que significa que si por alguna razón el navegador lleva más de 5000 ms (5 segundos) y luego lanzar una error de tiempo de espera (es el código de error 3). Entonces, cada vez que Firefox no funciona, al menos ejecuta la devolución de llamada por error y aparece un mensaje de alerta de "Ocurrió un error. Código de error: 3".

Aparentemente, el valor predeterminado de tiempo de espera es infinito, por lo que nunca se agota ... Chrome es 100% confiable pero Firefox es aproximadamente 10% confiable en mi máquina, lo cual es muy decepcionante. En mi otra computadora que ejecuta Windows XP y está en la misma red, Firefox parece ser 100% confiable.

+7

50000 ms = 50 seg ... entonces tal vez debería usar 5000 ms (3 ceros) –

0

que he hecho este ejemplo para usted:

if(!navigator.geolocation){ 
alert('El Navegador no soporta GeoLocalización'); 
} 

function doGeo(position) 
{ 
    var coords = position.coords.latitude + '+' + position.coords.longitude; 
    var url = 'https://maps.google.es/?q=' + coords; 
    $("#lat").html("Latitud: " + position.coords.latitude); 
    $("#lon").html("Longitud: " + position.coords.longitude); 
    $("#acc").html("Precisión: " + position.coords.accuracy); 
    $("#alt").html("Altitud: " + position.coords.speed);   
    var link = '<a class="btn btn-primary" href="' + url + '" target="_blank">Ir a la  Ubicación en Google Maps</a>'; 
    $(link).appendTo('#GoogleMaps'); 
} 

function lost() 
{ 
    alert('Algo salió mal, Intentelo más tarde...'); 
}; 
navigator.geolocation.watchPosition(doGeo, lost, {maximumAge:0,enableHighAccuracy:true}   ); 

http://jsfiddle.net/aA2zv/35/

espero que ayude!

+0

Altitud == Velocidad? –

+0

Obtuve el mensaje de la función perdida :( –

Cuestiones relacionadas