locationManager: didExitRegion: не вызывается при запуске приложения - PullRequest
1 голос
/ 02 июня 2011

У меня есть приложение с менеджером местоположений, которое запускается с помощью startUpdatingLocation. Однако, если он не сдвинулся, я остановлюсь, отметьте текущее местоположение как регион и startMonitoringForRegion следующим образом:

[locationManager stopUpdatingLocation];

CLRegion* region = [[CLRegion alloc] initCircularRegionWithCenter:self.currentLocation.coordinate radius:25 identifier:@"last_loc"];

[self.locationManager startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyNearestTenMeters];

[region release];

Когда приложение полностью закрывается и я покидаю регион, locationManager: didExitRegion вызывается, и я продолжаю свой веселый путь, например:

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{       
    [self.locationManager stopMonitoringForRegion:region];

    [locationManager startUpdatingLocation];
}

Однако, если приложение работает, либо в фоновом режиме, либо на переднем плане, приложение не будет отвечать на locationManager: didExitRegion. Чего мне не хватает?

1 Ответ

1 голос
/ 30 декабря 2013

Обязательно инициализируйте свойство координат.Если вы хотите, чтобы координата была текущим местоположением пользователя, используйте [your location manager].location.coordinate.latitude и [your location manager].location.coordinate.longitude в качестве свойств инициализации.Если вам требуется высота, включите [your location manager].location.altitude, [your location manager].location.horizontalAccuracy, [your location manager].location.verticalAccuracy и [your location manager].location.timeStamp.Без этой информации вы создаете регион, который не имеет координат, но все еще существует.По сути, у него есть имя, но нет реальной информации.

...