2013-05-30 58 views
0

我正在與GPS相關的應用程序,我需要得到垂直精度,但它總是修復11.0000我需要它動態作爲緯度和經度,我用getAccuracy,但它導致水平精度。垂直精度在Android GPS GPS

@Override 
public void onLocationChanged(Location location) 
{ 
if (location != null) 
{ 
lat = location.getLatitude(); 
lon = location.getLongitude(); 
Geocoder geoCoder = new Geocoder(getBaseContext(), 
Locale.getDefault()); 
address = mailOb.getAddress(geoCoder, lat, lon); 

if (!meterFootFlag) 
{ 
diameter = Math.round(location.getAccuracy()) + " m."; 
altitude = Math.round(location.getAltitude()) + " m."; 

} 
else 
{ 
diameter = Math.round(location.getAccuracy() * 3.28084) 
+ " ft."; 
altitude = Math.round(location.getAltitude() * 3.28084) 
+ " ft."; 

} 

if (diameter.contains("+")) 
diameter.replace("+", ""); 
else if (altitude.contains("+")) 
altitude.replace("+", ""); 
} 
else 
{ 
lat = 0.0; 
lon = 0.0; 

if (!meterFootFlag) 
{ 
altitude = 0.0 + " m."; 
diameter = 0.0 + " m."; 

} 
else 
{ 
altitude = 0.0 + " ft."; 
diameter = 0.0 + " ft."; 

} 
} 
mlocManager.removeUpdates(MySettings.this); 
pDialog.dismiss(); 

我怎樣才能得到它垂直精度提前

感謝

回答

3

Android不提供垂直精度。
垂直精度通常比水平精度差2-3倍。

一個簡單的解決方案:使用橫向和縱向的androids精度。

先進的解決方案1:找出Android使用的總精度(這可能是一個錯誤,球的徑向誤差,包括緯度,經度和海拔高度)

嘗試找出一個轉換因子,例如取準確性和乘數2,5

另一種解決方案,看看iphone的水平和垂直精度,並與android的比較。找出acc到vert acc的平均換算係數。

解決方案3:想想你爲什麼需要垂直精度。你爲什麼需要這個?

提示:從我的iphone4的例子:當iPhone顯示30米HOR,我有57vert,10hor:15-20vert,5霍爾,10vert

+0

那麼在這種情況下有什麼選擇?我要離開去使用它嗎?或者我可以使用其他任何東西,然後呢? – Yagnesh

+0

我更新了我的amswer – AlexWien

+0

@Yug是我的答案有用嗎?考慮也upvoting。 – AlexWien

1

高度精度在很大程度上取決於核心GPS精度,使用額外的傳感器作爲晴雨表並使用wifi/cell網絡加上融合算法。它沒有一個恆定的比例。如果你真的想要得到準確性,你可以嘗試以下方法:在靜止的時候檢查信號的變化,這不會總是有效的,因爲有些設備會檢測到靜止,只是重複上次輸出以節省功耗。另一種成本較高的方法是參考https://developers.google.com/maps/documentation/elevation/intro ,所以你基本上採用經緯度測量和緯度誤差,並檢查垂直誤差,假設你處於空曠區域。