2010-09-20 10 views
18

c'est mon code simple que j'utilise dans une page de test: mais il faut du temps pour trouver l'adresse ... comment ça se fait? Est-ce que je fais quelque chose de mal?La géolocalisation est si lente! ce que je fais 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

où est le html5? –

+0

Combien de temps cela prend-il? Je suppose que vous ne faites pas un grand nombre de recherches à la fois? – LarsH

+3

@Shawn: Le bit 'navigator.geolocation.getCurrentPosition': http://www.w3.org/TR/geolocation-API/ Oui, la terminologie est un peu imprécise, mais c'est clair. –

Répondre

6

J'ai trouvé que les vitesses sont très différentes selon le navigateur. J'ai testé ma géolocalisation avec du chrome, car c'est presque instantané. Firefox est lent comme l'enfer (la plupart du temps il ne fonctionne même pas), et Safari est en deuxième position. Avec le temps, ils vont corriger leur implémentation, c'est aussi rapide que le chrome

+0

exactement, j'ai les mêmes résultats! – Francesco

+0

pour moi getCurrentPosition semble plus rapide que watchPosition sur firefox 11 – max4ever

+0

Je pensais que cela ne fonctionnait pas alors environ 5 minutes plus tard, un tas de rappels tous se sont réunis. – QuentinUK

0

Un couple de vos appels pourrait prendre quelques secondes pour terminer, par exemple navigator.geolocation.getCurrentPosition prend jusqu'à 5 sec (en travaillant) pour moi dans Safari.

5

Eh bien, c'est en train de faire de la géolocalisation!

Pour accélérer le processus, envisagez de fournir des paramètres supplémentaires pour l'utilisation des résultats mis en cache et un délai d'expiration.

+0

Le plus de conseils pratiques sur cette question – jpcamara

+0

Vous pouvez voir ces paramètres supplémentaires ici: https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions - dans mon cas, cela n'a pas fait de différence cependant. – Hendrik

2

Vérifiez le mode de service de localisation de votre appareil mobile. Assurez-vous que la précision est en état élevé sur votre dévide. Le mode Haute précision utilise le réseau GPS, WIFI ou Mobile pour trouver l'emplacement.

Si vous choisissez le mode Bas ou GPS uniquement, cela prend une éternité.

Jouez également avec l'option de géolocalisation et indiquez les options de délai et de cache.

+0

Cela ne devrait-il pas être autrement? Est-il exact qu'une haute précision nécessite moins qu'une faible précision? – Alpha

+0

@Alpha - Haute précision est plus précise et peut fournir des mises à jour plus fréquentes sur les appareils mobiles. L'avantage de la basse précision est qu'il préserve la vie de la batterie. En outre, sur les téléphones Android plus récents tels que Samsung S6, je reçois un taux de mise à jour d'environ 1 Hz. Sur un téléphone plus ancien, c'est moins fréquent. – kashiraja

+0

@kashiraja Juste pour être sûr de bien faire les choses: les post-réclamations utilisant le GPS sont lentes. Il prétend également que l'utilisation du GPS + réseau mobile + WiFi est rapide. Est-ce exact? Si c'est le cas, j'imagine que le réseau mobile WiFi + fournit des résultats inexacts en premier et que le GPS est finalement mis à jour. Sinon, je ne peux pas comprendre pourquoi l'utilisation de plus de ressources donnerait un résultat plus rapide. – Alpha