2012-02-28 56 views
1

我正在開發一個需要地理定位數據的JQuery移動PhoneGap應用程序。目前由getCurrentPosition()返回的位置非常不準確,有時甚至在一英里之外。看來,該應用程序正在使用Google位置服務來獲取職位。有什麼辦法強制應用程序使用GPS?在Phonegap中使用getCurrentPosition返回不準確的GPS座標

同樣,第一次發佈職位時,經常會返回一箇舊職位(即使maximumAge設置爲0)。有誰知道這可能是爲什麼?

我已經通過下面的地理位置API進行了閱讀,但無法找到任何內容。

http://dev.w3.org/geo/api/spec-source.html

回答

5

一對夫婦的事情,你可以嘗試是確保你正在設置enableHighAccuracy參數設置爲true在調用getCurrentPosition。

但是,大多數GPS芯片在獲得準確位置之前需要一點時間。更好的解決方案是調用watchPosition,並等待3到5個結果,因爲在這種情況下,您會發現精度要好得多。然後,您可以做一個清晰的觀察並使用更精確的GPS位置。

+0

使用watchPosition/clearWatch而不是getCurrentPosition似乎會干擾設備上的另一個GPS應用程序。只要我試圖通過watchPostion獲取職位,我的其他應用程序就會停止接收新的座標。你知道這可能是爲什麼嗎? – user1014759 2012-03-29 13:06:59

+0

@ user1014759有點晚,但這可能是因爲你使用相同的變量。例如,如果您使用var onSuccess = function(position),則需要將其更改爲var theSuccess = function(position)。例如,在錯誤處理程序中使用的變量相同,所以函數forErrors(錯誤)。爲我工作。 – jord49 2015-04-16 20:05:54

0

這是地理定位API,而不是硬件GPS修復 - 因此您可能只能獲取網絡位置。 一些股票瀏覽器也有一個接近「功能」...例如,與芬內克它工作正常。

2

正如其他人寫的。 getCurrentPosition不一定精確到儀表,它取決於GPS是否激活或不激活。

getCurrentPossition是用於快速獲取位置搜索和初始位置,同時GPS獲得預設修復。

我通常這樣做:

//Initialize GPS 
navigator.geolocation.getCurrentPosition(onGPSSuccess, onGPSError, { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }); 
navigator.geolocation.watchPosition(onGPSSuccess, onGPSError, { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }); 

吳丹如果預期準確的座標,你可以檢查將得到一個快速發佈和手錶的功能將得到反覆呼籲的位置..

所以:position.coords.accuracy表示回撥功能中的精度。

+0

謝謝@Kim,您的解決方案對我來說非常有用 – 2018-01-30 13:04:59