在应用程序中未调用didUpdateToLocation

时间:2014-03-16 20:38:33

标签: ios objective-c cllocationmanager

我想收到位置更新。我已经在头文件中添加了一个位置委托,但是didUpdateToLocation方法没有激活我的代码

@interface FirstViewController : UIViewController <CLLocationManagerDelegate>
{
    UILabel *myLabel;
    CLLocationManager *manager;
    CLGeocoder *geocoder;
    CLPlacemark *placemark;
}
-(void) showCurrentLocation;
@end
像这样的

和.m文件:

#import "FirstViewController.h"

@interface FirstViewController () 

@end

@implementation FirstViewController


-(id) init
{

    self=[super init];
    if (self) {
        self.view.backgroundColor=[UIColor purpleColor];
        self.edgesForExtendedLayout=UIRectEdgeNone;

        [self showCurrentLocation];
    }
    return self;
}


-(void) showCurrentLocation{

    manager=[[CLLocationManager alloc] init];
    manager.pausesLocationUpdatesAutomatically=NO;

    geocoder=[[CLGeocoder alloc] init];

    manager.delegate=self;
    manager.desiredAccuracy=kCLLocationAccuracyBest;
}

-(void) locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{

    NSLog(@"Error %@",error);
    NSLog(@"Faild to get location");
}

-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"Location %@",newLocation);
    CLLocation *currentlocation=newLocation;

    if (currentlocation!=nil)
    {
        myLabel=[[UILabel alloc] initWithFrame:CGRectMake(30, 30, 200, 200)];
        [myLabel setText:[NSString stringWithFormat:@"Latit %8f",currentlocation.coordinate.latitude]];
        myLabel.textColor=[UIColor whiteColor];
        [self.view addSubview:myLabel];

        [geocoder reverseGeocodeLocation:currentlocation completionHandler:^(NSArray *placemark1 ,NSError *erroe){

            if (erroe==nil && [placemark1 count]>0)
            {
                NSLog(@"Location");
            }
            else
            {
                NSLog(@"error 2 %@",erroe.debugDescription);
            }
        }];
    }
}

1 个答案:

答案 0 :(得分:1)

您需要启动位置管理器

    manager = [CLLocationManager new];        
    manager.delegate = self;

    [manager startUpdatingLocation]; // forgotten in the code above

还要确保正确设置方案以通过模拟器

模拟测试模式下的位置

enter image description here