public class ThemeLabel extends Theme
标签专题图。
标签专题图用专题值对点、线、面等对象做标注(也叫标签),多用字符或数值型字段,如标注地名、道路名称、河流等级、宽度等信息。这里需要注意的是地图上一般还会出现图例说明,图名,比例尺等等,这些都是制图元素,不属于标签专题图标注的范畴。
在标签专题图中,可以统一对标签的显示风格和位置进行设置,也可以通过分段的方式(利用分段表达式,即 rangeExpression
),对单个或每个分段内的标签的风格单独进行设置。
下图为一幅标签专题图的示意图:
下面的代码展示如何构建一个简单的标签专题图对象:
ThemeLabel themeLabel = new ThemeLabel(); // 以name字段作为标签表达式 themeLabel.labelExpression = "name"; // 设置统一文本风格 TextStyle uniformStyle = new TextStyle(); uniformStyle.fontName = "宋体"; uniformStyle.fontWidth = 2; uniformStyle.fontHeight = 2; themeLabel.uniformStyle = uniformStyle;
限定符和类型 | 字段和说明 |
---|---|
boolean |
alongLine
是否沿线显示文本。
|
AlongLineDirection |
alongLineDirection
标签沿线标注方向。
|
boolean |
angleFixed
当沿线显示文本时,是否将文本角度固定。
|
Style |
backStyle
标签专题图中的标签背景风格。
|
boolean |
flowEnabled
是否流动显示标签。
|
ThemeLabelItem[] |
items
标签专题图中标签专题图子项数组。
|
LabelBackShape |
labelBackShape
标签专题图中的标签背景的形状类型。
|
java.lang.String |
labelExpression
标注字段表达式。
|
LabelOverLengthMode |
labelOverLengthMode
超长标签处理模式。
|
double |
labelRepeatInterval
在沿线标注时循环标注的间隔。
|
boolean |
leaderLineDisplayed
是否显示标签和它标注的对象之间的牵引线。
|
Style |
leaderLineStyle
标签与其标注对象之间牵引线的风格。
|
LabelMatrixCell[][] |
matrixCells
矩阵标签元素数组,包括符号类型的矩阵标签元素和图片类型的矩阵标签元素。
|
int |
maxLabelLength
标签在每一行显示的最大长度。
|
int |
maxTextHeight
标签中文本的最大高度。
|
int |
maxTextWidth
标签中文本的最大宽度。
|
int |
minTextHeight
标签中文本的最小高度。
|
int |
minTextWidth
标签中文本的最小宽度。
|
int |
numericPrecision
标签中数字的精度。
|
boolean |
offsetFixed
当前标签专题图是否固定标记文本的偏移量。
|
java.lang.String |
offsetX
标签专题图中标记文本相对于要素内点的水平偏移量。
|
java.lang.String |
offsetY
返回标签专题图中标记文本相对于要素内点的垂直偏移量。
|
boolean |
overlapAvoided
是否允许以文本避让方式显示文本。
|
java.lang.String |
rangeExpression
分段字段表达式。
|
boolean |
repeatedLabelAvoided
返回是否避免地图重复标注。
|
boolean |
repeatIntervalFixed
循环标注间隔是否固定。
|
boolean |
smallGeometryLabeled
是否显示长度大于被标注对象本身长度的标签。
|
double |
textSpace
沿线标注,相邻两个文字之间的间距,单位当前设置的字高。
|
LabelMixedTextStyle |
uniformMixedStyle
标签专题图统一的文本复合风格。
|
TextStyle |
uniformStyle
统一文本风格。
|
java.lang.String |
uniqueExpression
单值字段表达式 表达式可以为一个字段,也可以为多个字段构成的表达式,通过该表达式的值控制对象标签的风格,表达式值相同的对象标签使用相同的风格进行显示。
|
ThemeLabelUniqueItem[] |
uniqueItems
单值标签专题图子项集合
|
memoryData, type
构造器和说明 |
---|
ThemeLabel() |
ThemeLabel(ThemeLabel themeLabel)
拷贝构造函数。
|
限定符和类型 | 方法和说明 |
---|---|
Theme |
copy()
复制标签专题图。
|
boolean |
equals(java.lang.Object obj)
比较指定对象与当前 ThemeLabel 对象是否相等。
|
int |
hashCode()
生成哈希码。
|
boolean |
isHavingValidItems()
成员变量 items 的构成是否合法。
|
boolean |
isHavingValidUniqueItems() |
public ThemeLabelItem[] items
标签专题图中标签专题图子项数组。
每一子项内的要素,按照该子项的风格显示标签。
public ThemeLabelUniqueItem[] uniqueItems
public Style backStyle
标签专题图中的标签背景风格。
当背景形状 labelBackShape
属性设为默认值 NONE,即不显示任何风格时,backStyle 属性无效。
public LabelBackShape labelBackShape
标签专题图中的标签背景的形状类型。
背景类型可以是矩形、圆角矩形、菱形、椭圆形、三角形和符号等,默认为 NONE,即不使用任何的形状作为标签的背景。
public LabelOverLengthMode labelOverLengthMode
超长标签处理模式。
对于标签的长度超过设置的标签最大长度的标签称为超长标签,标签的最大长度可以通过 maxLabelLength
来设置。
SuperMap 提供三种超长标签的处理方式来控制超长标签的显示行为,即换行显示、对超长标签不进行处理、省略超出部分。
public boolean flowEnabled
是否流动显示标签。
对于跨越比较大的区域和线条状的几何对象,在一个地图窗口中不能完全显示的情况下,如果其标签位置比较固定,在当前地图窗口中该对象的标签不可见, 则需要通过平移地图来查看对象的标签信息。如果采用了流动显示的效果,在当前地图窗口中,对象即使是部分显示,其标签也会显示在当前地图窗口中。 当平移地图时,对象的标签会随之移动,以保证在当前地图窗口中部分或全部显示的对象,其标签都可见,从而可以方便地查看各要素的标签信息。
下图是不流动显示和流动显示时的效果示意图。
不流动显示 | 流动显示 |
默认为 false。流动显示只适合于线和面要素的标注。
public boolean alongLine
是否沿线显示文本。
true 表示沿线显示文本,false 表示正常显示文本。默认为 false。沿线标注属性只适用于线数据集专题图。
public boolean angleFixed
当沿线显示文本时,是否将文本角度固定。
true 表示按固定文本角度显示文本,false 表示按照沿线角度显示文本。默认值为 fasle。
如果固定角度,则所有标签均按文本风格设置中字体的旋转角度来显示,不考虑沿线标注的方向;如果不固定角度,在显示标签时会同时考虑字体的旋转角度和沿线标注的方向。示意图如下:
public boolean overlapAvoided
是否允许以文本避让方式显示文本。
默认值为 true, 即自动避免文本叠盖。只针对该标签专题图层中的文本数据。在标签重叠度很大的情况下,即使使用自动避让功能,可能也无法完全避免标签重叠现象。
public boolean repeatedLabelAvoided
返回是否避免地图重复标注。
对于代表北京地铁四号线的线数据,假如由4条子线段组成,当以名称字段(字段值为:地铁四号线)做为专题变量制作标签专题图时, 如果不选择避免地图重复标注,则显示效果如左图,如果选择了避免地图重复标注,系统会将这条折线的四个子线部分看成一条线来进行标注,其显示效果如下图所示。
public double labelRepeatInterval
在沿线标注时循环标注的间隔。
长度的单位与地图的地理单位一致。只有设定 repeatedLabelAvoided
为 true 的时候,labelRepeatInterval 属性才有效。
public java.lang.String offsetX
标签专题图中标记文本相对于要素内点的水平偏移量。
标签偏移量的单位为地图单位。该偏移量的值为一个常量值或者字段表达式所表示的值,即如果字段表达式为 SmID,其中 SmID = 2,那么偏移量的值为2。
public java.lang.String offsetY
返回标签专题图中标记文本相对于要素内点的垂直偏移量。
标签偏移量的单位为地图单位。该偏移量的值为一个常量值或者字段表达式所表示的值,即如果字段表达式为 SmID,其中 SmID = 2,那么偏移量的值为2。
public int maxLabelLength
标签在每一行显示的最大长度。
如果超过最大长度,可以采用两种方式来处理,一种是换行的模式进行显示,另一种是以省略号方式显示。默认最大长度为256。
public Style leaderLineStyle
标签与其标注对象之间牵引线的风格。
public boolean leaderLineDisplayed
是否显示标签和它标注的对象之间的牵引线。
默认值为 false,即不显示标签和它标注的对象之间的牵引线。在当标签流动显示时,其位置不固定,由于牵引线始终指向要素的内点,因而通过牵引线显示功能可以找到流动的标签实际对应的要素。
下图是牵引线显示的情况下得到的标签专题图:
注意:只有设置了 flowEnabled
属性为 true 时,牵引线才起作用。
public java.lang.String uniqueExpression
单值字段表达式
表达式可以为一个字段,也可以为多个字段构成的表达式,通过该表达式的值控制对象标签的风格,表达式值相同的对象标签使用相同的风格进行显示。
public java.lang.String rangeExpression
分段字段表达式。
该表达式对应的字段(或者字段组合)的值应该为数值型。用户根据给定的分段字段表达式(rangeExpression)的值来比较其从开始到结束的每一个分段值,来确定采用什么风格来显示给定标注字段表达式(labelExpression)相应的标注文本。
public java.lang.String labelExpression
标注字段表达式。
系统将 labelExpression 对应的字段或字段表达式的值以标签的形式显示在图层中。
public TextStyle uniformStyle
统一文本风格。
当标签专题图子项的个数大于等于1时,uniformStyle 不起作用。
public LabelMixedTextStyle uniformMixedStyle
标签专题图统一的文本复合风格。
public LabelMatrixCell[][] matrixCells
矩阵标签元素数组,包括符号类型的矩阵标签元素和图片类型的矩阵标签元素。
public AlongLineDirection alongLineDirection
标签沿线标注方向。
详细的标注方向类型请查看 AlongLineDirection 类。
public int maxTextHeight
标签中文本的最大高度。
public int maxTextWidth
标签中文本的最大宽度。
public int minTextHeight
标签中文本的最小高度。
public int minTextWidth
标签中文本的最小宽度。
public int numericPrecision
标签中数字的精度。
例如标签对应的数字是8071.64529347,如果该属性为0时,显示8071,为1时,显示8071.6;为3时,则是8071.645。
public boolean offsetFixed
当前标签专题图是否固定标记文本的偏移量。
固定标记文本的偏移量,则标签的偏移量不随地图的缩放而变化。
public boolean repeatIntervalFixed
循环标注间隔是否固定。
true 表示使用固定循环标注间隔,即使用逻辑坐标来显示循环标注间隔;false 表示循环标注间隔随地图的缩放而变化,即使用地理坐标来显示循环标注间隔。 默认值为 false。
public boolean smallGeometryLabeled
是否显示长度大于被标注对象本身长度的标签。
在标签的长度大于线或者面对象本身的长度时,如果选择继续标注,则标签文字会叠加在一起显示,为了清楚完整的显示该标签,可以采用换行模式来显示标签,但必须保证每行的长度小于对象本身的长度。
public double textSpace
public ThemeLabel()
public ThemeLabel(ThemeLabel themeLabel)
拷贝构造函数。
themeLabel
- 标签专题图对象。public boolean equals(java.lang.Object obj)
比较指定对象与当前 ThemeLabel 对象是否相等。
public boolean isHavingValidItems()
成员变量 items 的构成是否合法。
合法的要求:
1、成员变量 items 必须不为 null 且长度大于0;
2、items 中每个 item 对象的成员变量不为 null;
3、每个 item 对象的成员变量 end 的值必须大于成员变量 start 的值;
4、当 items 长度大于1的时候,每个 item 的成员变量 start 的值必须等于上一个 item 的成员变量 end 的值。
如不满足以上要求,则 items 构成非法。
public boolean isHavingValidUniqueItems()