标签专题图类。用文本的形式在图层上直接显示属性表中的数据,其实质就是对图层的标注。

命名空间:  SuperMap.Mapping
程序集:  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();

}

继承层次

System..::.Object
  SuperMap.Mapping..::.Theme
    SuperMap.Mapping..::.ThemeLabel

请参见