【问题标题】:CLLocationManager didEnterRegion wrong notificationsCLLocationManager didEnterRegion 错误通知
【发布时间】:2012-02-06 18:55:24
【问题描述】:

我在玩 CLLocaitonManager 时遇到了非常奇怪的情况...

manager = [[CLLocationManager alloc] init];
[manager setDistanceFilter:kCLDistanceFilterNone];
[manager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
manager.delegate = self;

我正在对半径为 10.0 米的区域使用区域跟踪...

[manager startMonitoringForRegion:region];

我定义的区域彼此非常接近,但绝对不小于 50-100 米...当我在 iOS (5.0) 模拟器中测试我的应用程序时(通过将位置设置为 Apple,然后返回我的自定义位置) 我同时收到多个通知,针对彼此靠近的区域...我还在检查检测到的区域位置与我当前位置之间的距离...

-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
CLLocation *regionLocation = [[CLLocation alloc] initWithLatitude:region.center.latitude longitude:region.center.longitude];

NSLog(@"didEnterRegion: %@ %f", region.identifier, [regionLocation distanceFromLocation:mapView.userLocation.location]);

[self notifyUserDidEnterRegion:region];
}

问题是我收到的区域通知例如距离我当前位置 200 米...而且我几乎同时收到很少的通知...

有什么建议吗?或者我应该提供更多细节吗?

【问题讨论】:

    标签: iphone ios ios5 geolocation


    【解决方案1】:

    区域监控仅限于此。不幸的是,您无法在米的范围内获得精确度,它们在 iOS5 中改进了大约 200m 的范围,但这取决于很多因素,因为它基于蜂窝塔三角测量和 wifi 点。我发现获得更高精度的唯一方法是在您靠近目标时更改精度,并在您离开时再次注册。为此,您应该为 GPS 激活多任务处理,但如果您实施得当,算法将不会消耗很多电池。 希望这可以帮助, 安德烈亚

    【讨论】:

    • 好的...我明白这东西在某些情况下会很棘手...但是我仍然不明白为什么我在应用程序已经知道我的情况下同时收到三个地方的通知'm 5m away from one... 100m away from other one... and 200m away from last one... 逻辑上它只是没有意义...
    • 我知道您对此感到失望,我也是第一次发现。原因可能是因为您的位置距离它们大约 400 米。如果您的精度为 200m 或更高(并且处于位置监控中),则该范围内的所有内容都将被触发。我的意思是,当您开始区域监控时,您提供的准确性将被覆盖。
    猜你喜欢
    • 2020-06-02
    • 2014-11-15
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    相关资源
    最近更新 更多