|
功能简介:
该范例是用来跟踪显示目标的一个属性,从下拉列表选择图层,然后通过鼠标的移动可以随时改变跟踪的对象.自动跟踪是通过类模块实现的.此功能模块是专门用来实现属性跟踪功能的,各属性、方法要配合使用才能正常工作.其中,DoSearch()和ShowTipText()为内部私有,使用者不要进行任何的调用操作。
数据来源:..\Data\World目录下的World.sdb和World.sdd两个文件
所用SuperMap Objects 组件、对象的主要属性和方法:
| 控 件 及 对 象 |
属 性 |
方 法 |
| SuperWorkspace |
|
OpenDatasource,Close |
| SuperMap |
Layers |
Connect,DisConnect |
| soDatasetVector |
|
QueryEx,QueryByDistance |
功能实现:
|
|
|
类模块名是clsMapTip,磁盘文件名是MapTip.cls.包括一个函数和五个过程 |
|
Tracking 变量决定是否进行即时属性跟踪; |
|
DoSearch() 查询鼠标所在位置对象的属性; |
|
Initialize() 初始化类模块里的成员变量; |
|
MouseMove() 在SuperMap的MouseMove()里调用此过程,确定鼠标位置; |
|
SetLayer() 设置当前图层; |
|
ShowTipText() 显示目标的属性; |
|
Timer() 控制是否显示属性,即看鼠标是否还在移动。
|
|
|
|
过程Combo1_Click()用来加入图层名,跟踪时通过查询出鼠标所在处对象的属性,再通过类clsMapTip在地图上显示一个picture控件(其中m_label.Caption = text.m_label为类clsMapTip的一个成员变量)来达到跟踪的目的. |
|
|
|
 |
|
|
|
 |
|
|
|
 |
|
把下面的代码加到SuperMap的MouseMove事件中就能实现这一功能。不过它是缩写本,没有加很多错误判断语句,必须有一个置于SuperMap控件之上的含有一个Label控件的PictureBox控件,设置它们的AutoSize为True。 |
|
Dim objRecordset As soRecordset '设置记录接受变量
Dim objGeoPoint As New soGeoPoint '设置查询点变量
Dim objDt As soDatasetVector '设置被查询的数据集变量
objGeoPoint.x = SuperMap.PixelToMapX(m_form.ScaleX(m_x, vbTwips, vbPixels)) '转换X坐标
objGeoPoint.y = SuperMap.PixelToMapY(m_form.ScaleY(m_y, vbTwips, vbPixels)) '转换Y坐标
Set objDt = SuperMap.Layers("World@world").Dataset ' 获取查询数据集
If objDt.Type = scdRegion Then '面状数据集的查询方法
Set objRecordset = objDt.QueryEx(objGeoPoint, scsPointInPolygon, "")
ElseIf (objDt.Type = scdPoint) Or (objDt.Type = scdLine) Then '点、线数据集的查询方法
Dim randia As Double '定义查询半径
Dim Rect As soRect '定义视图矩形框
Set Rect = SuperMap.ViewBounds
If Rect.Height / Rect.Width > 1 Then
randia = Rect.Height / 1000
Else
randia = Rect.Width / 1000
End If
Set objRecordset = objDt.QueryByDistance(objGeoPoint, randia, "")
End If |
|
'显示目标属性 |
|
Label.Caption = objRecordset.GetFieldValue("SmID") '取出相应字段的属性值
Label.Left = 50 '定位Label控件
Llabel.Top = 0
Picture.Left = m_map.Left + m_x '定位PictureBox控件
Picture.Top = m_map.Top + m_y + 290
Picture.Width = m_label.Width + 100
Picture.Height = 250 |
(本文已被浏览 次) | | |