我正在尝试构建一个应用程序,它可以定期提供 GPS 坐标,以便显示在标签上并发送到网络服务器,但事实证明这很困难。我已经设法让它为我提供准确的实时 GPS 坐标,但我必须按下按钮才能刷新标签。
我认为 didUpdateLocation 方法目前是一个不错的地方,但它似乎永远不会运行。我正在通过包含 NSLog 帖子来测试这一点 - 当我使用 Apple 的 LocateMe 示例应用程序执行此操作时,它会按预期运行。
下面是我的方法:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
theLocation = [NSString stringWithFormat:@"latitude: %f
longitude: %f", locationManager.location.coordinate.latitude,
locationManager.location.coordinate.longitude];
NSLog(@"location manager did something!!!");
}
虽然我猜测问题出在上述方法之外。我想我应该包含我的 viewDidLoad 方法,因为这就是我开始更新位置的地方:
- (void)viewDidLoad
{
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
[outletLabelData setText:(@"Loaded")];
}
我还尝试过在按钮操作方法中使用 startUpdatingLocation,甚至让它像开关一样工作,用于启动和停止更新(这应该触发更新事件),但仍然没有成功。
其他详细信息:
- Xcode 4.4
- iOS 5.1
- 在插入 Mac 的情况下在 iPhone 上测试应用
有人可以帮忙吗?
最佳答案
您需要告诉您的CCLocationManager
谁是委托(delegate)人。在您的情况下,它是您当前的 Controller 。
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
并且显然要确保您的 Controller 符合 CLLocationManagerDelegate
协议(protocol)。
关于ios - 为什么 didUpdateLocations 没有运行,但我的 GPS 坐标仍在更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898765/