你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:文章管理 / 本期精品文章
蓝牙GPS实验导航系统中轨迹记录和测距功能的实现
 

周剑敏

  文章继续讲解蓝牙GPS实验导航系统设计与制作,详细介绍系统中运行轨迹的记录、标记和测距等功能的设计方案及编程实现。

关键词 蓝牙,GPS,测距,轨迹

 

一、定位车辆位置的标示

首先在Picture2控件中添加一个Image1控件,设置其WidthHeight属性分别都是250Stretch属性为True,即该控件所加载图形可按所设置大小伸缩固定大小。为这个控件加载一个简单而显眼的图片如宝马或奔驰的标志,用来在地图上标示所在位置。

然后根据定位数据计算出Image1控件在Picture2中的相对位置,以标示出当前所在地理位置,计算方法在第三讲中已经介绍。为了使得显示位置更显眼,可以通过移动Picture2控件使得Image1控件出现在屏幕正中,然后推导一下计算公式来理解其中的原理,如图1所示。

Picture2

(大小同地图尺寸)

Picture1

(显示区域大小)

Picture2.Left

Picture2.Top

X

Y

Picture1.Width

Picture1.Height

当前位置

 

 

 

 

 

 

 

 

 

 

 


1 计算Picture2显示位置

 

根据图1可以看出,若让当前位置置于显示区域的正中,则

X - Picture2.Left = Picture1.Width / 2

求得:    Picture2.Left = X - Picture1.Width / 2

同样       Y - Picture2.Top = Picture1.Height / 2

求得:    Picture2.Top = Y - Picture1.Height / 2

修改定时器控件代码,定时获取定位信息并在地图上标示当前位置:

Private Sub Timer1_Timer()

  On Error Resume Next

  Lod = ""

  Positioning Lod, LodStr, Lat, LatStr, Spd, Ang, Dat, Tme, Fs

  Text3 = Tme

  ShowState Val(Fs)

  Text1 = Lat

  Label3.Caption = LatStr

  Text2 = Lod

  Label4.Caption = LodStr

  Text4 = Spd

  Text5 = Ang

  Form1.Caption = "实验卫星导航系统-" & Dat

  If Combo1.Text = "" Then Exit Sub ' 地图没有加载则退出

  ' 以下为新加代码

  ShowPos ' 标示位置

End Sub

 

再来看一下标示位置代码的实现

Sub ShowPos()

  Dim CurrLog, CurrLat

  ' 取得当前经度

  k = InStr(Text2.Text, "°")

  d = Val(Left(Text2.Text, Len(Text2.Text) - k))

  l = InStr(Text2.Text, "")

  f = Val(Mid(Text2.Text, k + 1, l - k - 1))

  m = Val(Mid(Text2.Text, l + 1, Len(Text2.Text) - l - 1))

  CurrLog = d + f * 60 + m * 3600

  ' 取得当前纬度

  k = InStr(Text1.Text, "°")

  d = Val(Left(Text1.Text, Len(Text1.Text) - k))

  l = InStr(Text1.Text, "")

  f = Val(Mid(Text1.Text, k + 1, l - k - 1))

  m = Val(Mid(Text1.Text, l + 1, Len(Text1.Text) - l - 1))

  CurrLat = d + f * 60 + m * 3600

  ' 计算当前位置在Picture2控件中的坐标

  X = (LogL - CurrLog) * picutre2.Width / (LogL - LogR)

  Y = (LatB - CurrLat) * Picture2.Height / (LatB - LatT)

  ' 将当前位置标示图标移到坐标所在处

  Image1.Left = X

  Image1.Top = Y

  ' 移动地图位置,使位置标示图标位于显示区域正中

  Picture2.Left = X - Picture1.Width / 2

  Picture2.Top = Y - Picture1.Height / 2

  ' 调画轨迹、记录轨迹模块

  RecordTrack CurrLog, CurrLat, X, Y, Combo1.Text

End Sub

  推荐精品文章

·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089