ArcEngine图层名查找函数

根据图层名找图层的功能,在 GIS 开发里真的挺常用的,是用 ArcEngine 配 VB.NET 那一套。你要批量图层、动态切换显示、或者地图交互的时候,经常得先精确锁定一个图层。这时候,用一个小函数把图层名一传,就能直接拿到对应的图层对象,操作起来可舒服了。

ArcEngine 的图层接口设计得比较清晰,像IMapControl3IGroupLayer这些都蛮常见,用熟了你会觉得挺顺手。代码逻辑也不复杂:先遍历主图层,如果是组图层,再进去遍历子图层,层层对比名字,找到直接返回,响应也快。

比如下面这段代码,完全可以复制粘贴就用,适合直接塞进项目里试水:

Private Function funReturnLayerByLayerName(mainMap As IMapControl3, strLayerName As String) As ILayer
    Dim pLayer As ILayer = Nothing
    For i As Integer = 0 To mainMap.LayerCount - 1
        Dim pL As ILayer = mainMap.getLayer(i)
        If TypeOf pL Is IGroupLayer Then
            Dim pGL As ICompositeLayer = TryCast(pL, ICompositeLayer)
            For j As Integer = 0 To pGL.Count - 1
                If pGL.getLayer(j).Name = strLayerName Then
                    pLayer = pGL.getLayer(j)
                    Exit Function
                End If
            Next
        End If
        If pL.Name = strLayerName Then
            pLayer = pL
            Exit Function
        End If
    Next
    Return pLayer
End Function

还有一点要注意,组图层里嵌套的结构有时候蛮深的,如果项目图层层级多,还得递归一下才稳。你可以先看下自己的图层结构,视情况优化。

,这个小技巧挺实用的。如果你常用ArcEngine做地图应用,建议收藏起来。以后想改图层符号、筛选数据、甚至响应点击事件都能靠它搞定,方便多了。

txt 文件大小:677B