top
Loading...
VB+MapX編程實現地圖數據查詢
綜述

應用MapX控件實現查詢的功能并不太難。MapX為我們提供了Find、FindFeature等對象,可以用來實現我們需要的功能。



1、本程序實現從下列表中選擇一個節點,并以此節點為中心進行進行定位的功能(實例以第一層RTUName屬性的值進行查詢)

Private Sub Command1_Click()
Dim FindObj As MapXLib.Find
Dim FoundFeature As FindFeature
'從要查詢的RTU圖層生成Find對象,并為這個對象設置要查詢的FindDataSet、FindField屬性
Set FindObj = Form1.Map1.Layers.Item(1).Find
Set FindObj.FindDataset = Form1.Map1.DataSets("RTU節點" & " dataset")
Set FindObj.FindField = FindObj.FindDataset.Fields("RTUName")

Set FoundFeature = FindObj.Search(Combo1.Text)

Me.Hide
' 關掉AutoRedraw是因為CenterX(Y)的改變就要刷新圖層,AutoRedraw打開的話會造成二次刷新
Form1.Map1.AutoRedraw = False
Form1.Map1.CenterX = FoundFeature.CenterX
Form1.Map1.CenterY = FoundFeature.CenterY
Form1.Show

End Sub

2、把上面的程序稍微改寫一下,實現按照用戶輸入的字段進行查詢定位的功能:

Private Sub Command2_Click()

Dim FindObj As MapXLib.Find
Dim FoundFeature As FindFeature
'從要查詢的RTU圖層生成Find對象,并為這個對象設置要查詢的FindDataSet、FindField屬性
Set FindObj = Form1.Map1.Layers.Item(1).Find
Set FindObj.FindDataset = Form1.Map1.DataSets("RTU節點" & " dataset")
Set FindObj.FindField = FindObj.FindDataset.Fields("RTUName")

Set FoundFeature = FindObj.Search(Text1.Text)

If FoundFeature.FindRC Mod 10 = 1 Or FoundFeature.FindRC Mod 10 = 2 Then
Me.Hide
' 關掉AutoRedraw是因為CenterX(Y)的改變就要刷新圖層,AutoRedraw打開的話會造成二次刷新
Form1.Map1.AutoRedraw = False
Form1.Map1.CenterX = FoundFeature.CenterX
Form1.Map1.CenterY = FoundFeature.CenterY
Form1.Show
Else
MsgBox "不存在該RTU節點!"
End If

End Sub

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