第7章 跟踪层的应用

上传人:仙*** 文档编号:244564908 上传时间:2024-10-05 格式:PPT 页数:30 大小:1.85MB
返回 下载 相关 举报
第7章 跟踪层的应用_第1页
第1页 / 共30页
第7章 跟踪层的应用_第2页
第2页 / 共30页
第7章 跟踪层的应用_第3页
第3页 / 共30页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,7,章,跟踪层,(,TrackingLayer,),的应用,本 章 目 标,通过本章,能够使用,SuperMap Objects,开发实现以下功能:,1,、添加几何对象到跟踪层,并高亮显示,2,、移动跟踪层上的几何对象,3,、掌握对象,soTrackingLayer,与,Tracked,事件的使用,4,、删除跟踪层几何对象,5,、动态跟踪,第,7,章 跟踪层的应用,第,7,章 跟踪层的应用,知识准备,跟踪层(,TrackingLayer,)是临时存储几何对象的场所,适用于几何对象变化频繁,需要经常动态刷新的各种应用,如导航图中的视野范围框随大地图窗口视野范围的变化而不断变化,量算距离和面积时量算位置的变化,,GPS,接收机接收数据的实时变化。,跟踪图层是一种特殊的图层,它位于所有图层(,soLayer,)的最上面,这个图层上绘制的空间对象不保存到数据源文件中。跟踪层上的数据没有属性数据。,跟踪层中的所有对象都存储在内存中,刷新速度快,但在使用时,应避免将所有临时对象都放在跟踪层中,使跟踪层变成一个临时存储空间,这样会降低效率。,第,7,章 跟踪层的应用,预期效果,第,7,章 跟踪层的应用,7.1,添加几何对象到跟踪层,控件、对象,属性、方法与事件,描 述,soTrackingLayer,AddEvent,用于按照指定风格添加几何对象到跟踪图层上,成功则返回跟踪图层中几何事件对象的总数目,ClearEvents,用于清除跟踪图层上的所有几何事件对象,SuperMap1,Tracked,当在,Track,相关操作结束绘制操作并且产生,TrackedGeometry,对象时触发该事件,soStyle,SymbolRotation,返回,/,设置符号的旋转角度,旋转的方向为逆时针方向,单位为度,SymbolSize,返回,/,设置符号的大小,单位为,0.1,毫米,SymbolStyle,返回,/,设置点对象的符号风格,(一),第,7,章 跟踪层的应用,7.1,添加几何对象到跟踪层,控件、对象,属性、方法,描 述,soGeoTex,AddPart,往注记对象添加注记子对象,soTextPart,Text,返回,/,设置注记子对象的文本内容,x,返回,/,设置注记子对象文本停靠点的横坐标,y,返回,/,设置注记子对象文本停靠点的纵坐标,soTextStyle,FontName,返回,/,设置注记字体的名称,即注记采用何种字体,如“宋体”、“黑体”等,FontHeight,返回,/,设置注记字体的高度,FontWidth,返回,/,设置注记字体的宽度,(二),第,7,章 跟踪层的应用,参 数,可 选,类 型,描 述,objGeometry,必选,soGeometry,要添加到跟踪图层上的几何对象,objStyle,必选,soStyle,几何对象的风格,如果,objGeometry,对象为文本,则本参数可以为空值,strTag,必选,String,用户标识几何事件对象的字符串,如几何事件对象名称,当调用此几何事件对象时,可直接用此字符串调用,语法描述,Long,soTrackingLayer.,AddEvent,(,objGeometry,As,soGeometry,objStyle,As,soStyle,strTag,As String),参数说明:,7.1,添加几何对象到跟踪层,第,7,章 跟踪层的应用,实例,:,在打开的图层上,用鼠标点击在跟踪层上添加点,并在点的位置添加,“,北京超图,”,字样文本。,窗体设计,:,添加一个,Command,控件并将它的,Caption,改为,“,添加几何对象,”,。,实现步骤:,(,1,) 使用,Action,方法添加的跟踪点几何对象,(,2,) 在,Tracked,事件中获取添加的点几何对象,(,3,) 设置该点对象添加到跟踪层上的显示风格,soStyle,(,4,) 设置“北京超图”文本几何对象,(,5,) 设置文本几何对象添加到跟踪层的风格,(,6,) 添加几何对象和文本对象到跟踪层,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,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.Action =,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,With,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.TrackingLayer.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,移动跟踪层上的几何对象,对 象,方 法,描 述,soGeoEvent,Move,用于移动,TrackingLayer,上的,soGeoEvent,对象,MoveTo,用于移动,TrackingLayer,上的,soGeoEvent,对象到指定位置,语法描述,soGeoEvent.,Move,(x,As Double, y As Double),参数说明:,参 数,可 选,类 型,描 述,x,必选,Double,要移动,X,方向的距离,单位与数据集的单位相同,y,必选,Double,要移动,Y,方向的距离,单位与数据集的单位相同,第,7,章 跟踪层的应用,7.,2,移动跟踪层上的几何对象,对 象,方 法,描 述,soGeoEvent,Move,用于移动,TrackingLayer,上的,soGeoEvent,对象,MoveTo,用于移动,TrackingLayer,上的,soGeoEvent,对象到指定位置,语法描述,soGeoEvent.,MoveTo,(x As Double, y As Double),参数说明:,参 数,可 选,类 型,描 述,x,必选,Double,移动对象到,x,坐标,单位与数据集的单位相同,y,必选,Double,移动对象到,y,坐标,单位与数据集的单位相同,第,7,章 跟踪层的应用,实例:,将,6.1,中添加的几何对象,X,、,Y,方向移动各,50,单位,7.,2,移动跟踪层上的几何对象,窗体设计,:,添加一个,Command,控件并将它的,Caption,改为“移动几何对象”,主要步骤,:,(,1,),获得跟踪层的点对象;,(,2,),移动点对象。,第,7,章 跟踪层的应用,代码:,Private Sub Command4_Click() ,移动几何对象,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,章 跟踪层的应用,运行结果:,7.,2,移动跟踪层上的几何对象,第,7,章 跟踪层的应用,7.,3,删除跟踪层上的几何对象,删除实例分为,删除指定实例,和,删除全部实例,。删除指定实例不区分实例的类型,只要给定实例的索引号或标识名(,Tag,)。,Private Sub Command12_Click(),Dim,objTrackingLayer,As,soTrackingLayer,Set,objTrackingLayer,= SuperMap1.TrackingLayer,objTrackingLayer.RemoveEvent,1,(,或:,ObjTrackingLayer.RemoveEvent,“R1),objTrackingLayer.RefreshEx,End Sub,删除指定实例,第,7,章 跟踪层的应用,关于,RefreshEx,跟踪层有两种刷新方法:,soTrackingLayer.Refresh,soTrackingLayer.RefreshEx,Refresh,用来刷新整个跟踪层,,RefreshEx,比,Refresh,更加智能,它仅刷新当前时刻发生位置变化的对象,避免整个图层的闪动。,SuperMap,控件自身在刷新的同时也刷新了跟踪图层。这种刷新只是针对地图窗口而提供的方法;跟踪图层的刷新只局限于跟踪层,其它的层都不刷新;因此,跟踪图层的刷新速度比,SuperMap,自身的刷新要快得多。,第,7,章 跟踪层的应用,删除全部实例将从跟踪图层上清除掉所有的临时对象,不区分实例的类型,恢复跟踪图层原来的面貌。,代码:,objTrackingLayer.ClearEvents,objTrackingLayer.Refresh,删除全部实例,第,7,章 跟踪层的应用,7.,4,动态移动并闪烁示例(应用),SuperMap,中开放了一些对,TrackingLayer,操作的事件,在这些事件中用户可以用程序来控制跟踪的过程,通过组合这些事件可以实现内容丰富的动态目标移动、闪烁等功能,开放的事件如下:,SuperMap_AfterTrackingLayerDraw,绘制跟踪图层之后触发,SuperMap_BeforeTrackingLayerDraw,绘制跟踪图层之前触发,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,定义线对象变量,Dim,dLen,As Double,定义长度变量,Dim,CurGeome,As,soGeometry,定义空间对象变量,SuperMap,上任意绘制一根折线,(,在,Command,中绘制,),SuperMap.Action = scaTrackPolyline,示例:在系统中实现跟踪图层的跟踪,实现思路,:,(,1,),在,SuperMap1,中绘制一根折线;,(,2,)在,SuperMap,的,Tracked,事件中获取该折线,进行,40,等分;,(,3,)在时间控件,Timer,事件里依次在折线的每一个节点上显示一个点实例,模拟画线的路径,从而完成点的动态移动和闪烁。,第,7,章 跟踪层的应用,在,SuperMap,的,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.ResampleEquidistantly,(,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,章 跟踪层的应用,在时间控件,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.PenColor,= 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,章 跟踪层的应用,运行结果:,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!