定位规则(本质上还是根据速度和位移范围触发回调方法):
1. 如果用户的移动速度较快 则隔一段时间上报一次
2. 如果用户的移动速度很慢 则隔一段距离上报一次
如果用户是低速率的状态(比如步行的移动速度大概就是1m/s左右) 这个时候如果还按(1)中的方式来上报的话 由于变化太小 地图上的点会非常的密集 这种数据的意义不大(而且如果要做轨迹服务的话 这些密集点都是必须有花掉的) 所以这时候我们按照距离间隔来上报
3. 如果用户的位置在到达某处后没有变化 则不继续上报
我们只关心位置的变化 如果用户的位置没有变化或者变化很小 其实是不需要上报其位置的(比如进入的公司 或者等一个很长时间的红灯) 这时候我们就不上报(以达到省电的目的)
4. 切换到后台也要能定位上报
难点
1.四种上报规则的切换
2.后台定位要保证进程不被Kill
解决思路:程序在进入后台的时候有3分钟的驻留时间。在这3分钟内做一些能让iOS刷新这3分钟开始时间的事,我们就可以获得无限个3分钟驻留时间,从而在侧面达到“常驻后台”的效果。