1

getAltitude() 方法的返回值始终返回 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()));  
4

3 回答 3

1

该类Location只是一个对象,用于存储来自 Location Provider 的位置更新结果。

呼叫setLatitude并且setLongitude不会只是神奇地为您填写该位置的高度。

于 2016-02-06T20:38:15.150 回答
0

据我所知,一个位置只有在由 GPS 本身进行三角测量时才会有一个高度,使用卫星作为参考点。当您从提供商那里获得位置时,它会计算高度,但是当您强制使用特定坐标时,您不会得到。

要知道特定坐标的高度(不同于当前的 GPS 坐标),您应该从地图(例如:bing3d 或 openstreetmap)中查询该信息。

于 2016-02-06T20:46:52.827 回答
0

您正在手动组装一个Location对象。如果您希望该Location对象返回一个非零值getAltitude(),您需要调用setAltitude().

如果您希望获取设备的当前位置,可能包括其高度,您可以使用LocationManager,如文档中所述

如果您想获得特定纬度和经度的地球表面海拔高度,Android 没有任何功能。您将需要找到某种具有这些详细信息的库或 Web 服务。

于 2016-02-06T20:54:40.893 回答