⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapx中文培训教材 在线看 ← mapinfo ← 地理信息系统论坛社区.htm

📁 MAPX中文培训教材 不错的中文教材
💻 HTM
📖 第 1 页 / 共 5 页
字号:
属性,该属性非常有用,可得到图层的数目,遍历Layers集合的每一图层,就可以用到此属性:<BR>Dim x as integer<BR>For x = 1 
to Map1.Layers.Count<BR>Print 
Map1.Layers(x).Name<BR>Next<BR><BR>Item——从集合中获取图层<BR>Item 属性从集合中获得特定的 Layer 
对象。Item 属性返回一个图层作为对象,它是 Layers 集合的默认方法。 可以通过索引值,如 1、2 等等,来引用图层,也可以通过它们的名称引用,例如 
Highways 或者 Cities:<BR>Dim lyr as Layer<BR>Set lyr = 
Map1.Layers.Item(“Highways”)<BR>-或者-<BR>Dim lyr as Layer<BR>Set lyr = 
Map1.Layers.Item(3)<BR>Bounds——获得集合的地理范围<BR>Bounds 属性返回代表集合中所有地图图层的地理范围(除了 
UserDraw 图层)的 Rectangle 对象。当需要将地图缩放到足够大以显示所有图层中的所有对象时,该属性将很有用:<BR>Set 
Map1.Bounds = Map1.Layers.Bounds<BR>第三节 Layers 集合的方法<BR>Layers 
集合有一些方法来控制集合包含哪些图层以及它们如何显示。还有一个方法使用户能打开图层控制对话框来操作图层的方法和属性。方法也可在设计时使用属性页设置,如本章前面所述。<BR>使用“图层控制”对话框<BR>LayersDlg 
方法显示可让用户添加图层、删除图层、更改图层顺序和更改图层属性的对话框。<BR><BR><BR><BR>如果用户单击确定,在对话框中所做的更改将立即对地图生效。<BR>Map1.Layers.LayersDlg<BR>显示选项对话框<BR><BR><BR><BR>显示选项对话框使得用户可以自定义地图窗口中每个图层的显示。在图层控制中,用户可以选择图层并单击显示按钮以显示显示属性对话框。然后,用户可以更改图层的缺省样式并设置图层显示的缩放范围。<BR>当用户第一次打开地图时,边界、线、点和文本都使用在地图的 
Geoset 
文件中的默认值来显示。用户可以通过使用显示选项对话框的显示模式部分更改对象显示的方式。<BR>例如,用户想要将街道的显示变成红色虚线。在图层控制对话框中用户可以选择街道图层并单击显示按钮。将出现显示选项对话框。选中样式替换框以激活样式替换按钮(大的灰色按钮)。MapX 
显示适合于图层中对象类型的替换按钮。例如,如果图层包含街道,将显示一个线替换按钮。单击该按钮进入线样式对话框,在此用户可以改变街道的宽度、样式和颜色。对于边界图层,样式替换按钮将引出区域样式对话框,可改变边界的填充和边框。当要为包含符号或点的图层替换样式时,将显示符号样式对话框。和其他显示设置一样,样式替换只在当前的工作期间有效。如果要使其永久有效,必须修改geoset。<BR>创建图层<BR>可以创建新的临时或永久的 
MapInfo 表图层。该方法返回 Layer 对象——即添加到集合的 Layer 对象。<BR>dim lyr as layer<BR>set lyr = 
Map1.Layers.CreateLayer 
(“Temporary”)<BR>添加图层<BR>添加现有的图层到集合中并在地图上显示。<BR>当添加图层时,可以使用可选的 Position 
参数指定图层在集合中的位置。如果没有指定 Position 
参数,图层将根据地图中的其它图层自动放置。例如,点图层将置于区域图层之上。<BR>Map1.Layers.Add 
“C:\Data\Counties.tab”<BR>-或者-<BR>Private Sub mnuAddLayers_Click()<BR>Dim sFile 
As String<BR>With dlgCommonDialog<BR>.DialogTitle = "Add Layer"<BR>.Filter = 
"MapInfo Tables (*.tab)|*.tab"<BR>.ShowOpen<BR>If Len(.filename) = 0 
Then<BR>Exit Sub<BR>End If<BR>sFile = .filename<BR>End With<BR>On Error Resume 
Next<BR>Map1.Layers.Add sFile<BR>End Sub<BR>删除图层<BR>Remove 
方法将指定的图层从地图删除。<BR>Map1.Layers.Remove 3<BR>删除所有图层<BR>RemoveAll 
方法将所有图层从地图中删除。<BR>重定位图层<BR>Move 方法重确定图层在 Layers 
集合中的顺序。第一个参数是原来的顺序(顶端图层为1),第二个参数是要移动到的顺序。<BR>Map1.Layers.Move 1,2 
<BR><BR>第四节Layer 对象<BR><BR>Layer 对象代表具有主要的图元类型(如区域、线条和符号)的地图图元集合的窗体中的矢量地图化数据。通常 
Layer 对象对应于一张 MapInfo 表中的地理对象。Layer 集合中的每一个 Layer 
对象的行为独立于其他对象。它们的样式更改、图层缩放的更改都基于单个图层,而不会影响其他图层。<BR>可以在任何时候在程序中操作图层对象。也可以使用属性页对话框在设计时设置图层属性,如上面所讨论的一样。Layer 
对象有许多属性和方法。用来从 Layer 中获得图元的方法后面的章节中讨论。<BR>Layer 的属性<BR>说明:《MapX参考指南》和联机帮助中有 
Layer 对象方法和属性的完整列表。<BR>Name<BR>图层的名称。<BR>MsgBox 
Map1.Layers(4).Name<BR>Visible<BR>图层是否可见。<BR>Map1.Layers.Item(2).Visible = 
False<BR>OverrideStyle<BR>是否替代该图层的默认显示特性。<BR>Map1.Layers(9).OverrideStyle = 
True<BR>Style<BR>如果 OverrideStyle 为真时图层样式将应用。<BR>Map1.Layers(9).Style = 
newstyleobject<BR>ZoomLayer<BR>设置图层缩放打开或关闭。<BR>Map1.Layers(“States”).ZoomLayer = 
True<BR>ZoomMin<BR>设置图层可见的最小缩放级别。<BR>Map1.Layers(“States”).ZoomMin = 
45<BR>ZoomMax<BR>设置图层可见的最大缩放级别。<BR>Map1.Layers(“States”).ZoomMin = 580 
<BR>Selectable<BR>当用户单击该图层时设置 MapX 是否认可。<BR>Map1.Layers(“States”).Selectable = 
True<BR>AutoLabel<BR>控制图层是否自动标注。<BR>Map1.Layers(“States”).AutoLabel = 
True<BR><BR>第五节 图层顺序 <BR>Layers 集合中的地图图层按递增的索引顺序显示(例如,Layers(1) 
是最上面的图层,Layers(2) 是 Layer(1) 
下面的图层,等等),底部的图层首先绘制,顶部的图层最后绘制。正确地排列图层很重要。<BR>例如,假设有一个客户点图层和人口普查区图层。如果图层在 Layers 
集合中的顺序不正确,MapX 将首先绘制客户点图层,然后显示人口普查区图层。则点图层将被人口普查区图层所遮掩。<BR>可以在设计时重新调整图层在 Map 
中显示的顺序。如前所述,在属性页的图层选项卡中使用向上和向下按钮。选择要重新排序的图层并选择向上或向下按钮移动图层到它当前位置的上方或下方。要使得用户在运行时可以调整图层的顺序,使用 
LayersDlg 
方法显示图层控制对话框,如前所述。<BR>图层顺序在使用选择工具时也很重要。选择工具从最上面的可选图层选择对象。如果在相同位置有几个对象,就很难精确选择所要的那一个。可以重新调整图层的顺序使得要选择的图层是新的最顶端的图层。<BR>第六节 
检查图层类型<BR><BR>有很多实例表明可能要检查集合中的图层。下面是一个简单的代码段,它在 Layers 
集合中循环以确定现有的图层是什么类型,并在对话框中显示消息指出图层类型。<BR>Dim lyr as Layer<BR>For Each lyr in 
Map1.Layers<BR>Select Case lyr.Type<BR>Case miLayerTypeNormal<BR>MsgBox “Layer ” 
&amp; lyr.Name &amp; “ is a normal layer”<BR>Case miLayerTypeRaster<BR>MsgBox 
“Layer ” &amp; lyr.Name &amp; “ is a raster layer”<BR>Case 
miLayerTypeSeamless<BR>MsgBox “Layer ” &amp; lyr.Name &amp; “ is a seamless 
layer”<BR>Case miLayerTypeUnknown<BR>MsgBox “Layer ” &amp; lyr.Name &amp; “ is 
an unknown layer”<BR>Case miLayerTypeUserDraw<BR>MsgBox “Layer ” &amp; lyr.Name 
&amp; “ is a user draw layer”<BR>Case miLayerTypeDrilldown<BR>MsgBox “Layer ” 
&amp; lyr.Name &amp; “ is a drilldown layer”<BR>Next<BR>在代码段中对所有图层类型使用了 MapX 
定义的常量。这些常量通称为 LayerTypeConstants。所有的 MapX 常量都列出在MapX 联机帮助和《MapX参考指南》中。<BR>第七节 
检查图层的图元类型<BR>该代码段在 Layers 集合中按索引循环。检查集合中的每个 Layer 对象并确定图层中显示的图元的类型。 <BR>Dim i as 
Integer<BR>For i = 1 To Map1.Layers.Count<BR>Select Case 
Map1.Layers(i).PredominantFeatureType<BR>Case miFeatureTypeRegion<BR>MsgBox 
“Layer ” &amp; lyr.Name &amp; “ contains regions”<BR>Case 
miFeatureTypeLine<BR>MsgBox “Layer ” &amp; lyr.Name &amp; “ contains 
lines”<BR>Case miFeatureTypeSymbol<BR>MsgBox “Layer ” &amp; lyr.Name &amp; “ 
contains symbols”<BR>Case miFeatureTypeMixed<BR>MsgBox “Layer ” &amp; lyr.Name 
&amp; “ contains mixed _ features”<BR>Case miFeatureTypeUnknown<BR>MsgBox “Layer 
” &amp; lyr.Name &amp; “ contains unknown _<BR>features”<BR>Case 
miFeatureTypeText<BR>MsgBox “Layer ” &amp; lyr.Name &amp; “contains text 
features”<BR>Next<BR>Layers 集合有一个基本的索引,所以可以引述来自 Layers 集合的数量之一的索引值。同时也对集合中每个图层的 
PredominantFeatureType 属性进行评估,使用 FeatureType 常量来评估 
PredominantFeatureType。<BR><BR>
<DIV style="CLEAR: both"></DIV></DIV>
<DIV class=postname>
<DIV class=pf>5楼 </DIV><B>tracking</B> 发表于:2004-11-22 9:58:00</DIV>
<DIV class=postbody>第八节 
图层缩放<BR>有时您想使一个地图图层仅在某些缩放级别显示。图层缩放控制地图图层的显示,使它仅当地图缩放水平在预先设置的距离内时才显示。可为每个图层设置不同的图层缩放级别。<BR>例如,如果地图包括街道地图图层,当用户过于缩小地图时,可能发现街道变得难以辨认。使用图层缩放可以建立当用户缩小地图以显示大于 
5 英里的区域时,MapX 可自动隐藏街道的地图。 <BR><BR>未设置缩放级别的图层集合 对街道图层设置了缩放级别的图层集合<BR><BR>下列范例代码使用 
Layers 集合的 Add 方法向地图添加图层并通过修改 Layer 对象的属性而建立图层缩放。<BR>Dim lyrStreets As Layer 
`Creates the layer object<BR>`Sets the Streets table as the layer object and 
orders the layer in `the map as number 3.<BR>Set lyrStreets = 
Map1.Layers.Add(“Streets.tab”, 3)<BR>lyrStreets.ZoomLayer = True `Sets zoom 
layering to true<BR>lyrStreets.ZoomMin = 0 `Sets minimum zoom to 0 
miles<BR>lyrStreets.ZoomMax = 5 `Sets maximum zoom to 5 
miles<BR>一旦为图层设置了图层缩放,当地图在最小缩放级别和最大缩放级别之间缩放时,图层将在地图上显示。例如:<BR>Map1.ZoomTo 3, 
-70.26, 44.05 <BR>因为 3 英里的缩放值在最小缩放级别和最大缩放级别之间,Streets 图层将中心点定在 
-70.26,44.05,并显示涵盖地图控件 3 英里的地图区域。<BR>相同 Map 
窗口中的不同图层可以以不同的缩放级别显示。例如,地图上有街道图层,县边界图层,以及州边界图层。想要使街道图层只在缩放级别小于八英里时才可见。而县边界图层在缩放级别处于 
20 到 200 英里时显示。州边界图层则只在缩放级别大于 100 英里时才可见。可以为地图中的每一个图层设置不同的缩放级别。<BR><BR><BR>第九节 
为图层生成标注<BR>概述<BR>MapX 
提供了多种方法来标注地图图层中地理对象的属性。它们的绘图位置是基于地理对象中心的位置以及其他的一些信息,如定位点和偏移量。 
<BR><BR>作为属性,标注是动态连接到关于它们的地图对象上的。如果图层被关闭或不可见,则标注不再显示。如果数据或地理信息改变,则标注也改变。如果为标注创建了表达式,并对该表达式进行更改,则当前标注会被新的表达式动态取代。无论是自动标注地图,还是交互地使用 
Label 工具或 LabelAtPoint 方法,标注的内容都由与地理对象相关联的数据来确定。<BR>除了标注内容,还可以使用 LabelProperties 
对象中的属性来控制自动标注的位置、显示和外观。可以为标注显示设置条件,如显示的样式和图层中所有对象的位置。<BR>控制标注显示 
<BR>要为图层自动生成标注,可以设置图层的 AutoLabel 属性为 True。<BR>每一个图层对象都有 LabelProperties 
对象,用来控制标注的许多方面。例如,为了隐藏图层的所有标注,可设置 LabelProperties.Visible 属性为 
False。若要指定想在地图上显示的标注的最大数量,可以设置 LabelMax 属性。Duplicate 
属性控制同名的图元是否可以同时在地图上分开标注。Overlap 属性控制是否允许标注叠加;设置 Overlap 为 True 
可以使更多图元被标注,但叠加的标注很难识别。<BR>缩放图层标注<BR>可以设置标注只在特定的缩放范围中显示,方法类似于在一定的缩放范围中显示地图图层。要对标注指定缩放范围,可设置图层的 
LabelProperties 对象的 LabelZoom、LabelZoomMax 和 LabelZoomMin 
属性。<BR>标注位置<BR>要控制标注的位置,可设置 Position 属性(控制标注是在图元中心的上方、下方还是旁边)和 Offset 
属性(控制标注对于图元的偏移量)。 
<BR>默认的锚点取决于图层的主要图元类型。例如,区域图元的图层默认为在区域中心有相关标注。<BR>对于线/折线图元(如街道地图),可以使标注平行于线对象,方法是设置 
Parallel 属性为 
True。<BR>创建引注<BR>引注是指用线指向所标注对象的一种标注。当在一块相对较小的区域中有很多标注时,则引注就非常有用。例如为亚洲地图作标注。有很多小国家靠得相当近。如果试图标注所有这些国家,那么这些标注将互相叠加而难以辨认。<BR>要创建引注,可为想要标注的图层设置 
LabelProperties.LineType 属性为 miLineTypeSimple (1) 或 miLineTypeArrow 
(2)。<BR>标注样式<BR>要更改所有标注的样式,可设置 
Style。<BR>也可以设置合适的样式选项。对样式进行所要的更改。当返回地图时,所选的标注就会以指定的样式显示。<BR>同时还有背景选项。设置合适的选项以产生无背景的效果,或设置轮廓以产生在文字周围的轮廓效果。这样使文本在它所覆盖的地方(例如,区域的一部分或一条街等等)上突出显示。<BR>交互式标注<BR>尽管大部分标注可能会自动完成,但某些情况下可能要使用 
Label 工具创建标注。 Label 工具是 MapX 内置的标准工具。要激活该工具,可设置 Map.CurrentTool 属性为 miLabelTool 
(1010);用户将可通过单击图元进行标注。<BR>删除图层中所有标注的最简单的方法是使用 Visibility 
设置。它将禁止该图层中所有标注的显示,包括自动和自定义标注。要只清除自定义标注(使用 Label 工具制作的标注),请使用 ClearCustomLabels 
方法。<BR>如下的示例程序使用外部Mapstats.mdb库中”USA”表的”GEONAME”字段值作为标注<BR>Dim DS As 
Object<BR>Dim DB As Object<BR>Dim RS As Object<BR>Dim Temp As Object<BR>Set DB = 
Workspaces(0).OpenDatabase("Mapstats.mdb")<BR>Set RS = 
DB.OpenRecordset("USA")<BR>Set DS = Map1.Datasets.Add(miDataSetDAO, RS)<BR>Set 
Map1.Layers("usa").LabelProperties.Dataset = DS<BR>Set Temp = 
DS.Fields("GEONAME")<BR>Set Map1.Layers("usa").LabelProperties.DataField = 
Tem<BR>第十节 注释<BR>尽管标注图元可以解决大部分的文本注释需要,可能仍然需要创建文本对象来对地图进行注释。 
不同于标注的是,文本注释不与数据连接——可以将它放在地图上的任何地方,即便那个位置没有任何图元。<BR>要添加文本或符号注释到地图,请使用 
Annotations 集合和对象中的方法和属性。<BR>每个 Map 对象都有 Annotations 的集合(Map.Annotations 
属性)。注释可以是符号或文本对象,且绘制在地图的顶层。<BR>注释通常用于为地图添加文本消息,或者是添加符号。在对地图进行缩放时这些注释会相应地调整大小。注释不固定于某个特定的地图图层。注释总是在地图的顶层。<BR>请注意 
Annotation 对象没有任何属性来设置位置、符号样式或文本。要控制注释的这些方面,可使用 Annotation.Graphic 属性来获得 Graphic 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -