我想在我的应用程序中获取我的位置的海拔高度。但每次我尝试altitude
CLLocation
对象的0.00
属性时,我都会得到desireAccuracy
。
我搜索了我的查询,我收到了类似的问题here和here。这个链接说如果我使用wifi或手机信号塔访问CLLocation,它将为空。即使我尝试将CLLocationManager
设置为最佳,甚至不确定该应用是否会使用GPS。它还说,如果我在室内,我将无法访问GPS。
我很多情况下它不确定应用程序是否仅使用GPS。我想要一些从wifi或手机塔获得海拔高度的方法。为此我搜索了更多,我得到了Google Earth API,但我认为这仅适用于Microsoft .net技术。
现在根据这种情况,我想一个解决方案,我可以在Microsoft技术中创建一个Web服务并通过我的位置,我可以获得高度作为响应,但我不想这样做。
任何人都可以建议我如何从ios获取我的位置高度。有没有可用的方法?如果是,请向我指导正确的方向。
提前致谢。
Edit1
我使用- (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);
}
来更新位置,当我到达我的位置时,我需要高度。
EDIT2
根据@ fishinear的回答,我尝试了以下代码:
verticalAccuracy
-1
始终为{{1}}。即使在运行应用程序后持续30分钟也没有改变。我在3GS上运行ios 4.3.2。我在室内,所以我认为即使使用此代码也无法访问GPS。
答案 0 :(得分:4)
回答您的原始问题: 如果您在配置CLLocationManager时将desiredAccuracy设置为Best或BestForNavigation,并将distanceFilter设置为kCLDistanceFilterNone,则将始终使用GPS。然后,您还将在CLLocation事件中获取高度值。
然而,在GPS已经“锁定”到足够的卫星以便能够报告高度之前需要一段时间。在此期间,它将报告没有高度值的CLLocation事件。因此,您应该忽略前几个事件,直到verticalAccuracy值足够好。另外,检查时间戳,因为有时第一个CLLocation事件是旧事件。
答案 1 :(得分:0)
请参阅Android - Get Altitude By Longitude and Latitude? Android解决方案,但它很容易适应iOS。
答案是使用USGS Elevation Query Web Service
从那里的顶部答案,基本上你只是发送一个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>
标记
修改强> 看起来你可能想要在美国境外升华。
Google Maps API确实在https://developers.google.com/maps/documentation/javascript/elevation
提供了Elevation服务和文档