-->

让我的位置的海拔高度(距海平面)在iPhone SDK(Getting Altitude(heigh

2019-06-24 13:11发布

我试图让我的位置的海拔高度在我的应用程序。 但每次我尝试altitude的财产CLLocation对象我得到0.00的结果。

我用Google搜索我的查询,我得到了一个类似的问题在这里和这里 。 此链接说如果我有WiFi或基站访问CLLocation这将是空。 即使我尝试设置desireAccuracy比最好的,甚至它不确保应用程序将使用GPS。 它也说,如果我是室内,我将无法访问GPS。

我很多情况下,它不能确定该应用将只使用GPS。 我想从WiFi或手机塔获得高度过一些方法。 对于我GOOGLE了更多,我得到了谷歌地球API ,但我认为这是唯一的微软.NET技术。

现在,根据这种情况,我认为一个解决方案,我可以在Microsoft技术的Web服务,并通过我的位置那里,我可以得到高度的反应,但我不想这样做。

任何人都可以建议我如何从IOS让我的位置的海拔高度。 有什么办法可以不? 如果是比请浏览我在正确的方向。

提前致谢。

EDIT1

我用CLLocationManager更新的位置,当我把我的位置,我需要的高度。

EDIT2

据@ fishinear的回答我尝试下面的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    manager = [[CLLocationManager alloc] init];
    [manager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
    [manager setDistanceFilter:kCLDistanceFilterNone];
    [manager setDelegate:self];
    [manager startUpdatingLocation];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    if ([newLocation verticalAccuracy] >= 0) {
        NSLog(@"Altitude = %lf",newLocation.altitude);
    }
    NSLog(@"Vertical Accuracy : %lf",newLocation.verticalAccuracy);
}

verticalAccuracy始终是-1 。 它不改变,即使在运行应用程序后,将持续30分钟。 我飞奔在我的3GS IOS 4.3.2。 我是室内,所以我认为它甚至使用此代码不能访问GPS。

Answer 1:

见Android的-获取海拔通过经纬度? 有一个Android解决方案,但它是很容易适应的iOS。

答案是使用USGS海拔高度查询Web服务

从顶部的答案,基本上你只需发送一个HTML的Web请求:

http://gisdata.usgs.gov/xmlwebservices2/elevation_service.asmx/getElevation?X_Value=" + 
             String.valueOf(longitude)   + 
             "&Y_Value=" + String.valueOf(latitude)             
             + "&Elevation_Units=METERS&Source_Layer=-1&Elevation_Only=true"; 

然后,你可以从与解析出响应文本<double>...</double>标签

编辑:它看起来像你可能会试图让美国以外的海拔。

谷歌地图API的确提供了在海拔服务和文档https://developers.google.com/maps/documentation/javascript/elevation



Answer 2:

要回答你原来的问题:GPS将始终使用,如果你配置CLLocationManager时设置desiredAccuracy为最佳或BestForNavigation,并distanceFilter到kCLDistanceFilterNone。 然后,您将得到同样的CLLocation事件高度值。

但是,它需要一小会儿前的GPS已“锁定”到足够颗卫星,以能够报告高度。 在这期间,将报告没有高度值CLLocation事件。 因此,您应该忽略的第一对夫妇的事件,直到verticalAccuracy值是对你不够好。 此外,检查时间戳,因为有时第一CLLocation事件是一个古老的一个。



文章来源: Getting Altitude(height from sea level) of my location in iphone SDK