CLRegion隐藏缓冲区?

时间:2013-07-29 19:18:47

标签: ios cllocationmanager clregion

在遇到this question之后,我担心这个问题没有答案,但无论如何我都会希望。

我设置了一些地理围栏(大多数小型和一个大型)。我正在使用模拟器,我输出了大CLRegion的半径,它告诉我在某个坐标周围的半径是10881.98m,但是当我将地理定位模拟到距离相同的某个坐标11281.86m时,它不会触发大区域的locationManager:didExitRegion:委托方法。

虽然大区域不会触发locationManager:didExitRegion:,但我已确认较小的区域每次都会触发委托方法。有没有理由不解雇?区域周围是否有距离缓冲区?它是在某处记录的吗?

任何帮助都会很棒。

编辑:从测试开始,我需要将半径减少大约45.28%才能获得地理围栏触发器。显然这不是一个很好的解决方案,因为它非常不精确,它违背了地理围栏的整个想法。

1 个答案:

答案 0 :(得分:0)

我的猜测是这是模拟器独有的问题。虽然CLRegion在技术上没有缓冲区或填充,但操作系统需要更长的时间来确定您已经离开地理围栏区域。在那个大小的栅栏上,我想它可能需要更长时间。在较小的区域,100-200M,我已经看到它需要几分钟的驾驶,但在触发事件之前容易300-400M。根据Apple工程师在WWDC 2013上告诉我的内容,操作系统会花时间确定你离开了。由于它依赖于蜂窝塔三角测量和已知的无线网络,系统也很难确定你离开了。它需要远远超出已知网络,才能安全地触发退出事件。

我知道这不是一个确切的答案,但希望你能更深入地了解它们的工作原理以及Apple对它们的期望。祝你好运。