高度总是 returns 0.00

Altitude always returns 0.00

getAltitude() 方法的 return 值总是 returns 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()));  

Location class 只是一个用于存储来自位置提供程序的位置更新结果的对象。

调用 setLatitudesetLongitude 不会神奇地为您填充该位置的高度。

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

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

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

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

如果您想要获取地球表面在特定纬度和经度的海拔高度,Android 对此没有任何帮助。您需要找到具有这些详细信息的某种图书馆或 Web 服务。