0

我一直在尝试在 iPhone 上进行区域监控时遇到问题。首先,我从来没有(甚至一次都没有)在我的 iPhone 4 设备上使用过didEnterRegion或开过火。didExitRegion

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

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

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

1 回答 1

3

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

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

区域监控不是很有效。它可以很容易地错过进入或退出的区域。

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

有时它工作得很好,有时它失败得很惨。

我建议您使用区域边界(半径)设置进行一些操作,并进行真实测试(在某些点周围行走或开车),看看哪个表现更好。

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

请记住,它使用蜂窝塔天线来定位您,这远不如 gps 准确。

于 2013-04-23T19:20:01.347 回答