Sublayer

AMD: require(["geoscene/layers/support/Sublayer"], (Sublayer) => { /* 代码 */ });
ESM: import Sublayer from "@geoscene/core/layers/support/Sublayer";
类: geoscene/layers/support/Sublayer
继承于: Sublayer Accessor
起始版本: GeoScene API for JavaScript 4.22

表示 MapImageLayer 或 TileLayer 中的子图层。 MapImageLayer 允许您根据地图服务中定义的数据显示、查询和分析图层。 地图服务包含具有诸如渲染器标签信息和 definitionExpression 等属性的子图层,以及在服务器上定义的其他属性。 地图服务上每个 MapImageLayer 子图层的属性可以由用户或开发人员动态更改。 每个 TileLayer 子图层的属性都是只读的,不能修改。

已知限制

动态图层

子图层可以动态渲染为动态图层。动态图层是使用子图层的 source 属性创建的。动态图层有两种类型:动态地图图层动态数据图层

动态地图图层允许您使用新的渲染器、定义表达式、不透明度、比例可见性等覆盖地图服务中的子图层。单个地图服务图层可能存在多个动态地图图层。

动态数据图层提供了从已注册工作空间内的数据动态创建子图层的功能。数据可以是具有或不具有几何、要素类或栅格的表。这些数据源对服务目录不直接可见,但可以使用 GeoScene 服务器管理器进行发布和配置。表中的数据可以连接到其他表或动态地图图层。

示例:
示例代码:
// 定义地图服务中各种子图层的属性
let layer = new MapImageLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer", sublayers: [ { // 在子图层 3 上设置定义表达式
id: 3, definitionExpression: "pop2000 > 40000000" }, { // 子图层 2 将按照地图服务中的定义进行渲染
id: 2 }, { // 子图层 1 将包含在图层中,可见性关闭
id: 1, visible: false }, { // 子图层 0 将在动态视图中应用新的渲染器和标签表达式 id: 0, renderer: { type: "class-breaks" // 转换成 new ClassBreaksRenderer() // 在此处设置渲染器属性
}, labelingInfo: [ new LabelClass ( ... ) ] } ] });

构造函数

new Sublayer(properties)
参数:
properties Object
optional

所有可传入构造函数的属性,请参见属性列表

示例代码:
// 典型用法
let layer = new MapImageLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer", sublayers: [ // 转换成 a Collection of Sublayers { // 在子图层 0 上设置定义表达式
id: 0, definitionExpression: "pop2000 > 40000000" }, { // 创建动态数据层
source: { type: dynamic-layer, dataSource: { type: "table", workspaceId: "MyDatabaseWorkspaceIDSSR2", dataSourceName: "ss6.gdb.Railroads" } } } ] });

属性列表

可以设置、检索或监听的属性。参见 使用属性
展示继承属性 隐藏继承属性
属性 类型 描述
String更多信息

类名。

更多信息Accessor
String更多信息

用于筛选图像中要素的 SQL where 子句。

更多信息Sublayer
Field[]更多信息

子图层中的字段数组。

更多信息Sublayer
FieldsIndex更多信息

一个方便的属性,可用于按名称对字段进行不区分大小写的查找。

更多信息Sublayer
LayerFloorInfo更多信息

如果地图图像图层包含可识别楼层的子图层,则该子图层必须具有 floorInfo 属性,其中包含一个 LayerFloorInfo 对象,该对象具有表示 floorField 的字符串属性。

更多信息Sublayer
Extent更多信息

子图层的全图范围。

更多信息Sublayer
Number更多信息

子图层的图层 ID。

更多信息Sublayer
LabelClass[]更多信息

此图层的标签定义,指定为 LabelClass 对象的数组。

更多信息Sublayer
Boolean更多信息

指示子图层的标注在视图中是否可见。

更多信息Sublayer
MapImageLayer|TileLayer更多信息

子图层所属的 MapImageLayer 或 TileLayer

更多信息Sublayer
Boolean更多信息

指示图层是否将包含在图例中。

更多信息Sublayer
String更多信息

指示图层应如何在 LayerList 微件中显示。

更多信息Sublayer
Error更多信息

如果在加载时发生错误,则返回 Error 对象。

更多信息Sublayer
String更多信息

表示加载操作的状态。

更多信息Sublayer
Object[]更多信息

加载时出现的警告列表。

