iOS:使用模拟器进行区域监控是远离的

时间:2013-04-23 18:51:29

标签: ios core-location

我一直在尝试在iPhone上进行区域监控时遇到问题。首先,我从来没有(甚至没有一次)在我的iPhone 4设备上激活didEnterRegiondidExitRegion

我决定在模拟器上进行测试,而不是在市中心浪费工作时间(尽管我希望在真实场景中看到这项工作)。首先,模拟器在准确性方面是偏离的,你认为它是非常准确的(或者假设我错了?)。

通过更改“调试”菜单下的位置,在模拟器中完成以下操作

我终于得到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);
}

1 个答案:

答案 0 :(得分:3)

首先,我假设您正在使用GPX文件在模拟器上测试它,因为任何其他方式都是错误的。

现在,因为我对区域监测进行了广泛的研究:

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

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

有时候它会很漂亮,但有时会失败。

我建议您使用区域边界(半径)设置进行一些操作并进行REAL测试(在某些点上行走或行驶)以查看哪种行为更好。

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

请记住,它使用手机信号塔天线来定位你,这远不如gps准确。