2011-06-07 21 views
5

查看網絡地理位置API documentation有兩種獲取位置的方式 - getCurrentPosition可快速讀取位置,watchPosition可監視位置更改。用getCurrentPosition等待達到精確度閾值

我正在尋找的是一種獲取位置讀數的方法,它儘可能快地相當準確。我認爲理想的做法是在調用getCurrentPosition時使用準確性閾值 - 並且當達到閾值或超時超時(結果儘可能準確)時調用成功處理程序。

這還不存在吧?大概這是相當簡單的實現這一點,只是包裝watchPosition方法停止超時或達到閾值後檢查。我將使用這種方法(並打算髮布代碼),如果沒有人知道內置的方法來做到這一點...

回答

3

沒有內置功能。我發現超時比設定的精度要好。通常在iPhone上,精確度不會超過100米左右,所以繼續檢查更好是浪費。使用watchPosition()工作得最好,它似乎三角形,所以三次讀數後,它很少變得更好。我等了五秒鐘,然後停下來。

演示:http://jsfiddle.net/ThinkingStiff/3k859/

HTML:

<div id="result"></div> 

腳本:

function setGeolocation() { 

    var geolocation = window.navigator.geolocation.watchPosition(function (position) { 

      document.getElementById('result').innerHTML += 
        'lat: ' + position.coords.latitude + ', ' 
       + 'lng: ' + position.coords.longitude + ', ' 
       + 'accuracy: ' + position.coords.accuracy + '<br />'; 

     }, 
     function() { 
      //error 
     }, 
     { 
      maximumAge: 250, 
      enableHighAccuracy: true 
     } 

    ); 

    window.setTimeout(function() { 

     window.navigator.geolocation.clearWatch(geolocation) 

    }, 5000); 

}; 

setGeolocation(); 
+0

感謝您的顯示功能。這是我計劃寫的,但getCurrentPosition對我的用法看起來很好。 – 2011-11-10 11:40:22

+0

我已經把這個標記爲答案,因爲它本來就是我最初想要的 - 但我不打算使用它,所以不知道它是否可行! – 2011-11-11 09:07:20

2

基於我的經驗爲基於J2ME地理位置的應用程序的Taxi,GPS芯片進行一些初始化以獲得準確的位置讀數。首選的方法是使用類似於watchPosition()的方法,這將保持GPS芯片的熱度以提供準確的位置讀數。

我認爲你的方法在理論上是完善的,但是它需要在真實設備上進行測試,因爲GPS芯片在不同設備上的性能各不相同。

希望這會有所幫助。

+0

問:是否有自動獲得位置精度的一定水平的函數(或超時)。 答案:No. 公平摘要? :) – 2011-07-05 16:35:09