2.添加图层
新建一个工程。在窗体Form中添加一个CommandButton控件、一个CommonDialog控件、一个Mapobject控件。设置CommonDialog的Filter属性为“ESRI shpfile(*.shp)|*.shp”,切换到代码窗口中,添加如下代码实现在地图控件中添加shape格式的地图数据。
实现代码如下:
Private Sub Command1_Click()
Dim shpLayer As New MapObjects2.MapLayer
Dim dc As New MapObjects2.DataConnection
Dim gds As MapObjects2.GeoDataset
Dim fName As String
‘ 设置捕捉并处理用户按下“取消”按钮
CommonDialog1.CancelError = True
On Error GoTo errorTrap
CommonDialog1.ShowOpen
If Len(CommonDialog1.FileName) = 0 Then Exit Sub
fName = Left(CommonDialog1.FileTitle, Len(CommonDialog1.FileTitle) - 4)
‘ 设置数据库连接
dc.Database = CurDir
‘ 设置数据集
Set gds = dc.FindGeoDataset(f)
Set shpLayer.GeoDataset = gds
‘ 在地图控件中添加新图层
Map1.layers.Add shpLayer
errorTrap:
If Err.Number <> 32755 Then
MsgBox “添加” + f Name+ “图层”, vbOKOnly
End If
End Sub
3.控制图层显示
(1) 放大、缩小、移动和全图显示
利用地图控件的Extent属性可以控制地图的放大、缩小和漫游功能。Extent表示当前地图显示的范围,它是一个矩形(Rectangle)类型的属性。
利用地图控件的FullExtent和Extent属性可以显示整个地图。FullExtent属性表示所有图层的总的坐标值范围,即在地图窗口中显示所有图层的完整地图数据。TrackRectangle方法可用来在地图上拖出一个矩形框来进行放大地图。
新建一个工程,在Form中添加一个toolbar控件、一个Mapobject控件、一个ImageList控件,并设置好toolbar控件和ImageList控件以及它们之间的关联。
实现代码如下:
Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If b_click = “zoomIn” Then
‘ 在图上拖出一个矩形框来放大地图
Map1.Extent = Map1.TrackRectangle
ElseIf b_click = “zoomOut” Then
‘ 在图上点击时以2倍的比例缩小地图
Set r = Map1.Extent
r.ScaleRectangle 2
Map1.Extent = r
ElseIf b_click = “pan” Then
‘ 移动地图
Map1.Pan
End If
End Sub
Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
b_click = Button.Key
if b_click = “full” Then
‘ 全图显示
Map1.Extent = Map1.FullExtent
End Sub
图3 地图图层缩放和漫游实现
|