MapObject学习笔记-第二讲 图层的基本功能开发

第二讲 图层的基本功能开发

一、图层的加载操作

1、利用其他控件动态加载图层文件

所用控件包括Map 控件,DriveDirFile列表控件,和一个命令按钮,实现可选择性的图层文件加载,基本代码如下:

Option Explicit

Dim dc As New DataConnection

Dim layer As New MapLayer

 

Private Sub Command1_Click()

Map1.Layers.Clear

dc.Database = File1.Path

If dc.Connect Then

layer.GeoDataset = dc.FindGeoDataset(File1.FileName)

Map1.Layers.Add layer

Map1.Refresh

Else

MsgBox "在指定文件夹下面没有找到相应图层数据文件!"

End If

End Sub

 

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

Private Sub Dir1_Change()

File1.Path = Dir1.Path

End Sub

2、同一文件夹下加载

如果你的程序和GIS图层文件(.shp.shx.dbf)在同一个文件夹下,设置好图层文件夹的路径,进行自动加载。示例如下:

Option Explicit

Dim dc As New DataConnection

Dim layer As MapLayer

Private Sub Command1_Click()

dc.Database = App.Path

dc.Database = "指定文件夹路径"

If dc.Connect Then

Set layer = New MapLayer

layer.GeoDataset = dc.FindGeoDataset(文件名1)

Map1.Layers.Add layer

Set layer = New MapLayer

layer.GeoDataset = dc.FindGeoDataset(文件名2)

Map1.Layers.Add layer

Map1.Refresh

Else

MsgBox "在指定文件夹下面没有找到相应图层数据文件!"

End If

End Sub

试验在调试过程中替换代码“Dim layer As New MapLayer”,观察程序运行结果。

3、在不同文件夹下加载

由于在实际的应用程序中,图层文件和程序文件都很多,为了方便管理,一般程序文件和图层文件不在一个文件夹下,通常采用一个文件夹单独存放图层文件,而把各个程序文件和它并列放置。

例如应用程序的文件夹路径为“F:\MO实验”,程序在“F:\MO实验\程序加载”下,图层文件放在“F:\MO实验\WORLD”文件夹下,这时要用+”\..\”返回上级文件夹,示例代码为:

Option Explicit

Dim dc As New DataConnection

Dim layer As New MapLayer

Private Sub Command1_Click()

dc.Database = App.Path + "\..\" + "world"

'dc.Database = "指定文件夹路径"

If dc.Connect Then

layer.GeoDataset = dc.FindGeoDataset("country")

Map1.Layers.Add layer

layer.GeoDataset = dc.FindGeoDataset("cities")

Map1.Layers.Add layer

Map1.Refresh

Else

MsgBox "在指定文件夹下面没有找到相应图层数据文件!"

End If

End Sub

4、图层的卸载和移动

用语句:Map1. Layers.Remove 0

可以把第0层卸载,注意:卸载了一个图层后,其他图层的序号就发生了变化。

用语句:Map1. Layers. Clear

可以一次卸载所有的图层。

可以用MoveTo方法来把图层从位置1移动到位置2,如原来图层在第2层,用以下语句可以把它移动到第0层:Map1. Layers. MoveTo 2,0

5、图层的选择和隐藏

用图层的索引号:Set Layer = Map1.Layers(0)或图层名称Set Layer = Map1.Layers("country")来选择当前层。

用语句:layer.visible = false来隐藏当前层。另外,可以通过设置Map1.visible来隐藏或显示整个Map控件。

综合示例代码如下:

Option Explicit

Dim dc As New DataConnection

Dim layer As MapLayer

Private Sub layerset()   '图层设置模块'

dc.Database = "F:\MO实验\WORLD"

If dc.Connect Then

Set layer = New MapLayer

Set layer.GeoDataset = dc.FindGeoDataset("country")

Map1.Layers.Add layer

Set layer = New MapLayer

Set layer.GeoDataset = dc.FindGeoDataset("cities")

Map1.Layers.Add layer

Else

MsgBox "在指定文件夹下没有找到相应的文件"

End If

