iphone – iOS5区域监控准确度

我正在尝试使用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英里距离).什么会导致这个?此外,我正在使用significantLocationChangeMonitoringAvailable和为CLLocationManager设置的默认值.也许使用significantLocationChangeMonitoringAvailable会以某种方式排除更准确的触发事件?

有什么想法在这里发生了什么?

最佳答案 重要的位置更改服务仅用于重要的位置更改.从
docs

This method indicates whether the device is able to report updates based on significant location changes only. (Significant location change monitoring primarily involves detecting changes in the cell tower currently associated with the device.) This capability provides tremendous power savings for applications that want to track a user’s approximate location and do not need highly accurate position information.

区域监控的工作方式相同,因此它只能告诉您何时距离感兴趣点约1公里. (请注意,由于这是基于蜂窝塔定位,根据区域中蜂窝塔的密度,您将获得或多或少的准确度,并且只能在具有蜂窝连接的设备上使用此方法 – 无iPod touch或WiFi iPad.)

如果您既想要区域监控/显着变化监控的功率优势,又能够精确跟踪感兴趣区域内的位置,那么您首先需要设置前者…然后,一旦您’在感兴趣的区域内/附近,切换到更高精度的监测. (这可能最好使用单独的CLLocationManager实例.)

点赞