【发布时间】:2011-05-31 05:14:52
【问题描述】:
我的应用程序有问题。我正在尝试以最精确的方式找到用户的位置,以确定他们的邮政编码。目前我有一个按钮,按下时会启动一个名为locateMe 的方法。
-(IBAction)locateMe; {
self.locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
然后我实现了didUpdateToLocation:
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation; {
NSLog(@"Found location! %f,%f",newLocation.coordinate.latitude,newLocation.coordinate.longitude);
}
我之前在didUpdateToLocation 中做过更复杂的事情,但是当我测试一些东西时,我意识到它找到的第一个位置至少并不精确。所以,我把NSLog 调用放在那里,它给了我一个类似于下面的输出......
Found location! 39.594093,-98.614834
Found location! 39.601372,-98.592171
Found location! 39.601372,-98.592171
Found location! 39.611444,-98.538196
Found location! 39.611444,-98.538196
如您所见,它首先给了我一个不正确的值,这导致我的应用出现问题,因为它没有给出正确的位置。
所以,这是我的问题。有什么方法可以等待位置管理器找到最精确的位置?
提前致谢!
编辑:我想要这样的东西:
if (newLocation.horizontalAccuracy <= locationManager.desiredAccuracy) {
}
但它永远不会被调用!
【问题讨论】:
标签: iphone cocoa-touch core-location