End Sub

 

Private Sub Command1_Click()

layerset

Map1.Refresh

End Sub

 

Private Sub Command2_Click()

Map1.Layers.Clear

End Sub

 

Private Sub Command3_Click()

On Error GoTo err1

Set layer = Map1.Layers(0)

layer.Visible = False

Map1.Refresh

Exit Sub

err1:

MsgBox "没有图层"

End Sub

 

Private Sub Command4_Click()

On Error GoTo err1

Set layer = Map1.Layers(0)

layer.Visible = True

Map1.Refresh

Exit Sub

err1:

MsgBox "没有图层"

End Sub

 

Private Sub Command5_Click()

Map1.Visible = False

End Sub

 

Private Sub Command6_Click()

Map1.Visible = True

End Sub

二、图层的基本属性设置

面状图层基本属性包括图层颜色、区域界线的宽度、区域界线样式、区域界线颜色等;线状图层的属性包括线宽度、线样式、线颜色等;点状图层属性包括点大小、点样式、点颜色等,另外还有属性的标注等。

1、设置图层颜色

调试前面的程序你会发现图层的颜色是随机出现的,通过设置Symbol对象的Color属性,可以很容易的设置固定的图层颜色。语法结构为:object.Color [= color],具体为layer.Symbol.Color = moGreen,其中moGreenMO的内设常数,也可以使用VB的颜色设置和RGB的颜色设置,具体方法为:layer.Symbol.Color  RGB(255,255,113)layer.Symbol.Color=QBColor(12)

2、设置区域属性

当图层为面状图层时,用layer.Symbol.Size 设置区域界线的宽度,= 1为较细的线型,=2为较粗的线型。还可以用layer.Symbol.OutlineColor = moGreen来设置区域界线的颜色,用layer.Symbol.Style = 7设置填充方式。

3、设置线属性

当图层为线状图层时,用layer.Symbol.Size 设置线的宽度,layer.Symbol.Color设置线的颜色,用layer.Symbol.Style设置线的样式。

4、设置点属性

当图层为点状图层时,用layer.Symbol.Size 设置点的大小,一般用363是较小的点,6是较大的点。还可以用layer.Symbol.Color设置点的颜色,用layer.Symbol.Style设置点的样式。

具体点线面的各个属性参数值见帮助文件。综合示例代码:

Option Explicit

Dim dc As New DataConnection

Dim layer As MapLayer

 

Private Sub Command1_Click()

dc.Database = "F:\MO实验\WORLD"

Set layer = New MapLayer

layer.GeoDataset = dc.FindGeoDataset("country")

layer.Symbol.Color = QBColor(9)

layer.Symbol.Size = 1

layer.Symbol.OutlineColor = moGreen

layer.Symbol.Style = 7

Map1.Layers.Add layer

Set layer = New MapLayer

layer.GeoDataset = dc.FindGeoDataset("rivers")

layer.Symbol.Color = moRed

layer.Symbol.Size = 2

layer.Symbol.Style = 4

Map1.Layers.Add layer

Set layer = New MapLayer

layer.GeoDataset = dc.FindGeoDataset("cities")

layer.Symbol.Color = moBlack

layer.Symbol.Size = 3

layer.Symbol.Style = 2

Map1.Layers.Add layer

Map1.Refresh

End Sub

至此,我们已经学了和图层操作有关的几个对象和控件:Map控件,DataConnection对象,Layers集合对象,MapLayer对象,以及和设置地图图层属性的Symbol对象。DataConnection对象包括的属性和函数有Database属性,ConnectFindGeoDataset函数;MapLayer对象的GeoDataset属性;Layers集合对象包含所有对应控件上的向量图层(MapLayer)和栅格图像图层(Image Layer)对象,用到的成员函数有AddClearMap控件的Extent属性,Fullextent属性,MousePointe鼠标指针变量,Refresh成员函数;Symbol对象的Color属性,OutlineColor属性,Size属性,Style属性。

posted on 2007-05-22 16:33  GIS云中飞鹏  阅读(3571)  评论(5编辑  收藏  举报

导航