📄 mapobject学习笔记-第二讲 图层的基本功能开发_魏国强 的 博客.htm
字号:
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>Dim dc As New DataConnection</FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>Dim layer As New MapLayer</FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>Private Sub Command1_Click()</FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>dc.Database = <SPAN style="COLOR: red">App.Path + "\..\" +
"world"</SPAN></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><FONT
size=2><SPAN>'dc.Database =
"</SPAN><SPAN>指定文件夹路径</SPAN><SPAN>"</SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>If dc.Connect Then</FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>layer.GeoDataset = dc.FindGeoDataset("country")</FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>Map1.Layers.Add layer</FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>layer.GeoDataset = dc.FindGeoDataset("cities")</FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>Map1.Layers.Add layer</FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>Map1.Refresh</FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>Else</FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><FONT
size=2><SPAN>MsgBox
"</SPAN><SPAN>在指定文件夹下面没有找到相应图层数据文件!</SPAN><SPAN>"</SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>End If</FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN><FONT
size=2>End Sub</FONT></SPAN></P><SPAN><FONT size=2>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt"><STRONG><SPAN>4</SPAN></STRONG><STRONG><SPAN>、图层的卸载和移动</SPAN></STRONG></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>用语句:</SPAN><SPAN>Map1.
Layers.Remove 0</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>可以把第</SPAN><SPAN>0</SPAN><SPAN>层卸载,注意:卸载了一个图层后,其他图层的序号就发生了变化。</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>用语句:</SPAN><SPAN>Map1.
Layers. Clear</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>可以一次卸载所有的图层。</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>可以用</SPAN><SPAN>MoveTo</SPAN><SPAN>方法来把图层从位置</SPAN><SPAN>1</SPAN><SPAN>移动到位置</SPAN><SPAN>2</SPAN><SPAN>,如原来图层在第</SPAN><SPAN>2</SPAN><SPAN>层,用以下语句可以把它移动到第</SPAN><SPAN>0</SPAN><SPAN>层:</SPAN><SPAN>Map1.
Layers. MoveTo 2,0</SPAN><SPAN>。</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt"><STRONG><SPAN>5</SPAN></STRONG><STRONG><SPAN>、图层的选择和隐藏</SPAN></STRONG></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>用图层的索引号:</SPAN><SPAN>Set
Layer = Map1.Layers(0)</SPAN><SPAN>或图层名称</SPAN><SPAN>Set Layer =
Map1.Layers("country")</SPAN><SPAN>来选择当前层。</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>用语句:</SPAN><SPAN>layer.visible
=
false</SPAN><SPAN>来隐藏当前层。另外,可以通过设置</SPAN><SPAN>Map1.visible</SPAN><SPAN>来隐藏或显示整个</SPAN><SPAN>Map</SPAN><SPAN>控件。</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>综合示例代码如下:</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Option
Explicit</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim dc As New
DataConnection</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim layer As
MapLayer</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub
layerset()<SPAN style="mso-spacerun: yes">
</SPAN>'</SPAN><SPAN>图层设置模块</SPAN><SPAN>'</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>dc.Database =
"F:\MO</SPAN><SPAN>实验</SPAN><SPAN>\WORLD"</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>If dc.Connect
Then</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Set layer = New
MapLayer</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Set
layer.GeoDataset = dc.FindGeoDataset("country")</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.Layers.Add
layer</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Set layer = New
MapLayer</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Set
layer.GeoDataset = dc.FindGeoDataset("cities")</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.Layers.Add
layer</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Else</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>MsgBox
"</SPAN><SPAN>在指定文件夹下没有找到相应的文件</SPAN><SPAN>"</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End If</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End Sub</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub
Command1_Click()</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>layerset</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.Refresh</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End Sub</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub
Command2_Click()</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.Layers.Clear</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End Sub</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub
Command3_Click()</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>On Error GoTo
err1</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Set layer =
Map1.Layers(0)</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>layer.Visible =
False</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.Refresh</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Exit
Sub</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>err1:</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>MsgBox
"</SPAN><SPAN>没有图层</SPAN><SPAN>"</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End Sub</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub
Command4_Click()</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>On Error GoTo
err1</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Set layer =
Map1.Layers(0)</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>layer.Visible =
True</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.Refresh</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Exit
Sub</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>err1:</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>MsgBox
"</SPAN><SPAN>没有图层</SPAN><SPAN>"</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End Sub</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub
Command5_Click()</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.Visible =
False</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End Sub</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub
Command6_Click()</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.Visible =
True</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End
Sub</SPAN></P><SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><STRONG><SPAN
style="FONT-SIZE: 12pt">二、图层的基本属性设置</SPAN></STRONG></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>面状图层基本属性包括图层颜色、区域界线的宽度、区域界线样式、区域界线颜色等;线状图层的属性包括线宽度、线样式、线颜色等;点状图层属性包括点大小、点样式、点颜色等,另外还有属性的标注等。</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.1pt; mso-char-indent-count: 2.0"><STRONG><SPAN>1</SPAN></STRONG><STRONG><SPAN>、设置图层颜色</SPAN></STRONG></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN>调试前面的程序你会发现图层的颜色是随机出现的,通过设置</SPAN><SPAN>Symbol</SPAN><SPAN>对象的</SPAN><SPAN>Color</SPAN><SPAN>属性,可以很容易的设置固定的图层颜色。语法结构为:</SPAN><SPAN>object.Color
[= color]</SPAN><SPAN>,具体为</SPAN><SPAN>layer.Symbol.Color =
moGreen</SPAN><SPAN>,其中</SPAN><SPAN>moGreen</SPAN><SPAN>是</SPAN><SPAN>MO</SPAN><SPAN>的内设常数,也可以使用</SPAN><SPAN>VB</SPAN><SPAN>的颜色设置和</SPAN><SPAN>RGB</SPAN><SPAN>的颜色设置,具体方法为:</SPAN><SPAN>layer.Symbol.Color
RGB(255,255,113)</SPAN><SPAN>,</SPAN><SPAN>layer.Symbol.Color=QBColor(12)</SPAN><SPAN>。</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.1pt; mso-char-indent-count: 2.0"><STRONG><SPAN>2</SPAN></STRONG><STRONG><SPAN>、设置区域属性</SPAN></STRONG></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><SPAN>当图层为面状图层时,用</SPAN><SPAN>layer.Symbol.Size
</SPAN><SPAN>设置区域界线的宽度,</SPAN><SPAN>=
1</SPAN><SPAN>为较细的线型,=</SPAN><SPAN>2</SPAN><SPAN>为较粗的线型。还可以用</SPAN><SPAN>layer.Symbol.OutlineColor
= moGreen</SPAN><SPAN>来设置区域界线的颜色,用</SPAN><SPAN>layer.Symbol.Style =
7</SPAN><SPAN>设置填充方式。</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><STRONG><SPAN>3</SPAN></STRONG><STRONG><SPAN>、设置线属性</SPAN></STRONG></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>当图层为线状图层时,用</SPAN><SPAN>layer.Symbol.Size
</SPAN><SPAN>设置线的宽度,</SPAN><SPAN>layer.Symbol.Color</SPAN><SPAN>设置线的颜色,用</SPAN><SPAN>layer.Symbol.Style</SPAN><SPAN>设置线的样式。</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><STRONG><SPAN>、设置点属性</SPAN></STRONG></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
<P></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>当图层为点状图层时,用</SPAN><SPAN>layer.Symbol.Size
</SPAN><SPAN>设置点的大小,一般用</SPAN><SPAN>3</SPAN><SPAN>-</SPAN><SPAN>6</SPAN><SPAN>,</SPAN><SPAN>3</SPAN><SPAN>是较小的点,</SPAN><SPAN>6</SPAN><SPAN>是较大的点。还可以用</SPAN><SPAN>layer.Symbol.Color</SPAN><SPAN>设置点的颜色,用</SPAN><SPAN>layer.Symbol.Style</SPAN><SPAN>设置点的样式。</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>具体点线面的各个属性参数值见帮助文件。综合示例代码:</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Option
Explicit</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim dc As New
DataConnection</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim layer As
MapLayer</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub
Command1_Click()</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>dc.Database =
"F:\MO</SPAN><SPAN>实验</SPAN><SPAN>\WORLD"</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Set layer = New
MapLayer</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>layer.GeoDataset =
dc.FindGeoDataset("country")</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>layer.Symbol.Color
= QBColor(9)</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>layer.Symbol.Size
= 1</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>layer.Symbol.OutlineColor
= moGreen</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>layer.Symbol.Style
= 7</SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.Layers.Add
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -