是否可以仅使用区域监测+ GSM并获得不超过5公里的水平精度?

Cen*_*ion 5 iphone objective-c core-location region

我想分享我执行的测试方案的信息,并要求您分享您在区域监控方面的经验.所以,我已经注册了两个相对的区域(A和B),半径为5公里,距离为1公里,距离为20公里.但是,从A到B旅行时,我没有收到任何didEnterRegion/didExitRegion事件.在我的app原型中,我还放了两个按钮(用于测试目的):一个开始重大更改,另一个标准位置监控.两个打印都在屏幕上记录了UpdateToLocation事件.

因此,在到达B区中心并对不可预测的功能非常恼火之后,我已经启用了重要的监控.之后,我收到了几个didUpdateToLocation,horizo​​ntalAccuracy为~8.5 km!哇,这很痛,因为我想做的就是有一个功能,用户会收到通知,他想要的地方是距他当前位置5公里半径的某个地方,我想依靠GSM单元三角形位置仅检测方法(用于保存电池).

所以,回到我的情况.在得到如此大的8公里误差后,我已经启用了具有最佳精度(GPS)的标准监控.和宾果游戏,我收到了水平准确度为399米的didUpdateToLocation事件,只有这样,我才从我的初始位置(区域A)接收到didExitRegion,并使用didEnterRegion(B)接收了另一个事件.另一个来自didUpdateToLocation的更新更准确--50米.

在以前的场景中,我的准确性也不稳定.有时水平精度有4公里,有时甚至更少.但主要的问题是,如果我们想要保留电池(Apple在文档中教我们)那么我们是否可以仅使用区域监控+ GSM而不使用GPS?有一个Apple代码示例"正确使用区域监控"(这里),但有一些不可接受的事情:

1)他们声明示例代码仅适用于iPhone4,但Apple文档声明iOS4.0 +支持区域监控和重要监控.很酷,哈?

2)示例代码使用所有3种定位方法:重要,标准,区域.它始终使用区域监控,但另外在使用标准位置时具有最佳精度.当应用程序进入后台时,它会停止标准并开始重大变更监控 当进入前景时,app停止显着并开始标准位置.似乎苹果文档非常模糊,如果我们只使用区域监控,或者我们总是使用所有三种方法,我们不清楚会得到什么惩罚(horizo​​ntalAccuracy)?

3)Apple文档声明我们需要保留电池并将其用作我们需要的最小位置服务,如果我们不需要GPS,那么我们应该使用GSM(例如,所需精度为1 - 3 km).但是示例代码使用最佳期望精度(GPS)进行区域监控和标准监控(当应用程序处于前台时).我确实理解GPS可以解决我的所有错误和准确性问题,但是仅使用GSM呢?在我的方案中获得8.5公里水平精度之后,我不确定是否可以使用区域监控,因为它无法提供至少5公里的可接受误差.

Bil*_*ess 1

根据我的经验,区域监控非常准确,不会对电池寿命造成重大损失。我有一个只有30-50米宽的区域的使用场景。准确性完全没有问题。我要说的一件事是,我只针对 iPhone 4 及更高版本的设备。如果我想支持 3GS 型号,我将需要实施您提到的一些更改。

当纯粹依赖 -startMonitoringForRegion 时,您的更新会自动触发 -didEnter 和 -didExit 事件。这些是通过位置跟踪事件的组合触发的。重大变化、手机信号塔传输、WiFi 连接、另一个应用程序请求位置等等。当这些其他共享位置事件触发回调时,操作系统会进行处理。根据我的经验,它非常准确。但这仅适用于 iPhone 4 及更高版本。

我还使用了 Apple 的示例应用程序来进行设置,但文档中没有提供有关何时/何处获取触发器的详细信息。您可以阅读 Apple 在位置感知指南中提供的内容。希望这可以帮助。