2016-02-06 97 views
0

getAltitude()方法的返回值始終返回0.00。許多答案表明,這可能歸因於不支持高度細節的提供商。我已經檢查了這個,它確實支持高度。海拔高度始終返回0.00

我想從GPS座標中獲取高度。任何幫助表示讚賞。

我的代碼可以在下面看到。

LocationManager locationManager; LocationProvider locationProvider; 

/* Get LocationManager and LocationProvider for GPS */ 
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
locationProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER); 

/* Check if GPS LocationProvider supports altitude */ 
locationProvider.supportsAltitude(); 

//Location object 
Location l = new Location("A"); 
l.setLatitude(40.796852); 
l.setLongitude(-74.061340); 
l.getAltitude(); 

//Returns 0.00 
Log.i("Tag", String.valueOf(l.getAltitude())); 

//returns True 
Log.i("Tag", String.valueOf(locationProvider.supportsAltitude())); 
+0

它應該返回什麼? – BSMP

+1

你明白'locationProvider.supportsAltitude();'返回一個布爾值?你真的檢查過這個值是否爲真?因爲你目前使用它的方式幾乎沒有任何東西。 –

+0

它應該返回高度(如果可用),高於WGS 84參考橢球體的高度。我嘗試了幾個座標,但結果是一樣的。 –

回答

0

您正在手動組裝Location對象。如果您希望Location對象爲getAltitude()返回非零值,則需要致電setAltitude()

如果您希望獲取設備的當前位置(可能包括其高度),則可以使用LocationManager,如the documentation中所述。

如果您試圖在特定的緯度和經度上獲取地球表面海拔高度,那麼Android沒有任何相關信息。您將需要找到某種具有這些細節的圖書館或Web服務。

+0

這是我的問題。我手動組裝一個Location對象,然後調用getAltitude()。我將查看LocationManager路線。謝謝 –

1

Location類只是用來存儲從所述位置提供者的位置更新的結果的對象。

通話setLatitudesetLongitude不會神奇地填滿你在那個位置的高度。

+0

因此,調用位置對象上的getAltitude()不正確?在我的一個例子中,我檢索用戶位置,我應用了getAltitude(),但結果是一樣的。 –

+0

他們正在使用的位置對象可能由位置提供程序創建。 –

+0

剛剛檢查過,他們確實使用位置提供程序。你有什麼建議可以讓我如何以另一種方式獲得高度? –

0

據我所知,一個位置將只有一個高度時,由GPS本身進行三角測量,使用衛星作爲參考點。當你從提供商那裏得到位置信息時,它會這樣來計算海拔高度,但是當你強制特定的座標時,你就不會那麼做。要知道特定座標(與當前GPS座標不同)的高度,應該從地圖(例如:bing3d或openstreetmap)查詢該信息。