LabelClass

AMD: require(["geoscene/layers/support/LabelClass"], (LabelClass) => { /* code goes here */ });
ESM: import LabelClass from "@geoscene/core/layers/support/LabelClass";
类: geoscene/layers/support/LabelClass
继承于:LabelClass Accessor
起始版本:GeoScene Maps SDK for JavaScript 4.0

定义图层上标注的标注表达式、符号、比例范围、标注优先级和标注放置选项。有关标注的详细信息,请参阅标注指南

已知限制

另请参阅
示例
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]
});

构造函数

new LabelClass(properties)
参数
properties Object
optional

有关可能传递给构造函数的所有属性的列表,请参见属性

属性概述

可以设置、检索或侦听任何属性。请参阅使用属性主题。
显示继承属性 隐藏继承属性
名称 类型 描述
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

指示如果 labelExpressionlabelExpressionInfo 中的字段具有域,是否使用域名。

更多详情
LabelClass
String

SQL where 子句,用于确定应应用标注类的要素。

更多详情
LabelClass

属性详细信息

allowOverrun Boolean
起始版本:GeoScene Maps SDK for JavaScript 4.22

指定折线标注是否可以超出被标注的要素。例如,在折线段结束之后。

已知限制

目前,此属性仅适用于 2D MapViews 中的折线 FeatureLayer、CSVLayer 和 StreamLayer。

默认值:false
declaredClass Stringreadonly inherited
起始版本:GeoScene Maps SDK for JavaScript 4.7

类的名称。声明的类名称格式化为 geoscene.folder.className

deconflictionStrategy String
起始版本:GeoScene Maps SDK for JavaScript 4.16

定义标注应如何相对于彼此放置。默认情况下,标注具有 static 消除冲突策略,这意味着将丢弃重叠标注以使其更易于阅读。

在某些标注重叠很少的情况下,最好使用 none 选项关闭标注消除冲突。在聚类中心使用要素计数标注聚类时,建议关闭消除冲突。

下图展示了您何时希望或不希望消除标注冲突。

当标记密集图层时,默认的冲突消除策略 (static) 更可取,因为标记所有要素会导致显著的重叠,使标注难以辨认。保持默认设置允许渲染一些标注。随着用户放大,所有标注最终都将显示。

静态 (默认)
layer-deconfliction-on layer-deconfliction-off

使用小型标注标记聚类 (甚至是稀疏分布的要素) 时,最好允许标注略微重叠,因为信息仍然清晰可辨,并不会明显遮挡可视化效果。在聚类场景中,static 的标注消除冲突设置实际上可能会导致更多的混乱,使某些要素看起来不是聚类。

静态 (默认)
cluster-deconfliction-on cluster-deconfliction-off

已知限制

目前,此属性仅适用于 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
optional

标注表达式的标题。这在多个标注类别的情况下特别有用。

默认值:null
另请参阅
示例
// For Spokane County, WA, label will display: "Spokane County, Washington"
labelClass.labelExpressionInfo = {
  expression: "$feature.COUNTY_NAME + ' County, ' + $feature.STATE_NAME"
};
labelPlacement String

标注的位置。可能的值取决于要素类型。此属性需要一个值。

要素类型 可能值
above-centerabove-leftabove-rightbelow-centerbelow-leftbelow-rightcenter-centercenter-leftcenter-right
折线 above-afterabove-alongabove-beforeabove-startabove-endbelow-afterbelow-alongbelow-beforebelow-startbelow-endcenter-aftercenter-alongcenter-beforecenter-startcenter-end
always-horizontal

已知限制

  • 目前,如果标注在 3D SceneView 中具有线指示垂直偏移,则仅支持 above-center
  • 标注放置仅适用于 3D SceneView 中的图层。
  • FeatureLayer Polylines 仅支持 2D MapViews 中的 center-along 标注放置。

可能值"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" 意味着字符始终是直的,并且方向将基于折线曲线在标注位置处的角度。

已知限制

  • 目前,此属性仅适用于 2D MapViews 中的折线 FeatureLayer、CSVLayer 和 StreamLayer。
  • 目前,此属性无法保存为 WebMap 的一部分。

可能值"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
repeatLabelDistance Numberautocast
自动转换自 Number|String
起始版本: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

指示如果 labelExpressionlabelExpressionInfo 中的字段具有域,是否使用域名。

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 Object

GeoScene 格式实例的 JSON 表示。有关各种输入 JSON 对象的结构示例,请参阅 GeoScene REST API 文档

返回
类型 描述
* 返回该类的新实例。
hasHandles(groupKey){Boolean}inherited
起始版本: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 表示。

您的浏览器不再受支持。请升级您的浏览器以获得最佳体验。请参阅浏览器弃用帖子以获取更多信息