更多信息Sublayer
Number更多信息

图层在视图中可见的最大比例(最大放大)。

更多信息Sublayer
Number更多信息

图层在视图中可见的最小比例(最大程度缩小)。

更多信息Sublayer
String更多信息

包含子层中每个要素的唯一值或标识符的 oidfield的名称。

更多信息Sublayer
Number更多信息

在子图层上设置的不透明度级别,范围为 0.0 - 1.0,其中  0  表示完全透明, 1.0  表示完全不透明。

更多信息Sublayer
Boolean更多信息

表示点击图层中的要素时是否显示弹出窗口。

更多信息Sublayer
PopupTemplate更多信息

子图层的弹出模板。

更多信息Sublayer
Renderer更多信息

要应用于子图层的渲染器。

更多信息Sublayer
DynamicMapLayer|DynamicDataLayer更多信息

一个对象,可用于使用来自地图服务子图层或已注册工作空间的数据创建动态图层。

更多信息Sublayer
Object更多信息

GeoScene REST API 公开的地图服务元数据 JSON。

更多信息Sublayer
Collection<Sublayer>更多信息

如果子图层包含子图层,则此属性是属于具有子图层的给定子图层的 Sublayer 对象的Collection

更多信息Sublayer
String更多信息

用于在 LayerList 和 Legend 微件等位置标识它的子图层的标题。

更多信息Sublayer
String更多信息

包含要素的类型 ID 或子类型的字段的名称。

更多信息Sublayer
FeatureType[]更多信息

在由 GeoScene REST API 公开的要素服务中定义的子类型的数组。

更多信息Sublayer
String更多信息

指向子图层的 REST 端点的 URL。

更多信息Sublayer
Boolean更多信息

指示图层是否在视图中可见。

更多信息Sublayer

属性详细说明

declaredClass Stringreadonly inherited
起始版本: GeoScene API for JavaScript 4.22

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

definitionExpression String

用于过滤图像中要素的 SQL where 子句。 只有满足定义表达式的特征才会显示在View中。 定义表达式可以在子图层加载到视图之前或添加到 MapImageLayer 之后构建时设置。 要查看是否可以使用此属性,请检查 MapImageLayer.capabilities 的  supportsSublayerDefinitionExpression 属性。

示例:
示例代码:
let countiesLyr = layer.sublayers.find(function(sublayer){
  return sublayer.title === "States";
});
countiesLyr.definitionExpression = "STATE = 'Nebraska'"
// 在 MapImageLayer 构造函数中创建子层时添加定义表达式
let layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
  sublayers: [{
    id: 0,
    definitionExpression: "STATE = 'Nebraska'"
  }]
});
// Set a definition expression on the sublayer with ID of 0
layer.findSublayerById(0).definitionExpression = "STATE = 'Nebraska'";
fields Field[]readonly
起始版本: GeoScene API for JavaScript 4.22

子图层中的字段数组。每个字段都表示一个属性,该属性可能包含子图层中每个要素的值。此属性仅在加载子图层后可用。

示例:
示例代码:
// 将第一个子层第一个字段打印到控制台
console.log(mapImageLayer.sublayers.items[0].fields[0]); // 输出: alias: "OBJECTID" defaultValue: undefined description: "the objectid" domain: null editable: false length: -1 name: "objectid" nullable: false type: "oid" valueType: null
fieldsIndex FieldsIndexreadonly
起始版本: GeoScene API for JavaScript 4.22

一个方便的属性,可用于按名称对字段进行不区分大小写的查找。它还可以提供子图层中日期字段的列表。此属性仅在加载子图层后可用。

示例:
示例代码:
// 按名称查找字段,名称不区分大小写
const fieldsIndex = mapImageLayer.sublayers.items[0].fieldsIndex.get("OBjecTID"); // 如果有该名称的字段,请将其打印到控制台
if (fieldsIndex) { console.log("fieldsIndex: ", fieldsIndex); }
起始版本: GeoScene API for JavaScript 4.22

如果地图图像图层包含可识别楼层的子图层,则该子图层必须具有 floorInfo 属性,其中包含一个 LayerFloorInfo 对象,该对象具有表示 floorField 的字符串属性。

fullExtent Extentreadonly
起始版本: GeoScene API for JavaScript 4.22

子图层的全图范围。此属性仅在加载子图层后可用。

