CLLocationManager didEnterRegion неправильные уведомления - PullRequest
2 голосов
/ 06 февраля 2012

Я столкнулся с действительно странной ситуацией во время игры с CLLocaitonManager ...

manager = [[CLLocationManager alloc] init];
[manager setDistanceFilter:kCLDistanceFilterNone];
[manager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
manager.delegate = self;

Я использую отслеживание регионов с регионами радиусом 10,0 метров ...

[manager startMonitoringForRegion:region];

Мои определенные области довольно близки друг к другу, но определенно не ближе 50-100 метров ... Когда я тестирую свое приложение в симуляторе iOS (5.0) (установив местоположение в Apple, а затем вернусь в свое пользовательское местоположение ) я получаю несколько уведомлений одновременно для регионов, которые находятся близко друг к другу ... Я также проверяю расстояние между обнаруженным местоположением региона и моим текущим местоположением ...

-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
CLLocation *regionLocation = [[CLLocation alloc] initWithLatitude:region.center.latitude longitude:region.center.longitude];

NSLog(@"didEnterRegion: %@ %f", region.identifier, [regionLocation distanceFromLocation:mapView.userLocation.location]);

[self notifyUserDidEnterRegion:region];
}

Проблема в том, что я получаю уведомления для регионов, которые находятся, например, в 200 метрах от моего текущего местоположения ... И я получаю несколько уведомлений в одно и то же время ...

Есть предложения? Или я должен предоставить более подробную информацию?

1 Ответ

1 голос
/ 07 февраля 2012

регион мониторинга только ограничен этим.К сожалению, вы не можете получить точность в диапазоне метров, они улучшились в iOS5 на расстоянии около 200 метров, но это зависит от многих факторов, поскольку он основан на триангуляции вышек сотовой связи и точках доступа Wi-Fi.Единственный способ добиться большей точности, который я нашел, - это изменить точность, когда вы приближаетесь к цели, и снова регистрироваться, пока вы уходите. Для этого вам следует активировать многозадачность для GPS, но если вы хорошо реализуете алгоритм, он не будет потреблять, поэтомумного батареи.Надеюсь, это поможет, Андреа

...