2010-09-20 17 views
18

este es mi código simple que estoy usando en una página de prueba: pero lleva años encontrar la dirección ... ¿por qué? ¿Estoy haciendo algo mal?¡La geolocalización es muy lenta! ¿Qué estoy haciendo mal?

<script src="http://maps.google.com/maps?hl=it&amp;file=api&amp;v=2&amp;sensor=true&amp;key=*xxxxxx*" type="text/javascript"></script> 
<script type="text/javascript"> 
    var map; 
    var geocoder; 

    function addAddressToMap(response) 
    { 
     if (!response || response.Status.code != 200) 
     { 
     alert("Sorry, we were unable to geocode that address"); 
     } 
     else 
     { 
     place = response.Placemark[0]; 
     point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]); 

     document.getElementById('address').innerHTML = place.address; 
     } 
    } 


    function searchGeolocation() 
    { 
     if (navigator.geolocation) 
     { 
      navigator.geolocation.getCurrentPosition(function(position) 
      { 
       geocoder = new GClientGeocoder(); 
       document.getElementById('latitude').innerHTML = position.coords.latitude; 
       document.getElementById('longitude').innerHTML = position.coords.longitude; 
       coordinates = position.coords.latitude+","+position.coords.longitude; 
       geocoder.getLocations(coordinates, addAddressToMap); 

      }); 
     }else 
     { 
      document.getElementById('latitude').innerHTML = "Unknown"; 
      document.getElementById('longitude').innerHTML = "Unknown"; 
      document.getElementById('address').innerHTML = "Unknown"; 
      alert("I'm sorry, but geolocation services are not supported by your browser.");  
     } 
    } 



</script> 


<br/> 
latitude = <div id="latitude">loading...</div> 
<br/> 
longitude = <div id="longitude">loading...</div> 
<br/> 
address = <div id="address">loading...</div> 
<br/> 


<script type="text/javascript"> 

    searchGeolocation(); 

</script> 
+5

¿dónde está el html5? –

+0

¿Cuánto tiempo está tomando? ¿Asumo que no estás haciendo una gran cantidad de búsquedas a la vez? – LarsH

+3

@Shawn: El bit 'navigator.geolocation.getCurrentPosition': http://www.w3.org/TR/geolocation-API/ Sí, la terminología es un poco imprecisa, pero está claro lo que significa. –

Respuesta

6

He encontrado que las velocidades son muy diferentes dependiendo del navegador. He estado probando mi geolocalización con Chrome, porque eso es casi instantáneo. Firefox es lento como el infierno (muchas veces ni siquiera funciona), y Safari está en segundo lugar. Esperemos que con el tiempo arreglen su implementación por lo que es tan rápido como

+0

exactamente, ¡tengo los mismos resultados! – Francesco

+0

para mí getCurrentPosition parece más rápido que watchPosition en firefox 11 – max4ever

+0

Pensé que no estaba funcionando, luego de unos 5 minutos más tarde un conjunto de devoluciones de llamada se unieron. – QuentinUK

0

de Chrome. Un par de sus llamadas pueden tardar unos segundos en terminar, por ejemplo navigator.geolocation.getCurrentPosition toma hasta 5 segundos (cuando funciona) para mí en Safari.

5

Bueno, ¡en realidad está haciendo geolocalización!

Para acelerar, considere proporcionar los parámetros adicionales para utilizar los resultados almacenados en caché y un tiempo de espera excedido.

+0

Consejos más prácticos sobre esta pregunta – jpcamara

+0

Puede ver esos parámetros adicionales aquí: https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions - en mi caso, esto no marcó la diferencia. – Hendrik

2

Compruebe el modo de servicio de ubicación de su dispositivo móvil. Asegúrese de que la precisión esté en estado Alto en su dispositivo. El modo de alta precisión usa GPS, WIFI o red móvil para encontrar la ubicación.

Si elige el modo Bajo o GPS solo, tardará una eternidad.

Juega también con la opción de ubicación geográfica y da las opciones de tiempo de espera y caché.

+0

¿No debería ser de otra manera? ¿Es correcto que la alta precisión requiere menos que la baja precisión? – Alpha

+0

@Alpha: la alta precisión es más precisa y puede proporcionar actualizaciones más frecuentes en dispositivos móviles. La ventaja de la baja precisión es que preserva la duración de la batería. Además, en los teléfonos Android más recientes, como Samsung S6, recibo una tasa de actualización de aproximadamente 1 Hz. En un teléfono antiguo, es menos frecuente. – kashiraja

+0

@kashiraja Solo para asegurarme de que lo hago bien: la publicación afirma que usar el GPS es lento. También afirma que usar GPS + red móvil + WiFi es rápido. ¿Es eso correcto? Si es así, imagino que la red móvil WiFi + proporciona resultados inexactos primero y finalmente se actualiza el GPS. De lo contrario, no puedo entender por qué usar más recursos daría un resultado más rápido. – Alpha

Cuestiones relacionadas