示例:
id Number

子图层的图层 ID。如果未在图层上定义source,则此值表示由地图服务定义的子图层的 ID。如果创建 DynamicDataLayer 或 MapDataLayer 并将其添加到子图层的 source 属性中,则此属性的值可以是开发人员设置的任何值。

示例:
示例代码:
// 创建一个 MapImageLayer 实例,其中仅包含下面定义的子图层。
let layer = new MapImageLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer", // 该服务有四个子层,但我们只包含三个。
sublayers: [ { id: 2 }, { id: 1 }, { id: 0 } ] });
// 创建一个 MapImageLayer 实例,其中仅包含下面定义的子图层。
let layer = new MapImageLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer", sublayers: [{ // 在这个子层上设置一个新的渲染器
id: 2, renderer: { type: "class-breaks" // 转换成 new ClassBreaksRenderer() // 在此处设置渲染器属性
} }, { // 在子层上设置新的标签信息
id: 1, labelingInfo: [ new LabelClass( ... ) ] }, { // 保留服务定义的属性,但使子层不可见
id: 0, visible: false }] });
labelingInfo LabelClass[]

此图层的标注定义,指定为 LabelClass 对象数组。使用此属性可以为图层指定标注属性,例如标注表达式、放置位置和大小。

示例:
示例代码:
let layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
  sublayers: [{
    id: 3,
    labelsVisible: true,
    // labelingInfo 自动转换为 LabelClass 对象数组
labelingInfo: [{ labelExpression: "[name]", labelPlacement: "always-horizontal", symbol: { type: "text", // 转换成 new TextSymbol() color: [255, 255, 255, 0.7], haloColor: [0, 0, 0, 0.85], haloSize: 1, font: { size: 11 } }, minScale: 2400000, maxScale: 73000 }] }] });
labelsVisible Boolean

指示子图层的标注在视图中是否可见。

默认值:true
示例:
示例代码:
// 打开为子图层 0 定义的标签
layer.findSublayerById(0).labelsVisible = true;

子图层所属的 MapImageLayer 或 TileLayer

legendEnabled Boolean

指示图层是否将包含在图例中。 当为  false时,图层将从图例中排除。

默认值:true
listMode String
起始版本: GeoScene API for JavaScript 4.22

指示图层应如何在 LayerList 微件中显示。 下面列出了可能的值。

描述
show 该图层在内容列表中可见。
hide 该图层在内容列表中不可见。
hide-children 从内容列表中隐藏子图层。

可选值:"show"|"hide"|"hide-children"

默认值:show
loadError Errorreadonly

如果在加载时发生错误,则返回 Error 对象。

默认值:null
loadStatus Stringreadonly

表示加载操作的状态。

描述
not-loaded 该对象的资源尚未加载。
loading 该对象的资源正在加载。
loaded 该对象的资源已正确加载。
failed 对象的资源加载失败。 有关详细信息,请参阅 loadError

可选值:"not-loaded"|"loading"|"failed"|"loaded"

默认值:not-loaded
loadWarnings Object[]readonly

加载时出现的警告列表。

maxScale Number

图层在视图中可见的最大比例(最大放大)。 如果地图放大超过此比例,则图层将不可见。 0 的值表示图层没有最大比例。 maxScale 值应始终小于 minScale 值,并且大于或等于服务规范。

示例:
示例代码:
let layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
  sublayers: [
    {
      id: 0,
      minScale: 5000000,
      maxScale: 24000
    },
    {
      id: 1
      minScale: 24000,
      maxScale: 100
    }
  ]
});
minScale Number

图层在视图中可见的最小比例(最大缩小)。如果地图缩小超过此比例,图层将不可见。值 0 表示图层不可见 没有最小比例。minScale 值应始终大于 maxScale 值,并且小于或等于服务规范。

示例:
示例代码:
let layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
  sublayers: [
    {
      id: 0,
      minScale: 5000000,
      maxScale: 24000
    },
    {
      id: 1,
      minScale: 24000,
      maxScale: 100
    }
  ]
});
objectIdField Stringreadonly
起始版本: GeoScene API for JavaScript 4.22

包含子层中每个要素的唯一值或标识符的 oid field的名称。

示例:
opacity Number

在子图层上设置的不透明度级别,范围为 0.0 - 1.0,其中 0 表示完全透明,1.0 表示完全不透明。 如果设置了 MapImageLayer.opacity,则子图层的实际不透明度值将是 MapImageLayer.opacity 的值乘以子图层的不透明度。 

示例:
示例代码:
// 将图层的不透明度设置为 0.5
layer.findSublayerById(0).opacity = 0.5;
popupEnabled Boolean
起始版本: GeoScene API for JavaScript 4.22

指示单击图层中的要素时是否显示popupTemplate。 该层需要有一个 popupTemplate 来定义应该在弹出窗口中显示哪些信息。 或者,如果 Popup.defaultPopupTemplateEnabled 设置为  true,则可以自动使用默认弹出模板。

默认值:true
popupTemplate PopupTemplate

子图层的弹出模板。 设置后,popupTemplate 允许用户访问属性并在用户单击图像时在视图的弹出窗口中显示其值。

无法查询带有 RasterDataSource 的子图层,因此不支持 PopupTemplate

或者,如果 Popup.defaultPopupTemplateEnabled 设置为  true,则可以自动使用默认弹出模板。

已知限制

  • 在 MapImageLayer 子图层或 TileLayer 子图层上设置的 PopupTemplates 中不支持 Arcade 表达式,除非它们引用从 GeoScene Pro 创建的 GeoScene Enterprise 2.0 地图服务(或更高版本)。
示例:
示例代码:
let layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
  sublayers: [{
    id: 0,
    popupTemplate: {
      title: "{COUNTY}",
      content: "{POP2007} people lived in this county in 2007"
    }
  }]
});
renderer Rendererautocast

