MapX历史轨迹回放[开发源代码]:
MapX历史轨迹回放[开发源代码]:
Option Explicit
Dim xDown As Double
Dim yDown As Double
Dim HisBeginFlag As Boolean
Dim Lyr As MapXLib.Layer
Dim LayerInfo As New MapXLib.LayerInfo
Dim Flds As New MapXLib.Fields
Dim Icount As Integer
Dim Angle() As Double
Dim RecordTime() As Date
Dim StopFlag As Boolean
Dim TempPnt As New Point
Dim DisTemp As Double
Dim DisSum As Double
Private Sub Form_Load()
Dim strsql As String
Dim i As Integer
Dim ResShowVehicle As ADODB.Recordset
'On Error Resume Next
Set ResShowVehicle = New ADODB.Recordset
strsql = "select * from mapinfo where mapname='" & cSelectMapName & "'"
If CreateRecordSetbySQL_Tempdb(ResShowVehicle, strsql) Then
If Not (ResShowVehicle.BOF And ResShowVehicle.EOF) Then
fZoom = ResShowVehicle.Fields("zoom"
fCenterX = ResShowVehicle.Fields("fcenterx"
fCenterY = ResShowVehicle.Fields("fcentery"
End If
End If
Set ResShowVehicle = Nothing
txtVehicle.Text = FrmHistory.cboVehicle.Text
txtMap.Text = FrmHistory.cboMap.Text
txtStart.Text = FrmHistory.txtYear(0) + "-" + FrmHistory.txtMonth(0) + "-" + FrmHistory.txtDay(0) + " " + FrmHistory.txtHour(0) + ":" + FrmHistory.txtMinute(0) + ":00"
txtEnd.Text = FrmHistory.txtYear(1) + "-" + FrmHistory.txtMonth(1) + "-" + FrmHistory.txtDay(1) + " " + FrmHistory.txtHour(1) + ":" + FrmHistory.txtMinute(1) + ":00"
HistoryMap.CreateCustomTool CreateCJTool, miToolTypePoly, miCrossCursor
'设置默认工具
HistoryMap.CurrentTool = miArrowTool
HistoryMap.MapUnit = miUnitMeter
HistoryMap.Geoset = IIf(Right(cSelectMapPath, 1) = "\", cSelectMapPath, cSelectMapPath & "\" + cSelectMapName
HistoryMap.Zoom = fZoom
HistoryMap.CenterX = fCenterX
HistoryMap.CenterY = fCenterY
TxtDataTime.Text = CStr(Year(Date)) + "年" + CStr(Month(Date)) + "月" + CStr(Day(Date)) + "日" + " " + CStr(Hour(Time)) + "时" + CStr(Minute(Time)) + "分" + CStr(Second(Time)) + "秒"
StopFlag = False
Toolbar1.Buttons(10).Enabled = False
Toolbar1.Buttons(11).Enabled = False
TimerShowMap.Interval = Slider.Value * 50
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'清除临时图层
Dim i As Integer
For i = 1 To HistoryMap.Layers.Count
If HistoryMap.Layers.Item(i).Name = "TempLayer" Then
HistoryMap.Layers.Remove i
i = HistoryMap.Layers.Count + 1
End If
Next i
Set Lyr = Nothing
Set Flds = Nothing
Set LayerInfo = Nothing
End Sub
Private Sub Form_Resize()
If Me.WindowState = 1 Then Exit Sub
HistoryMap.Height = Me.ScaleHeight - 300 - frFrame.Height
HistoryMap.Width = Me.ScaleWidth
HistoryMap.Left = Me.ScaleLeft
frFrame.Width = Me.ScaleWidth
StatusBar.Panels(1).Width = 350
StatusBar.Panels(2).Width = (Me.ScaleWidth - 400) / 10 * 4
StatusBar.Panels(3).Width = (Me.ScaleWidth - 400) / 10 * 3.5
StatusBar.Panels(4).Width = (Me.ScaleWidth - 400) / 10 * 2.5
Picture1.Top = Me.ScaleHeight - 330
Picture1.Left = Me.ScaleLeft + 100
End Sub
Private Sub HistoryMap_DblClick()
If HistoryMap.CurrentTool = CreateCJTool Then
HistoryMap.CurrentTool = miArrowTool
MsgBox "距离:" & CStr(DisSum) & " 米", vbOKOnly + vbInformation, "测距结果"
StatusBar.Panels(3).Text = ""
HisBeginFlag = False
End If
End Sub
Private Sub HistoryMap_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
'测距
If HistoryMap.CurrentTool = CreateCJTool And Button = vbLeftButton Then
HistoryMap.MapUnit = miUnitMeter
HistoryMap.ConvertCoord x, y, xDown, yDown, miScreenToMap
HisBeginFlag = True
DisTemp = DisSum 'distemp变量记录历史长度
End If
End Sub
Private Sub HistoryMap_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim xx As Double, yy As Double
Dim MapCoordX As Double, MapCoordY As Double
HistoryMap.ConvertCoord x, y, MapCoordX, MapCoordY, miScreenToMap
If HistoryMap.CurrentTool = CreateCJTool And HisBeginFlag = True Then
DisSum = DisTemp + HistoryMap.Distance(xDown, yDown, MapCoordX, MapCoordY)
StatusBar.Panels(3).Text = "距离:" & CStr(DisSum) & "米"
End If
HistoryMap.ConvertCoord x, y, xx, yy, miScreenToMap
StatusBar.Panels(2).Text = "经度: " & CStr(Round(xx, 4)) & " " & "纬度: " & CStr(Round(yy, 4))
End Sub
Private Sub Slider_Click() dedecms.com
If Slider.Value <> 0 Then
Slider.ToolTipText = "回放速度:" & Slider.Value * 10 & "倍"
TimerShowMap.Interval = Slider.Value * 10
End If
End Sub
Private Sub TimerTime_Timer()
TxtDataTime.Text = CStr(Year(Date)) + "年" + CStr(Month(Date)) + "月" + CStr(Day(Date)) + "日" + " " + CStr(Hour(Time)) + "时" + CStr(Minute(Time)) + "分" + CStr(Second(Time)) + "秒"
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Dim i As Integer
Select Case Button.Key
Case "fullmap"
HistoryMap.Bounds = HistoryMap.Layers.Bounds copyright dedecms
Case "zoomin"
HistoryMap.CurrentTool = miZoomInTool
Case "zoomout"
HistoryMap.CurrentTool = miZoomOutTool
Case "pan"
HistoryMap.CurrentTool = miPanTool
Case "cj"
HistoryMap.CurrentTool = CreateCJTool
DisSum = 0
Case "default"
HistoryMap.CurrentTool = miArrowTool 内容来自dedecms
Case "start"
If StopFlag Then
TimerShowMap.Enabled = True
Toolbar1.Buttons(10).Enabled = True
Toolbar1.Buttons(11).Enabled = True
Toolbar1.Buttons(9).Enabled = False
Else
Call BackPutHistoryLocus
End If
Case "pause"
TimerShowMap.Enabled = False
Toolbar1.Buttons(9).Enabled = True
Toolbar1.Buttons(10).Enabled = False
StopFlag = Not StopFlag
Case "stop"
TimerShowMap.Enabled = False
Toolbar1.Buttons(10).Enabled = False
Toolbar1.Buttons(11).Enabled = False
Toolbar1.Buttons(9).Enabled = True
Case "clear"
TimerShowMap.Enabled = False
'清除临时图层
For i = 1 To HistoryMap.Layers.Count
If HistoryMap.Layers.Item(i).Name = "TempLayer" Then
HistoryMap.Layers.Remove i
i = HistoryMap.Layers.Count + 1
End If
Next i
Set Lyr = Nothing
Set Flds = Nothing
Set LayerInfo = Nothing
Case "exit"
Unload Me
End Select
End Sub
Private Sub BackPutHistoryLocus() '回放历史轨迹
Dim ExistFlag As Boolean
Dim i As Integer
Dim TempLyr As MapXLib.Layer
On Error GoTo aa:
'判断临时图层是否存在
ExistFlag = False '不存在
For i = 1 To HistoryMap.Layers.Count
If HistoryMap.Layers.Item(i).Name = "TempLayer" Then
ExistFlag = True '存在
i = HistoryMap.Layers.Count + 1
End If
Next i
If Not ExistFlag Then '不存在,新建临时图层
'创建临时图层
Flds.AddStringField "ID", 12
LayerInfo.Type = miLayerInfoTypeTemp
LayerInfo.AddParameter "NAME", "TempLayer"
LayerInfo.AddParameter "Fields", Flds
Set Lyr = HistoryMap.Layers.Add(LayerInfo, 1)
Else
For i = 1 To HistoryMap.Layers.Count
If HistoryMap.Layers.Item(i).Name = "TempLayer" Then
HistoryMap.Layers.Remove i
i = HistoryMap.Layers.Count + 1
End If
Next i
Set Lyr = Nothing
Set LayerInfo = Nothing
'创建临时图层
Flds.AddStringField "ID", 12
LayerInfo.Type = miLayerInfoTypeTemp
LayerInfo.AddParameter "NAME", "TempLayer"
LayerInfo.AddParameter "Fields", Flds
Set Lyr = HistoryMap.Layers.Add(LayerInfo, 1)
End If
ReDim Angle(Res.RecordCount - 1)
ReDim RecordTime(Res.RecordCount - 1)
Res.MoveFirst
For i = 0 To Res.RecordCount - 1
Hispnt.Set Res.Fields("Longitude" , Res.Fields("Latitude"
Hispnts.Add Hispnt
Angle(i) = Res.Fields("angle"
RecordTime(i) = Res.Fields("time"
Res.MoveNext
Next i
Icount = 0
TempPnt.Set Hispnts.Item(1).x, Hispnts.Item(1).y
TimerShowMap.Enabled = True
'TimerShowMap.Interval = 100
Toolbar1.Buttons(10).Enabled = True
Toolbar1.Buttons(11).Enabled = True
Toolbar1.Buttons(9).Enabled = False
Exit Sub
aa:
MsgBox "历史记录回放错误,请检测.", vbOKOnly + vbExclamation, "历史记录回放..."
Exit Sub
End Sub
Private Sub TimerShowMap_Timer()
Dim NewStyle As New MapXLib.Style
Dim ftr As New Feature
Dim fnt As New StdFont
On Error GoTo aa:
Icount = Icount + 1
If Hispnts.Count = Icount Then
TimerShowMap.Enabled = False
TimerShowMap.Interval = 0
StopFlag = Not StopFlag
MsgBox "历史轨迹回放完毕!"
Exit Sub
End If
With fnt
.Name = "gisdisplay"
.Bold = False
End With
With NewStyle
.SymbolType = miSymbolTypeTrueTypeFont
.SymbolFont = fnt
.SymbolFontShadow = True
.SymbolCharacter = 34
.SymbolFont.Size = 12
.SymbolFontColor = gisBlue '蓝色
End With
StatusBar.Panels(3).Text = "第 " & CStr(Icount) & " 条 " & CStr(Round(Hispnts.Item(Icount).x, 4)) & "::::" & CStr(Round(Hispnts.Item(Icount).y, 4)) & " 方位角: " & CStr(Angle(Icount)) & " 度"
txtRecordTime.Text = RecordTime(Icount - 1)
If Icount <> 1 And TempPnt.x = Hispnts.Item(Icount).x And TempPnt.y = Hispnts.Item(Icount).y Then
TempPnt.Set Hispnts.Item(Icount).x, Hispnts.Item(Icount).y
Exit Sub
End If
ftr.Attach HistoryMap
ftr.Type = miFeatureTypeSymbol
ftr.Style = NewStyle
ftr.Offset Hispnts.Item(Icount).x, Hispnts.Item(Icount).y
HistoryMap.Layers("TempLayer" .AddFeature ftr
TempPnt.Set Hispnts.Item(Icount).x, Hispnts.Item(Icount).y
If Hispnts.Item(Icount).x > HistoryMap.Bounds.XMax Then
HistoryMap.CenterX = Hispnts.Item(Icount).x
HistoryMap.CenterY = Hispnts.Item(Icount).y
End If
If Hispnts.Item(Icount).x < HistoryMap.Bounds.XMin Then
HistoryMap.CenterX = Hispnts.Item(Icount).x
HistoryMap.CenterY = Hispnts.Item(Icount).y
End If
If Hispnts.Item(Icount).y > HistoryMap.Bounds.YMax Then
HistoryMap.CenterX = Hispnts.Item(Icount).x
HistoryMap.CenterY = Hispnts.Item(Icount).y
End If
If Hispnts.Item(Icount).y < HistoryMap.Bounds.YMin Then
HistoryMap.CenterX = Hispnts.Item(Icount).x
HistoryMap.CenterY = Hispnts.Item(Icount).y
End If
Exit Sub
aa:
TimerShowMap.Enabled = False
TimerShowMap.Interval = 0
StopFlag = Not StopFlag
MsgBox "历史轨迹回放完毕!"
Exit Sub
End Sub
转载于:https://www.cnblogs.com/kldzp/archive/2012/08/31/2664832.html
MapX历史轨迹回放[开发源代码]:相关推荐
- 工厂人员定位系统源码,支持智能考勤、工时统计、行为检测、历史轨迹回放、人员管理、电子围栏功能
系统概述: 工厂人员定位系统,采用UWB定位技术,通过在厂区内部署一定数量的定位基站,以及为人员.车辆.物资佩戴标签卡的形式,实时获取人员精确位置,精度高达10cm. 工厂人员定位系统可实现物资/车辆 ...
- 小程序 历史轨迹回放 地图播放历史轨迹
先看效果图 html <map id='map' :latitude="addressInfo.latitude" :longitude="addressInfo. ...
- js室内地图开发_如何使用JS来开发室内三维地图的轨迹回放功能
在制作完成室内三维地图的功能后,最经常有的需求就是如何做人员的轨迹回放,一般流程都是从数据库中查询轨迹坐标后,经过后台查询接口返回给前端,接下来的事情都交给JS来完成. 如果想做好一个性能好的轨迹回放 ...
- HOLUX M1200-E 蓝牙GPS轨迹记录器的历史轨迹数据读取
HOLUX M1200-E 蓝牙GPS轨迹记录器的历史轨迹数据读取 图片太烂上传了 原Word文件下载地址 点击打开链接http://download.csdn.net/download/cp45 ...
- 百度地图轨迹回放,自定义路书,边走边画线
转自:https://www.cnblogs.com/syj2016/p/5685294.html 百度地图轨迹回放,自定义路书,边走边画线 在原有的百度路书的基础上,做了修改,使其能实现边走边画线的 ...
- Android实现高德地图轨迹回放
Android实现高德地图轨迹回放 写在前面 准备 官方文档解读 创建应用: 地图api引入: 权限添加 效果展示 过程实现 地图初始化 定位 显示标记点 点平滑移动 添加呼吸点 写在结尾 写在前面 ...
- 高德地图轨迹回放功能
一.介绍 在项目过程中,需要对自己设备产品输出的定位信息进行验证.通过路跑测试获取到了一组经纬度数据.这时需要验证这组数据是否是实际路跑测试的轨迹,就用到了高德地图的轨迹回放功能.下面将 ...
- 使用百度地图实现车辆轨迹回放
最近在做的项目有个车辆轨迹回放需求,查资料看到可以使用百度地图的路书功能实现,百度路书功能如下. 点击开始按钮,小车会在地图上移动还原历史轨迹. 具体需求就是通过调用后台接口获取到指定车辆的指定时间段 ...
- 运动APP视频轨迹回放分享实现
喜欢户外运动的朋友一般都应该使用过运动APP(keep, 咕咚,悦跑圈,国外的Strava等)的一项功能,就是运动轨迹视频分享,分享到朋友圈或是运动群的圈子里.笔者本身平常也是喜欢户外跑.骑行.爬山等 ...
最新文章
- 查询/新建/修改本地用户和组
- 魔教《3字魔经》为何优于其它武功秘籍?
- 数据库时间内接受的是lang类型的时间 分为三种字段 第一种只存日期 第二种存日期+时间 第三种时间戳...
- Asp.Net分页控件
- 在VC中如何找到崩溃的源头(二)
- Node js redis
- ERP的配置管理实践
- [Redis6]NoSQL数据库简介_特点
- 如何制作可以在 MaxCompute 上使用的 crcmod 1
- 高效安全存储之选 佰维A3系列240G固态硬盘试用手记
- ios 调用webservice 辅助类
- Python基础---循环、条件判断
- android状态栏半透明灰色,快速解决Android7.0下沉浸式状态栏变灰的问题
- 通过ip如何免费反查域名?
- 改变文本颜色和字体大小的脚本
- Windows10中,如何改变鼠标光标(指针)的大小和颜色?
- 【NLP】神经网络语言模型(NNLM)
- 文件管理之文件和文件系统
- DBMS_AW_EXP: not AW$
- 晨风机器人安卓版_晨风qq机器人
热门文章
- 又真香了!到底是怎样的软件测试面试文档,拿到这么多大厂offer
- 开源中国大佬是怎么用Selenium做自动化web测试的
- Endnote在word中每次启动都要加载,或者无法加载的解决办法
- pd怎么转成mysql_powerdesigner中实现PDM到MYSQl数据库的转换《转》
- linux系统查看服务进程,Linux服务器系统详细查看进程启动时间
- A Concise and Provably Informative Multi-Scale Signature Based on Heat Diffusion
- Java判断某年是不是闰年
- python 函数图解_Python函数说明(一)
- CRNN+CTCLoss中文手写汉字识别
- 大数据工程师技能图谱