我正在使用核心位置来获取 iphone 的位置。我还为我的视图控制器文件实现了委托协议,并创建了一个 CLLocationmanager 对象。
当我按下按钮(IBAction)时,我希望更新位置。代表被正确调用。我可以看到,因为 NSLog 消息与纬度/经度坐标一起出现。
但是当我在 IOS 模拟器中更改位置并尝试使用按钮再次访问该位置时,我得到的位置输出保持不变。我必须再次按下按钮才能获得正确的位置。显然,我希望第一次按下按钮时位置就正确
这是我触发委托的按钮:
- (IBAction)getLocation:(id)sender {
[locationManager startUpdatingLocation];
}
我的 viewDidLoad 中有这段代码
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
这是我的委托方法:
#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"didFailWithError: %@", error);
UIAlertView *errorAlert = [[UIAlertView alloc]
initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
NSLog(@"didUpdateToLocation: %@", [locations lastObject]);
CLLocation *currentLocation = [locations lastObject];
if (currentLocation != nil) {
_longitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
_latitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
}
[locationManager stopUpdatingLocation];
}
我在 Iphone 6.1 模拟器中运行我的代码..