我正在尝试构建一个应用程序,该应用程序以固定的时间间隔提供GPS坐标以显示在标签上并发送到Web服务器,但这证明很难。我已经设法让它给我准确的实时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方法包含在startUpdatingLocation的位置:
- (void)viewDidLoad
{
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
[outletLabelData setText:(@"Loaded")];
}
我也尝试在我的按钮操作方法中使用startUpdatingLocation,甚至让它像启动和停止更新的开关一样工作(应该触发更新事件),但仍然没有成功。
其他细节:
任何人都可以帮忙吗?
答案 0 :(得分:1)
您需要告诉您CCLocationManager
谁是代表。在你的情况下,它是你当前的控制器。
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
并且显然确保您的控制器符合CLLocationManagerDelegate
协议。