应用于子层的渲染器。 此值会覆盖从地图服务读取的渲染器。 要查看是否可以使用此属性,请检查 MapImageLayer.capabilities 的  supportsDynamicLayers属性。

已知限制

  • 在子图层上设置的渲染器中当前不支持 3D 符号
  • 在 MapImageLayer 子图层上设置的渲染器中不支持可视变量和 Arcade 表达式,除非它们引用了从 GeoScene Pro 创建的 GeoScene Enterprise 2.0 地图服务(或更高版本)。
示例:
示例代码:
let layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
  sublayers: [{
    id: 0,
    renderer: {
      type: "simple",  // 转换成 new SimpleRenderer()
      symbol: {
        type: "simple-marker",  // 转换成 new SimpleMarkerSymbol()
        color: "black",
        size: 8
      }
    }
  }]
});

一个对象,可用于使用来自地图服务子图层或已注册工作空间的数据创建动态图层。有关从地图服务图层创建动态图层以进行动态渲染、标注和过滤(定义表达式)的信息,请参阅 DynamicMapLayer。要从已注册工作空间中的其他源(如表和表连接)创建动态图层,请参阅DynamicDataLayer 

示例代码:
// 创建两个指向同一地图服务图层的子图层。
// 每一层使用定义表达式和渲染器渲染数据中的不同要素。 let mapImageLayer = new MapImageLayer({ sublayers: [{ id: 10, definitionExpression: "POP < 100000", renderer: { type: "simple", // 转换成 new SimpleRenderer() symbol: smallMarker }, source: { type: "map-layer", mapLayerId: 0 } }, { id: 11, definitionExpression: "POP > 100001", renderer: { type: "simple", // 转换成 new SimpleRenderer() symbol: largeMarker }, source: { type: "map-layer", mapLayerId: 0 } }] });
sourceJSON Object
起始版本: GeoScene API for JavaScript 4.22

地图服务的元数据 JSON 由 GeoScene REST API 公开。虽然最常用的属性直接显示在 Sublayer 类上,但此属性可用于访问地图服务返回的所有信息。如果在使用较旧版本的 API 构建的应用程序(需要从较新版本访问地图服务属性)中工作,则此属性很有用。

sublayers Collection<Sublayer>

如果子图层包含子图层,则此属性是属于具有子图层的给定子图层的 Sublayer 对象的Collection

示例代码:
// 用于确定 MapImageLayer 子层是否包含至少一个动态数据层的测试函数
function hasDynamicDataLayer (layer){
  if (layer.sublayers && layer.sublayers.sublayers){
    return layer.sublayers.sublayers.some(function(sublayer){
      return sublayer.source.type === "data-layer";
    });
  } else {
    console.log("layer does not have sublayers or nested sublayers");
    return false;
  }
}
title String

