标签专题图类。用文本的形式在图层上直接显示属性表中的数据,其实质就是对图层的标注。
程序集: SuperMap.Mapping (in SuperMap.Mapping)
版本: dll
语法
C# |
---|
public class ThemeLabel : Theme |
备注
标签专题图的标注可以是数字、字母与文字,例如:河流、湖泊、海洋、山脉、城镇、村庄等地理名称,高程、等值线数值、河流流速、公路段里程、航海线里程等。
在标签专题图中,你可以对标签的显示风格和位置进行设置或控制,你可以为所有的标签都设置统一的显示风格和位置选项来显示;也可以通过单值标签专题图,基于指定字段表达式的值进行分类,值相同的对象标签为一类使用相同的风格显示,不同类的标签使用不同风格显示;还可以通过分段标签专题图,基于指定字段表达式的值进行分段,同一段内的对象标签相同的风格显示,不同段的标签使用不同风格显示。
注:地图上一般还会出现图例说明,图名,比例尺等等,那些都是制图元素,不属于标签专题图标注的范畴。
注意:如果通过连接(Join)或关联(Link)的方式与一个外部表建立了联系,当专题图的专题变量用到外部表的字段时,在显示专题图时,需要获取或设置Layer.DisplayFilter属性,否则专题图将创建失败。
另外,单个标签的位置也是可以通过Layer.SetThemeElementPosition接口修改的。
标签专题图有多种类型:统一标签专题图、单值标签专题图、复合风格标签专题图、分段标签专题图以及自定义标签专题图,通过ThemeLabel类可以实现以上所有风格标签专题图的设置,建议用户不要同时设置两种或两种以上的风格,如果同时设置了多种风格,标签专题图的显示将按照下表的优先级情况进行风格显示:
示例
以下代码示范了如何制作标签分段专题图。
假设打开了一个工作空间workspace对象。
将为世界各个国家的版图标注国家的名称,同时根据人口范围控制标签专题图的风格。
CopyC#
public void MakeThemeLabelMap(DatasetVector targetDataset) { //制作标签专题图 ThemeLabel themeLabelMap = new ThemeLabel(); themeLabelMap.LabelExpression = "Country"; themeLabelMap.RangeExpression = "Pop_1994"; //为标签专题图的标签设置分段样式 //设置人口大于一亿国家的标签 ThemeLabelItem themeLabelItem1 = new ThemeLabelItem(); themeLabelItem1.Caption = "大于一亿"; themeLabelItem1.End = 120000000; themeLabelItem1.Start = 100000000; themeLabelItem1.IsVisible = true; TextStyle textStyle1 = new TextStyle(); textStyle1.ForeColor = Color.FromArgb(255, 190, 189); textStyle1.FontName = "宋体"; themeLabelItem1.Style = textStyle1; //设置人口大于一千万国家的标签 ThemeLabelItem themeLabelItem2 = new ThemeLabelItem(); themeLabelItem2.Caption = "大于一千万"; themeLabelItem2.End = 100000000; themeLabelItem2.Start = 10000000; themeLabelItem2.IsVisible = true; TextStyle textStyle2 = new TextStyle(); textStyle2.ForeColor = Color.FromArgb(255, 235, 189); textStyle2.FontName = "宋体"; themeLabelItem2.Style = textStyle2; //设置人口大于一百万国家的标签 ThemeLabelItem themeLabelItem3 = new ThemeLabelItem(); themeLabelItem3.Caption = "大于一百万"; themeLabelItem3.End = 10000000; themeLabelItem3.Start = 1000000; themeLabelItem3.IsVisible = true; TextStyle textStyle3 = new TextStyle(); textStyle3.ForeColor = Color.FromArgb(214, 255, 115); textStyle3.FontName = "宋体"; themeLabelItem3.Style = textStyle3; //设置人口小于一百万国家的标签 ThemeLabelItem themeLabelItem4 = new ThemeLabelItem(); themeLabelItem4.Caption = "小于一百万"; themeLabelItem4.End = 1000000; themeLabelItem4.Start = 0; themeLabelItem4.IsVisible = true; TextStyle textStyle4 = new TextStyle(); textStyle4.ForeColor = Color.FromArgb(214, 255, 189); textStyle4.FontName = "宋体"; themeLabelItem4.Style = textStyle4; //添加标签专题图子项到标签专题图对象中 themeLabelMap.AddToHead(themeLabelItem1); themeLabelMap.AddToHead(themeLabelItem2); themeLabelMap.AddToHead(themeLabelItem3); themeLabelMap.AddToHead(themeLabelItem4); mapControl1.Map.Workspace = workspace; mapControl1.Map.Layers.Add(targetDataset, true); Layer layerTheme = mapControl1.Map.Layers.Add(targetDataset, themeLabelMap, true); mapControl1.Map.Refresh(); }