这几天在做一个关于跑步的app,自己做了一个记录跑步轨迹的demo,但是有几个问题想请教一下:
1.在起始位置的定位误差较大,请问如何排除这一地方的误差?
对于问题1,个人感觉是由于GPS定位尚未稳定,所以进行划线的定位点跳跃太大。只要待GPS定位稳定后,再进行记录就可。
2.在运动过程中,画出的线段不平滑,如何将这些短线段拟合成平滑曲线?
没有一个好的算法,进行对采样点轨迹进行拟合。
希望大家提供解决思路,以下是实际测试的轨迹图。
这几天在做一个关于跑步的app,自己做了一个记录跑步轨迹的demo,但是有几个问题想请教一下:
1.在起始位置的定位误差较大,请问如何排除这一地方的误差?
对于问题1,个人感觉是由于GPS定位尚未稳定,所以进行划线的定位点跳跃太大。只要待GPS定位稳定后,再进行记录就可。
2.在运动过程中,画出的线段不平滑,如何将这些短线段拟合成平滑曲线?
没有一个好的算法,进行对采样点轨迹进行拟合。
希望大家提供解决思路,以下是实际测试的轨迹图。
你是通过 CLLocationManager 拿的坐标呢还是通过地图直接拿的呢? 如果是 CLLocationManager 的话,存在一个火星坐标转换的问题,你的第一个问题有可能跟这个有关。
对于第一个问题,在国内apple使用的是高德地图,坐标系是GCJ02。使用CoreLocation获取的坐标,获取的坐标应该是基于WGS84,使用中会出现误差。可以使用MKMap提供的API,在高德地图中不会出现误差。
问题2,不清楚你画线使用的是什么方法,UIBezierPath应该可以。我在做OS X开发的时候使用NSBezierPath可以完美的划线。
仅供参考,欢迎探讨交流。
2 回答1k 阅读
1 回答1.1k 阅读✓ 已解决
1 回答2.7k 阅读
1 回答1.5k 阅读
1 回答1.4k 阅读
1.7k 阅读
1 回答902 阅读
呵呵我以前是高德的,可惜不是AMAP团队的。
第一个问题你说对了, CLLocation 经纬度信息中有 精度的,如果偏差很大就不要记录了。
第二问题就是抽稀问题了,很巧我也做过一个自行车记录的APP,如果想把线变得平滑我有个好算法(亲测)
思路: 遍历记录的GPS位置点,相邻的两个比对,把前后速度方向偏差在15度之内的点删掉,就可以绘制出一条美观的路径图。
当然你要根据具体需要,决定这个角度阀值是多少,是不是很简单?
祝你好运。