用于在 LayerList 和 Legend 微件等位置标识它的子图层的标题。 该值可以在地图服务中定义,也可以由开发人员以编程方式定义。 它对于查找特定的子层也很有用。

示例代码:
let radarSublayer = layer.sublayers.find(function(sublayer){
  return sublayer.title === "radar";
});
typeIdField Stringreadonly
起始版本: GeoScene API for JavaScript 4.22

包含要素的类型 ID 或子类型的字段的名称。此属性仅在加载子图层后可用。

示例:
types FeatureType[]readonly
起始版本: GeoScene API for JavaScript 4.22

在由 GeoScene REST API 公开的要素服务中定义的子类型的数组。每个项都包含有关类型的信息,如类型 ID、名称和定义表达式。此属性仅在加载子图层后可用。

示例:
url String

指向子图层的 REST 端点的 URL。这允许您查看位于已注册工作区中的字段和查询表的架构。

visible Boolean

指示图层在视图中是否可见。 要查看是否可以使用此属性,请检查 MapImageLayer.capabilities supportsSublayerVisibility 属性。

示例:
示例代码:
let layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
  sublayers: [{
    // 该子图层默认可见
id: 0 }, { // 此子图层将添加到图层但不可见
id: 1, visible: false }] // 服务中的所有其他子图层都被排除在图层之外
});

方法列表

属性 返回值类型 描述
更多信息

如果 load() 操作已经在进行中,则取消它。

更多信息Sublayer
Sublayer更多信息

创建子图层的深度克隆。

更多信息Sublayer
Promise<FeatureLayer>更多信息

一种基于子图层的配置(包括动态源)创建 FeatureLayer 实例的便捷方法。

更多信息Sublayer
PopupTemplate更多信息

为子图层创建弹出模板,并使用子图层的所有字段进行填充。

更多信息Sublayer
Query更多信息

使用表示图层状态的默认值创建 Query 对象,包括图层要素上的过滤器(定义表达式)。

更多信息Sublayer
FeatureType更多信息

返回描述要素类型的FeatureType

更多信息Sublayer
Domain更多信息

返回与给定字段名称关联的Domain

更多信息Sublayer
Boolean更多信息

isFulfilled() 可用于验证创建类的实例是否已完成(无论成功或失败)。

更多信息Sublayer
Boolean更多信息

isRejected() 可用于验证创建类的实例是否失败。

更多信息Sublayer
Boolean更多信息

isResolved() 可用于验证创建类的实例是否成功。

更多信息Sublayer
Promise更多信息

加载该类引用的资源。

更多信息Sublayer
Promise<FeatureSet>更多信息

对子图层中的要素执行查询

更多信息Sublayer
Promise更多信息

when() 创建类的实例后,会被执行一次。

更多信息Sublayer

方法详细说明

cancelLoad()

如果 load() 操作已经在进行中,则取消它。

clone(){Sublayer}

创建子图层的深度克隆。

返回值:
类型 描述
Sublayer 调用此方法的子层实例的深度克隆。
createFeatureLayer(){Promise<FeatureLayer>}
起始版本: GeoScene API for JavaScript 4.22

一种基于子图层的配置(包括动态源)创建 FeatureLayer 实例的便捷方法。这允许您利用子图层中不支持的功能图层功能,例如智能制图创建器功能

返回值:
类型 描述
Promise<FeatureLayer> 解析为与调用此方法的子图层实例的配置匹配的 FeatureLayer 的promise。
示例:
示例代码:
let sublayer = mapImageLayer.findSublayerById(0);

// 当 createFeatureLayer() promise解析时,加载 FeatureLayer 并将其传递给 createParameters 函数
sublayer.createFeatureLayer()
  .then(function(featureLayer){
    return featureLayer.load();
  })
  .then(createParameters);

function createParameters (featureLayer) {
  let colorParams = {
    layer: featureLayer,
    basemap: map.basemap,
    field: "POPULATION",
    normalizationField: "SQ_MILES",
    legendOptions: {
      title: "Population density (sq. miles)"
    }
  };
}

// 当 promise 解析时,将渲染器应用到子图层
colorRendererCreator.createContinuousRenderer(colorParams) .then(function(response){ sublayer.renderer = response.renderer; });
createPopupTemplate(options){PopupTemplate}
起始版本: GeoScene API for JavaScript 4.22

