在遇到this question之后,我担心这个问题不会有答案,但无论如何我都会希望。
我设置了几个geofences (大多数小的和一个大的)。我正在使用模拟器,我已经输出了大CLRegion的半径,它告诉我半径是围绕某个坐标的10881.98m,但是当我模拟地理位置到离这个相同的坐标11281.86m时,它不会触发大区域的locationManager:didExitRegion:委托方法。
虽然较大的区域不会触发locationManager:didExitRegion:,但我已经确认较小的区域每次都会触发委托方法。这是不是有没有什么原因呢?区域周围有距离缓冲区吗?它有记录在什么地方吗?
任何帮助都是最好的。
编辑:从测试中,我需要将半径减少约45.28%,才能拥有geofence触发器。显然,这不是一个很好的解决方案,因为它非常不精确,而且它与地理围栏的整个想法背道而驰。
发布于 2013-09-12 07:00:45
我的猜测是,这是模拟器独有的问题。虽然从技术上讲,CLRegion没有缓冲区或填充,但操作系统需要更长的时间来确定您是否实际离开了地理围栏区域。在这么大的栅栏上,我想可能需要更长的时间。在较小的区域,100-200米,我见过它需要几分钟的驾驶,但很容易在触发事件之前300-400米。从苹果工程师在WWDC 2013上告诉我的情况来看,操作系统需要很长时间才能确定你是否离开了。系统也很难确定你离开了,因为它依赖于手机发射塔三角测量和已知的wifi网络。它需要远远超出已知网络,然后才能安全地触发退出事件。
我知道这不是一个确切的答案,但希望你能更多地了解它们是如何在引擎盖下工作的,以及苹果对它们的期望是什么。祝好运。
https://stackoverflow.com/questions/17932405
复制相似问题