第7章跟踪层的应用.ppt

上传人:本田雅阁 文档编号:3435235 上传时间:2019-08-25 格式:PPT 页数:30 大小:1.85MB
返回 下载 相关 举报
第7章跟踪层的应用.ppt_第1页
第1页 / 共30页
第7章跟踪层的应用.ppt_第2页
第2页 / 共30页
第7章跟踪层的应用.ppt_第3页
第3页 / 共30页
第7章跟踪层的应用.ppt_第4页
第4页 / 共30页
第7章跟踪层的应用.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《第7章跟踪层的应用.ppt》由会员分享,可在线阅读,更多相关《第7章跟踪层的应用.ppt(30页珍藏版)》请在三一文库上搜索。

1、,第7章 跟踪层(TrackingLayer) 的应用,本 章 目 标,通过本章,能够使用 SuperMap Objects开发实现以下功能: 1、添加几何对象到跟踪层,并高亮显示 2、移动跟踪层上的几何对象 3、掌握对象soTrackingLayer与Tracked事件的使用 4、删除跟踪层几何对象 5、动态跟踪,第7章 跟踪层的应用,第7章 跟踪层的应用,知识准备,跟踪层(TrackingLayer)是临时存储几何对象的场所,适用于几何对象变化频繁,需要经常动态刷新的各种应用,如导航图中的视野范围框随大地图窗口视野范围的变化而不断变化,量算距离和面积时量算位置的变化,GPS 接收机接收数据

2、的实时变化。 跟踪图层是一种特殊的图层,它位于所有图层(soLayer)的最上面,这个图层上绘制的空间对象不保存到数据源文件中。跟踪层上的数据没有属性数据。 跟踪层中的所有对象都存储在内存中,刷新速度快,但在使用时,应避免将所有临时对象都放在跟踪层中,使跟踪层变成一个临时存储空间,这样会降低效率。,第7章 跟踪层的应用,预期效果,第7章 跟踪层的应用,7.1 添加几何对象到跟踪层,(一),第7章 跟踪层的应用,7.1 添加几何对象到跟踪层,(二),第7章 跟踪层的应用,语法描述 Long soTrackingLayer.AddEvent ( objGeometry As soGeometry,

3、 objStyle As soStyle, strTag As String) 参数说明:,7.1 添加几何对象到跟踪层,第7章 跟踪层的应用,实例:在打开的图层上,用鼠标点击在跟踪层上添加点,并在点的位置添加“北京超图”字样文本。,窗体设计:添加一个Command 控件并将它的Caption改为“添加几何对象”。,实现步骤: (1) 使用Action方法添加的跟踪点几何对象 (2) 在Tracked 事件中获取添加的点几何对象 (3) 设置该点对象添加到跟踪层上的显示风格soStyle (4) 设置“北京超图”文本几何对象 (5) 设置文本几何对象添加到跟踪层的风格 (6) 添加几何对象和文

4、本对象到跟踪层,7.1 添加几何对象到跟踪层,第7章 跟踪层的应用,代码: 、使用 Action方法添加跟踪层几何对象 Private Sub Command1_Click() /添加几何对象:通过Action触发Tracked事件 SuperMap1.Action = scaTrackPoint End Sub,、在 SuperMap_Tracked事件中将几何对象添加到跟踪层上 Private Sub SuperMap1_Tracked( ) 功能:将几何对象添加到跟踪层上(同时添加文本对象) 1 定义几何对象变量和风格对象变量 Dim objGeoPoint As soGeoPoint

5、Dim objStyle As New soStyle 定义文本的相关对象 Dim objGeoText As New soGeoText Dim objTextPart As New soTextPart Dim objTextStyle As New soTextStyle,SuperMap1.Action = scaZoomIn SuperMap1.Action = scaZoomOut SuperMap1.Action = scaPan SuperMap1.Action = scaSelect SuperMap1.Action = scaRegionSelect SuperMap1.A