为子图层创建弹出模板,并使用子图层的所有字段进行填充。

参数:
optional

用于创建弹出模板的选项。

返回值:
类型 描述
PopupTemplate 弹出模板,如果图层没有任何字段,则为 null
createQuery(){Query}

使用表示图层状态的默认值创建 Query 对象,包括图层要素上的过滤器(定义表达式)。

返回值:
类型 描述
Query 默认查询对象,包括子图层的定义表达式。
getFeatureType(feature){FeatureType}
起始版本: GeoScene API for JavaScript 4.22

返回描述要素类型的 FeatureType。如果包含要素的图层具有typeIdField则此方法适用。

参数:
feature Graphic

此子图层中的要素。

返回值:
类型 描述
FeatureType 描述要素类型的FeatureType 。
getFieldDomain(fieldName, options){Domain}
起始版本: GeoScene API for JavaScript 4.22

返回与给定字段名称关联的Domain。 Domain可以是 CodedValueDomainRangeDomain

参数:
fieldName String

字段名称。

options Object
optional

指定附加选项的对象。  有关此对象所需的属性,请参阅下面的对象规格表。

规范:
feature Graphic

Domain 被分配到的要素。

返回值:
类型 描述
Domain 与给定要素的给定字段名称相关联的Domain对象。
示例代码:
// 获取从 queryFeatures() 返回的第一个特征关联的范围域。
sublayer.queryFeatures(query).then(function(results){
  const domain = sublayer.getFieldDomain("Height", {feature: results.features[0]});
  console.log("domain", domain)
});
isFulfilled(){Boolean}

isFulfilled() 可用于验证创建类的实例是否已完成(无论成功或失败)。 如果已完成,将会返回true

返回值:
类型 描述
Boolean 指示创建类的实例是否已完成(无论成功或失败)。
isRejected(){Boolean}

isRejected() 可用于验证创建类的实例是否失败。 如果失败, 将会返回 true

返回值:
类型 描述
Boolean 指示是否已拒绝创建类的实例。
isResolved(){Boolean}

isResolved() 可用于验证创建类的实例是否成功。 如果成功, 将会返回 true

返回值:
类型 描述
Boolean 指示是否已解析创建类的实例。
load(signal){Promise}

加载此类引用的资源。 此方法自动为 View 及其在 Map 中引用的所有资源执行 如果视图是用地图实例构造的。

当访问一个不会在View中加载的资源时,开发者必须调用这个方法。

load() 方法仅在第一次调用时触发资源的加载。 随后的调用返回相同的promise。

可以提供一个 signal 来停止对 Loadable 实例加载状态的关注。 当信号中止时,实例不会停止其加载过程,只有 cancelLoad 可以中止它。

参数:
signal AbortSignal
optional

可用于中止异步任务的 Signal 对象。 当发出中止信号时,返回的 Promise 将被一个名为 AbortErrorError 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止 signals 的控制器的更多信息。

返回值:
类型 描述
Promise 资源已加载时解析。
queryFeatures(query, options){Promise<FeatureSet>}

对子图层中的要素执行query。 要查看是否可以使用此属性,请检查 MapImageLayer.capabilities 的  supportsQuery 属性。

参数:
query Query autocast
optional
自动转换自 Object

指定查询的属性和空间过滤器。如果未指定参数,则返回满足图层配置/过滤器的所有要素。

options Object
optional

具有如下属性的对象。

规范:
signal AbortSignal
optional

可用于中止异步任务的 Signal 对象。 当发出中止信号时,返回的 Promise 将被一个名为 AbortErrorError 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止 signals 的控制器的更多信息。

返回值:
类型 描述
Promise<FeatureSet> 返回一个 Promise,该 Promise 解析为包含满足查询的要素的FeatureSet
when(callback, errback){Promise}
起始版本: GeoScene API for JavaScript 4.22

when() 创建类的实例后,会被执行一次。该方法接受两个参数: callback 函数和 errback 函数。 callback 在类的实例加载时执行。 如果类的实例无法加载,则执行 errback

参数:
callback Function
optional

当 Promise 成功时,该函数将被调用。

errback Function
optional

当 Promise 失败时,该函数将被调用。

