我需要仅使用GPS获得准确的海拔测量值.
我试过了Location.getAltitude()
,但这非常不准确.有什么建议?
我有使用Android 2.1的应用程序,它利用LocationManager获取高度.但现在,我需要使用需要API级别9(2.3)的SensorManager来获取高度.
如何SensorManager.getAltitude(float, float)
通过放置一个条件并通过函数名称(可能在普通的Java中)调用它来放入我的2.1 android应用程序中?
先感谢您
更新1 如果您注意到我的应用程序需要使用Android 2.1进行编译.这就是为什么我正在寻找一种方法来通过名称或任何其他可编译的方式来调用函数.
在iOS 4.0之前,CoreLocation
正确报告高度,现在它总是报告为0英尺.
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation *)oldLocation
{
NSString *tLatitude = [NSString stringWithFormat:@"%3.5f", newLocation.coordinate.latitude];
NSString *tLongitude = [NSString stringWithFormat:@"%3.5f", newLocation.coordinate.longitude];
/* the following returns 0 */
NSString *tAltitude = [NSString stringWithFormat:@"%i", newLocation.altitude];
/* theres more code, but it's not relevant,
and this worked prior to iOS 4.0*/
[manager stopUpdatingLocation];
}
Run Code Online (Sandbox Code Playgroud)
不在设备或模拟器上工作,是否还有其他人遇到此问题?
我有一个位置服务应用程序,其中提供了用户的高程.但我发现CLLocationManager提供的高程精度非常不准确.当我两次测试相同的两个点时,有时高程差是四十英尺,有时是一百.有什么办法可以提高CLLocation的垂直精度,还是有不同的方法来获取用户的高程(第三方库)?我已经尝试检查CLLocationManager提供的newLocation的verticalAccuracy属性,如果它还不够,则抛出它,但即使它足够"准确",它仍然通常不准确.谢谢你的时间!
现在我正在使用:
if([newLocation verticalAccuracy] < 30) {
if(isCustomary)
altitudeLabel.text = [NSString stringWithFormat:@"%.2f feet", ([newLocation altitude] * 3.2808399)];
else
altitudeLabel.text = [NSString stringWithFormat:@"%.2f meters", [newLocation altitude]];
}
Run Code Online (Sandbox Code Playgroud)
该代码存在问题:通常,verticalAccuracy永远不会低于30,而当它完成时,它甚至还不够准确; 我测试了在我家附近行走的代码(一个故事),它说海拔高度变化到19英尺,我确信这不是真的.
我试图找到如何使海拔高于平均海平面.此时,它从椭圆体返回高度.因此,任何人都知道公式或计算将高度值从椭球改变为平均海平面的高度值.
谢谢你的帮助
根据纬度和经度,是否有人知道R中是否有工具可以找到某个位置海拔高度?
我一直无法找到获得设备高度的方法.有人可以给我一个指针或组合一个短脚本,获取设备的高度并打印出来吗?只有在迅速.谢谢!
我做了一个简单的应用程序,根据iPhone上的GPS位置显示高度.
高度是如何获得的?
它是在我坐标处得到陆地的高度还是得到实际的高度?(我在同一栋楼里尝试了相同的应用程序;一次在底层,一次在三楼,但显示相同的高度)
是否有可能在不同的楼层获得不同的高度?(就像我的Android手机有一个气压计传感器,我用大气压来计算高程;但没有一个iPhone有气压计传感器)
显然Lumia 1020有一个晴雨表.请参阅以下链接中的"额外功能"部分.
http://developer.nokia.com/Devices/Device_specifications/Lumia_1020/
我想知道如何直接从气压计访问高程数据.现在我可以从命名空间中的Geolocator
对象访问高程数据Windows.Devices.Geolocation
,但是它会从GPS信号中提取高度,而不是从晴雨表.我知道这是因为当手机只是坐在桌子上时,Geolocator
对象的Altitude
属性会在数十分钟的恒定高度上变化几十米.气压计应按厘米的顺序变化.
有任何想法吗?也许我们可以看到Windows Phone SDK中的更新只是时间问题?
我有以下代码:
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:如何获得准确的海拔高度?
但我仍然感到困惑.你能指导我如何编写代码吗?值得注意的是,我想基于气压传感器使用它.