2014-08-28 64 views
1

問題: 我的移動JavaScript應用程序不斷返回完全相同的座標,這些座標已經超過500米。準確性不是那麼重要。令我困擾的是,返回完全相同的座標。直到我訪問使用地理位置的外部網頁時,問題才得以解決。從那以後,我的應用程序正常運行。我懷疑不知何故,我的頁面緩存了一個不正確的位置,並且一旦瀏覽器檢測到一個新的站點正在請求位置,那麼該值就會被刷新。這只是我的理論。重置瀏覽器的地理位置值

問題: JavaScript是否緩存位置信息?如果是這樣,is there any known means of forcing a refresh?上述解決方案在測試之外並不實用。

代碼:

navigator.geolocation.getCurrentPosition(processLocation,locationError,{ 
       timeout: 60000, 
    enableHighAccuracy: true, 
      maximumAge: Infinity 
}); 

function processLocation(position){ 
     sendLocationToServer(position.coords.latitude,position.coords.longitude); 
} 

硬件:我使用的是iPhone和Safari網絡瀏覽器。我不認爲使用iPhone應該與我在Safari上的事實一樣重要,但我確實嘗試重置手機的位置和隱私設置。這並沒有解決問題,只是確保瀏覽器會再次提示我進行位置許可。

--update ---

它可能實際上是由 「enableHighAccuracy」 字段引起的。移除它解決了問題的第二次再次發生。當我找到更多的信息,爲什麼這個參數與它的預期效果相反,我會發布細節。

回答

4

清除位置緩存: 如果您不需要緩存值,請將maximumAge設置爲0。我誤解了maximumAge字段。我把它與超時混淆了。它指定應該使用多長時間的緩存位置值。

不準確的位置值:對於零星的不正確的值,則需要使用watchCurrentPosition這將遞歸地獲取當前位置信息,然後覈對Position.coor.accuracy。不要假設返回的第一個值總是低於您想要的閾值。

+0

不要遞歸調用'getCurrentPosition' - 這就是'watchPosition'的用途。另外,在調用時將'enableHighAccuracy'設置爲true。 – 2014-09-01 13:11:23

+0

是的。剛做了一個編輯。 – 2014-09-02 16:39:16