很多运动类的app都有画出跑步者运动轨迹的需求,拿咕咚来说,我们看一下它的效果图:
本篇将要实现的效果1跑步结束后,静态的画出整个运动轨迹2跑步过程中,时时动态的画运动轨迹
如何实现:
1将点与点连成线,在百度地图MapView上画出线条图层;
2获取定位点List<LatLng>:通过百度定位sdk:LocationClient类获取,户外运动画运动轨迹,要求位置点的精度高,所以我们必须使用gps定位类型的位置结果。
一 静态画整个运动轨迹
1画轨迹
运动轨迹效果
2添加起始图标图层、点击图层响应事件
运动轨迹效果,点击图标d出信息窗口
点击起始图标
点击图标d出信息窗口d出Toast
d出Toast
到这里,运动结束后画出整个轨迹图和图层添加点击事件就介绍完了。
二 时时动态的画运动轨迹
时时动态画运动轨迹效果
运动轨迹:箭头为当前位置和方向
关键在于取点:gps刚接收到信号时返回的一些点精度不高,容易造成位置偏移,如何取点很重要。
退出记得释放资源
注:我们画运动轨迹要求定位sdk返回的位置精度很高,轨迹的效果才会好,因而必须接受gps位置点。但是gps位置的在刚开始收到信号时精度不高,会出现位置漂移的情况,所以要选取一个精度较好的点。在建筑物、桥梁、大树、隧道里面,gps信号不好,精度不高,所以在开阔地带,运动轨迹效果更好。
效果,因为我太懒只做了个简单的四方向布朗运动,但是实际上即使是斜线也是可以追踪的。
通用型很高,代码都做了注释,如果哪里没有看懂的可以追问我或者私信我,我基本上过几天都会看。
Dim Place(1 To 2) As LongPrivate Sub Form_Load()
With Label1
Place(1) = Left + (Width / 2) '初始化中央横坐标
Place(2) = Top + (Height / 2) '初始化中央纵坐标
End With
'Label1是作为小船的控件 _
需要注意的是,轨迹是直接绘制在Form1容器上的,任何控件都会遮挡 _
如果是自己制作的话,记得把容器(比如pic控件、Frame控件或者Form窗体的autoReadraw属性设置为True
End Sub
Private Sub Timer1_Timer()
'用于控制小船,这里为了方便直接让小船做布朗运动
Dim Direc As Integer, Dis As Integer
Randomize
Direc = Int(Rnd 4 + 1) '方向↑↓←→随机一个
Dis = Int(Rnd 100 + 1) '距离1~100随机一个
With Label1
Select Case Direc
Case Is = 1 '方向为上
Move Left, Top - Dis
Case Is = 2 '方向为下
Move Left, Top + Dis
Case Is = 3 '方向为左
Move Left - Dis, Top
Case Is = 4 '方向为右
Move Left + Dis, Top
End Select
'防止小船脱出窗口
If Top < 0 Then Top = 0
If Top + Height > Form1Height Then Top = Form1Height - Height
If Left < 0 Then Left = 0
If Left + Width > Form1Width Then Left = Form1Width - Width
'===========================追踪部分================================
Dim lData(1 To 2) As Long
lData(1) = Left + (Width / 2)
lData(2) = Top + (Height / 2) '其实可以直接使用中央坐标,但是为了使代码可读性上升,定义了临时数组
Form1Line (lData(1), lData(2))-(Place(1), Place(2)) '划线
Place(1) = Left + (Width / 2) '刷新中央横坐标
Place(2) = Top + (Height / 2) '刷新中央纵坐标
End With
End Sub
根轨迹的绘制,主要依据是其8条性质。鉴于是轨迹草图,内容相比较简单。①根轨迹起于开环极点P1=…P2=…止于Z1=…Z2…和无穷远处;②有n=(取决于阶数)条根轨迹,且关于实轴对称;③有n-m=…条渐近线,且与实轴的交点σ=(∑Pi-∑Zi)/(n-m),交角φ=(2k+1)2π/(n-m);④实轴上的根轨迹区间是(…,…);⑤确定分离点,∑1/(d-Pi)=∑1/(d-Zi),根据实轴上的根轨迹取舍d;⑥与虚轴的交点,令S=wj,代入特征式D(S),令实部、虚部分别为0,解出对应的共轭虚根(如果存在)⑦根据以上内容做画。 说明;Pi,Zi分别表示开环极点、零点,m,n 开环传函一般分子阶数小于分母阶数,故其中的最小阶数m一般表零点和最大阶数n 表极点。此外,可以选择性的添加出射角……
以上就是关于百度地图绘制运动轨迹技巧全部的内容,包括:百度地图绘制运动轨迹技巧、vb软件 画以小船为中心的航行轨迹、自动控制原理根轨迹草图绘制方法及步骤等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)