搜索指定点的最近图元.txt

来自「mapxtrexe查看地图,查询图层,按名查找等」· 文本 代码 · 共 35 行

TXT
35
字号
        搜索指定点的最近图元

        // 这里默认搜索离地图中心点最近的图元 
        Dim map As Map = MapInfo.Engine.Session.Current.MapFactory(MapControl1.MapAlias)
        Dim ppt As DPoint = Map.Center

        Dim session As ISession = MapInfo.Engine.Session.Current

        ' 半径设置为5象素 

        Dim d As MapInfo.Geometry.Distance = MapInfo.Mapping.SearchInfoFactory.ScreenToMapDistance(map, 5)

        Dim si As SearchInfo = MapInfo.Data.SearchInfoFactory.SearchNearest(ppt, map.GetDisplayCoordSys(), d)

        ' 搜索所有列 
        si.QueryDefinition.Columns = Nothing

        ' 搜到一个就停止搜索 
        CType(si.SearchResultProcessor, ClosestSearchResultProcessor).Options = ClosestSearchOptions.StopAtFirstMatch

        ' 搜索到的图元放入DefaultSelection中 
        session.Catalog.Search("Citys", si, session.Selections.DefaultSelection, ResultSetCombineMode.Replace)

        ' 得到FeatureCollection 
        Dim table As Table = session.Catalog("Citys")
        Dim fc As IResultSetFeatureCollection = session.Selections.DefaultSelection(table)
        If (fc.Count = 0) Then
            'Response.Write("没有搜索到任何图元!")
            TextBox1.Text = "没有搜索到任何图元!"
        End If
        ' 需要注意的是该图层必须设置为可以选择的 这样在地图上才能看出效果 
        Dim fn As IFeatureEnumerator = fc.GetFeatureEnumerator
        While (fn.MoveNext)
            ListBox1.Items.Add(fn.Current.Item("Name"))   '添加地理位置
        End While

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?