IOS中的定位服务,提示

时间:2014-03-07 10:39:12

标签: ios objective-c core-location cllocationmanager

我的应用程序需要使用位置服务,因此在首次运行应用程序时会询问用户问题。 如果用户说“OK”,那么它将在没有它的情况下运行整个应用程序,因为它将继续执行其工作。所以第一次运行它并没有真正带来视图控制器上的任何东西。

当我第二次按下XCODE中的go按钮时,它工作正常,因为用户已经授权使用位置服务来获得lat / long。

以前有人有这个问题吗?有什么建议?

2 个答案:

答案 0 :(得分:0)

viewDidLoad:

locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager startUpdatingLocation];

答案 1 :(得分:0)

您需要做的是在“didUpdateLocation”调用后更新您的视图,并调用“SetNeedsDisplay”,以便您的视图将自行绘制以进行更新。 像这样:

-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{

    self.LabellLatitude = [NSString stringWithFormat:@"%f",self.locationManager.location.coordinate.latitude];
    self.LabelLongitude = [NSString stringWithFormat:@"%f",self.locationManager.location.coordinate.longitude];
    [self.view setNeedsDisplay];

}

如果您添加活动指示符,直到位置更新,那就更好了。

现在,如果你从“AppDelegate”类调用它,你可以使用“NSNotificationCenter”向你的视图发送消息,更新标签,或查看,或者你需要的任何内容,如下所示:

#pragma mark - locationManager:
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{

    [[NSNotificationCenter defaultCenter] postNotificationName:@"UpdatedLocation" object:nil userInfo:dictionary];


} 

在你的UIVIewController ViewDidLoad上,用户注册到通知:

 //Adding self to notification Center:
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateView:) name:@"UpdatedLocation" object:nil];

希望这有帮助