2010-09-20 4 views
18

Das ist mein einfacher Code, den ich in einer Testseite verwende: aber es dauert ewig, bis ich die Adresse finde ... wie kommt es? mache ich etwas falsch?Geolocation ist so langsam! was mache ich falsch?

<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

wo ist das html5? –

+0

Wie lange dauert es? Ich nehme an, du machst nicht viele Lookups auf einmal? – LarsH

+3

@Shawn: Das 'navigator.geolocation.getCurrentPosition'-Bit: http://www.w3.org/TR/geolocation-API/ Ja, die Terminologie ist ein bisschen ungenau, aber es ist klar, was gemeint ist. –

Antwort

6

Ich habe festgestellt, dass die Geschwindigkeiten je nach Browser sehr unterschiedlich sind. Ich habe meine Geolocation mit Chrom getestet, weil das fast augenblicklich ist. Firefox ist langsam wie die Hölle (oft funktioniert es nicht einmal), und Safari ist an zweiter Stelle. Hoffentlich rechtzeitig werden sie ihre Implementierung so beheben, dass es so schnell wie Chrom

+0

genau, ich habe die gleichen Ergebnisse! – Francesco

+0

zu mir getCurrentPosition scheint schneller als watchPosition auf firefox 11 – max4ever

+0

Ich dachte, dass es nicht funktionierte dann etwa 5 Minuten später eine Reihe von Rückrufen alle zusammen kamen. – QuentinUK

0

Ein paar Ihrer Anrufe kann einige Sekunden dauern, zum Beispiel navigator.geolocation.getCurrentPosition dauert bis zu 5 Sekunden (wenn ich arbeite) für mich in Safari.

5

Nun - es macht tatsächlich Geolocation!

Um die Geschwindigkeit zu erhöhen, sollten Sie die zusätzlichen Parameter für die Verwendung zwischengespeicherter Ergebnisse und eine Zeitüberschreitung bereitstellen.

+0

Die meisten praktischen Ratschläge zu dieser Frage – jpcamara

+0

Sie können diese zusätzlichen Parameter hier anzeigen: https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions - in meinem Fall hat dies jedoch keinen Unterschied gemacht. – Hendrik

2

Überprüfen Sie den Standortdienstmodus Ihres mobilen Geräts. Stellen Sie sicher, dass die Genauigkeit auf Ihrem Gerät im Status "Hoch" ist. Der Modus Hohe Genauigkeit verwendet GPS, WIFI oder Mobiles Netzwerk, um den Standort zu finden.

Wenn Sie Low oder GPS only wählen, dauert es ewig.

Spielen Sie auch mit der Geo-Location-Option und geben Sie die Timeout- und Cache-Optionen.

+0

Sollte das nicht anders herum sein? Ist es richtig, dass hohe Präzision weniger als niedrige Präzision erfordert? – Alpha

+0

@Alpha - Hohe Präzision ist genauer und kann häufigere Updates auf mobilen Geräten bereitstellen. Der Vorteil der geringen Genauigkeit ist die Batterielebensdauer. Auch auf neueren Android-Handys wie Samsung S6 bekomme ich Update-Rate von etwa 1 Hz. Bei einem älteren Telefon ist es seltener. – kashiraja

+0

@kashiraja Nur um sicher zu gehen, dass ich es richtig mache: Die Post behauptet mit GPS ist langsam. Es behauptet auch, dass die Verwendung von GPS + Mobilfunknetz + WiFi ist schnell. Ist das korrekt? Wenn es ist, stelle ich mir vor, dass WiFi + Mobilfunknetz zuerst ungenaue Ergebnisse liefert und das GPS schließlich aktualisiert wird. Ansonsten kann ich nicht herausfinden, warum die Verwendung von mehr Ressourcen ein schnelleres Ergebnis liefern würde. – Alpha