海拔高度始终返回0.00

时间:2016-02-06 20:30:20

标签: android mobile android-elevation android-gps

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()));  

3 个答案:

答案 0 :(得分:1)

Location类只是用于存储位置提供程序的位置更新结果的对象。

致电setLatitudesetLongitude不会为您神奇地填补该位置的海拔高度。

答案 1 :(得分:0)

据我所知,当GPS本身进行三角测量时,位置将只有一个高度,使用卫星作为参考点。当您从提供者处获得位置时,它会计算高度,但是当您强制使用特定坐标时,您无法获得该位置。

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

答案 2 :(得分:0)

您正在手动汇编Location个对象。如果您希望Location对象为getAltitude()返回非零值,则需要致电setAltitude()

如果您希望获取设备的当前位置(可能包括其高度),可以使用LocationManager中涵盖的Execute

如果你试图在特定纬度和经度上获得地球表面海拔以上的高程,那么Android没有任何东西。您需要找到某种具有这些详细信息的库或Web服务。

相关问题