海拔高度总是为0。我无法获取海平面以上的高度。

4

我一直得到的高度值为0。我想在Android中使用GPS获取海拔高度。

我的代码如下:

public void onLocationChanged(Location location) {
    double lat = (double) (location.getLatitude());
    double lng = (double) (location.getLongitude());
    double alt = (double) (location.getAltitude());
    latitudine = (int) (lat * 1e6);
    longitudine = (int) (lng * 1e6);
    altitudine = (int) (alt * 1e6);
}
2个回答

6

您是否检查过这个问题是否与设备有关?您是在模拟器上工作吗?

首先,我建议您检查一下您的设备是否支持以下高度确定功能:

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 location;

/* Get current location from GPS */
location = Location(LocationManager.GPS_PROVIDER);

/* Check if the requested Location has its altitude set */
location.hasAltitude();

我已经安装了一个高度计应用程序,它运行良好...所以我认为这个设备支持高度计功能。 - AndreaF
然而,您并没有指定如何初始化“locationProvider”变量。 - AndreaF
对不起!我已经完成了上面的回答。 - Nippey
@AndreaF 你有找到解决方法吗?我也遇到了同样的问题,我的 onLocationChanged 返回的要么是0.0,要么就是比我在同一设备上安装的高度计应用程序显示的高度高得多(超过80/90米)。 - Tiago Ornelas

2

在调用location.getAltitude()之前,你应该检查位置是否包含高度信息:只需调用location.hasAltitude()就可以知道返回的位置是否包含此类型的信息。

根据你使用的位置提供者(NETWORK或GPS),它可能不支持高度测量。如果你有一个需要高度信息的应用程序,请尝试找出它使用的位置提供者。

如果你想检查特定位置提供者是否支持高度信息,请先调用LocationManager.getProvider(SensorManager.GPS_PROVIDER)获取LocationProvider,然后调用方法locationProvider.supportsAltitude()


我正在使用React + Capacitor应用程序进行开发。我遇到了相同的问题:高度为0。在这种环境下是否有办法运行.supportsAltitude()?纬度和经度工作正常。 - Juan Salvador
我正在使用React + Capacitor应用程序进行工作。我遇到了同样的问题:海拔高度为0。在这种环境下有没有办法运行.supportsAltitude()方法?经纬度功能正常运行。 - Juan Salvador

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接