0

我正在尝试构建一个应用程序,它可以定期提供 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,甚至让它像一个开关一样工作,您可以在其中启动和停止更新(这应该触发更新事件),但仍然没有成功。

其他详情:

  • Xcode 4.4
  • iOS 5.1
  • 插入我的 Mac 时在我的 iPhone 上测试应用程序

有人能帮忙吗?

4

1 回答 1

1

你需要告诉你CCLocationManager谁是代表。在您的情况下,它是您当前的控制器。

locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];

并且显然要确保您的控制器符合CLLocationManagerDelegate协议。

于 2012-08-10T09:26:44.097 回答