Точность мониторинга региона iOS5 - PullRequest
4 голосов
/ 14 марта 2012

Я пытаюсь получить точный мониторинг региона, работая с iOS5 / iPhone 4G, и мне не очень везет.Чтобы быть ясным, я могу заставить регион входить в события;просто я получаю их преждевременно.Позволь мне объяснить.Это мой код для установки региона:

#define GEO_FENCING_RADIUS 10  // in meters

CLLocationDistance radius = GEO_FENCING_RADIUS;

// Create the region and start monitoring it.
CLRegion* region = [[CLRegion alloc] initCircularRegionWithCenter:coordinate
                                                           radius:radius
                                                       identifier:identifier];
[self.locationManager startMonitoringForRegion:region   
                               desiredAccuracy:kCLLocationAccuracyBest];

радиус, в этом коде, установлен на 10 метров.Поэтому я предполагаю, что я получу уведомление о регионе, только если я нахожусь в пределах 10 метров от этого места.Вместо этого я могу получить уведомление при гораздо более высоких значениях расстояния (я видел 2-мильную близость, запускающую регион).Что вызвало бы это?Кроме того, я использую visibleLocationChangeMonitoringAvailable со значениями по умолчанию, установленными для CLLocationManager.Может быть, использование visibleLocationChangeMonitoringAvailable каким-то образом исключает более точные события триггера?

Есть идеи, что здесь происходит?

1 Ответ

2 голосов
/ 14 марта 2012

Служба значительных изменений местоположения предназначена только для значительных изменений местоположения. Из документов :

Этот метод указывает, может ли устройство сообщать об обновлениях только на основании значительных изменений местоположения. (Значительный мониторинг изменений местоположения в основном включает обнаружение изменений в вышке сотовой связи, в настоящее время связанной с устройством.) Эта возможность обеспечивает огромную экономию энергии для приложений, которые хотят отслеживать приблизительное местоположение пользователя и не нуждаются в высокоточной информации о местоположении.

Мониторинг региона работает аналогичным образом, поэтому он может сообщать вам только когда вы находитесь в пределах 1 км от интересующей вас точки. (И обратите внимание, что поскольку это основано на расположении вышек сотовой связи, вы получите более или менее точную точность в зависимости от плотности вышек сотовой связи в этом районе и можете использовать этот подход только на устройствах с сотовой связью - без iPod touch или WiFi iPad.)

Если вам нужны как мощные преимущества мониторинга региона / мониторинга значительных изменений, так и возможность точного отслеживания местоположения в интересующем регионе, сначала вам нужно будет настроить только для первого ... затем, как только вы окажетесь в интересующей вас области, переключитесь на более точный мониторинг. (Лучше всего это сделать с отдельным экземпляром CLLocationManager.)

...