当前随着人们对于健康的关注度越来越高,随之而来的是各种运动健康类app不断的出现在市场上,而跑步是成本最小,最易实现的运动项目,所以基本上所有的运动健康的软件都会有跑步这项功能,逐渐的发展到了记录用户的运动轨迹的问题,当前在中国,最流行的地图应该非高德地图莫属了。网上也有很多关于高德地图绘制轨迹的demo,这里不对绘制运动轨迹做讲解,主要跟大家探讨一下轨迹纠偏的问题,大家在绘制轨迹测试的时候,经常会出现有一个点突然就飞出很远,于是就有人寻求解决方法,诸于使用百度鹰眼纠偏,高德运动轨迹纠偏等等,经过复杂的集成,sdk导入,最后发现其实针对于跑步来说,这些sdk并不能有效的解决问题,实际有一个特别简单的方法就能解决轨迹飞出的问题,废话不多说,现在直入主题,以iOS为例。
在使用地图的时候,当更新到位置时会调用-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation委托代理方法,在此时我们可以拿到gps的信号用下面的方法获取,
//GPS信号CGFloat GPSAccuracy=userLocation.location.horizontalAccuracy;
这里解释一下horizontalAccuracy,horizontalAccuracy的单位是米,代表当前GPS信号精确到了多少米,越接近于0定位就越准确,GPS信号也就越强,当horizontalAccuracy为负数时,当前为没有GPS信号,所以一般情况下参考horizontalAccuracy就可以向用户展示当前的信号强度。
打印出每次的信号强度,你会发现每次轨迹飞出的时候信号值就会很大,约为1000以上,一般情况下,在室内时horizontalAccuracy的值约为65米,当horizontalAccuracy大于100米时,定位已经不太准确了,所以我们根据需求,判断horizontalAccuracy的值,当大于一定的值时,将此位置点过滤掉就可以防止绘制出 飞出去的点了。
另外,在使用LBS时一般都会碰到各家地图的经纬度转换问题,各位看官可移步到我写的另外一篇帖子去了解,经纬度转换封装,上述的运动纠偏方案,我已经在我之前开发的项目中有体现,各位看官可以去app store下载查看,扫下方二维码可直接下载
以上为我个人的使用心得,不喜勿喷。也欢迎各位留言交流。
网友评论