返回值:
类型 描述
Promise 返回回调结果的新promise,可用于 链接其他函数。
示例代码:
// 尽管此示例使用 MapView,但任何作为 Promise 的类实例都可以以相同的方式使用 when()
let view = new MapView();
view.when(function(){
  // 当 Promise resolved 时,函数将被执行
}, function(error){
  // 当 Promise 通过 rejected 抛错时,这个函数将被执行
});

类型定义

DynamicDataLayer

动态数据层是使用存储在已注册工作区中的数据动态创建的层。这是可以动态渲染和查询的数据,但不会显式显示为服务子层。根据数据源的类型,这些图层分为以下之一:

数据源 描述
TableDataSource 具有几何的要素类或不带几何的表。当表数据源不包含几何图形时,它可以用作联接操作中的源之一。要素类表可以单独使用,因为它们包含几何字段。
QueryTableDataSource 可以使用 SQL where 子句动态查询的要素类或表。此数据源适用于以下情况:您的表包含唯一几何图形,而另一个表具有与每个几何图形匹配的多个记录。可以使用 QueryTableDataSource 仅选择这些匹配记录的子集(因此两个表中的记录彼此之间具有一对一关系),并将它们联接到具有几何图形的表中。
RasterDataSource 仅用于可视化目的的栅格数据集。
JoinTableDataSource 此数据源由两个由公共属性或键连接的数据源组成。左表数据源通常包含几何图形,而右表数据源可能是没有几何图形的表或查询表。
属性:
type String

此值始终是 data-layer ,并在设置 dataSource属性时推断。

该值通常是 "data-layer".

驻留在已注册工作空间(文件夹或地理数据库)中的表、要素类或栅格。默认情况下,数据源在"服务目录"中不可见。可以使用 GeoScene 服务器管理器查看、发布和配置它们。

fields Object[]

控制图层中的字段可见性。 只有指定的字段是可见的。 如果为  null,则所有字段在动态层中都是可见的。 下面提供了字段对象的规范。

规范:
name String

字段的名称。

alias String

字段的别名。

示例:
示例代码:
let layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer",
  sublayers: [{
    id: 0,
    renderer: renderer,
      opacity: 0.9,
      source: {
        type: "data-layer",
        dataSource: {
          type: "join-table",
          leftTableSource: {
            type: "map-layer",
            mapLayerId: 3
          },
          rightTableSource: {
            type: "data-layer",
            // 引用已注册工作空间中没有几何图形的表
dataSource: { type: "table", workspaceId: "CensusFileGDBWorkspaceID", dataSourceName: "ancestry" } }, leftTableKey: "STATE_NAME", rightTableKey: "State", joinType: "left-outer-join" } } } ] });
DynamicMapLayer

动态地图图层是指在启用了动态图层的地图服务中发布的图层。此图层类型可用于创建指向同一服务图层的多个子图层,但会为其分配不同的定义表达式、渲染器和其他属性。

属性:
type String

此值始终为 map-layer ,并在设置  mapLayerId属性时推断。

该值通常是 "map-layer".

mapLayerId Number

服务子图层的 id

gdbVersion String

用于指定 GDB 版本的可选属性。

示例:
示例代码:
// 创建两个指向同一地图服务图层的子图层。
// 每一层使用定义表达式和渲染器渲染数据中的不同要素。 let mapImageLayer = new MapImageLayer({ sublayers: [{ id: 10, definitionExpression: "POP < 50000", renderer: { type: "class-breaks" // 转换成 new ClassBreaksRenderer() // 在此处设置渲染器属性
}, source: { type: "map-layer", mapLayerId: 0 } }, { id: 11, definitionExpression: "GRADUATED_HS > 0.449", renderer: { type: "class-breaks" // 转换成 new ClassBreaksRenderer() // 在此处设置渲染器属性
}, source: { type: "map-layer", mapLayerId: 0 } }] });
JoinTableDataSource

运行时即时连接操作的结果。 支持嵌套连接。 要使用嵌套连接,请将  leftTableSource 或  rightTableSource 设置为 join-table

属性:
type String

此值始终为 join-table ,并在设置此对象的其他连接表属性时推断。

该值通常是 "join-table".

leftTableKey String

用于将左表中的记录联接或匹配到右表中的记录的字段名称。

rightTableKey String

用于将右表中的记录联接或匹配到左表中的记录的字段名称。

用于联接到右表源的左表。这可以是动态地图图层或动态数据图层。动态数据层可能包含另一个用于嵌套联接的联接数据源。

