跟踪层的应用_第1页
跟踪层的应用_第2页
跟踪层的应用_第3页
跟踪层的应用_第4页
跟踪层的应用_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

跟踪层的应用第1页,共30页,2023年,2月20日,星期四本章目标通过本章,能够使用SuperMapObjects开发实现以下功能:1、添加几何对象到跟踪层,并高亮显示2、移动跟踪层上的几何对象3、掌握对象soTrackingLayer与Tracked事件的使用4、删除跟踪层几何对象5、动态跟踪第2页,共30页,2023年,2月20日,星期四第7章跟踪层的应用第3页,共30页,2023年,2月20日,星期四第7章跟踪层的应用知识准备跟踪层(TrackingLayer)是临时存储几何对象的场所,适用于几何对象变化频繁,需要经常动态刷新的各种应用,如导航图中的视野范围框随大地图窗口视野范围的变化而不断变化,量算距离和面积时量算位置的变化,GPS接收机接收数据的实时变化。跟踪图层是一种特殊的图层,它位于所有图层(soLayer)的最上面,这个图层上绘制的空间对象不保存到数据源文件中。跟踪层上的数据没有属性数据。

跟踪层中的所有对象都存储在内存中,刷新速度快,但在使用时,应避免将所有临时对象都放在跟踪层中,使跟踪层变成一个临时存储空间,这样会降低效率。第4页,共30页,2023年,2月20日,星期四第7章跟踪层的应用预期效果第5页,共30页,2023年,2月20日,星期四第7章跟踪层的应用7.1添加几何对象到跟踪层控件、对象属性、方法与事件描述soTrackingLayerAddEvent用于按照指定风格添加几何对象到跟踪图层上,成功则返回跟踪图层中几何事件对象的总数目ClearEvents用于清除跟踪图层上的所有几何事件对象SuperMap1Tracked当在Track相关操作结束绘制操作并且产生TrackedGeometry对象时触发该事件soStyleSymbolRotation返回/设置符号的旋转角度,旋转的方向为逆时针方向,单位为度SymbolSize返回/设置符号的大小,单位为0.1毫米SymbolStyle返回/设置点对象的符号风格(一)第6页,共30页,2023年,2月20日,星期四第7章跟踪层的应用7.1添加几何对象到跟踪层控件、对象属性、方法描述soGeoTexAddPart往注记对象添加注记子对象soTextPartText返回/设置注记子对象的文本内容x返回/设置注记子对象文本停靠点的横坐标y返回/设置注记子对象文本停靠点的纵坐标soTextStyleFontName返回/设置注记字体的名称,即注记采用何种字体,如“宋体”、“黑体”等FontHeight返回/设置注记字体的高度FontWidth返回/设置注记字体的宽度(二)第7页,共30页,2023年,2月20日,星期四第7章跟踪层的应用参数可选类型描述objGeometry必选soGeometry要添加到跟踪图层上的几何对象objStyle必选soStyle几何对象的风格,如果objGeometry对象为文本,则本参数可以为空值strTag必选String用户标识几何事件对象的字符串,如几何事件对象名称,当调用此几何事件对象时,可直接用此字符串调用语法描述LongsoTrackingLayer.AddEvent(objGeometryAssoGeometry,objStyleAssoStyle,strTagAsString)参数说明:7.1添加几何对象到跟踪层第8页,共30页,2023年,2月20日,星期四第7章跟踪层的应用实例:在打开的图层上,用鼠标点击在跟踪层上添加点,并在点的位置添加“北京超图”字样文本。窗体设计:添加一个Command控件并将它的Caption改为“添加几何对象”。实现步骤:(1)使用Action方法添加的跟踪点几何对象(2)在Tracked事件中获取添加的点几何对象(3)设置该点对象添加到跟踪层上的显示风格soStyle(4)设置“北京超图”文本几何对象(5)设置文本几何对象添加到跟踪层的风格(6)添加几何对象和文本对象到跟踪层7.1添加几何对象到跟踪层第9页,共30页,2023年,2月20日,星期四第7章跟踪层的应用代码:1、使用Action方法添加跟踪层几何对象PrivateSubCommand1_Click()‘//添加几何对象:通过Action触发Tracked事件SuperMap1.Action=scaTrackPointEndSub2、在SuperMap_Tracked事件中将几何对象添加到跟踪层上PrivateSubSuperMap1_Tracked()'功能:将几何对象添加到跟踪层上(同时添加文本对象)'1定义几何对象变量和风格对象变量DimobjGeoPointAssoGeoPointDimobjStyleAsNewsoStyle'定义文本的相关对象DimobjGeoTextAsNewsoGeoTextDimobjTextPartAsNewsoTextPartDimobjTextStyleAsNewsoTextStyleSuperMap1.Action=scaZoomInSuperMap1.Action=scaZoomOutSuperMap1.Action=scaPanSuperMap1.Action=scaSelectSuperMap1.Action=scaRegionSelectSuperMap1.Action=scaEditCreatePoint第10页,共30页,2023年,2月20日,星期四第7章跟踪层的应用'2获得几何对象SetobjGeoPoint=SuperMap1.TrackedGeometry'3设置添加到跟踪层上几何对象的风格WithobjStyle'点对象风格.PenColor=vbRed.PenWidth=5.SymbolStyle=1410‘五角星.SymbolSize=80EndWithWithobjTextPart'文本子对象.Text="北京超图".x=objGeoPoint.x.y=objGeoPoint.yEndWithWithobjTextStyle'文本风格.Color=vbBlue.FontName="黑体".FontHeight=10.FontWidth=10EndWithobjGeoText.AddPartobjTextPart‘文本SetobjGeoText.TextStyle=objTextStyle'风格'4将几何对象添加到跟踪层上SuperMap1.TrackingLayer.ClearEventsSuperMap1.TrackingLayer.AddEventobjGeoPoint,objStyle,"R1"'添加点SuperMap1.TrackingLayer.AddEventobjGeoText,Nothing,"R2"'添加文本SuperMap1.TrackingLayer.Refresh

