Sublayer

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

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

已知限制

以下限制适用于与 ArcMap 一起发布或发布到 GeoScene Server 1.5.1 或更早版本的所有地图服务的子图层:

动态图层

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

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

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

另请参阅
示例
// defines the properties of various sublayers in a map service
let layer = new MapImageLayer({
  url: "https://sampleserver.geosceneonline.cn/geoscene/rest/services/sample/MapServer",
  sublayers: [
    {  // sets a definition expression on sublayer 3
      id: 3,
      definitionExpression: "pop2000 > 40000000"
    },
    {  // sublayer 2 will be rendered as defined in the map service
      id: 2
    },
    {  // sublayer 1 will be included in the layer, with visibility off
      id: 1,
      visible: false
    },
    {  // sublayer 0 will have new renderer and label
       // expressions applied in the view on the fly
      id: 0,
       renderer: {
         type: "class-breaks"  // autocasts as new ClassBreaksRenderer()
         // set renderer properties here
       },
       labelingInfo: [ new LabelClass ( ... ) ]
     }
   ]
});

构造函数

new Sublayer(properties)
参数
properties Object
optional

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

示例
// typical usage
let layer = new MapImageLayer({
  url: "https://sampleserver.geosceneonline.cn/geoscene/rest/services/sample/MapServer",
  sublayers: [  // autocasts as a Collection of Sublayers
    { // sets a definition expression on sublayer 0
      id: 0,
      definitionExpression: "pop2000 > 40000000"
    },
    {  // creates a dynamic data layer
      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

子图层所属的 MapImageLayerTileLayer

更多详情
Sublayer
Boolean

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

更多详情
Sublayer
String

指示图层在 LayerList 微件中的显示方式。

更多详情
Sublayer
Error

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

更多详情
Sublayer
String

表示 load 操作的状态。

更多详情
Sublayer
Object[]

加载时发生的警告列表。

更多详情
Sublayer
Number

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

更多详情
Sublayer
Number

图层在视图中可见时的最小比例 (缩至最小)。

更多详情
Sublayer
String

oid 字段的名称,其中包含子图层中每个要素的唯一值或标识符。

更多详情
Sublayer
Number

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

更多详情
Sublayer
Boolean

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

更多详情
Sublayer
PopupTemplate

子图层的弹出模板。

更多详情
Sublayer
渲染器

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

更多详情
Sublayer
DynamicMapLayer|DynamicDataLayer

此对象允许您使用来自地图服务子图层的数据或来自注册工作空间的数据创建动态图层。

更多详情
Sublayer
Object

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

更多详情
Sublayer
Collection<Sublayer>

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

更多详情
Sublayer
String

用于在某些地方标识它的子图层标题,例如 LayerListLegend 微件。

更多详情
Sublayer
String

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

更多详情
Sublayer
FeatureType[]

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

更多详情
Sublayer
String

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

更多详情
Sublayer
Boolean

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

更多详情
Sublayer

属性详细信息

declaredClass Stringreadonly inherited
起始版本:GeoScene Maps SDK for JavaScript 4.7

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

definitionExpression String

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

示例
let countiesLyr = layer.sublayers.find(function(sublayer){
  return sublayer.title === "States";
});
countiesLyr.definitionExpression = "STATE = 'Nebraska'"
// add a definition expression to sublayer when
// it is created in MapImageLayer constructor
let layer = new MapImageLayer({
  url: "https://sampleserver.geosceneonline.cn/geoscene/rest/services/sample/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 Maps SDK for JavaScript 4.15

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

另请参阅
示例
// print the first Sublayer's first field to the console
console.log(mapImageLayer.sublayers.items[0].fields[0]);

// OUTPUT:
alias: "OBJECTID"
defaultValue: undefined
description: "the objectid"
domain: null
editable: false
length: -1
name: "objectid"
nullable: false
type: "oid"
valueType: null
fieldsIndex FieldsIndexreadonly
起始版本:GeoScene Maps SDK for JavaScript 4.15

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

另请参阅
示例
// lookup a field by name, name is case-insensitive
const fieldsIndex = mapImageLayer.sublayers.items[0].fieldsIndex.get("OBjecTID");

// if there's a field by that name, print it to the console
if (fieldsIndex) {
  console.log("fieldsIndex: ", fieldsIndex);
}
起始版本:GeoScene Maps SDK for JavaScript 4.21

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

fullExtent Extentreadonly
起始版本:GeoScene Maps SDK for JavaScript 4.15

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

另请参阅

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

示例
// Creates a MapImageLayer instance containing only the sublayers defined below.
let layer = new MapImageLayer({
  url: "https://sampleserver.geosceneonline.cn/geoscene/rest/services/sample/MapServer",
  // this service has four sublayers, but we're only going to include three.
  sublayers: [ { id: 2 }, { id: 1 }, { id: 0 } ]
});
// Creates a MapImageLayer instance containing only the sublayers defined below.
let layer = new MapImageLayer({
  url: "https://sampleserver.geosceneonline.cn/geoscene/rest/services/sample/MapServer",
  sublayers: [{ // sets a new renderer on this sublayer
    id: 2,
    renderer: {
      type: "class-breaks"  // autocasts as new ClassBreaksRenderer()
      // set renderer properties here
    }
  }, { // sets new labelingInfo on the sublayer
    id: 1,
    labelingInfo: [ new LabelClass( ... ) ]
  }, { // retains properties defined by the service, but makes sublayer not visible
    id: 0,
    visible: false
  }]
});
labelingInfo LabelClass[]

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

示例
let layer = new MapImageLayer({
  url: "https://sampleserver.geosceneonline.cn/geoscene/rest/services/sample/MapServer",
  sublayers: [{
    id: 3,
    labelsVisible: true,
    // labelingInfo autocasts to an array of LabelClass objects
    labelingInfo: [{
      labelExpression: "[name]",
      labelPlacement: "always-horizontal",
      symbol: {
        type: "text",  // autocasts as 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

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

示例
// turns on labels defined for sublayer 0
layer.findSublayerById(0).labelsVisible = true;

子图层所属的 MapImageLayerTileLayer

legendEnabled Boolean

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

默认值:true
listMode String
起始版本:GeoScene Maps SDK for JavaScript 4.11

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

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

可能值"show"|"hide"|"hide-children"

默认值:show
loadError Errorreadonly

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

默认值:null
loadStatus Stringreadonly

表示 load 操作的状态。

描述
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://sampleserver.geosceneonline.cn/geoscene/rest/services/sample/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://sampleserver.geosceneonline.cn/geoscene/rest/services/sample/MapServer",
  sublayers: [
    {
      id: 0,
      minScale: 5000000,
      maxScale: 24000
    },
    {
      id: 1,
      minScale: 24000,
      maxScale: 100
    }
  ]
});
objectIdField Stringreadonly
起始版本:GeoScene Maps SDK for JavaScript 4.15

oid 字段的名称,其中包含子图层中每个要素的唯一值或标识符。

另请参阅
opacity Number

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

示例
// Set the opacity of the layer to 0.5
layer.findSublayerById(0).opacity = 0.5;
popupEnabled Boolean
起始版本:GeoScene Maps SDK for JavaScript 4.7

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

默认值:true
popupTemplate PopupTemplate

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

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

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

已知限制

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

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

已知限制

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

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

示例
// Creates two sublayers that point to the same map service layer.
// Each layer presents different features in the data using
// definition expressions and renderers.
let mapImageLayer = new MapImageLayer({
  sublayers: [{
    id: 10,
    definitionExpression: "POP < 100000",
    renderer: {
      type: "simple",  // autocasts as new SimpleRenderer()
      symbol: smallMarker
    },
    source: {
      type: "map-layer",
      mapLayerId: 0
    }
  }, {
    id: 11,
    definitionExpression: "POP > 100001",
    renderer: {
      type: "simple",  // autocasts as new SimpleRenderer()
      symbol: largeMarker
    },
    source: {
      type: "map-layer",
      mapLayerId: 0
    }
  }]
});
sourceJSON Object
起始版本:GeoScene Maps SDK for JavaScript 4.15

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

sublayers Collection<Sublayer>

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

示例
// test function for determining if a MapImageLayer's sublayers
// contain at least one dynamic data layer
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

用于在某些地方标识它的子图层标题,例如 LayerListLegend 微件。该值可以在地图服务中定义,也可由开发人员以编程方式定义。它对于查找特定的子图层也很有用。

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

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

另请参阅
types FeatureType[]readonly
起始版本:GeoScene Maps SDK for JavaScript 4.15

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

另请参阅
url String

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

visible Boolean

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

示例
let layer = new MapImageLayer({
  url: "https://sampleserver.geosceneonline.cn/geoscene/rest/services/sample/MapServer",
  sublayers: [{
    // this sublayer is visible by default
    id: 0
  }, {
    // this sublayer will be added to the layer but not visible
    id: 1,
    visible: false
  }]
    // all other sublayers in the service are excluded from the layer
});

方法概述

显示继承的方法 隐藏继承的方法
名称 返回值类值 描述

添加一个或多个与对象的生命周期相关联的句柄。

更多详情
Accessor

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

更多详情
Sublayer
Sublayer

创建子图层的深度克隆。

更多详情
Sublayer
Promise<FeatureLayer>

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

更多详情
Sublayer
PopupTemplate

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

更多详情
Sublayer
Query

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

更多详情
Sublayer
FeatureType

返回描述要素类型的 FeatureType

更多详情
Sublayer
Domain

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

更多详情
Sublayer
Boolean

如果存在指定的句柄组,则返回 true。

更多详情
Accessor
Boolean

isFulfilled() 可用于验证创建类的实例是否已完成 (已解决或已拒绝)。

更多详情
Sublayer
Boolean

isRejected() 可用于验证创建类的实例是否被拒绝。

更多详情
Sublayer
Boolean

isResolved() 可用于验证创建类的实例是否已解决。

更多详情
Sublayer
Promise

加载此类引用的资源。

更多详情
Sublayer
Promise<FeatureSet>

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

更多详情
Sublayer

移除对象拥有的句柄组。

更多详情
Accessor
Promise

一旦创建了类的实例,就可以使用when()

更多详情
Sublayer

方法详细说明

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() 进行删除。如果未提供键,则句柄将被添加到默认组。

cancelLoad()

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

clone(){Sublayer}

创建子图层的深度克隆。

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

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

返回
类型 描述
Promise<FeatureLayer> 该 promise 解析为与调用此方法的 Sublayer 实例的配置匹配的 FeatureLayer。
另请参阅
示例
let sublayer = mapImageLayer.findSublayerById(0);

// when the createFeatureLayer() promise resolves, load the FeatureLayer
// and pass it to the createParameters function
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)"
    }
  };
}

// when the promise resolves, apply the renderer to the sublayer
colorRendererCreator.createContinuousRenderer(colorParams)
  .then(function(response){
    sublayer.renderer = response.renderer;
  });
createPopupTemplate(options){PopupTemplate}
起始版本:GeoScene Maps SDK for JavaScript 4.15

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

参数
optional

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

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

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

返回
类型 描述
Query 默认查询对象,包括子图层的 definitionExpression。
getFeatureType(feature){FeatureType}
起始版本:GeoScene Maps SDK for JavaScript 4.15

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

参数
feature Graphic

此子图层中的要素。

返回
类型 描述
FeatureType 描述要素类型的 FeatureType
getFieldDomain(fieldName, options){Domain}
起始版本:GeoScene Maps SDK for JavaScript 4.15

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

参数
fieldName String

字段名称。

options Object
optional

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

规范
feature Graphic

Domain 分配到的要素。

返回
类型 描述
Domain 与给定要素的给定字段名称相关联的 Domain 对象。
示例
// Get a range domain associated with the first feature
// returned from queryFeatures().
sublayer.queryFeatures(query).then(function(results){
  const domain = sublayer.getFieldDomain("Height", {feature: results.features[0]});
  console.log("domain", domain)
});
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");
}
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 可以中止它。

参数
optional

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

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

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

参数
optional
自动转换自 Object

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

options Object
optional

具有以下属性的对象。

规范
optional

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

返回
类型 描述
Promise<FeatureSet> 返回解析为 FeatureSet 的 Promise,其中包含满足查询的要素。
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");
when(callback, errback){Promise}
起始版本:GeoScene Maps SDK for JavaScript 4.6

一旦创建了类的实例,就可以使用when() 。此方法接受两个输入参数:callback 函数和 errback 函数。callback 在类的实例加载时执行。errback 在类的实例无法加载时执行。

参数
callback Function
optional

当 promise 解决时调用的函数。

errback Function
optional

当 promise 失败时执行的函数。

返回
类型 描述
Promise 返回 callback 结果的新承诺,可用于链接其他函数。
示例
// Although this example uses MapView, any class instance that is a promise may use when() in the same way
let view = new MapView();
view.when(function(){
  // This function will execute once the promise is resolved
}, function(error){
  // This function will execute if the promise is rejected due to an error
});

类型定义

DynamicDataLayer

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

数据源 描述
TableDataSource 具有几何的要素类或不带几何的表。当表数据源不包含几何图形时,它可用作连接操作中的源之一。要素类表可以单独使用,因为它们包含几何字段。
QueryTableDataSource 可以使用 SQL where 子句动态查询的要素类或表。此数据源适用于以下情况:您的表包含唯一几何,而另一个表具有与每个几何相匹配的多个记录。可以使用 QueryTableDataSource 仅选择这些匹配记录的子集 (因此两个表中的记录彼此之间具有一对一关系),并将它们联接到具有几何的表中。
RasterDataSource 仅用于可视化目的的栅格数据集。
JoinTableDataSource 此数据源由两个通过公共属性或键连接的数据源组成。左表数据源通常包含几何图形,而右表数据源可能是没有几何图形的表或查询表。
示例
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",
            // references a table in a registered workspace that doesn't have geometries
            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 版本的可选属性。

示例
// Creates two sublayers that point to the same map service layer.
// Each layer presents different features in the data using
// definition expressions and renderers.
let mapImageLayer = new MapImageLayer({
  sublayers: [{
    id: 10,
    definitionExpression: "POP < 50000",
    renderer: {
      type: "class-breaks"  // autocasts as new ClassBreaksRenderer()
      // set renderer properties here
    },
    source: {
      type: "map-layer",
      mapLayerId: 0
    }
  }, {
    id: 11,
    definitionExpression: "GRADUATED_HS > 0.449",
    renderer: {
      type: "class-breaks"  // autocasts as new ClassBreaksRenderer()
      // set renderer properties here
    },
    source: {
      type: "map-layer",
      mapLayerId: 0
    }
  }]
});
JoinTableDataSource

运行时即时连接操作的结果。支持嵌套连接。要使用嵌套联接,请将 leftTableSourcerightTableSource 设置为 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 Server Manager 中定义)。

query String

用于过滤记录的 SQL 查询。

oidFields String

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

spatialReference SpatialReference

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

geometryType String

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

可能值"point"|"multipoint"|"polyline"|"polygon"|"multipatch"

示例
let layer = new MapImageLayer({
  url: "https://sampleserver.geosceneonline.cn/geoscene/rest/services/sample/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 Server Manager 中定义)。

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 Server Manager 中定义)。

dataSourceName String

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

gdbVersion String

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

示例
let layer = new MapImageLayer({
   url: "https://sampleserver.geosceneonline.cn/geoscene/rest/services/sample/MapServer",
   sublayers: [{
     renderer: renderer,
     source: {
       type: "data-layer",
       dataSource: {
         type: "table",
         workspaceId: "MyDatabaseWorkspaceIDSSR2",
         dataSourceName: "ss6.gdb.Railroads"
       }
     }
   }]
 });

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