定义图层上标注的标注表达式、符号、比例范围、标注优先级和标注放置选项。有关标注的详细信息,请参阅标注指南。
已知限制
- Polygon 几何仅支持
always-horizontal
labelPlacement。 - 符号中使用的可用 Font 属性取决于图层类型、几何类型以及您是在 2D 还是 3D 中工作。
- 目前,当 TimeExtent 应用于
layer
或view
时,无法正确标注要素。 - 目前,当 FeatureEffect 或 FeatureFilter 应用于 LayerView 时,标注可能无法正确显示。
- 3D SceneViews 仅支持为每个要素显示一个标注。如果要素满足多个 LabelClasses 的 where 条件,则仅显示第一个匹配 LabelClass 所对应的标注。
- 另请参阅
const labelClass = { // autocasts as new LabelClass()
symbol: {
type: "text", // autocasts as new TextSymbol()
color: "white",
haloColor: "blue",
haloSize: 1,
font: { // autocast as new Font()
family: "Ubuntu Mono",
size: 14,
weight: "bold"
}
},
labelPlacement: "above-right",
labelExpressionInfo: {
expression: "$feature.Team + TextFormatting.NewLine + $feature.Division"
},
maxScale: 0,
minScale: 25000000,
where: "Conference = 'AFC'"
};
const labelLayer = new FeatureLayer({
portalItem: { // autocasts as new PortalItem()
id: "7f0bfc7bf67a407d8efebf584f6d956d"
},
labelingInfo: [labelClass]
});
构造函数
属性概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
Boolean | 指定折线标注是否可以超出被标注的要素。 更多详情 | LabelClass | |
String | 类的名称。 更多详情 | Accessor | |
String | 定义标注应如何相对于彼此放置。 更多详情 | LabelClass | |
String | 定义 MapImageLayer 的标注。 更多详情 | LabelClass | |
Object | 定义 FeatureLayer 的标注。 更多详情 | LabelClass | |
String | 标注的位置。 更多详情 | LabelClass | |
String | 指定折线标注的标注位置的方向。 更多详情 | LabelClass | |
Number | 标注在视图中可见时的最大比例 (放至最大)。 更多详情 | LabelClass | |
Number | 标注在视图中可见时的最小比例 (缩至最小)。 更多详情 | LabelClass | |
Boolean | 指示是否沿折线要素重复标注。 更多详情 | LabelClass | |
Number | 折线上标注之间距离的大小,以磅为单位。 更多详情 | LabelClass | |
TextSymbol|LabelSymbol3D | 定义用于渲染标注的符号。 更多详情 | LabelClass | |
Boolean | 指示如果 labelExpression 或 labelExpressionInfo 中的字段具有域,是否使用域名。 更多详情 | LabelClass | |
String | SQL where 子句,用于确定应应用标注类的要素。 更多详情 | LabelClass |
属性详细信息
-
allowOverrun Boolean起始版本:GeoScene Maps SDK for JavaScript 4.22
-
指定折线标注是否可以超出被标注的要素。例如,在折线段结束之后。
已知限制
目前,此属性仅适用于 2D MapViews 中的折线 FeatureLayer、CSVLayer 和 StreamLayer。
- 默认值:false
-
起始版本:GeoScene Maps SDK for JavaScript 4.7
-
类的名称。声明的类名称格式化为
geoscene.folder.className
。
-
deconflictionStrategy String起始版本:GeoScene Maps SDK for JavaScript 4.16
-
定义标注应如何相对于彼此放置。默认情况下,标注具有
static
消除冲突策略,这意味着将丢弃重叠标注以使其更易于阅读。在某些标注重叠很少的情况下,最好使用
none
选项关闭标注消除冲突。在聚类中心使用要素计数标注聚类时,建议关闭消除冲突。下图展示了您何时希望或不希望消除标注冲突。
当标记密集图层时,默认的冲突消除策略 (
static
) 更可取,因为标记所有要素会导致显著的重叠,使标注难以辨认。保持默认设置允许渲染一些标注。随着用户放大,所有标注最终都将显示。静态 (默认) 无 使用小型标注标记聚类 (甚至是稀疏分布的要素) 时,最好允许标注略微重叠,因为信息仍然清晰可辨,并不会明显遮挡可视化效果。在聚类场景中,
static
的标注消除冲突设置实际上可能会导致更多的混乱,使某些要素看起来不是聚类。静态 (默认) 无 已知限制
目前,此属性仅适用于 2D MapViews 中的 FeatureLayer、CSVLayer 和 StreamLayer。
可能值:"none"|"static"
- 默认值static
示例// Ensures all labels are displayed regardless // of whether they overlap labelClass.deconflictionStrategy = "none";
-
labelExpression String
-
定义 MapImageLayer 的标注。如果使用支持 Arcade 的 MapImageLayer,您也可改用 labelExpressionInfo。要确定这一点,请检查 supportsArcadeExpressionForLabeling 属性。如果为
true
,则可使用 labelExpression 或 labelExpressionInfo。如果为false
,则只能使用 labelExpression。如果使用 FeatureLayer,请改用 labelExpressionInfo。
属性值可以使用 SQL 语法包含在标注中。要在标注中包含属性值,请将字段名称括在方括号
[]
中。请参阅以下示例片段。- 默认值:null
示例// For Spokane County, WA, label will display: "Spokane County, Washington" labelClass.labelExpression = '[COUNTY_NAME] CONCAT " County, " CONCAT [STATE_NAME]';
-
labelExpressionInfo Object
-
定义 FeatureLayer 的标注。
如果使用支持 Arcade 的 MapImageLayer,您也可使用 labelExpressionInfo。要确定这一点,请检查 supportsArcadeExpressionForLabeling 属性。如果为
true
,则可使用 labelExpression 或 labelExpressionInfo。如果为false
,则只能使用 labelExpression。- 属性
-
expression String
遵循 Arcade 标注配置文件定义的规范的 Arcade 表达式 表达式。标注中的表达式可能使用
$feature
配置变量来引用字段值,并且必须返回一个字符串。例如,要使用城市名称标记城市图层,只需使用全局变量引用字段值:
$feature.CITY_NAME
。表达式可以更复杂并使用逻辑函数。如果您想使用分类标注,这可能很有用。例如,如果要素的人口字段包含大于 10,000 的数字,则以下表达式将city
附加到标注的末尾。否则,town
将附加到标注的末尾。此外,您还可以使用TextFormatting.NewLine
向标注添加新行。IIF($feature.POPULATION > 10000, $feature.NAME + ' city', $feature.NAME + ' town')
title String标注表达式的标题。这在多个标注类别的情况下特别有用。
- 默认值:null
- 另请参阅
示例// For Spokane County, WA, label will display: "Spokane County, Washington" labelClass.labelExpressionInfo = { expression: "$feature.COUNTY_NAME + ' County, ' + $feature.STATE_NAME" };
-
labelPlacement String
-
标注的位置。可能的值取决于要素类型。此属性需要一个值。
要素类型 可能值 点 above-center
、above-left
、above-right
、below-center
、below-left
、below-right
、center-center
、center-left
、center-right
折线 above-after
、above-along
、above-before
、above-start
、above-end
、below-after
、below-along
、below-before
、below-start
、below-end
、center-after
、center-along
、center-before
、center-start
、center-end
面 always-horizontal
可能值:"above-center"|"above-left"|"above-right"|"below-center"|"below-left"|"below-right"|"center-center"|"center-left"|"center-right"|"above-after"|"above-along"|"above-before"|"above-start"|"above-end"|"below-after"|"below-along"|"below-before"|"below-start"|"below-end"|"center-after"|"center-along"|"center-before"|"center-start"|"center-end"|"always-horizontal"
示例labelClass.labelPlacement = "above-right";
-
labelPosition String起始版本:GeoScene Maps SDK for JavaScript 4.22
-
指定折线标注的标注位置的方向。如果为
"curved"
,这意味着字符随沿折线的曲线;而"parallel"
意味着字符始终是直的,并且方向将基于折线曲线在标注位置处的角度。可能值:"curved"|"parallel"
- 默认值:"curved"
-
maxScale Number
-
标注在视图中可见时的最大比例 (放至最大)。值为
0
表示标注的可见性没有最大比例。maxScale 值应始终小于 minScale 值,并且大于或等于服务规范。- 默认值:0
-
minScale Number
-
标注在视图中可见时的最小比例 (缩至最小)。值为
0
表示标注的可见性没有最小比例。minScale 值应始终大于 maxScale 值,并且小于或等于服务规范。- 默认值:0
-
repeatLabel Boolean起始版本:GeoScene Maps SDK for JavaScript 4.22
-
指示是否沿折线要素重复标注。如果为
true
,标注将根据 repeatLabelDistance 重复。如果为false
,则标注将在每个折线段显示一次。已知限制
目前,此属性仅适用于 2D MapViews 中的折线 FeatureLayer、CSVLayer 和 StreamLayer。
- 默认值:true
-
起始版本:GeoScene Maps SDK for JavaScript 4.22
-
折线上标注之间距离的大小,以磅为单位。此值可以是自动转换的,其字符串以磅或像素表示大小 (例如
100
、"64pt"
或"128px"
)。repeatLabel 属性必须为true
才能使用此属性。已知限制
- 目前,此属性仅适用于 2D MapViews 中的折线 FeatureLayer、CSVLayer 和 StreamLayer。
- 默认值:null
示例const labelClass = { // autocasts as new LabelClass() symbol: { type: "text", // autocasts as new TextSymbol() color: "white", font: { // autocast as new Font() family: "Orbitron", size: 12, weight: "bold" } }, labelExpressionInfo: { expression: "$feature.rte_num1" }, labelPlacement: "center-along", repeatLabel: true, repeatDistanceLabel: 100 };
-
-
定义用于渲染标注的符号。如果未设置,将使用默认符号。请参见下面的示例。
示例// If not set, this default symbol will be used labelClass.symbol = { type: "text", color: [255, 255, 255, 255], // white font: { family: "Arial Unicode MS", size: 10, weight: "bold" }, haloColor: [0, 0, 0, 255], // black haloSize: 1 };
-
useCodedValues Boolean
-
指示如果 labelExpression 或 labelExpressionInfo 中的字段具有域,是否使用域名。
-
where String
-
SQL where 子句,用于确定应应用标注类的要素。指定时,只有基于此表达式评估为
true
的要素才会被标记。- 默认值:null
示例labelClass.where = "CITYNAME = 'Redlands'";
labelClass.where = "MARKER_ACTIVITY IN ('Picnicking', 'Group Camping')";
方法概述
名称 | 返回值类值 | 描述 | 类 |
---|---|---|---|
添加一个或多个与对象的生命周期相关联的句柄。 更多详情 | Accessor | ||
LabelClass | 创建 LabelClass 的深度克隆。 更多详情 | LabelClass | |
* | 创建此类的新实例并使用从 GeoScene 产品生成的 JSON 对象值对其进行初始化。 更多详情 | LabelClass | |
Boolean | 如果存在指定的句柄组,则返回 true。 更多详情 | Accessor | |
移除对象拥有的句柄组。 更多详情 | Accessor | ||
Object | 将此类的实例转换为 GeoScene Portal JSON 表示。 更多详情 | LabelClass |
方法详细说明
-
addHandles(handleOrHandles, groupKey)inherited起始版本:GeoScene Maps SDK for JavaScript 4.25
-
添加一个或多个与对象的生命周期相关联的句柄。当对象被销毁时,将移除句柄。
// Manually manage handles const handle = reactiveUtils.when( () => !view.updating, () => { wkidSelect.disabled = false; }, { once: true } ); // Handle gets removed when the object is destroyed. this.addHandles(handle);
参数handleOrHandles WatchHandle|WatchHandle[]对象销毁后,标记为要移除的句柄。
groupKey *optional标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。
-
clone(){LabelClass}
-
创建 LabelClass 的深度克隆。
返回类型 描述 LabelClass 调用此方法的对象的深度克隆。 示例// Creates a deep clone of the layer's first labelClass let label = layer.labelingInfo[0].clone();
-
fromJSON(json){*}static
-
创建此类的新实例并使用从 GeoScene 产品生成的 JSON 对象值对其进行初始化。传入到输入
json
参数的对象通常来自对 REST API 中查询操作的响应或来自另一个 GeoScene 产品的 toJSON() 方法。有关何时以及如何使用该函数的详细信息和示例,请参阅指南中的使用 fromJSON() 主题。参数json ObjectGeoScene 格式实例的 JSON 表示。有关各种输入 JSON 对象的结构示例,请参阅 GeoScene REST API 文档。
返回类型 描述 * 返回该类的新实例。
-
起始版本:GeoScene Maps SDK for JavaScript 4.25
-
如果存在指定的句柄组,则返回 true。
参数groupKey *optional组键。
返回类型 描述 Boolean 如果存在指定的句柄组,则返回 true
。示例// Remove a named group of handles if they exist. if (obj.hasHandles("watch-view-updates")) { obj.removeHandles("watch-view-updates"); }
-
removeHandles(groupKey)inherited起始版本:GeoScene Maps SDK for JavaScript 4.25
-
移除对象拥有的句柄组。
参数groupKey *optional要移除的组键或组键的数组或集合。
示例obj.removeHandles(); // removes handles from default group obj.removeHandles("handle-group"); obj.removeHandles("other-handle-group");
-
toJSON(){Object}
-
将此类的实例转换为 GeoScene Portal JSON 表示。有关详细信息,请参阅使用 fromJSON() 指南主题。
返回类型 描述 Object 此类实例的 GeoScene Portal JSON 表示。