为图层生成标注
天下维客,你可以修改的网络知识库
目录 |
概述
MapX 提供了多种方法来标注地图图层中地理对象的属性。它们的绘图位置是基于地理对象中心的位置以及其他的一些信息,如定位点和偏移量。
作为属性,标注是动态连接到关于它们的地图对象上的。如果图层被关闭或不可见,则标注不再显示。如果数据或地理信息改变,则标注也改变。如果为标注创建了表达式,并对该表达式进行更改,则当前标注会被新的表达式动态取代。无论是自动标注地图,还是交互地使用 Label 工具或 LabelAtPoint 方法,标注的内容都由与地理对象相关联的数据来确定。 除了标注内容,还可以使用 LabelProperties 对象中的属性来控制自动标注的位置、显示和外观。可以为标注显示设置条件,如显示的样式和图层中所有对象的位置。
控制标注显示
要为图层自动生成标注,可以设置图层的 AutoLabel 属性为 True。 每一个图层对象都有 LabelProperties 对象,用来控制标注的许多方面。例如,为了隐藏图层的所有标注,可设置 LabelProperties.Visible 属性为 False。若要指定想在地图上显示的标注的最大数量,可以设置 LabelMax 属性。Duplicate 属性控制同名的图元是否可以同时在地图上分开标注。Overlap 属性控制是否允许标注叠加;设置 Overlap 为 True 可以使更多图元被标注,但叠加的标注很难识别。
缩放图层标注
可以设置标注只在特定的缩放范围中显示,方法类似于在一定的缩放范围中显示地图图层。要对标注指定缩放范围,可设置图层的 LabelProperties 对象的 LabelZoom、LabelZoomMax 和 LabelZoomMin 属性。
标注位置
要控制标注的位置,可设置 Position 属性(控制标注是在图元中心的上方、下方还是旁边)和 Offset 属性(控制标注对于图元的偏移量)。 默认的锚点取决于图层的主要图元类型。例如,区域图元的图层默认为在区域中心有相关标注。 对于线/折线图元(如街道地图),可以使标注平行于线对象,方法是设置 Parallel 属性为 True。
创建引注
引注是指用线指向所标注对象的一种标注。当在一块相对较小的区域中有很多标注时,则引注就非常有用。例如为亚洲地图作标注。有很多小国家靠得相当近。如果试图标注所有这些国家,那么这些标注将互相叠加而难以辨认。 要创建引注,可为想要标注的图层设置 LabelProperties.LineType 属性为 miLineTypeSimple (1) 或 miLineTypeArrow (2)。
标注样式
要更改所有标注的样式,可设置 Style。 也可以设置合适的样式选项。对样式进行所要的更改。当返回地图时,所选的标注就会以指定的样式显示。 同时还有背景选项。设置合适的选项以产生无背景的效果,或设置轮廓以产生在文字周围的轮廓效果。这样使文本在它所覆盖的地方(例如,区域的一部分或一条街等等)上突出显示。
交互式标注
尽管大部分标注可能会自动完成,但某些情况下可能要使用 Label 工具创建标注。 Label 工具是 MapX 内置的标准工具。要激活该工具,可设置 Map.CurrentTool 属性为 miLabelTool (1010);用户将可通过单击图元进行标注。 删除图层中所有标注的最简单的方法是使用 Visibility 设置。它将禁止该图层中所有标注的显示,包括自动和自定义标注。要只清除自定义标注(使用 Label 工具制作的标注),请使用 ClearCustomLabels 方法。 如下的示例程序使用外部Mapstats.mdb库中”USA”表的”GEONAME”字段值作为标注
Dim DS As Object
Dim DB As Object
Dim RS As Object
Dim Temp As Object
Set DB = Workspaces(0).OpenDatabase("Mapstats.mdb")
Set RS = DB.OpenRecordset("USA")
Set DS = Map1.Datasets.Add(miDataSetDAO, RS)
Set Map1.Layers("usa").LabelProperties.Dataset = DS
Set Temp = DS.Fields("GEONAME")
Set Map1.Layers("usa").LabelProperties.DataField = Tem



