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 API 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
可选

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

属性概述

可以设置、检索或侦听任何属性。请参阅使用属性 主题。
隐藏继承的属性 显示继承的属性
名称 类型 描述
布尔值更多信息

指定折线标签是否可以超出被标注的要素。

更多信息LabelClass
String更多信息

类的名称。

更多信息Accessor
String更多信息

定义标签应如何相对于彼此放置。

更多信息LabelClass
String更多信息

定义 MapImageLayer 的标签。

更多信息LabelClass
Object更多信息

定义 FeatureLayer 的标签。

更多信息LabelClass
String更多信息

标签的位置。

更多信息LabelClass
String更多信息

指定折线标签的标签位置的方向。

更多信息LabelClass
整数更多信息

标签在视图中可见的最大比例(放大幅度最大)。

更多信息LabelClass
整数更多信息

标签在视图中可见的最大比例(放大幅度最大)。

更多信息LabelClass
布尔值更多信息

指示是否沿折线要素重复标注。

更多信息LabelClass
整数更多信息

折线上标签之间距离的大小(以磅为单位)。

更多信息LabelClass
TextSymbol|LabelSymbol3D更多信息

定义用于渲染标注的符号。

更多信息LabelClass
布尔值更多信息

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

更多信息LabelClass
String更多信息

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

更多信息LabelClass

属性详情

allowOverrun Boolean
起始版本:GeoScene API for JavaScript 4.22

指定折线标注是否可以覆盖正在标注的要素。例如,在折线段结束之后。

已知限制

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

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

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

deconflictionStrategy String
起始版本:GeoScene API 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。

属性:
value String
已弃用起始版本 4.5。请改用 expression
可选

定义标签文本内容的 SQL 表达式。

expression String

遵循 Arcade label Profile 定义的规范的 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

已知限制

  • 目前,如果标签在 3D 场景视图中具有线标注垂直偏移,则仅支持above-center
  • 标注放置仅适用于 3D 场景视图中的图层。
  • 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"

默认值:null
另请参阅:
示例:
labelClass.labelPlacement = "above-right";
labelPosition String
起始版本:GeoScene API for JavaScript 4.22

指定折线标签的标签位置的方向。如果 "curved",这意味着字符遵循折线的曲线,而"parallel" 意味着字符将始终是直的,并且方向将基于折线曲线在标签位置处的角度。

已知限制

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

可能值:"curved"|"parallel"

默认值:"curved"
maxScale Number

标签在视图中可见的最大比例(放大幅度最大)。值为 0 时,表示标签的可见性没有最大比例。maxScale 值应始终小于 minScale 值,并且大于或等于服务规范。

默认值:0
minScale Number

标签在视图中可见的最大比例(放大幅度最大)。值为 0 时,表示标签的可见性没有最小比例。minScale 应始终大于 maxScale 值,并且小于或等于服务规范。

默认值:0
repeatLabel Boolean
起始版本:GeoScene API for JavaScript 4.22

指示是否沿折线要素重复标注。如果为 true,标签将根据 repeatLabelDistance 重复。如果为 false,则标签将在每个折线段显示一次。

已知限制

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

默认值:true
repeatLabelDistance Numberautocast
Autocasts from Number|String
起始版本:GeoScene API for JavaScript 4.22

折线上标签之间距离的大小(以磅为单位)。该值可以使用以点或像素表示大小的字符串进行自动转换(例如 100, "64pt""128px")。repeatLabel 属性必须为 true 才能使用此属性。

已知限制

  • 目前,此属性仅适用于 2D MapViews 中的折线要素图层、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')";

方法概述

名称 返回类型 描述
LabelClass更多信息

创建 LabelClass 的深层克隆。

更多信息LabelClass
*更多信息

创建此类的新实例,并使用从 GeoScene 产品生成的 JSON 对象中的值对其进行初始化。

更多信息LabelClass
Object更多信息

将此类的实例转换为其 GeoScene portal JSON 表示形式。

更多信息LabelClass

方法详情

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 文档

返回:
类型 说明
* 返回此类的新实例。
toJSON(){Object}

将此类的实例转换为其 GeoScene portal JSON 表示形式。有关更多信息,请参阅 使用 fromJSON() 主题。

返回:
类型 说明
Object 此类示例的 GeoScene portal JSON 表现形式。

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.