3S基礎知識:MapInfo應用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

發佈了421 篇原創文章 · 獲贊 234 · 訪問量 146萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章