iPhone - исходное местоположение пользователя с CCLocationManager - PullRequest
1 голос
/ 31 августа 2011

Я использую этот код на iPhone 4:

- (id)init
{
    self = [super initWithNibName:@"OfflineView" bundle:nil]; // ok, not perfect but for test, that works fine
    if (self) {
        self.locationMgr = [[CLLocationManager alloc] init];
        self.locationMgr.desiredAccuracy = kCLLocationAccuracyThreeKilometers;
        self.locationMgr.distanceFilter = kCLDistanceFilterNone;
        self.locationMgr.headingFilter = kCLHeadingFilterNone;

        self.locationMgr.delegate = self;
    }
    return self;
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    // do things
}

// triggered when showing the view, first call here after the init
- (void) start
{
    self.view.hidden = NO;
    [self.locationMgr startUpdatingLocation];
    [self.locationMgr startUpdatingHeading];
}

, но метод делегата не запускается.
Он срабатывает только при движении телефона.

Как я могу начать свой процесс с действительного местоположения пользователя, когда открывается вид, не прося моего пользователя встряхнуть его телефон и сделать 100 м пробега, прежде чем он сможет что-то сделать?

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Вы можете "заправить" его, нажав один раз на метод делегата.

- (void) start
{
    self.view.hidden = NO;
    [self.locationMgr startUpdatingLocation];
    [self.locationMgr startUpdatingHeading];
    [self locationManager: self.locationMgr didUpdateToLocation: [self.locationMgr currentLocation] fromLocation: nil];
}
0 голосов
/ 31 августа 2011

где вы называете начало:? Вы должны получить первое исправление, не двигаясь. Это асинхронный обратный вызов, поэтому может потребоваться время.

В идеале вы должны вызывать startUpdateLocation в init / viewDidLoad, а затем читать его в locationUpdate:

- (void)locationUpdate:(CLLocation *)location {

 //   Read location

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...