Вопрос

Я пытаюсь настроить мониторинг региона. Выглядит довольно просто; Но когда я проверяю количество регионов, которые я контролирую, счет всегда 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

Что случилось????

Это было полезно?

Решение

Мое впечатление в том, что

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top