VB+MapX編程實(shí)現(xiàn)地圖數(shù)據(jù)查詢

字號:

綜述
    應(yīng)用MapX控件實(shí)現(xiàn)查詢的功能并不太難。MapX為我們提供了Find、FindFeature等對象,可以用來實(shí)現(xiàn)我們需要的功能。
    1、本程序?qū)崿F(xiàn)從下列表中選擇一個(gè)節(jié)點(diǎn),并以此節(jié)點(diǎn)為中心進(jìn)行進(jìn)行定位的功能(實(shí)例以第一層RTUName屬性的值進(jìn)行查詢)
    Private Sub Command1_Click()
    Dim FindObj As MapXLib.Find
    Dim FoundFeature As FindFeature
    '從要查詢的RTU圖層生成Find對象,并為這個(gè)對象設(shè)置要查詢的FindDataSet、FindField屬性
    Set FindObj = Form1.Map1.Layers.Item(1).Find
    Set FindObj.FindDataset = Form1.Map1.DataSets("RTU節(jié)點(diǎn)" & " dataset")
    Set FindObj.FindField = FindObj.FindDataset.Fields("RTUName")
    Set FoundFeature = FindObj.Search(Combo1.Text)
    Me.Hide
    ' 關(guān)掉AutoRedraw是因?yàn)镃enterX(Y)的改變就要刷新圖層,AutoRedraw打開的話會造成二次刷新
    Form1.Map1.AutoRedraw = False
    Form1.Map1.CenterX = FoundFeature.CenterX
    Form1.Map1.CenterY = FoundFeature.CenterY
    Form1.Show
    End Sub
    2、把上面的程序稍微改寫一下,實(shí)現(xiàn)按照用戶輸入的字段進(jìn)行查詢定位的功能:
    Private Sub Command2_Click()
    Dim FindObj As MapXLib.Find
    Dim FoundFeature As FindFeature
    '從要查詢的RTU圖層生成Find對象,并為這個(gè)對象設(shè)置要查詢的FindDataSet、FindField屬性
    Set FindObj = Form1.Map1.Layers.Item(1).Find
    Set FindObj.FindDataset = Form1.Map1.DataSets("RTU節(jié)點(diǎn)" & " 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
    ' 關(guān)掉AutoRedraw是因?yàn)镃enterX(Y)的改變就要刷新圖層,AutoRedraw打開的話會造成二次刷新
    Form1.Map1.AutoRedraw = False
    Form1.Map1.CenterX = FoundFeature.CenterX
    Form1.Map1.CenterY = FoundFeature.CenterY
    Form1.Show
    Else
    MsgBox "不存在該RTU節(jié)點(diǎn)!"
    End If
    End Sub