使用CoreLocation来跟踪用户距离
来源:互联网 发布:dnf制裁知乎 编辑:程序博客网 时间:2024/05/16 08:00
http://gracelancy.com/?p=363
使用CoreLocation来跟踪用户距离
背景
CoreLocation是一个强大的Framework,他能帮助开发使其免于复杂的位置处理而专注于应用逻辑的开发。然而CoreLocation并没有提供的对用户移动距离的检测,当我们开发跑步类运动类应用时,就不可避免的需要这项功能。凑巧有一个朋友让我帮忙做一个GPS模块,故而就有了CYLocationManager。
代码在Github开源托管,传送门
实现说明
Readme有详细的使用说明,我在这里主要描述一下实现的一些要点。
基本的思路既是不断的采样用户数据,过滤掉误差较大的数据,取相对误差较小的数据进行记录,然后计算相邻记录点之间的距离。
简单描述一下几个要点:
- 当用户开始运动,程序开始追踪,设置一个强制标记,(needForceCalculation),表示程序应该忽略其他因素,立刻获取一个点坐标。用做起始值。
- 设置了CLLocationManager.headingFilter,使得程序能在用户转向的时候收到通知,此时设置一个强制标记(needForceCalculation),使得程序在用户转向的时候,记录下转向时所在的位置,以减少误差。
- 设置CLLocationManager.distanceFilter,使得程序在变化的位置大于一定数值时该更新位置才算为有效,可以避免用户在一个地方停留,由于误差记录距离依然增长。
- 当程序获得位置更新时,若精度合格,切时间戳合理,则加入一个数组,用于之后的计算。若误差大于某个阀值,则认为该位置对跟踪距离无帮助,此时将该位置舍去。
- 数组currentKeepLocations来记录最近更新的k个位置,并每隔t秒,从该数组中,取出精度最高的位置记录。(精度见CLLocation.horizontalAccuracy)
- 注意,当用户停止运动时,位置将无法得到更新,此时需要设置一个timer,令其在一定时间内强制获得一个位置。
- 该程序还可以通过每次更新位置时获得的位置的精度来判断GPS信号的强弱
- 使用CoreLocation来跟踪用户距离
- 使用CoreLocation来跟踪用户距离
- 使用CoreLocation来跟踪用户距离
- iOS --- 使用CoreLocation来获取地理位置信息
- CoreLocation使用
- 用cookies来跟踪识别用户
- 使用trace_sql跟踪用户sql
- 使用cookie跟踪用户例子
- Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)
- Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)
- iOS CoreLocation的使用
- CoreLocation框架的使用
- CoreLocation框架的使用
- iOS 使用CoreLocation定位
- CoreLocation的基本使用
- CoreLocation使用步骤
- CoreLocation基本使用
- iOS-使用CoreLocation定位
- 自动化脚本批量运行机制
- 如何在android上去控制开发进度
- Qt(QML)本地化
- IOS设计模式学习(20)命令
- Oracle RMAN 的 show,list,crosscheck,delete命令整理
- 使用CoreLocation来跟踪用户距离
- 使用UltraIso和nero刻录win7启动盘
- C++开发即时通讯软件,需要注意什么?
- RT-WMP 1. Installation
- 【xinfanqie】升级电源后,开机进入BIOS后黑屏怎么办
- AVI文件格式
- Silverlight WCF RIA服务(四)如何添加和移除RIA Services Link
- OS X/iOS 并发编程小结
- VS中C++代码折叠