2015-07-01 125 views
1

我發現了很多地理定位精度的處理,但沒有解決谷歌API和地圖之間的差異。這是在Android Chrome上。谷歌地圖和谷歌地理定位API之間的精度差異

事實上,兩者之間存在很大差異。該API最多給我30米,但地圖管理不到10.什麼給了?下面是我的代碼片段:

<script type="text/javascript" 
src="https://maps.googleapis.com/maps/api/js?sensor=true"> 
</script> 

再後來:

function getLoc() { 
navigator.geolocation.getCurrentPosition(showLoc, errorLoc, 
    {maximumAge:15000, timeout:60000, enableHighAccuracy:true}); 
} 

function showLoc(position) { 
var elt = document.getElementById("userloc"); 
elt.innerHTML = "Lat " + position.coords.latitude + "&nbsp;&nbsp;" + 
       "Long " + position.coords.longitude + "&nbsp;&nbsp;" + 
       "Accuracy " + position.coords.accuracy; 
} 

function errorLoc(msg) { 
alert(msg); 
} 

回答

0

這可能是因爲你只取一個樣品geoloc。 GPS硬件很冷,谷歌給你的準確性結果是基於它在特定時間段內接收到的其他樣本數量。

在短時間內抽取大量樣本,看看您是否可以注意到不同之處。然後選擇你認爲給你的準確性,時間到樣品和電池消耗之間的最佳折中。

當您輪詢5秒以上時,在3-5米範圍內查看報告的準確度並不少見。這不是它的真正準確性,只是數據的一致性。諸如建築物和牆壁之類的東西可能會歪曲結果(頻率通過所需的時間),而不一定會影響報告的準確性(數據的明顯一致性)。

如果你一直有30m的btw(因爲它不會波動),這可能是因爲gps硬件被禁用,並且它使用wifi互聯網地址查找作爲備份。

+0

確定很酷。我一直得到30,座標不會在民意調查之間改變。有沒有辦法檢查GPS是否打開?我假設地圖正在使用它。我如何使用它? – MackTuesday

+0

不幸的是,返回對象似乎不能識別讀數的來源。一些較低級別的API可以。當我運行我的應用程序時,設備的geoloc圖標脈衝,以指示它正在讀取。如果你看不到,這是硬件未被使用的標誌。 「enableHighAccuracy」僅被定義爲這個特定API的提示,實現不需要真正遵守它,並且設備的用戶設置可以覆蓋它(確保設備設置已啓用並且您有權限)。 http://dev.w3.org/geo/api/spec-source.html#high-accuracy – NameSpace

+0

可能是有用的鏈接,爲您解決問題:http://stackoverflow.com/questions/9053262/geolocation-html5- enablehighaccuracy-true-false-or-best-option – NameSpace