概述
SceneLayer 是一种图层类型,设计用于在 SceneView 中按需流式传输和显示大量数据。SceneLayers 支持两种几何体类型:点 和 3D 对象(例如建筑物)。
您可以通过搜索图库在 GeoScene Online 中找到许多 SceneLayers 示例。
发布场景图层
SceneLayer 显示来自场景服务的数据。场景服务可以以适合 Web 流的开放格式保存大量要素。SceneLayer 从粗略的制图表达开始逐步加载这些要素,并根据特写视图的需要将其细化为更高的细节。
通过上传场景图层包 (.slpk) 或从 GeoScene Pro 发布场景图层包,可以在 GeoScene Online 或 GeoScene Enterprise 上托管场景服务根据发布 SceneLayer 的方式,有两种类型的图层:具有关联要素图层的 SceneLayer 和 仅具有缓存属性的 SceneLayer。有关更多信息,请参阅场景图层指南主题的发布部分。
场景服务由 GeoScene Server REST 资源的 URL 或 portalItem 标识:
let sceneLayer = new SceneLayer({
url: "https://www.geosceneonline.cn/server/rest/services/Hosted/1864%E5%B7%A5%E5%8E%82%E5%9C%BA%E6%99%AF4_WSL1/SceneServer/layers/0"
});
let sceneLayer = new SceneLayer({
portalItem: {
id: "6fce72d1a3df4b309a317f1e2faae05e"
}
});
大多数情况下,最好从门户项目而不是场景服务 url 创建 SceneLayer,因为有关关联要素服务的信息存储在项目级别而不是服务级别。
如果从其他域请求场景服务,则需要启用 CORS 的服务器或代理。
尽管显示 SceneLayer 的内部逻辑在技术上是先进的,但它在 API 中的使用遵循与其他层相同的模型。您可以使用渲染器来设置 SceneLayer 的样式,并使用弹出窗口来检索属性信息并将其显示给用户。
数据可视化
就像其他图层一样,SceneLayers 可以使用渲染器进行可视化。可以使用 MeshSymbol3D 设置 3D 对象的样式。可以将 FillSymbol3DLayer 添加到 MeshSymbol3D 以可视化来自 SceneLayer 的 3D 对象:
let symbol = {
type: "mesh-3d", // autocasts as new MeshSymbol3D()
symbolLayers: [{
type: "fill", // autocasts as new FillSymbol3DLayer()
material: { color: "red" }
}]
};
sceneLayer.renderer = {
type: "simple", // autocasts as new SimpleRenderer()
symbol: symbol
};
SceneLayers 还支持可视变量,这使您可以轻松地以连续颜色可视化图层中的数字数据。例如,下图中使用的服务表示包含数值属性的建筑物要素,该属性存储每个建筑物中的居民数量。图层的渲染器使用颜色可视变量根据给定字段的值沿连续的白色到蓝色色带对每个要素进行着色。白色要素表示距离公共交通站点较远的建筑物,深蓝色要素表示非常接近公共交通站点(步行时间少于 1 分钟)的建筑物。值介于低值和高值之间的建筑物被分配中间颜色。为了改善对 3D 对象场景图层形状的感知,还可以使用边缘对其进行可视化。请参阅可视化概述主题,了解有关数据可视化技术的详细信息。
具有可视变量的数据驱动可视化中使用的属性必须可由 SceneLayer 的缓存访问。对于仅具有缓存属性的 SceneLayer 和具有关联要素图层的 SceneLayer,属性值均来自缓存。因此,如果要素图层上的属性发生更改,可视化效果将不会更新。将缓存属性的数量保持在最低限度可提高 SceneLayer 的性能。因此,最佳做法是明智地使用通过图层缓存提供的属性。
筛选数据
可以使用 SQL where 子句对 SceneLayer 进行过滤。筛选是使用定义表达式属性实现的。此属性在客户端上使用 SceneLayer 缓存属性进行评估,并且仅支持 标准化 SQL。
let layer = new SceneLayer({
url: "https://www.geosceneonline.cn/server/rest/services/Hosted/1864%E5%B7%A5%E5%8E%82%E5%9C%BA%E6%99%AF4_WSL1/SceneServer/layers/0",
definitionExpression: "usage = 'Residential' AND totalHeight < 5"
});
筛选数据的另一种方法是在 SceneLayerView 上使用 FeatureFilter。这将仅显示满足筛选条件的要素。设置几何和空间关系允许您根据传入几何的空间关系过滤要素。目前仅支持contains
,
intersects
或 disjoint
类型的空间关系。
有关更多信息,请参阅使用 SceneLayer 按几何过滤要素示例。
弹出窗口
点和 3D 对象场景图层可以使用 popupTemplate 属性自定义弹出窗口内容。具有关联要素图层的
SceneLayer 将在关联的要素图层中查询属性。对于仅具有缓存属性的 SceneLayer,属性来自缓存。还支持 popupTemplate 中 expressionInfo
的 Arcade 表达式。
查询
SceneLayer 和 SceneLayerView 都支持查询,但行为不同。
查询 SceneLayer 将从关联要素图层中的属性中检索结果。如果图层没有关联的要素图层,则查询将被拒绝并显示错误。图层上的查询功能强大,因为它们是在 SceneLayer
中的所有要素上进行的,并且还支持高级查询。当 spatialRelationship
设置为intersects
, contains
或 disjoint
时,支持空间查询。
要在 SceneLayerView 上进行基于属性的查询,您需要在 SceneLayer 的 outFields 属性中指定必填字段,以确保客户端上的属性值可用于查询。您可以使用 availableFields 来检查客户端上可用的字段。通过设置查询的几何和空间关系,可以在 SceneLayerView 上进行空间查询。请注意,对于 3D 对象场景图层,这些空间关系是基于范围而不是要素的足迹进行评估的。SceneLayerView 上的查询返回视图中当前加载的要素的结果。
查询方法 | SceneLayer (仅当它具有关联的要素图层时才有效) | SceneLayerView (适用于所有场景图层) |
---|---|---|
queryExtent | 返回满足查询的所有 要素的 2D 范围 | 返回满足查询的当前加载 要素的 3D 范围 |
queryFeatureCount | 返回满足查询的所有要素的数量 | 返回满足查询的当前加载 要素的数量 |
queryFeatures | 返回满足查询的所有要素 | 返回满足查询的当前加载 要素 |
queryObjectIds | 返回满足查询的所有要素的对象 ID | 返回满足查询的当前加载 要素的对象 ID |
获取场景图层的几何/范围
3D 对象场景图层不返回原始几何体,因为这是一种二进制格式。要获取空间信息,可以查询 SceneLayer 中要素的 2D 范围或 3D 范围可以使用 SceneLayer 上的 queryExtent() 方法检索所有要素(甚至是尚未加载的要素)的 2D 范围。仅当图层具有关联的要素图层时,此方法才会成功。只能使用 SceneLayerView 上的 queryExtent() 方法查询已加载的要素,才能查询 3D 范围。
点场景在任何查询方法上将 returnGeometry 设置为
true
时返回几何图形。此外,可以使用 SceneLayer 上的 queryExtent()
检索多个点的 2D 范围。无法仅获取具有缓存属性的 SceneLayer 的范围。
编辑:属性更新
目前,只有场景图层上的 applyEdits 方法支持属性更新。可编辑 SceneLayer 的先决条件是启用了编辑和更改跟踪的关联 FeatureLayer。有关发布的详细信息,请参阅场景图层指南主题的发布部分。具有已编辑属性的要素将使用更新的属性进行渲染,直到已编辑要素的数量超过 50,000。之后,将不检索已编辑的属性,并使用缓存的过时属性来渲染要素。在达到此最大数量之前重新构建场景图层的缓存。
场景图层属性更新的一个用例是更改状态和类型,请检查此示例:示例 - SceneLayer 属性编辑 在此示例中,可编辑的要素图层将共享给所有人。因此,每个人都将能够修改此数据。在实际用例中,只有授权编辑者才能编辑图层。在这种情况下,关联的要素图层不会公开共享,并且只有编辑者才能访问。要使编辑内容对场景图层用户可见,必须 重新构建缓存。
- 另请参阅:
构造函数
属性概述
名称 | 类型 | 描述 | 类 | |
---|---|---|---|---|
String | 更多信息
用于访问资源或服务的授权字符串。 |
更多信息 | SceneLayer | |
Object | 更多信息
描述图层支持的功能。 |
更多信息 | SceneLayer | |
String | 更多信息
场景服务定义的版权文本。 |
更多信息 | SceneLayer | |
String | 更多信息
类的名称。 |
更多信息 | Accessor | |
String | 更多信息
用于筛选要素的 SQL where 子句。 |
更多信息 | SceneLayer | |
Object | 更多信息
指定图形在垂直轴 (z) 上的放置方式。 |
更多信息 | SceneLayer | |
Collection<number> | 更多信息
要从渲染中排除的对象 ID 的列表。 |
更多信息 | SceneLayer | |
FeatureReductionSelection | 更多信息
配置用于整理视图中重叠要素的方法。 |
更多信息 | SceneLayer | |
Field[] | 更多信息
图层中可访问的字段数组。 |
更多信息 | SceneLayer | |
FieldsIndex | 更多信息
可用于按名称对字段进行不区分大小写的查找的便捷属性。 |
更多信息 | SceneLayer | |
LayerFloorInfo | 更多信息
将场景图层配置为楼层感知图层时,它将定义 floorInfo 属性。 |
更多信息 | SceneLayer | |
范围 | 更多信息
图层的全图范围。 |
更多信息 | Layer | |
String | 更多信息
图层中要素的几何类型。 |
更多信息 | SceneLayer | |
String | 更多信息
分配给图层的唯一 ID。 |
更多信息 | Layer | |
LabelClass[] | 更多信息
此图层的标签定义,指定为 LabelClass 的数组。 |
更多信息 | SceneLayer | |
布尔值 | 更多信息
指示是否显示此图层的标注。 |
更多信息 | SceneLayer | |
整数 | 更多信息
场景服务图层的图层 ID 或图层索引。 |
更多信息 | SceneLayer | |
布尔值 | 更多信息
指示图层是否将包括在图例中。 |
更多信息 | SceneLayer | |
String | 更多信息
指示图层在图层列表微件中的显示方式。 |
更多信息 | Layer | |
布尔值 | 更多信息
指示图层的资源是否已加载。 |
更多信息 | Layer | |
错误 | 更多信息
如果加载时发生错误,则返回 Error 对象。 |
更多信息 | Layer | |
String | 更多信息
表示加载操作的状态。 |
更多信息 | Layer | |
Object[] | 更多信息
加载时发生的警告列表。 |
更多信息 | Layer | |
整数 | 更多信息
图层在视图中可见时的最大比例 (放至最大)。 |
更多信息 | SceneLayer | |
整数 | 更多信息
图层在视图中可见的最小比例(最大缩小)。 |
更多信息 | SceneLayer | |
String | 更多信息
包含每个图形的对象 ID 的字段的名称。 |
更多信息 | SceneLayer | |
整数 | 更多信息
图层不透明。 |
更多信息 | Layer | |
String[] | 更多信息
服务中要包含在每个要素中的字段名称的数组。 |
更多信息 | SceneLayer | |
布尔值 | 更多信息
指示在单击图层中的要素时是否显示弹出窗口。 |
更多信息 | SceneLayer | |
PopupTemplate | 更多信息
图层的弹窗模板。 |
更多信息 | SceneLayer | |
PortalItem | 更多信息
从中加载图层的门户项目。 |
更多信息 | SceneLayer | |
Renderer | 更多信息
分配给图层的渲染器。 |
更多信息 | SceneLayer | |
布尔值 | 更多信息
将透视缩放应用于 SceneView 中屏幕大小的点符号。 |
更多信息 | SceneLayer | |
SpatialReference | 更多信息
图层的空间参考。 |
更多信息 | SceneLayer | |
String | 更多信息 | 更多信息 | SceneLayer | |
String | 更多信息 对于SceneLayer 类型始终为 "scene"。 | 更多信息 | SceneLayer | |
String | 更多信息
图层或场景服务的 REST 端点的 URL。 |
更多信息 | SceneLayer | |
Object | 更多信息
用于此服务的场景服务规范的版本。 |
更多信息 | SceneLayer | |
布尔值 | 更多信息
指示图层在视图中是否可见。 |
更多信息 | Layer |
属性详情
-
apiKey String起始版本:GeoScene API for JavaScript 4.20
-
用于访问资源或服务的授权字符串。API 密钥在 GeoScene Developer 仪表板中生成和管理。API 密钥明确绑定到 GeoScene 帐户; 它还用于监视服务使用情况。在特定类上设置细粒度 API 密钥会覆盖全局 API 密钥。
示例:// set the api key to access a protected service const layer = new FeatureLayer({ url: serviceUrl, apiKey: "YOUR_API_KEY" });
-
capabilities Objectreadonly
-
描述图层支持的功能。
- 属性:
-
query Object
描述可对图层中的要素执行的查询 操作。
- 规范:
-
maxRecordCount Number
将为给定查询返回的最大记录数。
supportsCentroid Boolean指示是否可以返回与每个面要素关联的几何质心。此操作仅在 GeoScene Online 托管要素服务中心受支持。
supportsDistance Boolean指示图层的查询操作是否支持输入几何的缓冲区距离。
supportsDistinct Boolean指示图层是否支持基于 outFields 中指定的字段查询非重复值。
supportsDisjointSpatialRelationship Boolean指示查询操作是否支持
disjoint
空间关系 。这仅对托管要素服务有效。supportsCacheHint Boolean指示查询操作是否支持 缓存提示。这仅对托管要素服务有效。
supportsExtent Boolean指示图层的查询响应是否包括要素范围。在 2.0 版本中,此选项仅适用于托管要素服务。在 2.0 版本中,它可用于托管和非托管要素服务。
supportsGeometryProperties Boolean指示图层的查询响应是否包含几何属性,包括形状面积和长度属性。自 2016 年 12 月以来创建的 GeoScene Online 托管要素服务和自 2.0 版起的 GeoScene Enterprise 要素服务支持此操作。
supportsHavingClause Boolean指示图层是否支持服务上的 having 子句。需要 GeoScene Server 服务 2.0 或更高版本。
supportsOrderBy Boolean指示查询响应中返回的要素是否可以按一个或多个字段排序。需要 GeoScene Server 服务 2.0 或更高。
supportsPagination Boolean指示查询响应是否支持分页。需要 GeoScene Server 服务 2.0 或更高。
supportsPercentileStatistics Boolean指示图层是否支持百分位数统计类型。需要 GeoScene Server 服务 2.0 或更高。
supportsQueryGeometry Boolean指示查询响应是否包括查询几何图形。这仅对托管要素服务有效。
supportsQuantization Boolean指示查询操作是否支持将几何图形投影到虚拟网格上。需要 GeoScene Server 服务 2.0 或更高版本。
supportsQuantizationEditMode Boolean指示查询操作是否支持设计为在编辑模式(给定空间参考处的最高分辨率)中使用的量化。需要 GeoScene Server 服务 2.0 或更高版本。
supportsResultType Boolean指示是否可以控制查询操作返回的要素数。
supportsSqlExpression Boolean指示查询操作是否支持 SQL 表达式。
supportsStandardizedQueriesOnly Boolean指示查询操作是否支持使用标准化查询。在此处了解有关标准化查询的更多信息。
supportsStatistics Boolean指示图层是否支持基于字段的统计函数。需要 GeoScene Server 服务 2.0 或更高版本。
supportsHistoricMoment Boolean指示图层是否支持历史时刻查询。需要 GeoScene Server 服务 2.0 或更高版本。
data Object描述图层中数据的特征。
- 规范:
-
supportsZ Boolean
指示图层中的要素是否支持 z 值。对于场景图层,这始终是正确的。
editing Object描述可通过 applyEdits() 对图层中的要素执行的编辑功能。
- 规范:
-
supportsGeometryUpdate Boolean
指示图层中要素的几何是否可以编辑。目前不支持对场景图层进行几何编辑。
supportsGlobalId Boolean指示客户端提供的
globalId
值是否在 applyEdits 中使用。supportsRollbackOnFailure Boolean指示在编辑要素时是否可以将
rollbackOnFailureEnabled
参数设置为true
或false
。
operations Object描述可对图层中的要素执行的操作。
-
copyright String
-
场景服务定义的版权文本。
-
起始版本:GeoScene API for JavaScript 4.7
-
类的名称。声明的类名的格式为
geoscene.folder.className
。
-
definitionExpression String起始版本:GeoScene API for JavaScript 4.3
-
用于筛选要素的 SQL where 子句。只有满足定义表达式的特征才会保留在客户端上并显示在视图中。当仅应显示图层中数据的子集时,设置定义表达式非常有用。
设置图层的定义表达式会自动更新所有图层视图。
如果在将图层添加到地图后设置定义表达式,则视图将自动刷新以显示满足新定义表达式的要素。
弃用警告
以后设置
definitionExpression
加载客户端上的所有节点,丢弃不匹配过滤器的要素。这使用较少的内存,但过滤器更新将比当前版本慢。仅当过滤器很少更改时才应使用definitionExpression
,并且希望删除过滤后的要素以释放内存以供场景中的其他数据使用。对于快速客户端过滤器,请改用 SceneLayerView.filter 的
where
属性。示例:let layer = new SceneLayer({ url: "https://www.geosceneonline.cn/server/rest/services/Hosted/1864%E5%B7%A5%E5%8E%82%E5%9C%BA%E6%99%AF4_WSL1/SceneServer/layers/0", definitionExpression: "usage = 'Residential' AND totalHeight < 5" });
-
elevationInfo Object
-
指定图形在垂直轴 (z) 上的放置方式。有关如何使用此属性的示例,请参阅 ElevationInfo 示例。
此属性仅在使用
absolute-height
模式时影响 3D 对象场景图层。具有点几何图形的 SceneLayers 支持下面列出的所有高程模式。- 属性:
-
mode String
定义图形相对于地形表面的放置方式。有关可能值的列表,请参阅下表。
模式 说明 on-the-ground 图形叠加在地形表面上。这是使用 ObjectSymbol3DLayers 渲染 点几何的要素的默认值。 relative-to-ground 图形放置在相对于地形表面的高程处。图形的高程是通过对地形高程、 offset
值和几何图形的 z 值(如果存在)求和来确定的。这是使用 IconSymbol3DLayers 渲染 点几何图形的默认值。absolute-height 图形放置在海拔的绝对高程(z 值)处。此 z 值是通过将 offset
值和几何的 z 值(如果存在)相加来确定的。它没有考虑地形的高程。这是具有 3D 对象几何和点几何(其中 hasZ 为true
)的要素的默认值。relative-to-scene 图形与建筑物和其他对象对齐,这些对象是 3D 对象场景图层 或集成网格图层的一部分,具体取决于哪个具有较高的立面。如果图形不在建筑物或任何其他要素的正上方,则它将与地形表面高程对齐。如果存在,则将忽略 z 值。 可能值:"on-the-ground"|"relative-to-ground"|"absolute-height"|"relative-to-scene"
offset Number默认值:0如果存在,则将忽略 z 值。当
mode = "on-the-ground"
时,此属性不起作用。unit String默认值:metersoffset
值的单位。可能值:"feet"|"meters"|"kilometers"|"miles"|"us-feet"|"yards"
-
excludeObjectIds Collection<number>起始版本:GeoScene API for JavaScript 4.23
-
要从渲染中排除的对象 ID 的列表。
-
featureReduction FeatureReductionSelectionautocast起始版本:GeoScene API for JavaScript 4.4
-
配置用于整理视图中重叠要素的方法。如果未设置(或设置为
null
)此属性,则单独绘制每个要素。已知限制
在点应用要素还原时,SceneLayer 图层更新速度较慢。这将在即将发布的版本中得到解决。
- 另请参阅:
示例:layer.featureReduction = { type: "selection" };
-
图层中可访问的字段数组。根据场景服务的不同,字段对某些功能的支持可能有限。使用 getFieldUsageInfo() 查询可能使用特定字段的上下文(呈现、标记、弹出窗口或查询)。
-
fieldsIndex FieldsIndexreadonly起始版本:GeoScene API for JavaScript 4.12
-
可用于按名称对字段进行不区分大小写的查找的便捷属性。它还可以提供图层中日期字段的列表。
示例:// lookup a field by name. name is case-insensitive const field = layer.fieldsIndex.get("SoMeFiEld"); if (field) { console.log(field.name); // SomeField }
-
floorInfo LayerFloorInfoautocast起始版本:GeoScene API for JavaScript 4.19
-
将场景图层配置为楼层感知图层时,它将定义 floorInfo 属性。楼层感知图层是包含室内 GIS 数据的图层,这些数据表示可位于建筑物特定楼层的要素。
-
图层的全图范围。默认情况下,这是全球性的。此属性可用于设置视图范围以匹配图层的范围,以便其要素显示为填充视图。请参阅下面的示例代码段。
示例:// Once the layer loads, set the view's extent to the layer's fullextent layer.when(function(){ view.extent = layer.fullExtent; });
-
geometryType String
-
图层中要素的几何类型。
可能值:"point"|"mesh"
-
分配给图层的唯一 ID。如果未由开发人员设置,则会在加载图层时自动生成。
-
labelingInfo LabelClass[]
-
此图层的标签定义,指定为 LabelClass 的数组。使用此属性可以指定图层的标注属性,例如标注表达式、放置和大小。
- 另请参阅:
示例:let statesLabelClass = new LabelClass({ labelExpressionInfo: { expression: "$feature.NAME" }, symbol: { type: "label-3d", // autocasts as new LabelSymbol3D() symbolLayers: [{ type: "text", // autocasts as new TextSymbol3DLayer() material: { color: [ 49,163,84 ] }, size: 12 // points }] } }); sceneLayer.labelingInfo = [ statesLabelClass ];
-
labelsVisible Boolean
-
指示是否显示此图层的标注。如果为
true
,标签将按照 labelingInfo 属性中的定义显示。-
默认值:true
- 另请参阅:
-
-
layerId Number
-
场景服务图层的图层 ID 或图层索引。这在从包含多个图层的服务加载具有 portalItem 属性的单个图层时特别有用。您可以在以下两种情况之一中指定此值:
- 通过 portalItem 属性加载图层时。
- 将图层 url 直接指向场景服务时。
如果上述任一场景中均未指定 layerId,则选择服务中的第一层(
layerId = 0
)。示例:// while these examples use a SceneLayer, the same pattern can be // used for other layers that may be loaded from portalItem ids // loads the third layer in the given Portal Item let layer = new SceneLayer({ portalItem: { id: "73df987984b24094b848d580eb83b0fb" }, layerId: 2 });
// If not specified, the first layer (layerId: 0) will be returned let layer = new SceneLayer({ portalItem: { id: "73df987984b24094b848d580eb83b0fb" } });
// Can also be used if URL points to service and not layer let layer = new SceneLayer({ url: "https://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/SceneServer", layerId: 0 // Notice that the url doesn't end with /2 });
// This code returns the same layer as the previous snippet let layer = new SceneLayer({ url: "https://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/SceneServer/layers/0", // The layer id is specified in the URL });
-
legendEnabled Boolean
-
指示图层是否将包括在图例中。
-
默认值:true
-
-
指示图层在图层列表微件中的显示方式。下面列出可能值为:
值 说明 show 该图层在内容列表中可见。 hide 图层隐藏在内容列表中。 hide-children 如果图层时 GroupLayer, BuildingSceneLayer, KMLLayer, MapImageLayer, TileLayer 或 WMSLayer,请从内容列表中隐藏子图层。 可能值:"show"|"hide"|"hide-children"
-
默认值:show
-
-
指示图层的资源是否已加载。当
true
时,可以访问对象的所有属性。-
默认值:false
-
-
如果加载时发生错误,则返回 Error 对象。
-
默认值:null
-
-
表示加载操作的状态。
值 说明 not-loaded 对象的资源尚未加载。 loading 对象的资源当前正在加载。 loaded 对象的资源已加载且未出现错误。 failed 无法加载对象的资源。有关更多详情,请参阅加载错误。 可能值:"not-loaded"|"loading"|"failed"|"loaded"
-
默认值:not-loaded
-
-
加载时发生的警告列表。
-
maxScale Number
-
图层在视图中可见时的最大比例 (放至最大)。如果地图放大至超过此比例,则图层将不可见。值为
0
时,表示该图层没有最大比例。maxScale 值应始终小于 minScale 值,并且大于或等于服务规范。-
默认值:0
示例:// The layer will not be visible when the view is zoomed in beyond a scale of 1:1,000 layer.maxScale = 1000;
// The layer's visibility is not restricted to a maximum scale. layer.maxScale = 0;
-
-
minScale Number
-
图层在视图中可见的最小比例(最大缩小)。如果地图缩小到超出此比例,则图层将不可见。值为
0
表示该图层没有最小比例。minScale 应始终大于 maxScale 值,并且小于或等于服务规范。-
默认值:0
示例:// The layer will not be visible when the view is zoomed out beyond a scale of 1:3,000,000 layer.minScale = 3000000;
// The layer's visibility is not restricted to a minimum scale. layer.minScale = 0;
-
-
图层不透明。此值的范围在
1
到0
之间,其中0
是 100% 透明,而1
为完全不透明。-
默认值:1
示例:// Makes the layer 50% transparent layer.opacity = 0.5;
-
-
起始版本:GeoScene API for JavaScript 4.12
-
服务中要包含在每个要素中的字段名称的数组。要从图层中的所有字段中获取值,请使用
["*"]
。将请求在outFields
中指定的字段以及用于渲染、标记和设置图层高程信息的必填字段。必填字段和outFields
用于填充 SceneLayerView.availableFields。如果字段不是用于呈现的必填字段的一部分,则设置此属性以包括将用于客户端查询的字段。-
默认值:null
- 另请参阅:
示例:// Includes all fields from the service in the layer sl.outFields = ["*"];
// Get the specified fields from the service in the layer // These fields will be added to SceneLayerView.availableFields // along with rendering and labeling fields. Use these fields // for client-side querying. sl.outFields = ["NAME", "POP_2010", "FIPS", "AREA"];
// set the outFields for the layer coming from webscene webscene.when(function () { layer = webscene.layers.getItemAt(1); layer.outFields = ["*"]; });
-
-
popupEnabled Boolean
-
指示在单击图层中的要素时是否显示弹出窗口。图层需要有一个弹出窗口模板 来定义应在弹出窗口中显示的信息。或者,如果 Popup.defaultPopupTemplateEnabled 设置为
true
,则可以自动使用默认弹出窗口模板。
-
popupTemplate PopupTemplateautocast
-
图层的弹窗模板。在图层上设置时,
popupTemplate
允许用户在使用文本和/或图表选择功能时访问属性并在视图的弹出窗口中显示其值。有关 PopupTemplate 如何与 FeatureLayer 交互的示例,请参阅 PopupTemplate 示例。在此图层类型上设置 PopupTemplate 的方式与 FeatureLayer 相同。当 Popup.defaultPopupTemplateEnabled 设置为
true
时,如果没有定义popupTemplate
,则会自动使用默认弹出模板。
-
portalItem PortalItem
-
从中加载图层的门户项目。如果门户项目引用要素服务或场景服务,则可以使用 layerId 属性指定要加载的单个图层。
从版本 4.17 开始,可以从 GeoScene Online 和 GeoScene Enterprise 中托管的要素服务项目加载表。这仅适用于要素图层,如果 FeatureLayer.isTable 返回
true
,将成功加载。示例:// While this example uses FeatureLayer, this same pattern can be // used for other layers that may be loaded from portalItem ids. const lyr = new FeatureLayer({ portalItem: { // autocasts as new PortalItem() id: "caa9bd9da1f4487cb4989824053bb847" } // the first layer in the service is returned });
// Set hostname when using an on-premise portal (default is GeoScene Online) // geosceneConfig.portalUrl = "http://myHostName.geoscene.cn/geoscene"; // While this example uses FeatureLayer, this same pattern can be // used for SceneLayers. const lyr = new FeatureLayer({ portalItem: { // autocasts as new PortalItem() id: "8d26f04f31f642b6828b7023b84c2188" }, // loads the third item in the given feature service layerId: 2 });
// This snippet loads a table hosted in GeoScene Online. const table = new FeatureLayer({ portalItem: { // autocasts as geoscene/portal/PortalItem id: "123f4410054b43d7a0bacc1533ceb8dc" } }); // Before adding the table to the map, it must first be loaded and confirm it is the right type. table.load().then(function() { if (table.isTable) { map.tables.add(table); } });
-
分配给图层的渲染器。渲染器定义了如何可视化层中的每个要素。根据渲染器类型,可以使用相同的符号或基于提供的属性字段或函数的值使用不同的符号来可视化要素。
示例:// all features in the layer will be visualized with // a blue color layer.renderer = { type: "simple", // autocasts as new SimpleRenderer() symbol: { type: "mesh-3d", // autocasts as new MeshSymbol3D() symbolLayers: [{ type: "fill", // autocasts as new FillSymbol3DLayer() material: { color: "blue" } }] } };
-
screenSizePerspectiveEnabled Boolean起始版本:GeoScene API for JavaScript 4.4
-
将透视缩放应用于 SceneView 中屏幕大小的点符号。如果为
true
,屏幕大小的对象(如图标, 标签 或标注 )通过将特定透视投影应用于要素大小,可以更好地集成到 3D 场景中。这仅适用于使用 SceneView 时。layer.screenSizePerspectiveEnabled = true
layer.screenSizePerspectiveEnabled = false
已知限制
屏幕尺寸透视目前未针对摄像机非常靠近地面的情况或点要素远离地面的场景进行优化。在这些情况下,最好关闭屏幕大小透视。由于屏幕尺寸透视会根据到摄像机的距离而改变尺寸,因此在使用尺寸可视变量时应将其设置为 false。
-
默认值:true
- 另请参阅:
-
-
spatialReference SpatialReferenceautocast
-
图层的空间参考。
-
title String
-
按服务 URL 加载图层时,标题派生自服务名称。如果服务具有多个图层,则每个图层的标题将是服务名称和图层名称的串联。从门户项目加载图层时,将改用门户项目的标题。最后,如果将图层作为 web 地图或 webscene 的一部分进行加载,则将使用存储在 webmap/webscene 中的图层标题。
-
type Stringreadonly
-
对于 SceneLayer 类型总为 "scene"。
-
url String
-
图层或场景服务的 REST 端点的 URL。URL 可以指向 GeoScene Enterprise 或 GeoScene Online 上的资源。
当 url 直接指向服务而不是特定层时,可以使用 layerId 属性指定该层。如果未指定 layerId,则它将默认为服务中的第一个图层。
示例:// Layer from Scene Service on GeoScene Server let sceneLayer = new SceneLayer({ url: "hhttps://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/SceneServer/layers/0" });
// Can also be used if URL points to service and not layer let layer = new SceneLayer({ // Notice that the url doesn't end with /0 url: "https://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/SceneServer", layerId: 0 });
-
version Objectreadonly
-
用于此服务的场景服务规范的版本。
示例:// Prints the version to the console - e.g. 1.4, 1.5, etc. console.log(layer.version.versionString);
-
-
默认值:true
示例:// The layer is no longer visible in the view layer.visible = false;
-
方法概述
名称 | 返回类型 | 描述 | 类 | |
---|---|---|---|---|
Promise<Object> | 更多信息
将属性编辑应用于关联 FeatureLayer 中的要素。 |
更多信息 | SceneLayer | |
更多信息
如果 load() 操作已在进行中,则取消该操作。 |
更多信息 | Layer | ||
Promise<LayerView> | 更多信息
当图层添加到 Map.layers 集合并且必须为其创建图层视图时,由视图(例如 MapView 和 SceneView)调用。 |
更多信息 | Layer | |
PopupTemplate | 更多信息
为图层创建默认弹出窗口模板,并使用图层的所有字段进行填充。 |
更多信息 | SceneLayer | |
查询 | 更多信息
创建可用于获取满足图层当前定义表达式的要素的查询对象。 |
更多信息 | SceneLayer | |
更多信息
销毁图层和任何关联的资源(包括其 portalItem,如果它是图层上的属性)。 |
更多信息 | Layer | ||
布尔值 | 更多信息
在实例上发出事件。 |
更多信息 | Layer | |
Promise<Object> | 更多信息
在图层可用时提取图层的自定义归因数据。 |
更多信息 | Layer | |
Field | 更多信息
返回字段名称的 Field 实例(不区分大小写)。 |
更多信息 | SceneLayer | |
属性域 | 更多信息
返回与给定字段名称关联的域。 |
更多信息 | SceneLayer | |
Object | 更多信息
获取字段用法信息。 |
更多信息 | SceneLayer | |
布尔值 | 更多信息
指示实例上是否存在与提供的事件名称匹配的事件侦听器。 |
更多信息 | Layer | |
布尔值 | 更多信息
|
更多信息 | Layer | |
布尔值 | 更多信息
|
更多信息 | Layer | |
布尔值 | 更多信息
|
更多信息 | Layer | |
Promise | 更多信息
加载此类引用的资源。 |
更多信息 | Layer | |
Object | 更多信息
在实例上注册事件处理程序。 |
更多信息 | Layer | |
Object | 更多信息
从服务中查询给定字段的缓存统计信息。 |
更多信息 | SceneLayer | |
Promise<Object> | 更多信息 | 更多信息 | SceneLayer | |
Promise<Number> | 更多信息
对关联的要素服务执行查询并返回满足查询的要素数。 |
更多信息 | SceneLayer | |
Promise<FeatureSet> | 更多信息
对关联的要素服务执行查询 并返回 FeatureSet。 |
更多信息 | SceneLayer | |
Promise<Number[]> | 更多信息
对关联的要素服务执行查询并返回满足输入查询的要素的 ObjectID 数组。 |
更多信息 | SceneLayer | |
Promise | 更多信息
|
更多信息 | Layer |
方法详情
-
将属性编辑应用于关联 FeatureLayer 中的要素。可编辑 SceneLayer 的先决条件是启用了编辑和更改跟踪的关联 FeatureLayer具有已编辑属性的要素将使用更新的属性进行渲染,直到已编辑要素的数量超过 50,000。之后,将不检索已编辑的属性,并使用缓存的过时属性来渲染要素。有关更多详细信息,请参见编辑部分。
参数:规范:edits Object包含要更新的要素的对象。
规范:updateFeatures Graphic[]|Collection<Graphic>可选要更新的数组或要素集合。每个要素都必须具有有效的 objectId。更新要素时必须提供不可为空的字段的值。日期字段必须具有表示通用时间的数 值。
options Object可选编辑要素时要指定的其他编辑选项。
规范:rollbackOnFailureEnabled Boolean可选指示是否仅当所有提交的编辑都成功时才应用编辑。如果为
false
,则即使某些提交的编辑失败,服务器也会应用成功的编辑。如果为true
,则服务器将仅在所有编辑均成功后才应用编辑。如果使用此参数,图层的 capabilities.editing.supportsRollbackOnFailure 属性必须为true
。如果某个层的supportsRollbackOnFailure
为false
,则无论参数如何设置,rollbackOnFailureEnabled
都始终为 true。globalIdUsed Boolean可选指示是否可以使用要素的 globalId 应用编辑。仅当图层的 geometryType 属性为
true
时,此参数才适用。当为false
时,与要素一起提交的 globalIds 将被忽略,并且服务将新的 globalIds 分配给新要素。如果为true
,则 globalIds 必须与新要素一起提交。更新现有要素时,如果globalIdUsed
为false
,则必须提供要更新要素的 objectIds。如果globalIdUsed
为true
,则必须提供要更新的要素的 globalIds。删除现有要素时,请将此属性设置为false
,因为删除操作仅接受 API 当前版本的objectIds
。返回:类型 说明 Promise<Object> 解析为包含编辑结果的对象。有关详细信息,请参阅下面的对象规范表。 属性 类型 说明 updateFeatureResults FeatureEditResult[] 更新要素的结果。
-
当图层添加到 Map.layers 集合并且必须为其创建图层视图时,由视图(例如 MapView 和 SceneView)调用。此方法在内部使用,没有直接调用它的用例。
参数:view *父视图。
options Object可选指定其他选项的对象。有关此对象的必需属性,请参阅下面的对象规范表。
规范:signal AbortSignal可选中止层视图创建的信号。
返回:类型 说明 Promise<LayerView> 使用 LayerView 实例进行解析。 - 另请参阅:
-
createPopupTemplate(options){PopupTemplate}起始版本:GeoScene API for JavaScript 4.11
-
为图层创建默认弹出窗口模板,并使用图层的所有字段进行填充。
参数:options CreatePopupTemplateOptions可选用于创建弹出模板的选项。
返回:类型 说明 PopupTemplate 弹出模板,如果图层没有任何字段,则为 null
。
-
createQuery(){Query}起始版本:GeoScene API for JavaScript 4.3
-
创建可用于获取满足图层当前定义表达式的要素的查询对象。查询只能在图层上使用,而不能在图层视图上使用。
返回:类型 说明 查询 表示图层定义表达式的查询对象。
-
destroy()inherited起始版本:GeoScene API for JavaScript 4.17
-
销毁图层和任何关联的资源(包括其 portalItem,如果它是图层上的属性)。该图层一旦被破坏就不能再使用了。
被破坏的图层将从其父对象(如 Map、 WebMap、 WebScene、 Basemap、 Ground、GroupLayer)中移除。
-
起始版本:GeoScene API for JavaScript 4.5
-
在实例上发出事件。仅当创建此类的子类时,才应使用此方法。
参数:type String事件的名称。
event Object可选事件负载。
返回:类型 说明 布尔值 true
如果通知了侦听器
-
getField(fieldName){Field}起始版本:GeoScene API for JavaScript 4.12
-
返回字段名称的 Field 实例(不区分大小写)。
参数:fieldName String字段的名称。
返回:类型 说明 Field 匹配字段或 undefined
- 另请参阅:
-
getFieldDomain(fieldName, options){Domain}起始版本:GeoScene API for JavaScript 4.12
-
返回与给定字段名称关联的域。域可以是 CodedValueDomain 或 RangeDomain。
参数:fieldName String字段的名称。
options Object可选指定其他选项的对象。有关此对象的必需属性,请参阅下面的对象规范表。
规范:feature Graphic域分配到的功能。
返回:类型 说明 属性域 与给定要素的给定字段名称关联的域对象。
-
getFieldUsageInfo(fieldName){Object}
-
获取字段用法信息。字段的使用取决于它是否存储为场景服务缓存的一部分。返回的对象包含以下使用信息:
属性 类型 说明 portsRenderer 布尔值 指示字段可以在呈现器中使用(例如在可视变量中),请参阅渲染器 supportsLabelingInfo 布尔值 表示一个字段可以用于标注,请参见 labelingInfo。 supportsPopupTemplate 布尔值 指示字段可以在弹出模板中使用,请参阅 popupTemplate。 supportsLayerQuery 布尔值 指示字段可用于图层查询,请参阅 queryFeatures()。 参数:fieldName String要获取其使用情况信息的字段的名称。
返回:类型 说明 Object 字段用法。
-
isFulfilled()
可用于验证创建类的实例是否已完成(已解决或已拒绝)。如果满足,则返回true
。返回:类型 说明 布尔值 指示创建类的实例是否已完成(已解决或已拒绝)。
-
isRejected()
可用于验证创建类的实例是否被拒绝。如果拒绝,则返回true
。返回:类型 说明 布尔值 指示创建类的实例是否已被拒绝。
-
isResolved()
可用于验证创建类的实例是否已解决。如果已解决,则返回true
。返回:类型 说明 布尔值 指示创建类的实例是否已解决。
-
加载此类引用的资源。如果视图是使用地图实例构造的,则此方法会自动为视图及其在地图中引用的所有资源执行。
开发人员在访问不会在视图中加载的资源时必须调用此方法。
load()
方法仅在第一次调用时触发资源的加载。随后的调用返回相同的promise。可以提供一个
signal
来停止对Loadable
实例的加载状态感兴趣。当信号中止时,实例不会停止其加载过程,只有 cancelLoad 可以中止它。参数:signal AbortSignal可选可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的错误 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回:类型 说明 Promise 资源已加载时解析。
-
在实例上注册事件处理程序。调用此方法以将事件与侦听器挂钩。
参数:要侦听的事件或事件数组。
listener Function事件触发时调用的函数。
返回:类型 说明 Object 返回带有 remove()
方法的事件处理程序,应调用该方法以停止侦听事件。属性 类型 说明 remove 函数 调用时,从事件中删除侦听器。 示例:view.on("click", function(event){ // event is the event handle returned after the event fires. console.log(event.mapPoint); });
-
queryCachedStatistics(fieldName, options){Object}起始版本:GeoScene API for JavaScript 4.13
-
从服务中查询给定字段的缓存统计信息。
参数:fieldName String要查询统计信息的字段的名称。
options Object可选具有以下属性的对象。
规范:signal AbortSignal可选可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的错误 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回:类型 说明 Object 统计文件。 示例:layer.queryCachedStatistics("FIELDNAME") .then(function(statistics) { console.log(statistics); });
-
对关联的要素服务执行查询并返回满足查询的要素的 2D 范围。目前,可以使用 SceneLayerView.queryExtent() 返回 3D 范围,但这只会返回视图中当前要素的 3D 范围。仅当 SceneLayer 具有关联的要素图层时,查询才会成功。如果关联的要素图层不可用,则会引发名为
scenelayer:query-not-available
的错误。在上面类描述的查询部分阅读更多关于查询的信息。参数:可选 Autocasts from Object指定查询参数。
options Object可选具有以下属性的对象。
规范:signal AbortSignal可选可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的错误 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回:类型 说明 Promise<Object> 解析后,返回满足输入查询的要素的范围和计数。有关详细信息,请参阅下面的对象规范表。 属性 类型 说明 count 整数 满足输入查询的要素数。 extent 范围 满足查询的要素的范围。 - 另请参阅:
-
对关联的要素服务执行查询并返回满足查询的要素数。仅当启用图层的
supportsLayerQuery
功能时,查询才会成功。使用 getFieldUsageInfo() 方法检查图层是否支持查询。如果未启用查询,则会引发名为scenelayer:query-not-available
的错误。在上面类描述的查询部分阅读更多关于查询的信息。参数:可选 Autocasts from Object指定查询参数。
options Object可选具有以下属性的对象。
规范:signal AbortSignal可选可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的错误 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回:类型 说明 Promise<Number> 解析为满足查询的要素的计数。
-
queryFeatures(query, options){Promise<FeatureSet>}
-
对关联的要素服务执行查询 并返回 FeatureSet。仅当启用图层的
supportsLayerQuery
功能时,查询才会成功。使用 getFieldUsageInfo() 方法检查图层是否支持查询。如果未启用查询,则会引发名为scenelayer:query-not-available
的错误。在上面类描述的查询部分阅读更多关于查询的信息。参数:可选 Autocasts from Object指定查询参数。
options Object可选具有以下属性的对象。
规范:signal AbortSignal可选可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的错误 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回:类型 说明 Promise<FeatureSet> 解析为包含满足查询的要素的 FeatureSet。
-
对关联的要素服务执行查询并返回满足输入查询的要素的 ObjectID 数组。仅当启用图层的
supportsLayerQuery
功能时,查询才会成功。使用 getFieldUsageInfo() 方法检查图层是否支持查询。如果未启用查询,则会引发名为scenelayer:query-not-available
的错误。在上面类描述的查询部分阅读更多关于查询的信息。参数:可选 Autocasts from Object指定查询参数。
options Object可选具有以下属性的对象。
规范:signal AbortSignal可选可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的错误 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回:类型 说明 Promise<Number[]> 解析为表示满足查询的要素的对象 ID 的数字数组。
-
起始版本:GeoScene API for JavaScript 4.6
-
when()
可以在创建类的实例后利用。这个方法有两个输入参数:一个callback
函数和一个errback
函数。callback
在类的实例加载时执行。errback
在类的实例无法加载时执行。参数:callback Function可选当 promise 解决时调用的函数。
errback Function可选当 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 });
事件概述
名称 | 类型 | 描述 | 类 | |
---|---|---|---|---|
{view: View,layerView: LayerView} |
更多信息
在视图中创建并渲染图层的 LayerView 后激发。 |
更多信息 | Layer | |
{view: View,error: Error} |
更多信息
在将图层添加到地图后,在创建 LayerView 期间发出错误时触发。 |
更多信息 | Layer | |
{view: View,layerView: LayerView} |
更多信息
在图层的 LayerView 被销毁且不再在视图中渲染后触发。 |
更多信息 | Layer |
事件详述
-
layerview-createinherited
-
在视图中创建并渲染图层的 LayerView 后激发。
示例:// This function will fire each time a layer view is created for this // particular view. layer.on("layerview-create", function(event){ // The LayerView for the layer that emitted this event event.layerView; });
-
layerview-create-errorinherited
-
在将图层添加到地图后,在创建 LayerView 期间发出错误时触发。
示例:// This function fires when an error occurs during the creation of the layer's layerview layer.on("layerview-create-error", function(event) { console.error("LayerView failed to create for layer with the id: ", layer.id, " in this view: ", event.view); });