| 
				 (2) 图层顺序操作 
在前例基础上,添加四个CommandButton控件、一个ListBox控件。实现在列表中列举出已添加到地图控件中的图层,以便对图层顺序进行控制,通过双击列表中的图层,将该层移动到最上层,也可以通过另外四个按钮实现地图图层的位置顺序操作,并更新列表和刷新地图显示。 
实现代码如下: 
‘实现通过双击列表中的图层,将该层移动到最上层,并更新列表和刷新地图显示 
Private Sub List1_DblClick() 
Dim selectedIndex As Integer 
selectedIndex = 0 
Set layers = Map1.layers 
For i = 0 To List1.ListCount - 1 
If List1.Selected(i) Then 
selectedIndex = i 
End If 
Next i 
If selectedIndex = 0 Then 
MsgBox “该层已处于最高层” 
Else 
‘ 双击列表中的图层,将该层移动到最上层     
layers.MoveToTop (selectedIndex) 
‘  刷新地图显示 
Map1.Refresh 
‘  更新List列表 
showList 
End If  
End Sub 
  
Sub showList() 
List1.Clear 
Set layers = Map1.layers 
For i = 0 To layers.Count - 1 
Set layer = layers.Item(i) 
‘ 在列表中添加地图图层 
List1.AddItem (layer.Name) 
Next i 
End Sub 
  
‘ 点击Top按钮,实现所选图层移动到顶层。(Bottom按钮类似,代码略。)  
Private Sub Top_Click() 
Dim selectedIndex As Integer 
selectedIndex = 0 
Set layers = Map1.layers 
For i = 0 To List1.ListCount - 1 
If List1.Selected(i) Then 
selectedIndex = i 
End If 
Next i 
If selectedIndex = 0 Then 
MsgBox “该层已处于最高层” 
Else 
layers. MoveToTop (selectedIndex)  
‘layers. MoveToBottom (selectedIndex) ‘移动到最底层 
Map1.Refresh 
showList 
End If 
End Sub 
  
‘ 点击Up按钮,实现所选图层向上移动一层。(Down按钮类似,代码略。)  
Private Sub Up_Click() 
Dim selectedIndex As Integer 
selectedIndex = 0 
Set layers = Map1.layers 
For i = 0 To List1.ListCount - 1 
If List1.Selected(i) Then 
selectedIndex = i 
End If 
Next i 
If selectedIndex = 0 Then 
MsgBox “该层已处于最高层” 
Else 
layers.MoveTo selectedIndex, selectedIndex – 1 
Map1.Refresh 
showList 
End If 
End Sub 
 
 
  
图4 实现地图图层位置控制 
四、结语 
       MO是一个理想的GIS组件式二次开发控件,它优势在于占用的系统内存资源较小,且包含有比较丰富的属性、方法等,程序员可以直接调用这些接口来实现GIS的基本功能。本文基于对于GIS地图图层控制的重要性,利用MO在VB语言环境下进行了二次开发,实现对地图图层的载入、显示和图层控制等基本GIS功能。 
  
  
参考文献 
[1]刘光.地理信息系统二次开发教程(组件篇).北京:清华大学出版社,2003. 
[2]薛伟.MapObjects:地理信息系统程序设计.北京:国防工业出版社,2004. 			
				 |