我试图让精确的区域监控与iOS5 5/iPhone4G合作,但我似乎没有多少运气。要明确的是,我能够让区域进入事件,只是我过早地得到了它们。让我解释一下。这是我设置区域的代码:
#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可以阻止更精确的触发事件?
知道这里发生了什么事吗?
发布于 2012-03-13 23:29:07
重要位置更改服务仅适用于重要的位置更改。来自文档
此方法指示设备是否能够仅根据重大位置更改报告更新。(重要的位置变化监视主要涉及检测当前与设备相关的蜂窝塔中的变化。)这种功能为那些想要跟踪用户的大致位置并且不需要高度精确的位置信息的应用程序提供了巨大的能量节省。
区域监测的工作方式是一样的,所以它只能告诉你,当你在大约1公里的感兴趣点。(请注意,由于这是基于蜂窝塔的定位,因此您将获得或多或少的精度,取决于该地区的蜂窝塔的密度,并且只能在带有蜂窝连接的设备上使用这种方法--不使用iPod touch或WiFi iPad)。
如果您想要区域监视/重大更改监视的电源好处,以及精确跟踪感兴趣区域内的位置的能力,那么首先需要为前者设置.然后,一旦您在感兴趣的区域/附近,切换到更高精度的监视。(最好用单独的CLLocationManager实例来完成。)
https://stackoverflow.com/questions/9692840
复制相似问题