代表 SubtypeGroupLayer 中的子图层。每个 SubtypeSublayer 都不是独立服务,而是每个子图层对应于源要素服务中的一个子类型。此模式允许对每个子图层彼此独立地进行符号化,而无需为每个子图层提供单独的服务。此关系不同于 MapImageLayer 及其子图层之间的关系。对于 MapImageLayer,其子图层表示各个地图服务。
SubtypeSublayers 由其唯一的 subtypeCode 进行标识。您可在初始化 SubtypeGroupLayer 时配置每个子图层的属性
// Only includes one SubtypeSublayer from the SubtypeGroupLayer
let layer = new SuptypeGroupLayer({
url: "url",
sublayers: [{ // autocasts as a Collection of SubtypeSublayers
subtypeCode: 14,
visible: true,
renderer: {
type: "simple", // autocasts as a SimpleRenderer()
symbol: {
type: "simple-marker", // autocasts as a SimpleMarkerSymbol()
style: "circle",
color: [120, 120, 120, 255],
size: 6
}
}
}]
});
构造函数
属性概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
Capabilities | 描述图层的受支持功能。 更多详情 | SubtypeSublayer | |
String | 类的名称。 更多详情 | Accessor | |
Boolean | 确定图层是否可编辑。 更多详情 | SubtypeSublayer | |
Boolean | 指示考虑到当前登录用户的权限时,该图层是否可编辑,以及父子类型图层组是否可修改。 更多详情 | SubtypeSublayer | |
Field[] | 图层中的字段数组。 更多详情 | SubtypeSublayer | |
FormTemplate | 在关联图层的 FeatureForm 中使用的 template。 更多详情 | SubtypeSublayer | |
String | 图层中要素的几何类型。 更多详情 | SubtypeSublayer | |
String | 分配给图层的唯一 ID。 更多详情 | SubtypeSublayer | |
LabelClass[] | 此图层的标注定义,指定为 LabelClass 的数组。 更多详情 | SubtypeSublayer | |
Boolean | 指示是否显示此图层的标注。 更多详情 | SubtypeSublayer | |
Boolean | 指示图层是否将包含在图例中。 更多详情 | SubtypeSublayer | |
Error | 加载时发生的错误,返回 Error 对象 更多详情 | SubtypeSublayer | |
String | load 操作的状态 更多详情 | SubtypeSublayer | |
Object[] | 加载时发生的警告列表 更多详情 | SubtypeSublayer | |
Number | 图层在视图中可见时的最大比例 (放至最大)。 更多详情 | SubtypeSublayer | |
Number | 图层在视图中可见时的最小比例 (缩至最小)。 更多详情 | SubtypeSublayer | |
String |
| SubtypeSublayer | |
Number | 图层的不透明度。 更多详情 | SubtypeSublayer | |
SubtypeGroupLayer | 子图层所属的 SubtypeGroupLayer。 更多详情 | SubtypeSublayer | |
Boolean | 指示单击图层中的要素时是否显示弹出窗口。 更多详情 | SubtypeSublayer | |
PopupTemplate | 图层的弹出模板。 更多详情 | SubtypeSublayer | |
Renderer | 分配给图层的渲染器。 更多详情 | SubtypeSublayer | |
SpatialReference | 图层的空间参考。 更多详情 | SubtypeSublayer | |
Number | 表示基于 SubtypeGroupLayer 创建的 SubtypeSublayer 的唯一标识符。 更多详情 | SubtypeSublayer | |
FeatureTemplate[] | 在要素图层中定义的要素模板数组。 更多详情 | SubtypeSublayer | |
String | 用于在某些地方标识它的图层标题,例如 Legend 微件。 更多详情 | SubtypeSublayer | |
String | 对于 SubtypeSublayer,类型总是 "subtype-sublayer"。更多详情 | SubtypeSublayer | |
Boolean | 指示图层在 View 中是否可见。 更多详情 | SubtypeSublayer |
属性详细信息
-
capabilities Capabilitiesreadonly起始版本:GeoScene Maps SDK for JavaScript 4.27
-
描述图层的受支持功能。
-
类的名称。声明的类名称格式化为
geoscene.folder.className
。
-
editingEnabled Boolean
-
确定图层是否可编辑。
- 默认值:true
- 另请参阅
-
effectiveEditingEnabled Booleanreadonly起始版本:GeoScene Maps SDK for JavaScript 4.26
-
指示考虑到当前登录用户的权限时,该图层是否可编辑,以及父子类型图层组是否可修改。
-
图层中的字段数组。每个字段都表示一个属性,该属性可能包含图层中每个要素的值。例如,名为
POP_2015
的字段将有关总人口的信息存储为每个要素的数值;此值表示居住在要素地理范围内的总人数。示例// define each field's schema const fields = [ new Field({ name: "ObjectID", alias: "ObjectID", type: "oid" }), new Field({ name: "description", alias: "Description", type: "string" }), new Field ({ name: "title", alias: "Title", type: "string" }) ]; // See the sample snippet for the source property const layer = new SubtypeSublayer({ // Object ID field is inferred from the fields array fields: fields });
-
formTemplate FormTemplateautocast
-
在关联图层的 FeatureForm 中使用的 template。在图层 FeatureForm 上设置的所有属性和字段配置都通过 FormTemplate 进行处理。
- 另请参阅
示例// Create the Field Elements to pass into the template const fieldElement1 = new FieldElement({ fieldName: "firstname", label: "First name", description: "First name of emergency contact" }); const fieldElement2 = new FieldElement({ fieldName: "lastname", label: "Last name", description: "Last name of emergency contact" }); // Create the form's template const formTemplate = new FormTemplate({ title: "Emergency information", description: "In case of emergency, update any additional information needed", elements: [fieldElement1, fieldElement2] // pass in array of field elements from above }); // Pass the template to the layer subtypeSublayer.formTemplate = formTemplate; // Pass the layer to the FeatureForm const form = new FeatureForm({ container: "form", // html div referencing the form layer: subtypeSublayer });
-
geometryType Stringreadonly起始版本:GeoScene Maps SDK for JavaScript 4.27
-
图层中要素的几何类型。所有要素必须为相同类型。
可能值:"point"|"multipoint"|"polyline"|"polygon"|"multipatch"|"mesh"
-
id Stringreadonly
-
分配给图层的唯一 ID。
-
labelingInfo LabelClass[]autocast
-
此图层的标注定义,指定为 LabelClass 的数组。使用此属性可以指定图层的标注属性,例如标注表达式、放置和大小。
具有不同
where
子句的多个标注类可用于在同一要素上定义具有不同样式的多个标注。同样,可以使用多个标注类来标注不同类型的要素 (例如,湖泊的蓝色标注和公园的绿色标注)。请参阅标注指南页面,了解更多信息和已知限制。
已知限制
3D SceneViews 仅支持为每个要素显示一个 LabelClass。
示例const statesLabelClass = new LabelClass({ labelExpressionInfo: { expression: "$feature.NAME" }, symbol: { type: "text", // autocasts as new TextSymbol() color: "black", haloSize: 1, haloColor: "white" } }); subtypeSubLayer.labelingInfo = [ statesLabelClass ];
-
labelsVisible Boolean
-
指示是否显示此图层的标注。如果为
true
,标注将按 labelingInfo 属性中定义的方式显示。已知限制
3D SceneViews 仅支持为每个要素显示一个 LabelClass。
- 默认值:true
-
legendEnabled Boolean
-
指示图层是否将包含在图例中。
- 默认值:true
-
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 值,并且大于或等于服务规范。
- 默认值:0
-
minScale Number
-
图层在视图中可见时的最小比例 (缩至最小)。如果地图缩小到超过此比例,则图层将不可见。值为 0 表示该图层没有最小比例。minScale 值应始终大于 maxScale 值,并且小于或等于服务规范。
- 默认值:0
-
opacity Number
-
图层的不透明度。此值的范围在
1
和0
之间,其中0
是 100% 透明,而1
为完全不透明。- 默认值:1
示例// Makes the layer 50% transparent layer.opacity = 0.5;
-
parent SubtypeGroupLayer
-
子图层所属的 SubtypeGroupLayer。
-
popupEnabled Boolean
-
指示单击图层中的要素时是否显示弹出窗口。该图层需要具有一个 popupTemplate,以定义应在弹出窗口中显示哪些信息。或者,如果 Popup.defaultPopupTemplateEnabled 设置为
true
时,则可自动使用默认弹出模板。- 默认值:true
- 另请参阅
-
popupTemplate PopupTemplateautocast
-
图层的弹出模板。在图层上设置时,
popupTemplate
允许用户在使用文本和/或图表选择要素时访问属性并在视图的弹出窗口中显示其值。当 Popup.defaultPopupTemplateEnabled 设置为
true
时,如果未定义popupTemplate
,则自动使用默认弹出模板。- 另请参阅
-
分配给图层的渲染器。渲染器定义如何可视化图层中的每个要素。根据渲染器类型,可以使用相同的符号或基于提供的属性字段或函数的值使用不同的符号来可视化要素。
但是,从客户端要素创建 FeatureLayer 时,必须在图层的构造函数中指定此属性以及 source、fields、objectIdField 属性。
示例// all features in the layer will be visualized with // a 6pt black marker symbol and a thin, white outline layer.renderer = { type: "simple", // autocasts as new SimpleRenderer() symbol: { type: "simple-marker", // autocasts as new SimpleMarkerSymbol() size: 6, color: "black", outline: { // autocasts as new SimpleLineSymbol() width: 0.5, color: "white" } } };
-
spatialReference SpatialReference
-
-
subtypeCode Number
-
表示基于 SubtypeGroupLayer 创建的 SubtypeSublayer 的唯一标识符。
- 默认值:null
-
templates FeatureTemplate[]
-
在要素图层中定义的要素模板数组。
-
type Stringreadonly
-
对于 SubtypeSublayer,类型总是 "subtype-sublayer"。
-
visible Boolean
-
- 默认值:true
示例// The layer is no longer visible in the view layer.visible = false;
方法概述
名称 | 返回值类值 | 描述 | 类 |
---|---|---|---|
Promise<FeatureEditResult> | 将附件添加到要素。 更多详情 | SubtypeSublayer | |
添加一个或多个与对象生命周期相关联的句柄 更多详情 | Accessor | ||
如果 load() 操作已在进行中,则取消它。 更多详情 | SubtypeSublayer | ||
PopupTemplate | 为图层创建一个弹出模板,使用图层的所有字段进行填充。 更多详情 | SubtypeSublayer | |
Promise<FeatureEditResult> | 从要素中删除附件。 更多详情 | SubtypeSublayer | |
Field | 返回字段名称的 Field 实例 (不区分大小写)。 更多详情 | SubtypeSublayer | |
Domain | 返回与给定字段名称相关联的 Domain。 更多详情 | SubtypeSublayer | |
Boolean | 如果存在指定的句柄组,则返回 true。 更多详情 | Accessor | |
Boolean |
| SubtypeSublayer | |
Boolean |
| SubtypeSublayer | |
Boolean |
| SubtypeSublayer | |
Promise | 加载此类引用的资源。 更多详情 | SubtypeSublayer | |
Promise<Object> | 查询与要素关联的附件的信息。 更多详情 | SubtypeSublayer | |
移除对象拥有的句柄组。 更多详情 | Accessor | ||
Promise<FeatureEditResult> | 更新要素的现有附件。 更多详情 | SubtypeSublayer | |
Promise |
| SubtypeSublayer |
方法详细说明
-
addAttachment(feature, attachment){Promise<FeatureEditResult>}
-
将附件添加到要素。仅当图层的 capabilities.data.supportsAttachment 为
true
时,此操作才可用。参数feature Graphic要与添加的附件相关联的要素。
attachment HTMLFormElement|FormDataHTML 表单,其中包含一个文件上传字段,指定要添加为附件的文件。
返回类型 描述 Promise<FeatureEditResult> 解析后,将返回 FeatureEditResult 对象。 示例view.when(function () { view.on("click", function (event) { view.hitTest(event).then(function (response) { const feature = response.results[0].graphic; // The form is defined as below in the html. // For enterprise services: // 1. File input name must be "attachment" // <form id="attachmentForm"> // Select a file: <input type="file" name="attachment"> // </form> const attachmentForm = document.getElementById("attachmentForm"); const formData = new FormData(attachmentForm); // For enterprise services - add input with name:f and value:json formData.append("f","json"); const form = new FormData(); form.set("attachment", file); form.append("f","json") let form = document.getElementById("myForm"); // Add an attachment to the clicked feature. // The attachment is taken from the form. layer.addAttachment(feature, form).then(function (result) { console.log("attachment added: ", result); }) .catch(function (err) { console.log("attachment adding failed: ", err); }); }); }); });
-
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 } ); this.addHandles(handle); // Destroy the object this.destroy();
参数handleOrHandles WatchHandle|WatchHandle[]对象销毁后,标记为要移除的句柄。
groupKey *optional标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。
-
cancelLoad()
-
如果 load() 操作已在进行中,则取消它。
-
createPopupTemplate(options){PopupTemplate}
-
为图层创建一个弹出模板,使用图层的所有字段进行填充。
参数options CreatePopupTemplateOptionsoptional用于创建弹出模板的选项。
返回类型 描述 PopupTemplate 弹出模板,如果图层没有任何字段,则为 null
。
-
deleteAttachments(feature, attachmentIds){Promise<FeatureEditResult>}起始版本:GeoScene Maps SDK for JavaScript 4.26
-
从要素中删除附件。仅当图层的 capabilities.data.supportsAttachment 设置为
true
时,此操作才可用。参数feature Graphic包含要删除的附件的要素。
要删除的附件的 Id。
返回类型 描述 Promise<FeatureEditResult> 解析后,将返回 FeatureEditResult 对象。FeatureEditResult 指示编辑是否成功。如果成功,则结果的 objectId
是新附件的 Id。如果不成功,它还包括错误name
和错误message
。
-
getField(fieldName){Field}
-
返回字段名称的 Field 实例 (不区分大小写)。
参数fieldName String字段名称。
返回类型 描述 Field 匹配字段或 undefined
- 另请参阅
-
getFieldDomain(fieldName){Domain}
-
返回与给定字段名称相关联的 Domain。域可以是 CodedValueDomain 或 RangeDomain。
参数fieldName String字段名称。
返回类型 描述 Domain 与给定要素的给定字段名称相关联的 Domain 对象。 示例// Get a range domain associated with the first feature // returned from queryFeatures(). subtypeSublayer.queryFeatures(query).then(function(results){ const domain = subtypeSublayer.getFieldDomain("Height"); 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 资源已加载时解析。
-
起始版本:GeoScene Maps SDK for JavaScript 4.26
-
查询与要素关联的附件的信息。如果图层的 capabilities.data.supportsAttachment 属性为
false
,它将返回错误。如果图层的 capabilities.operations.supportsQueryAttachments 为true
,则可查询多个要素的附件。已知限制
当图层的 capabilities.operations.supportsQueryAttachments 属性为
false
时,AttachmentQuery.objectIds 属性只接受一个objectId
。参数自动转换自 Object指定查询的附件参数。
options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise<Object> 解析后,返回一个对象,其中包含按源要素 objectIds 分组的 AttachmentInfos。 示例subtypeGroupLayer.when(function () { // queryObjectIds for all features within the layer subtypeGroupLayer.queryObjectIds().then(function (objectIds) { // Define parameters for querying attachments, // query features where objectIds are less than 735, // and only query jpeg attachments for these features. let attachmentQuery = { objectIds: objectIds, definitionExpression: "OBJECTID < 735", attachmentTypes: ["image/jpeg"] }; // Only pass in one objectId for attachmentQuery.objectIds // if the layer's capabilities.operations.supportsQueryAttachments is false subtypeGroupLayer.queryAttachments(attachmentQuery).then(function (attachments) { // Print out all returned attachment infos to the console. attachmentQuery.objectIds.forEach(function (objectId) { if (attachments[objectId]) { let attachment = attachments[objectId]; console.group("attachment for", objectId); attachment.forEach(function (item) { console.log("attachment id", item.id); console.log("content type", item.contentType); console.log("name", item.name); console.log("size", item.size); console.log("url", item.url); console.groupEnd(); }); } }); }) .catch(function (error) { console.log("attachment query error", error); }) }); });
-
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");
-
updateAttachment(feature, attachmentId, attachment){Promise<FeatureEditResult>}起始版本:GeoScene Maps SDK for JavaScript 4.26
-
更新要素的现有附件。仅当图层的 capabilities.data.supportsAttachment 设置为
true
时,此操作才可用。参数feature Graphic包含要更新的附件的要素。
attachmentId Number要更新的附件的 Id。
attachment HTMLFormElement|FormDataHTML 表单,其中包含指向要添加为附件的文件的文件上传字段。
返回类型 描述 Promise<FeatureEditResult> 解析后,将返回 FeatureEditResult 对象。FeatureEditResult 指示编辑是否成功。如果成功,则结果的 objectId
是新附件的 Id。如果不成功,它还包括错误name
和错误message
。
-
when(callback, errback){Promise}
-
when()
一旦创建了类的实例,就可以使用 。此方法接受两个输入参数:callback
函数和errback
函数。callback
在类的实例加载时执行。errback
在类的实例无法加载时执行。参数callback Functionoptional当 promise 解决时调用的函数。
errback Functionoptional当 promise 失败时执行的函数。
返回类型 描述 Promise 返回 callback
结果的新 promise,可用于链接其他函数。示例// 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 });