6、ction = scaEditCreatePoint,第7章 跟踪层的应用,2 获得几何对象 Set objGeoPoint = SuperMap1.TrackedGeometry 3 设置添加到跟踪层上几何对象的风格 With objStyle 点对象风格 .PenColor = vbRed .PenWidth = 5 .SymbolStyle = 1410 五角星 .SymbolSize = 80 End With With objTextPart 文本子对象 .Text = “北京超图“ .x = objGeoPoint.x .y = objGeoPoint.y End With Wit

7、h objTextStyle 文本风格 .Color = vbBlue .FontName = “黑体“ .FontHeight = 10 .FontWidth = 10 End With,objGeoText.AddPart objTextPart 文本 Set objGeoText.TextStyle = objTextStyle风格 4 将几何对象添加到跟踪层上 SuperMap1.TrackingLayer.ClearEvents SuperMap1.TrackingLayer.AddEvent objGeoPoint, objStyle, “R1“ 添加点 SuperMap1.Tra

8、ckingLayer.AddEvent objGeoText, Nothing, “R2“ 添加文本 SuperMap1.TrackingLayer.Refresh Set objGeoPoint = Nothing Set objGeoText = Nothing Set objTextPart = Nothing Set objTextStyle = Nothing End Sub,第7章 跟踪层的应用,运行结果:,第7章 跟踪层的应用,7.2 移动跟踪层上的几何对象,第7章 跟踪层的应用,7.2 移动跟踪层上的几何对象,第7章 跟踪层的应用,7.2 移动跟踪层上的几何对象,语法描述 so

9、GeoEvent.Move(x As Double, y As Double) 参数说明:,第7章 跟踪层的应用,7.2 移动跟踪层上的几何对象,语法描述 soGeoEvent.MoveTo (x As Double, y As Double) 参数说明:,第7章 跟踪层的应用,实例:将6.1中添加的几何对象 X、Y方向移动各50单位,7.2 移动跟踪层上的几何对象,窗体设计:添加一个Command控件并将它的Caption 改为“移动几何对象” 主要步骤 : (1)获得跟踪层的点对象; (2)移动点对象。,第7章 跟踪层的应用,代码: Private Sub Command4_Click()

10、 移动几何对象 Dim objGeoEvent As soGeoEvent 1 获得跟踪层上几何事件对象 Set objGeoEvent = SuperMap1.TrackingLayer.Event(1) 2 移动 objGeoEvent.Move 50, 50 Set objGeoEvent = SuperMap1.TrackingLayer.Event(2) objGeoEvent.Move 50, 50 SuperMap1.TrackingLayer.Refresh Set objGeoEvent = Nothing End Sub,7.2 移动跟踪层上的几何对象,第7章 跟踪层的应用

11、,运行结果:,7.2 移动跟踪层上的几何对象,第7章 跟踪层的应用,7.3 删除跟踪层上的几何对象,删除实例分为删除指定实例和删除全部实例。删除指定实例不区分实例的类型,只要给定实例的索引号或标识名(Tag)。,Private Sub Command12_Click() Dim objTrackingLayer As soTrackingLayer Set objTrackingLayer = SuperMap1.TrackingLayer objTrackingLayer.RemoveEvent 1 (或:ObjTrackingLayer.RemoveEvent “R1“) objTrack

12、ingLayer.RefreshEx End Sub,删除指定实例,第7章 跟踪层的应用,关于RefreshEx,跟踪层有两种刷新方法: soTrackingLayer.Refresh soTrackingLayer.RefreshEx Refresh 用来刷新整个跟踪层,RefreshEx 比 Refresh 更加智能,它仅刷新当前时刻发生位置变化的对象,避免整个图层的闪动。 SuperMap 控件自身在刷新的同时也刷新了跟踪图层。这种刷新只是针对地图窗口而提供的方法;跟踪图层的刷新只局限于跟踪层,其它的层都不刷新;因此,跟踪图层的刷新速度比 SuperMap 自身的刷新要快得多。,第7章

