Мониторинг регионов iPhone - регионы не добавлены? - PullRequest
1 голос
/ 21 декабря 2010

Я пытаюсь настроить мониторинг региона.Выглядит довольно просто;но когда я проверяю количество регионов, которые я отслеживаю, счетчик всегда равен 0.

Код:

if ([CLLocationManager regionMonitoringAvailable] &&
    [CLLocationManager regionMonitoringEnabled] ) {

    CLLocationCoordinate2D coordinate;
    double radius;

    for(Item *item in ad.proxiArray) {

        radius = [item.distance floatValue];

        coordinate= CLLocationCoordinate2DMake([item.latitude doubleValue],
                                                [item.longitude doubleValue]);
        CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:coordinate radius:radius identifier:item.place];

        NSLog(@"Adding: %@", region);

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

        [region release];
    }   
    NSLog(@"region count %i",[[self.locationManager monitoredRegions] count]);
    for (CLRegion *re in [self.locationManager monitoredRegions]) {
        NSLog(@"Monitoring: %@", re);
    }
} else {
    NSLog(@"Region monitoring unavailable");
}

При запуске NSLog покажет, что я фактически добавляю все элементы (около 10).Но в конце цикла, как указано выше:

2010-12-21 12: 14: 38.172 xxxxxx [8112: 307] счетчик регионов 0

Чтонеправильно ????

1 Ответ

1 голос
/ 02 января 2011

У меня сложилось впечатление, что

  • CLLocationManager сам по себе не является поточно-ориентированным. Мониторинг региона и мониторинг местоположения будут мешать и могут иногда приводить к блокам (по моим наблюдениям должен быть своего рода тайм-аут, так как программа продолжает работать через чуть более 30 секунд)
  • Регионы будут добавляться асинхронно, поэтому проверка количества регионов непосредственно после их добавления может привести к неверному результату.
  • Точность очень низкая (разрешение в несколько км), когда регионы добавляются для мониторинга

Из-за этих проблем и того факта, что мониторинг региона не очень точен, я отказался от идеи использовать эту функцию.

...