【发布时间】:2012-03-07 13:54:51
【问题描述】:
我正在开发一个使用 CLLocationManager 区域监控的基于位置的应用程序。
我正在使用单个 CLLocationManager 和单个委托(在启动时在主应用程序委托中设置),我注意到我经常收到对我的委托的多次调用(在 locationManager:didExitRegion: ) 退出受监控区域时——通常是两个调用,但有时更多。有没有其他人经历过这种情况,或者有任何想法可能出了什么问题?
我在应用委托中实例化的类中按如下方式实例化 CLLocationManager:
_locationManager = [[CLLocationManager alloc] init];
_locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
_locationManager.delegate = self;
我正在像这样设置区域监控:
// The region instance has a radius of 300 meters
[_locationManager startMonitoringForRegion:region desiredAccuracy:1000];
据我从documentation 了解到,提供 1000 的所需精度意味着 locationManager:didExitRegion: 仅应在我们在该区域外 1000 米时调用。
另外一点 - 据我所知,如果我在车里(因此旅行速度很快),我只会收到多个通知。如果我骑自行车或步行,这似乎不会发生。任何关于我做错了什么的指针(或者如果这是其他人已经遇到的问题),我们将不胜感激。
【问题讨论】:
-
仅供参考,您可以在模拟器上模拟您的位置。您甚至可以模拟旅行路径。不用开着车到处乱跑^^
-
github.com/futuretap/FTLocationSimulator 使您能够将 Google 地球 KML 路线文件加载到模拟器中 :)
-
关于模拟位置,是的,我知道这是可行的,但是由于在硬件上使用蜂窝塔等,模拟器上的区域监控与真实硬件上的区域监控有很大不同。我已经在模拟器上进行了大部分测试,但有些问题(如上面的问题)只能在硬件上进行真正的测试。
标签: iphone ios cocoa-touch core-location