13、跟踪层的应用,删除全部实例将从跟踪图层上清除掉所有的临时对象,不区分实例的类型,恢复跟踪图层原来的面貌。 代码: objTrackingLayer.ClearEvents objTrackingLayer.Refresh,删除全部实例,第7章 跟踪层的应用,7.4 动态移动并闪烁示例(应用),SuperMap 中开放了一些对TrackingLayer 操作的事件,在这些事件中用户可以用程序来控制跟踪的过程,通过组合这些事件可以实现内容丰富的动态目标移动、闪烁等功能,开放的事件如下: SuperMap_AfterTrackingLayerDraw 绘制跟踪图层之后触发 SuperMap_Befo

14、reTrackingLayerDraw 绘制跟踪图层之前触发 SuperMap_Tracking 内存中绘制对象过程中触发 SuperMap_Tracked 内存中绘制对象结束后触发,第7章 跟踪层的应用,7.4 动态移动并闪烁示例(应用),第7章 跟踪层的应用,代码: 定义公共变量 Dim Points As soPoints 定义点集合变量 Dim nCurPoint As Long 定义点实例的计数器 Dim styTracking As New soStyle 定义风格变量 Dim ln As soGeoLine 定义线对象变量 Dim lnNew As soGeoLine 定义线对象

15、变量 Dim dLen As Double 定义长度变量 Dim CurGeome As soGeometry 定义空间对象变量 SuperMap 上任意绘制一根折线(在Command中绘制) SuperMap.Action = scaTrackPolyline,示例:在系统中实现跟踪图层的跟踪 实现思路: (1)在SuperMap1中绘制一根折线; (2)在 SuperMap的 Tracked 事件中获取该折线,进行 40 等分; (3)在时间控件Timer事件里依次在折线的每一个节点上显示一个点实例,模拟画线的路径,从而完成点的动态移动和闪烁。,第7章 跟踪层的应用,在 SuperMap

16、的 Tracked 事件中获取折线并生成新的折线:,Set CurGeome = SuperMap1.TrackedGeometry 获取TrackingLayer 上的线对象 If CurGeome.Type = scgLine Then Set ln = CurGeome End If If Not (ln Is Nothing) Then styTracking.PenColor = vbBlue 设置折线的显示风格 styTracking.PenWidth = 6 dLen = ln.Length,第7章 跟踪层的应用,对折线进行重采样,等距分为40段 Set lnNew = ln.R

17、esampleEquidistantly ( dLen / 40 ) If Not (lnNew Is Nothing) Then Set Points = lnNew.GetPartAt(1) 获取采样后折线的点集合 nCurPoint = 1 点计数器当前值为 1 Timer1.Interval = 500 设置定时器触发两次事件之间的毫秒数 启动定时器响应事件开关,触发Timer1_Timer()事件 Timer1.Enabled = True End If End If End Sub,GetPartAt(1) 说明:获取复合对象的一个子对象 参数:子对象的索引(从1开始)。,第7章

18、跟踪层的应用,在时间控件Timer 事件中,跟踪层显示并移动红点,表示对线的跟踪,Private Sub Timer1_Timer() If Not (Points Is Nothing) Then If Points.Count nCurPoint Then Dim pnt As New soGeoPoint 创建点对象变量 Dim style As New soStyle 创建风格对象变量 pnt.x = Points.Item(nCurPoint).x 获取点实例的 X 坐标 pnt.y = Points.Item(nCurPoint).y 获取点实例的 Y 坐标 style.PenCo

19、lor = 255 定义点实例的风格 style.SymbolSize = 96 style.SymbolStyle = 1,思考: Points.Count=?,第7章 跟踪层的应用,SuperMap1.TrackingLayer.ClearEvents 清除所有实例 SuperMap1.TrackingLayer.AddEvent lnNew, styTracking, “ 增加线实例 SuperMap1.TrackingLayer.AddEvent pnt, style, “ 增加点实例 SuperMap1.TrackingLayer.Refresh 刷新 nCurPoint = nCurPoint + 1 定位下一个点的索引 Else SuperMap1.TrackingLayer.ClearEvents 清除所有实例 SuperMap1.TrackingLayer.Refresh 刷新跟踪图层 Timer1.Enabled = False 停止点实例的跟踪 End If End If End Sub,第7章 跟踪层的应用,运行结果:,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1