SetobjGeoPoint=NothingSetobjGeoText=NothingSetobjTextPart=NothingSetobjTextStyle=NothingEndSub第11页,共30页,2023年,2月20日,星期四第7章跟踪层的应用运行结果:第12页,共30页,2023年,2月20日,星期四第7章跟踪层的应用7.2移动跟踪层上的几何对象第13页,共30页,2023年,2月20日,星期四第7章跟踪层的应用7.2移动跟踪层上的几何对象第14页,共30页,2023年,2月20日,星期四第7章跟踪层的应用7.2移动跟踪层上的几何对象对象方法描述soGeoEventMove用于移动TrackingLayer上的soGeoEvent对象MoveTo用于移动TrackingLayer上的soGeoEvent对象到指定位置语法描述soGeoEvent.Move(xAsDouble,yAsDouble)参数说明:参数可选类型描述x必选Double要移动X方向的距离,单位与数据集的单位相同y必选Double要移动Y方向的距离,单位与数据集的单位相同第15页,共30页,2023年,2月20日,星期四第7章跟踪层的应用7.2移动跟踪层上的几何对象对象方法描述soGeoEventMove用于移动TrackingLayer上的soGeoEvent对象MoveTo用于移动TrackingLayer上的soGeoEvent对象到指定位置语法描述soGeoEvent.MoveTo(xAsDouble,yAsDouble)参数说明:参数可选类型描述x必选Double移动对象到x坐标,单位与数据集的单位相同y必选Double移动对象到y坐标,单位与数据集的单位相同第16页,共30页,2023年,2月20日,星期四第7章跟踪层的应用实例:将6.1中添加的几何对象X、Y方向移动各50单位7.2移动跟踪层上的几何对象

窗体设计:添加一个Command控件并将它的Caption改为“移动几何对象”主要步骤:

(1)获得跟踪层的点对象;

(2)移动点对象。第17页,共30页,2023年,2月20日,星期四第7章跟踪层的应用代码:PrivateSubCommand4_Click()'移动几何对象DimobjGeoEventAssoGeoEvent'1获得跟踪层上几何事件对象

SetobjGeoEvent=SuperMap1.TrackingLayer.Event(1)'2移动objGeoEvent.Move50,50

SetobjGeoEvent=SuperMap1.TrackingLayer.Event(2)objGeoEvent.Move50,50SuperMap1.TrackingLayer.RefreshSetobjGeoEvent=NothingEndSub7.2移动跟踪层上的几何对象第18页,共30页,2023年,2月20日,星期四第7章跟踪层的应用

运行结果:7.2移动跟踪层上的几何对象第19页,共30页,2023年,2月20日,星期四第7章跟踪层的应用

7.3删除跟踪层上的几何对象删除实例分为删除指定实例和删除全部实例。删除指定实例不区分实例的类型,只要给定实例的索引号或标识名(Tag)。PrivateSubCommand12_Click()DimobjTrackingLayerAssoTrackingLayerSetobjTrackingLayer=SuperMap1.TrackingLayer

objTrackingLayer.RemoveEvent1

