2013-04-23 85 views
0

我一直在尝试在iPhone上进行区域监视时遇到问题。首先,我从来没有(甚至没有)在我的iPhone 4设备上有didEnterRegiondidExitRegion火。iOS:用模拟器监控区域

我决定在模拟器上测试,而不是浪费工作时间在市中心漫步(尽管我希望在真实场景中看到这项工作)。首先,模拟器在精确度方面没什么问题,你会认为它非常准确(或者我错了吗?)。

下被调试菜单

我终于didEnterRegion火下改变位置在模拟器上完成的,虽然我是从有问题的一圈约8个城市街区。当我退出该地区didExitRegion连续发射约200次。这是一个模拟器错误?我几乎准备放弃这一点,并开始自己计算这些东西,因为它变得很荒谬。

任何想法,为什么准确性如此糟糕,为什么我的方法被解雇这么多次?

下面是相关代码:

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions 
{ 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 

    CLLocationDegrees latitude = 45.50568; 
    CLLocationDegrees longitude = -73.57033; 
    CLLocationCoordinates2D centerCoordinate = CLLocationCoordinate2DMake(latitude, longitude); 

    CLLocationDistance regionRadius = 200.0; 

    CLRegion *myRegion = [[CLRegion alloc] initCircularRegionWithCenter:centerCoordinate radius:regionRadius identifier:@"aroundWork"]; 

    [locationManager startMonitoringForRegion:myRegion]; 

    return YES: 
} 

-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region 
{ 
    NSLog(@"Entered region: %@", region.identifier); 
} 

-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region 
{ 
    NSLog(@"Exited region: %@", region.identifier); 
} 
+0

没有看到任何你的代码,我们没有办法知道你在做什么是正确的(可能不是像许多其他人使用这些方法没有问题)或模拟器的错误。 – sosborn 2013-04-23 19:05:09

回答

3

首先,我认为你是在一个GPX文件模拟器测试它,因为任何其他的方式是错误的。

现在,因为我已经做了地区监测广泛的研究:

地区的监测不是很有效。 它可能会错过一个地区容易进入或退出。

我们已经做了很多测试和很多散步,并用我们的汽车在城市多次驾驶进行测试。

有时它运行得很漂亮,有时会失败。

我建议你玩一下区域边界(半径)设置,并进行真实测试(步行或驾驶某些点)来查看哪些行为更好。

我们的测试表明,较小的值表现更好(半径100至200米),并且当您实际驾驶时,区域监测表现更好,而不是步行。

记住它使用手机天线塔来定位你,这比GPS更精确。

+0

那么,只需要寻找位置的重大变化,将GPS打开一次即可获得一个位置,然后立即将其关闭,然后计算我自己与圆心的距离以确定自己是否是用户内部或外部的特定区域?我不完全知道是否有人正在退出或进入,就像他们是否在某个地区一样。你怎么看? – PaulG 2013-04-23 19:33:33

+0

重要的位置更改使用完全相同的技术来查找用户的位置,所以我不明白为什么您会从中受益更多。如果应用程序是开放的,那么在特定的时间间隔使用gps可能是最好的,但是如果你想知道用户的位置,当应用程序在后台,那么我不必提出更好的方法。我不知道别人是否知道更好的东西... – Lefteris 2013-04-23 19:58:20

+0

理想区域大小实际上与您使用的iOS版本不同。驾驶时可能会在设备触发通知之前穿过缓冲区。在后台,设备在低功耗模式下使用GPS。 (这就是它出现在位置服务中的原因,因为指示你的应用程序正在使用它的小箭头) – Pochi 2013-07-23 05:38:57