2012-03-13 5 views
4

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

#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-мильную близость, вызывающую регион). Что может вызвать это? Кроме того, я использую significantLocationChangeMonitoringAvailable со значениями по умолчанию, установленными для CLLocationManager. Может быть, использование significantLocationChangeMonitoringAvailable каким-то образом исключает более точные события триггера?

Любые идеи, что здесь происходит?

ответ

2

Значительная услуга по изменению местоположения предназначена для значительных изменений местоположения. От docs:

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

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

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

+0

Есть ли какое-либо преимущество в использовании регионального мониторинга значительного изменения местоположения с точки зрения точности? – user836026

+1

Они примерно одинаковы с точки зрения точности, но они служат различным целям. Скажите, что ваше приложение хочет знать, когда пользователь уйдет из дома и придет на работу после 20-километрового перехода ... Используя мониторинг региона, вы получите уведомление один раз, когда пользователь получит примерно 1 км от дома, а еще раз, когда пользователь получает около 1 км работы. Используя значительные изменения местоположения, вы получите 10-20 уведомлений на этом пути, каждый раз, когда пользователь перемещается примерно на 1 км (и поскольку вам не нужны эти уведомления в этом примере, все, что вы делаете, это расточительствовать батарею). – rickster

+1

(Также стоит отметить: обе службы основаны на башне сотовой ячейки, которая в настоящее время связана с устройством, поэтому вы можете видеть точность более 1 км в густонаселенных районах и хуже в малонаселенных районах: 1 км - это всего лишь общая рекомендация. Apple говорит, что вы может ожидать в среднем.) – rickster

Смежные вопросы