ArcEngine图层名查找函数
根据图层名找图层的功能,在 GIS 开发里真的挺常用的,是用 ArcEngine 配 VB.NET 那一套。你要批量图层、动态切换显示、或者地图交互的时候,经常得先精确锁定一个图层。这时候,用一个小函数把图层名一传,就能直接拿到对应的图层对象,操作起来可舒服了。
ArcEngine 的图层接口设计得比较清晰,像IMapControl3
、IGroupLayer
这些都蛮常见,用熟了你会觉得挺顺手。代码逻辑也不复杂:先遍历主图层,如果是组图层,再进去遍历子图层,层层对比名字,找到直接返回,响应也快。
比如下面这段代码,完全可以复制粘贴就用,适合直接塞进项目里试水:
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
做地图应用,建议收藏起来。以后想改图层符号、筛选数据、甚至响应点击事件都能靠它搞定,方便多了。
677B
文件大小:
评论区