(或:ObjTrackingLayer.RemoveEvent“R1")

objTrackingLayer.RefreshExEndSub删除指定实例第20页,共30页,2023年,2月20日,星期四第7章跟踪层的应用

关于RefreshEx跟踪层有两种刷新方法:

soTrackingLayer.Refresh

soTrackingLayer.RefreshEx

Refresh用来刷新整个跟踪层,RefreshEx比Refresh更加智能,它仅刷新当前时刻发生位置变化的对象,避免整个图层的闪动。SuperMap控件自身在刷新的同时也刷新了跟踪图层。这种刷新只是针对地图窗口而提供的方法;跟踪图层的刷新只局限于跟踪层,其它的层都不刷新;因此,跟踪图层的刷新速度比SuperMap自身的刷新要快得多。

第21页,共30页,2023年,2月20日,星期四第7章跟踪层的应用

删除全部实例将从跟踪图层上清除掉所有的临时对象,不区分实例的类型,恢复跟踪图层原来的面貌。代码:objTrackingLayer.ClearEventsobjTrackingLayer.Refresh

删除全部实例第22页,共30页,2023年,2月20日,星期四第7章跟踪层的应用

7.4动态移动并闪烁示例(应用)SuperMap中开放了一些对TrackingLayer操作的事件,在这些事件中用户可以用程序来控制跟踪的过程,通过组合这些事件可以实现内容丰富的动态目标移动、闪烁等功能,开放的事件如下:

SuperMap_AfterTrackingLayerDraw

‘绘制跟踪图层之后触发

SuperMap_BeforeTrackingLayerDraw

‘绘制跟踪图层之前触发

SuperMap_Tracking

‘内存中绘制对象过程中触发

SuperMap_Tracked

‘内存中绘制对象结束后触发

第23页,共30页,2023年,2月20日,星期四第7章跟踪层的应用

7.4动态移动并闪烁示例(应用)第24页,共30页,2023年,2月20日,星期四第7章跟踪层的应用

代码:‘定义公共变量

DimPointsAssoPoints'定义点集合变量DimnCurPointAsLong'定义点实例的计数器DimstyTrackingAsNewsoStyle'定义风格变量DimlnAssoGeoLine'定义线对象变量DimlnNewAssoGeoLine'定义线对象变量DimdLenAsDouble'定义长度变量DimCurGeomeAssoGeometry'定义空间对象变量‘SuperMap上任意绘制一根折线(在Command中绘制)

SuperMap.Action=scaTrackPolyline

示例:在系统中实现跟踪图层的跟踪实现思路:(1)在SuperMap1中绘制一根折线;(2)在SuperMap的Tracked事件中获取该折线,进行40等分;(3)在时间控件Timer事件里依次在折线的每一个节点上显示一个点实例,模拟画线的路径,从而完成点的动态移动和闪烁。

第25页,共30页,2023年,2月20日,星期四第7章跟踪层的应用

在SuperMap的Tracked事件中获取折线并生成新的折线:

SetCurGeome=SuperMap1.TrackedGeometry‘获取TrackingLayer上的线对象

IfCurGeome.Type=scgLineThenSetln=CurGeomeEndIfIfNot(lnIsNothing)ThenstyTracking.PenColor=vbBlue‘设置折线的显示风格styTracking.PenWidth=6dLen=ln.Length第26页,共30页,2023年,2月20日,星期四第7章跟踪层的应用

‘对折线进行重采样,等距分为40段SetlnNew=ln.ResampleEquidistantly(dLen/40)

If

Not(lnNewIsNothing)ThenSetPoints=lnNew.GetPartAt(1)‘获取采样后折线的点集合nCurPoint=1‘点计数器当前值为1Timer1.Interval=500‘设置定时器触发两次事件之间的毫秒数启动定时器响应事件开关,触发Timer1_Timer()事件Timer1.Enabled=True

EndIf

EndIfEndSubGetPartAt(1)说明:获取复合对象的一个子对象参数:子对象的索引(从1开始)。第27页,共30页,2023年,2月20日,星期四第7章跟踪层的应用

在时间控件Timer事件中,跟踪层显示并移动红点,表示对线的跟踪

PrivateSubTimer1_Timer()

IfNot(PointsIsNothing)Then

IfPoints.Count>nCurPointThenDimpntAsNewsoGeoPoint‘创建点对象变量DimstyleAsNewsoStyle‘创建风格对象变量pnt.x=Points.Item(nCurPoint).x‘获取点实例的X坐标pnt.y=Points.Item(nCurPoint).y‘获取点实例的Y坐标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论