有没有一种快速有效的方法来获得Android平台上经度和纬度的高度(海拔)?
我正在开展一个项目,我必须从地面计算我的设备高度.我在互联网上搜索过但找不到任何解决方案.
拜托,有人告诉我该怎么做.. ??
我做了一个简单的应用程序,根据iPhone上的GPS位置显示高度.
高度是如何获得的?
它是在我坐标处得到陆地的高度还是得到实际的高度?(我在同一栋楼里尝试了相同的应用程序;一次在底层,一次在三楼,但显示相同的高度)
是否有可能在不同的楼层获得不同的高度?(就像我的Android手机有一个气压计传感器,我用大气压来计算高程;但没有一个iPhone有气压计传感器)
我有以下代码:
public SensorEventListener sensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float pressure_value = 0.0f;
float height = 0.0f;
if (Sensor.TYPE_PRESSURE == event.sensor.getType())
{
pressure_value = event.values[0];
height = SensorManager.getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE, pressure_value);
}
value = String.valueOf(height);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
Run Code Online (Sandbox Code Playgroud)
我在09.AM有高度计,例如43,xxxxxxx.
我在09.PM再次检查,结果正在发生变化.它改变2米或更多.
是因为月亮或其他任何东西改变了压力?
以及如何解决这个问题?
我已阅读以下主题:Android:如何获得准确的海拔高度?
但我仍然感到困惑.你能指导我如何编写代码吗?值得注意的是,我想基于气压传感器使用它.
我正在写一个显示高度的表盘。高度是用 计算的SensorManager.getAltitude(seaLevelPressure, currentPresure)。
但是为了初始化它,我需要海平面的压力。不幸的是没有SensorManager.getSeaLevelPressure(currentPressure,currentAltitude)。
为此,我找到了以下公式(参见http://rechneronline.de/barometer/)
private float calcSeaPressure(float pressure, int altitude) {
float temperature = 9 + 273.15f;
float tempGradient = 0.0065f;
float v3 = temperature + tempGradient * altitude;
float sealevelPressure = (float) (pressure / Math.pow((1 - tempGradient * altitude / v3), .03416f / tempGradient));
sealevelPressure = (float) Math.round(sealevelPressure * 100) / 100;
return sealevelPressure;
}
Run Code Online (Sandbox Code Playgroud)
但是这个算法和 SensorManager.getAltitude 中使用的算法似乎不太适合。如果我做:
public void setCurrentAltitude(int currentAltitude) {
sealLevelPressure = calcSealevel(currentAltitude,currentPresure);
altitude = SensorManager.getAltitude(seaLevelPressure, currentPresure)
}
Run Code Online (Sandbox Code Playgroud)
计算出的高度与给定的 …
我有一个lat-long位置(每个存储为double),并希望通过仅使用GPS获得该点的相应高度.这应该在没有任何网络协助的情况下完成.
任何帮助表示赞赏.提前致谢.