用于联接到左表源的右表。这可以是动态地图图层或动态数据图层。动态数据层可能包含另一个用于嵌套联接的联接数据源。

joinType String

将执行的连接类型。

可选值描述
left-outer-join左表源中的不匹配记录被保留并与右表源中的 null 连接。
left-inner-join如果左表源中的记录与右表源中的记录不匹配,则将丢弃这些记录。

可选值:"left-outer-join"|"left-inner-join"

示例:
示例代码:
let layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer",
  sublayers: [{
    id: 0,
    renderer: renderer,
    opacity: 0.9,
    source: {
      type: "data-layer",
      dataSource: {
        type: "join-table",
        leftTableSource: {
          type: "map-layer",
          mapLayerId: 3
        },
        rightTableSource: {
          type: "data-layer",
          dataSource: {
            type: "table",
            workspaceId: "CensusFileGDBWorkspaceID",
            dataSourceName: "ancestry"
          }
        },
        leftTableKey: "STATE_NAME",
        rightTableKey: "State",
        joinType: "left-outer-join"
      }
    }
  }]
});
QueryTableDataSource

查询表是由 SQL 查询动态定义的要素类或表。查询图层允许将存储在数据库中的空间和非空间信息轻松集成到地图服务操作中。由于查询表使用 SQL 直接查询数据库表和视图,因此查询表使用的空间信息不需要位于地理数据库中。

此数据源适用于以下情况:表包含多个记录,这些记录与另一个表或地图服务图层中的单个几何匹配。可以使用 QueryTableDataSource 仅选择这些匹配记录的子集,并将它们联接到具有几何图形的表中,以便两个表中的记录彼此具有一对一的关系。

属性:
type String

此值始终是 query-table ,并在设置此对象的 query属性时推断。

该值通常是 "query-table".

workspaceId String

数据所在的工作区(在 GeoScene 服务器管理器中定义)。

query String

用于筛选记录的 SQL 查询。

oidFields String

包含表中每条记录的唯一 ID 的字段名称。如果在 JoinTableDataSource 中使用查询表,则可以将此列表设置为逗号分隔的列表。

spatialReference SpatialReference

表源中每个要素的几何的空间参考。

geometryType String

表中每条记录的几何类型。

可选值:"point"|"multipoint"|"polyline"|"polygon"|"multipatch"

示例:
示例代码:
let layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
  sublayers: [{
    title: "Places",
    renderer: renderer,
    source: {
      type: "data-layer",
      dataSource: {
        type: "query-table",
        workspaceId: "MyDatabaseWorkspaceIDSSR2",
        query: "SELECT * FROM ss6.gdb.Places",
        oidFields: "objectid"
      }
    }
  }]
});
RasterDataSource

驻留在已注册栅格工作空间中的基于文件的栅格。栅格只能显示在视图中,不能查询或分配渲染器。

属性:
type String

值始终是 raster.

该值通常是 "raster".

workspaceId String

栅格所在的工作空间,如 GeoScene 服务器管理器中所定义。

dataSourceName String

已注册工作空间中栅格的名称。

示例:
示例代码:
let layer = new MapImageLayer({
  url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Elevation/GlacierBay/MapServer",
  sublayers: [{
    title: "slope",
    opacity: 0.75,
    source: {
      type: "data-layer",
      dataSource: {
        type: "raster",
        workspaceId: "MyDatabaseWorkspaceIDSSR2",
        dataSourceName: "slope.tiff"
      }
    }
  }]
});
TableDataSource

驻留在已注册工作空间(文件夹或地理数据库)中的表或要素类。 对于地理数据库,如果版本化,则使用 version 切换到备用地理数据库版本。

属性:
type String

值始终是 table.

workspaceId String

表所在的工作空间,如 GeoScene 服务器管理器中所定义。

dataSourceName String

已注册工作区中表的名称。

gdbVersion String

如果地理数据库中存在多个版本,则引用地理数据库版本。

示例:
示例代码:
let layer = new MapImageLayer({
   url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
   sublayers: [{
     renderer: renderer,
     source: {
       type: "data-layer",
       dataSource: {
         type: "table",
         workspaceId: "MyDatabaseWorkspaceIDSSR2",
         dataSourceName: "ss6.gdb.Railroads"
       }
     }
   }]
 });

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