代表 MapImageLayer 或 TileLayer 中的子图层。MapImageLayer 允许您根据地图服务中定义的数据显示、查询和分析图层。地图服务包含具有诸如 renderer、labelingInfo 和 definitionExpression 等属性以及在服务器上定义的其他属性的子图层。地图服务上每个 MapImageLayer 子图层的属性可以由用户或开发人员动态更改。每个 TileLayer 子图层的属性都是只读的,不能修改。
已知限制
- TileLayer 的子图层的所有属性都是只读的,但以下属性除外:
以下限制适用于与 ArcMap 一起发布或发布到 GeoScene Server 1.5.1 或更早版本的所有地图服务的子图层:
- Arcade 表达式 表达式在 renderer 和 popupTemplate 中不受支持。
- 视觉变量 在 renderer 中不受支持。
动态图层
子图层可以动态渲染为动态图层。动态图层是使用子图层的 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 Objectoptional
有关可能传递给构造函数的所有属性的列表,请参见属性。
示例// 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 | 子图层所属的 MapImageLayer 或 TileLayer。 更多详情 | Sublayer | |
Boolean | 指示图层是否将包含在图例中。 更多详情 | Sublayer | |
String | 指示图层在 LayerList 微件中的显示方式。 更多详情 | Sublayer | |
Error | 如果加载时发生错误,则返回 Error 对象。 更多详情 | Sublayer | |
String | 表示 load 操作的状态。 更多详情 | Sublayer | |
Object[] | 加载时发生的警告列表。 更多详情 | Sublayer | |
Number | 图层在视图中可见时的最大比例 (放至最大)。 更多详情 | Sublayer | |
Number | 图层在视图中可见时的最小比例 (缩至最小)。 更多详情 | Sublayer | |
String |
| Sublayer | |
Number | 在子图层上设置的不透明度级别,范围为 0.0 - 1.0,其中 | Sublayer | |
Boolean | 指示单击图层中的要素时是否显示弹出窗口。 更多详情 | Sublayer | |
PopupTemplate | 子图层的弹出模板。 更多详情 | Sublayer | |
渲染器 | 要应用于子图层的渲染器。 更多详情 | Sublayer | |
DynamicMapLayer|DynamicDataLayer | 此对象允许您使用来自地图服务子图层的数据或来自注册工作空间的数据创建动态图层。 更多详情 | Sublayer | |
Object | GeoScene REST API 公开的地图服务元数据 JSON。 更多详情 | Sublayer | |
Collection<Sublayer> | 如果子图层包含子图层,则此属性是属于具有子图层的给定子图层的 Sublayer 对象的集合。 更多详情 | Sublayer | |
String | 用于在某些地方标识它的子图层标题,例如 LayerList 和 Legend 微件。 更多详情 | Sublayer | |
String | 包含要素的类型 ID 或子类型的字段的名称。 更多详情 | Sublayer | |
FeatureType[] | GeoScene REST API 公开的要素服务中定义的子类型数组。 更多详情 | Sublayer | |
String | 指向子图层的 REST 端点的 URL。 更多详情 | Sublayer | |
Boolean | 指示图层在视图中是否可见。 更多详情 | Sublayer |
属性详细信息
-
起始版本:GeoScene Maps SDK for JavaScript 4.7
-
类的名称。声明的类名称格式化为
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'"
// 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'";
-
起始版本: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); }
-
floorInfo LayerFloorInfoautocast起始版本:GeoScene Maps SDK for JavaScript 4.21
-
如果地图图像图层包含楼层感知型子图层,则该子图层必须具有 floorInfo 属性,其中包含一个 LayerFloorInfo 对象,该对象具有表示 floorField 的字符串属性。
-
id Number
-
子图层的图层 ID。如果未在图层上定义源,则此值表示由地图服务定义的子图层的 id。如果创建 DynamicDataLayer 或 MapDataLayer,并将其添加到子图层的 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;
-
-
子图层所属的 MapImageLayer 或 TileLayer。
-
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
-
加载时发生的警告列表。
-
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.capabilities 的
supportsDynamicLayers
属性。已知限制
- 当前,在子图层上设置的渲染器中不支持 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>
-
示例
// 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
-
示例
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.capabilities 的
supportsSublayerVisibility
属性。示例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 |
| Sublayer | |
Boolean |
| Sublayer | |
Boolean |
| Sublayer | |
Promise | 加载此类引用的资源。 更多详情 | Sublayer | |
Promise<FeatureSet> | 对子图层中的要素执行查询。 更多详情 | Sublayer | |
移除对象拥有的句柄组。 更多详情 | Accessor | ||
Promise | 一旦创建了类的实例,就可以使用 | 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() 操作已在进行中,则取消它。
-
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
-
为子图层创建一个弹出模板,使用子图层的所有字段进行填充。
参数options CreatePopupTemplateOptionsoptional用于创建弹出模板的选项。
返回类型 描述 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。域可以是 CodedValueDomain 或 RangeDomain。
参数fieldName String字段名称。
options Objectoptional指定附加选项的对象。有关此对象所需的属性,请参阅下面的对象规范表。
规范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) });
-
起始版本: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 指示创建类的实例是否已被拒绝。
-
load(signal){Promise}
-
加载此类引用的资源。如果视图是使用地图实例构造的,则此方法会自动为 View 及其在 Map 中引用的所有资源执行。
开发人员在访问不会在 View 中加载的资源时,必须调用此方法。
load()
方法仅在第一次调用时触发资源的加载。随后的调用将返回相同的 promise。可以提供一个
signal
来停止对Loadable
实例加载状态感兴趣。当信号中止时,实例不会停止其加载过程,只有 cancelLoad 可以中止它。参数signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise 资源已加载时解析。
-
queryFeatures(query, options){Promise<FeatureSet>}
-
对子图层中的要素执行查询。要查看是否可以使用此属性,请检查 MapImageLayer.capabilities 的
supportsQuery
属性。参数optional 自动转换自 Object指定查询的属性和空间过滤器。如果未指定任何参数,则返回满足图层配置/过滤器的所有要素。
options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 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 Functionoptional当 promise 解决时调用的函数。
errback Functionoptional当 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
-
运行时即时连接操作的结果。支持嵌套连接。要使用嵌套联接,请将
leftTableSource
或rightTableSource
设置为join-table
。- 属性
-
type String
此值始终为
join-table
,并在设置此对象的其他连接表属性时推断。值通常是 "join-table"。
leftTableKey String字段名称,用于将左表中的记录联接或匹配到右表中的记录。
rightTableKey String字段名称,用于将右表中的记录联接或匹配到左表中的记录。
leftTableSource DynamicMapLayer|DynamicDataLayer用于联接到右表源的左表。这可以是动态地图图层或动态数据图层。动态数据图层可能包含另一个用于嵌套联接的联接数据源。
rightTableSource DynamicMapLayer|DynamicDataLayer用于联接到左表源的右表。这可以是动态地图图层或动态数据图层。动态数据图层可能包含另一个用于嵌套联接的联接数据源。
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" } } }] });