概览
SceneLayer 是一种图层类型,旨在用于在 SceneView 中按需流式传输和显示大量数据。SceneLayers 支持两种几何类型:点和 3D 对象 (例如建筑物)。
您可通过搜索图库在 GeoScene Online 中查找许多 SceneLayers 示例。
发布 SceneLayer
SceneLayer 可显示来自场景服务的数据。场景服务可以以适合 Web 流的开放格式保存大量要素。SceneLayer 从粗略的制图表达开始逐步加载这些要素,并根据特写视图的需要将其细化为更高的细节。
通过上传场景图层包 (.slpk) 或从 GeoScene Pro 发布场景图层包,可以在 GeoScene Online 或 GeoScene Enterprise 上托管场景服务。根据发布 SceneLayer 的方式,有两种类型的图层:具有关联要素图层的 SceneLayer 和仅具有缓存属性的 SceneLayer。有关更多信息,请参阅场景图层指南主题的发布部分。
场景服务由 GeoScene Server REST 资源的 URL 或 portalItem 标识:
let sceneLayer = new SceneLayer({
url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Paris_3D_Local_WSL2/SceneServer/layers/0"
});
let sceneLayer = new SceneLayer({
portalItem: {
id: "b8138adb2ba7479cadba52d382b34c3b"
}
});
大多数情况下,最好从门户项目而不是场景服务 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 Object SceneLayers 形状的感知,还可使用边缘对其进行可视化。请参阅可视化概述主题,以了解有关数据可视化技术的详细信息。
在具有视觉变量的数据驱动可视化中使用的属性必须可以访问 SceneLayer 的缓存。对于仅具有缓存属性的 SceneLayers 和具有关联要素图层的 SceneLayer,属性值均来自缓存。因此,如果要素图层上的属性发生更改,可视化效果将不会更新。将缓存属性的数量保持在最少可以提高 SceneLayer 的性能。因此,使用通过图层的缓存提供的属性是最佳实践。
过滤数据
可以使用 SQL where 子句对 SceneLayer 进行过滤。过滤是使用 definitionExpression 属性实现的。此属性使用缓存的 SceneLayer 属性在客户端上计算,并且仅支持标准化 SQL。
let layer = new SceneLayer({
url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Paris_3D_Local_WSL2/SceneServer/layers/0",
definitionExpression: "Type_Toit = 'plat' AND H_MAX <= 20"
});
过滤数据的另一种方法是在 SceneLayerView 上使用 FeatureFilter。这将仅显示满足过滤条件的要素。设置 geometry 和 spatialRelationship 允许您根据传入几何的 spatialRelationship 过滤要素。目前仅支持 contains
、intersects
或 disjoint
类型的空间关系。
或者,也可直接在图层上的 filter 属性上使用 SceneFilter。它的工作方式与 FeatureFilter 类似,但您可以定义多个几何对象。在保存图层时,也会在 WebScenes 中保留此过滤器。
有关详细信息,请参阅使用 FeatureFilter 过滤 SceneLayer 或使用 SceneFilter 过滤 SceneLayer 示例。
弹出窗口
点和 3D 对象场景图层可以使用 popupTemplate 属性自定义弹出窗口内容。具有关联要素图层的 SceneLayer 将在关联的要素图层中查询属性。对于仅具有缓存属性的 SceneLayer,属性来自缓存。还支持 popupTemplate 中 expressionInfo
的 Arcade 表达式。
查询
SceneLayer 和 SceneLayerView 均支持查询,但行为不同。
查询 SceneLayer 将从关联要素图层的属性中检索结果。如果图层没有关联的要素图层,则查询将被拒绝并显示错误。图层上的查询功能强大,因为它们是在 SceneLayer 中的所有要素上进行的,并且还支持高级查询。当 spatialRelationship 设置为 intersects
、contains
或 disjoint
时,支持空间查询。
为了在 SceneLayerView 上进行基于属性的查询,需要在 SceneLayer 的 outFields 属性中指定必填字段,以确保客户端上的属性值可用于查询。您可以使用 availableFields 来检查客户端上可用的字段。在 SceneLayerView 上,可以通过设置查询的 geometry 和 spatialRelationship 来进行空间查询。请注意,对于 3D Object SceneLayers,这些空间关系是基于 Extent 而不是要素的覆盖区进行评估的。SceneLayerView 上的查询可返回当前在视图中加载的要素的结果。
查询方法 | SceneLayer (仅当其具有关联的要素图层时才有效) | SceneLayerView (适用于所有场景图层) |
---|---|---|
queryExtent | 返回满足查询的所有要素的 2D 范围 | 返回满足查询的当前加载要素的 3D 范围 |
queryFeatureCount | 返回满足查询的所有要素的数量 | 返回满足查询的当前加载要素的数量 |
queryFeatures | 返回满足查询的所有要素 | 返回满足查询的当前加载的要素 |
queryObjectIds | 返回满足查询的所有要素的 objectIds | 返回满足查询的当前加载要素的 objectIds |
已知限制
- 空间查询具有与投影引擎文档中列出的查询相同的限制。
- 计算与查询几何的空间关系时,空间查询使用要素的范围,而不是轮廓线。这意味着,即使要素的轮廓线与几何不存在空间关系,也可能从查询中返回要素。
- 目前,空间查询仅支持
intersects
、contains
和disjoint
spatialRelationships。 - 如果 SceneLayer 具有以下任何一个 SpatialReferences,则当前不支持空间查询:
- GDM 2000 (4742) - 马来西亚
- Gsterberg (Ferro) (8042) - 奥地利/捷克共和国
- ISN2016 (8086) - 冰岛
- SVY21 (4757) - 新加坡
获取 SceneLayers 的几何/范围
3D 对象 SceneLayers 不返回原始几何,因为这是一种二进制格式。要获取空间信息,可以查询 SceneLayer 中要素的 2D 范围或 3D 范围。可以使用 SceneLayer 上的 queryExtent() 方法检索所有要素 (甚至是尚未加载的要素) 的 2D 范围。仅当图层具有关联的要素图层时,此方法才会成功。只能使用 SceneLayerView 上的 queryExtent() 方法查询已加载要素的 3D 范围。
在任何查询方法上将 returnGeometry 设置为 true
时,点 SceneLayers 可返回几何图形。此外,可以使用 SceneLayer 上的 queryExtent() 检索多个点的 2D 范围。无法仅获取具有缓存属性的 SceneLayer 的范围。
编辑:属性更新
目前,只有场景图层上的 applyEdits 方法支持属性更新。可编辑 SceneLayer 的先决条件是启用了编辑和更改跟踪的关联 FeatureLayer。有关发布的详细信息,请参阅场景图层指南主题的发布部分。具有已编辑属性的要素将使用更新的属性进行渲染,直到已编辑要素的数量超过 50,000。之后,将不检索已编辑的属性,并使用缓存的过时属性来渲染要素。在达到此最大数量之前,重新构建场景图层的缓存。
场景图层属性更新的一个用例是更改状态和类型,请检查此示例:示例 - SceneLayer 属性编辑。在此示例中,可编辑的要素图层将共享给所有人。因此,每个人都可以修改这些数据。在实际用例中,只有经过授权的编辑者才能编辑图层。在这种情况下,关联的要素图层不会公开共享,并且只有编辑者才能访问。要使编辑内容对场景图层用户可见,必须重新构建缓存。
已知限制
- 由于向工作人员传输数据时的大小限制,具有非常复杂几何结构的图层可能无法在 Firefox 中正确加载。
- 另请参阅
构造函数
属性概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
Object | 描述图层的受支持功能。 更多详情 | SceneLayer | |
String | 场景服务定义的版权文本。 更多详情 | SceneLayer | |
String | 类的名称。 更多详情 | Accessor | |
String | 用于过滤要素的 SQL where 子句。 更多详情 | SceneLayer | |
Object | 指定要素在垂直轴 (z) 上的放置方式。 更多详情 | SceneLayer | |
Collection<number> | 视图中未显示的 ObjectID 列表。 更多详情 | SceneLayer | |
FeatureReductionSelection | 配置用于清理视图中重叠要素的方法。 更多详情 | SceneLayer | |
Field[] | 图层中可访问的字段数组。 更多详情 | SceneLayer | |
FieldsIndex | 便捷属性,可用于按字段名称对字段进行不区分大小写的查找。 更多详情 | SceneLayer | |
SceneFilter | 多边形几何的集合,可掩膜图层的不同部分。 更多详情 | SceneLayer | |
LayerFloorInfo | 将场景图层配置为楼层感知型图层时,该图层将定义 floorInfo 属性。 更多详情 | SceneLayer | |
Extent | 图层的完整范围。 更多详情 | Layer | |
String | 图层中要素的几何类型。 更多详情 | SceneLayer | |
String | 分配给图层的唯一 ID。 更多详情 | Layer | |
LabelClass[] | 此图层的标注定义,指定为 LabelClass 的数组。 更多详情 | SceneLayer | |
Boolean | 指示是否显示此图层的标注。 更多详情 | SceneLayer | |
Number | 场景服务图层的图层 ID 或图层索引。 更多详情 | SceneLayer | |
Boolean | 指示图层是否将包含在图例中。 更多详情 | SceneLayer | |
String | 指示图层在 LayerList 微件中的显示方式。 更多详情 | Layer | |
Boolean | 指示图层的资源是否已加载。 更多详情 | Layer | |
Error | 如果加载时发生错误,则返回 Error 对象。 更多详情 | Layer | |
String | 表示 load 操作的状态。 更多详情 | Layer | |
Object[] | 加载时发生的警告列表。 更多详情 | Layer | |
Number | 图层在视图中可见时的最大比例 (放至最大)。 更多详情 | SceneLayer | |
Number | 图层在视图中可见时的最小比例 (缩至最小)。 更多详情 | SceneLayer | |
String | 包含每个图形对象 ID 的字段的名称。 更多详情 | SceneLayer | |
Number | 图层的不透明度。 更多详情 | Layer | |
String[] | 要包含在每个要素中的字段名称数组。 更多详情 | SceneLayer | |
Boolean | 指示单击图层中的要素时是否显示弹出窗口。 更多详情 | SceneLayer | |
PopupTemplate | 图层的弹出模板。 更多详情 | SceneLayer | |
PortalItem | 从中加载图层的门户项目。 更多详情 | SceneLayer | |
Renderer | 分配给图层的渲染器。 更多详情 | SceneLayer | |
Boolean | 在 SceneView 中对屏幕大小的点符号应用透视缩放。 更多详情 | SceneLayer | |
SpatialReference | 图层的空间参考。 更多详情 | SceneLayer | |
String | 用于在某些地方标识它的图层标题,例如在 Legend 和 LayerList 微件中。 更多详情 | SceneLayer | |
String | 对于 SceneLayer,类型总是 "scene"。更多详情 | SceneLayer | |
String | 图层或场景服务的 REST 端点的 URL。 更多详情 | SceneLayer | |
Object | 用于此服务的场景服务规范的版本。 更多详情 | SceneLayer | |
Boolean | 指示图层在 View 中是否可见。 更多详情 | Layer |
属性详细信息
-
apiKey String起始版本:GeoScene Maps SDK 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指示图层的查询响应是否包括要素的范围。
supportsGeometryProperties Boolean指示图层的查询响应是否包含几何属性,包括形状面积和长度属性。2016 年 12 月以来创建的 GeoScene Online 托管要素服务和 1.7 版本以来创建的 GeoScene Enterprise 要素服务均支持此操作。
supportsHavingClause Boolean指示图层是否支持服务上的 having 子句。
supportsOrderBy Boolean指示查询响应中返回的要素是否可以按一个或多个字段排序。
supportsPagination Boolean指示查询响应是否支持分页。
supportsPercentileStatistics Boolean表示图层是否支持百分位数统计类型。
supportsQueryGeometry Boolean表示查询响应是否包含查询几何。这仅对 有效。
supportsQuantization Boolean指示查询操作是否支持将几何投影到虚拟网格上。
supportsQuantizationEditMode Boolean指示查询操作是否支持旨在用于编辑模式的量化 (给定空间参考的最高分辨率)。
supportsResultType Boolean表示是否可以控制查询操作返回的要素数量。
supportsSqlExpression Boolean表示查询操作是否支持 SQL 表达式。
supportsStandardizedQueriesOnly Boolean指示查询操作是否支持使用标准化查询。
supportsStatistics Boolean指示图层是否支持基于字段的统计函数。需要 GeoScene Server 服务 1.1 或更高版本。
supportsHistoricMoment Boolean表示图层是否支持历史时刻查询。
data Object描述图层中数据的特征。
- 规范
-
supportsZ Boolean
指示图层中的要素是否支持 z 值。对于场景图层,这始终是 true。
editing Object描述可通过 applyEdits() 对图层中的要素执行的编辑功能。
- 规范
-
supportsGeometryUpdate Boolean
指示是否可以编辑图层中要素的几何。目前,不支持对场景图层进行几何编辑。
supportsGlobalId Boolean指示客户端提供的
globalId
值是否用于 applyEdits。supportsRollbackOnFailure Boolean表示在编辑要素时,
rollbackOnFailureEnabled
参数是否可以设置为true
或false
。
operations Object描述可对图层中的要素执行的操作。
-
copyright String
-
场景服务定义的版权文本。
-
起始版本:GeoScene Maps SDK for JavaScript 4.7
-
类的名称。声明的类名称格式化为
geoscene.folder.className
。
-
definitionExpression String起始版本:GeoScene Maps SDK for JavaScript 4.3
-
用于过滤要素的 SQL where 子句。仅满足定义表达式的要素才会保留在客户端上并显示在 View 中。当仅显示图层中数据的子集时,设置定义表达式非常有用。
设置图层的定义表达式会自动更新所有图层视图。
如果在将图层添加到地图后设置定义表达式,则视图将自动刷新以显示满足新定义表达式的要素。
弃用警告
未来,设置
definitionExpression
将加载客户端上的所有节点,丢弃不匹配过滤器的要素。这将使用较少的内存,但过滤器更新将比当前版本慢。仅当过滤器很少更改时,才应使用definitionExpression
,且移除过滤的要素可释放内存以供场景中的其他数据使用。对于快速客户端过滤器,请改用 SceneLayerView.filter 的
where
属性。示例let layer = new SceneLayer({ url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Paris_3D_Local_WSL2/SceneServer/layers/0", definitionExpression: "Type_Toit = 'plat' AND H_MAX <= 20" });
-
elevationInfo Object
-
指定要素在垂直轴 (z) 上的放置方式。有关如何使用该属性的示例,请参阅 ElevationInfo 示例。
relative-to-scene
模式不会影响 3D 对象 SceneLayers。具有点几何的 SceneLayers 支持下面列出的所有高程模式。- 属性
-
mode String
定义要素相对于地形表面的放置方式。有关可能值列表,请参见下表。
模式 描述 on-the-ground 要素放置在地形表面上。这是使用 ObjectSymbol3DLayers 渲染的点几何要素的默认值。 relative-to-ground 要素放置在相对于地形表面的高程处。要素高程是由地形高程、 offset
值和几何的 z 值 (如果存在) 的总和来确定的。这是使用 IconSymbol3DLayers 渲染的 Point 几何的默认值。absolute-height 要素放置在海平面以上的绝对高程 (z 值) 处。此 z 值是通过将 offset
值和几何的 z 值 (如果存在) 相加来确定的。它没有考虑地形的高度。这是具有 3D 对象几何和点几何 (其中 hasZ 为true
) 的要素的默认值。relative-to-scene 要素与建筑物和其他对象对齐,这些对象为 3D 对象 SceneLayer 或 IntegratedMeshLayer 的一部分,具体取决于哪个高程更高。如果图形不在建筑物或任何其他要素的正上方,则将其与地形表面高程对齐。如果存在,则将几何的 z 值添加到高程中。 可能值:"on-the-ground"|"relative-to-ground"|"absolute-height"|"relative-to-scene"
offset Number默认值:0高程偏移,将其添加到要素的垂直位置。当
mode = "on-the-ground"
时,则此属性无效。unit String默认值:metersoffset
值的单位。可能值:"feet"|"meters"|"kilometers"|"miles"|"us-feet"|"yards"
-
excludeObjectIds Collection<number>起始版本:GeoScene Maps SDK for JavaScript 4.23
-
视图中未显示的 ObjectID 列表。
-
featureReduction FeatureReductionSelectionautocast起始版本:GeoScene Maps SDK for JavaScript 4.4
-
配置用于清理视图中重叠要素的方法。如果未设置此属性 (或设置为
null
),则单独绘制每个要素。仅具有非叠加 Icon 或 Text 符号图层的点场景图层支持此属性。
已知限制
在点 SceneLayer 图层上应用 featureReduction 时,更新很慢。这将在即将发布的版本中得到解决。
示例layer.featureReduction = { type: "selection" };
-
图层中可访问的字段数组。根据场景服务的不同,字段对某些功能的支持可能有限。使用 getFieldUsageInfo() 查询可能使用特定字段的上下文 (渲染器、标注、弹出窗口或查询)。
-
fieldsIndex FieldsIndexreadonly起始版本:GeoScene Maps SDK 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 }
-
filter SceneFilter起始版本:GeoScene Maps SDK for JavaScript 4.24
-
多边形几何的集合,可掩膜图层的不同部分。spatialRelationship 属性可定义是否应掩膜多边形内部或外部的内容。
- 另请参阅
示例const layer = new SceneLayer({ ... }) // create a polygon const polygon = new Polygon({ ... }); // create the masking const filter = new SceneFilter({ geometries: [polygon], spatialRelationship: "contains" }); // add the mask to the SceneLayer layer.filter = filter;
-
floorInfo LayerFloorInfoautocast起始版本:GeoScene Maps SDK 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://scenesampleserverdev.arcgis.com/geoscene/rest/services/Hosted/DevA_Trees/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://scenesampleserverdev.arcgis.com/geoscene/rest/services/Hosted/DevA_Trees/SceneServer/layers/0", // The layer id is specified in the URL });
-
legendEnabled Boolean
-
指示图层是否将包含在图例中。
- 默认值:true
-
指示图层在 LayerList 微件中的显示方式。下面列出了可能的值。
值 描述 show 图层在内容列表中可见。 hide 图层在内容列表中隐藏。 hide-children 如果图层是 GroupLayer、BuildingSceneLayer、KMLLayer、MapImageLayer、TileLayer 或 WMSLayer,则从内容列表中隐藏子图层。 可能值:"show"|"hide"|"hide-children"
- 默认值:"show"
-
指示图层的资源是否已加载。如果为
true
,则可访问对象的所有属性。- 默认值:false
-
如果加载时发生错误,则返回 Error 对象。
- 默认值:null
-
表示 load 操作的状态。
值 描述 not-loaded 对象的资源尚未加载。 loading 对象的资源当前正在加载。 loaded 对象的资源已加载且未出现错误。 failed 无法加载对象的资源。有关更多详情,请参阅 loadError。 可能值:"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 Maps SDK 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
-
指示单击图层中的要素时是否显示弹出窗口。该图层需要具有一个 popupTemplate,以定义应在弹出窗口中显示哪些信息。或者,如果 Popup.defaultPopupTemplateEnabled 设置为
true
时,则可自动使用默认弹出模板。- 默认值:true
- 另请参阅
-
popupTemplate PopupTemplateautocast
-
图层的弹出模板。在图层上设置时,
popupTemplate
允许用户在使用文本和/或图表选择要素时访问属性并在视图的弹出窗口中显示其值。有关 PopupTemplate 如何与 FeatureLayer 交互的例子,请参阅 PopupTemplate sample。在此图层类型上设置 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 layer = 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 layer = new FeatureLayer({ portalItem: { // autocasts as new PortalItem() id: "8d26f04f31f642b6828b7023b84c2188" }, // loads the third item in the given feature service layerId: 2 });
// Initialize GeoJSONLayer by referencing a portalItem id pointing to geojson file. const layer = new GeoJSONLayer({ portalItem: new PortalItem({ id: "81e769cd7031482797e1b0768f23c7e1", // optionally define the portal, of the item. // if not specified, the default portal defined is used. // see https://doc.geoscene.cn/javascript/4.25/api-reference/geoscene-config.html#portalUrl portal: new Portal({ url: "https://www.geosceneonline.cn/geoscene" }) } });
// 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 Maps SDK for JavaScript 4.4
-
在 SceneView 中对屏幕大小的点符号应用透视缩放。当为
true
时,通过将特定透视投影应用于要素大小,屏幕大小对象 (例如 icons, labels or callouts) 可以更好地集成到 3D 场景中。这仅在使用 SceneView 时适用。layer.screenSizePerspectiveEnabled = true
layer.screenSizePerspectiveEnabled = false
已知限制
屏幕尺寸透视目前没有针对相机非常靠近地面的情况进行优化,或者对于点要素远离地面的场景进行优化。在这些情况下,最好关闭屏幕尺寸透视。由于屏幕大小透视会根据与相机的距离改变大小,因此在使用大小视觉变量时,应将其设置为 false。
-
spatialReference SpatialReferenceautocast
-
图层的空间参考。
-
title String
-
用于在某些地方标识它的图层标题,例如在 Legend 和 LayerList 微件中。
通过服务 url 加载图层时,标题派生自服务名称。如果服务具有多个图层,则每个图层的标题将是服务名称和图层名称的串联。从门户项目加载图层时,将使用门户项目的标题。最后,如果图层作为 webmap 或 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: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Paris_3D_Local_WSL2/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://scenesampleserverdev.arcgis.com/geoscene/rest/services/Hosted/DevA_Trees/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;
方法概述
名称 | 返回值类值 | 描述 | 类 |
---|---|---|---|
添加一个或多个与对象的生命周期相关联的句柄。 更多详情 | Accessor | ||
Promise<Object> | 将属性编辑应用于关联 FeatureLayer 中的要素。 更多详情 | SceneLayer | |
如果 load() 操作已在进行中,则取消它。 更多详情 | Layer | ||
Promise<LayerView> | 将图层添加到 Map.layers 集合并且必须为其创建图层视图时,由视图调用,例如 MapView 和 SceneView。 更多详情 | Layer | |
PopupTemplate | 为图层创建一个默认弹出模板,使用图层的所有字段进行填充。 更多详情 | SceneLayer | |
Query | 创建一个查询对象,该对象可用于获取满足图层当前定义表达式的要素。 更多详情 | SceneLayer | |
销毁图层和任何相关资源 (包括其 portalItem,如果它是图层上的属性)。 更多详情 | Layer | ||
Boolean | 在实例上触发事件。 更多详情 | Layer | |
Promise<Object> | 在图层可用时,获取图层的自定义属性数据。 更多详情 | Layer | |
Field | 返回字段名称的 Field 实例 (不区分大小写)。 更多详情 | SceneLayer | |
Domain | 返回与给定字段名称相关联的 Domain。 更多详情 | SceneLayer | |
Object | 获取字段使用信息。 更多详情 | SceneLayer | |
Boolean | 指示实例上是否存在与提供的事件名称相匹配的事件监听器。 更多详情 | Layer | |
Boolean | 如果存在指定的句柄组,则返回 true。 更多详情 | Accessor | |
Boolean |
| Layer | |
Boolean |
| Layer | |
Boolean |
| Layer | |
Promise | 加载此类引用的资源。 更多详情 | Layer | |
Object | 在实例上注册事件处理程序。 更多详情 | Layer | |
Object | 从服务中查询给定字段的缓存统计信息。 更多详情 | SceneLayer | |
Promise<Object> | 对关联的要素服务执行查询,并返回满足查询条件的要素的 2D 范围。 更多详情 | SceneLayer | |
Promise<number> | 对关联的要素服务执行查询,并返回满足查询条件的要素数。 更多详情 | SceneLayer | |
Promise<FeatureSet> | 对关联的要素服务执行查询并返回 FeatureSet。 更多详情 | SceneLayer | |
Promise<number[]> | 对关联的要素服务执行查询,并返回满足输入查询条件的要素的 ObjectID 数组。 更多详情 | SceneLayer | |
移除对象拥有的句柄组。 更多详情 | Accessor | ||
Promise | 一旦创建了类的实例,就可以使用 | Layer |
方法详细说明
-
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() 进行删除。如果未提供键,则句柄将被添加到默认组。
-
将属性编辑应用于关联 FeatureLayer 中的要素。可编辑 SceneLayer 的先决条件是启用了编辑和更改跟踪的关联 FeatureLayer。具有已编辑属性的要素将使用更新的属性进行渲染,直到已编辑要素的数量超过 50,000。之后,将不检索已编辑的属性,并使用缓存的过时属性来渲染要素。有关更多详细信息,请参阅编辑部分。
参数规范edits Object包含要更新要素的对象。
规范updateFeatures Graphic[]|Collection<Graphic>optional要更新的要素的数组或集合。每个要素都必须具有有效的 objectId。更新要素时,必须提供不可为 null 字段的值。日期字段必须具有表示通用时间的数值。
options Objectoptional编辑要素时,要指定的其他编辑选项。
规范rollbackOnFailureEnabled Booleanoptional指示是否仅在所有编辑成功提交后才应用编辑。如果为
false
,则即使某些提交的编辑失败,服务器也会应用成功的编辑。如果为true
,则服务器将仅在所有编辑均成功后才应用编辑。如果使用此参数,则图层的 capabilities.editing.supportsRollbackOnFailure 属性必须为true
。如果图层的supportsRollbackOnFailure
为false
,则无论参数如何设置,rollbackOnFailureEnabled
都将始终为 true。globalIdUsed Booleanoptional指示是否可以使用要素的 globalIds 应用编辑。仅当图层的 capabilities.editing.supportsGlobalId 属性为
true
时,此参数才适用。当为false
时,则将忽略与要素一起提交的 globalIds,且服务将为新要素分配新的 globalIds。当为true
时,则 globalIds 必须与新要素一起提交。更新现有要素时,如果globalIdUsed
为false
,则必须提供要更新的要素的 objectIds。如果globalIdUsed
为true
,则必须提供要更新的要素的 objectIds。删除现有要素时,请将此属性设置为false
,因为删除操作仅接受 API 当前版本的objectIds
。返回类型 描述 Promise<Object> 解析为包含编辑结果的对象。有关详细信息,请参阅下面的对象规范表。 属性 类型 描述 updateFeatureResults FeatureEditResult[] 更新要素的结果。
-
将图层添加到 Map.layers 集合并且必须为其创建图层视图时,由视图调用,例如 MapView 和 SceneView。此方法在内部使用,没有直接调用它的用例。
参数view *父视图。
options Objectoptional指定附加选项的对象。有关此对象所需的属性,请参阅下面的对象规范表。
规范signal AbortSignaloptional中止 layerview 创建的信号。
返回类型 描述 Promise<LayerView> 使用 LayerView 实例解析。
-
createPopupTemplate(options){PopupTemplate}起始版本:GeoScene Maps SDK for JavaScript 4.11
-
为图层创建一个默认弹出模板,使用图层的所有字段进行填充。
参数options CreatePopupTemplateOptionsoptional用于创建弹出模板的选项。
返回类型 描述 PopupTemplate 弹出模板,如果图层没有任何字段,则为 null
。
-
createQuery(){Query}起始版本:GeoScene Maps SDK for JavaScript 4.3
-
创建一个查询对象,该对象可用于获取满足图层当前定义表达式的要素。查询应仅在图层上使用,而不应在图层视图上使用。
返回类型 描述 Query 表示图层的定义表达式的查询对象。
-
destroy()inherited起始版本:GeoScene Maps SDK for JavaScript 4.17
-
销毁图层和任何相关资源 (包括其 portalItem,如果它是图层上的属性)。一旦图层被破坏,则无法再使用。
被破坏的图层将从其父对象中移除,例如 Map、WebMap、WebScene、Basemap、Ground 或 GroupLayer。
-
起始版本:GeoScene Maps SDK for JavaScript 4.5
-
在实例上触发事件。仅当创建此类的子类时,才应使用此方法。
参数type String事件的名称。
event Objectoptional事件有效负载。
返回类型 描述 Boolean 如果监听器收到通知,则为 true
-
getField(fieldName){Field}起始版本:GeoScene Maps SDK for JavaScript 4.12
-
返回字段名称的 Field 实例 (不区分大小写)。
参数fieldName String字段名称。
返回类型 描述 Field 匹配字段或 undefined
- 另请参阅
-
getFieldDomain(fieldName, options){Domain}起始版本:GeoScene Maps SDK for JavaScript 4.12
-
返回与给定字段名称相关联的 Domain。域可以是 CodedValueDomain 或 RangeDomain。
参数fieldName String字段名称。
options Objectoptional指定附加选项的对象。有关此对象所需的属性,请参阅下面的对象规范表。
规范feature Graphic将 Domain 分配到的要素。
返回类型 描述 Domain 与给定要素的给定字段名称相关联的 Domain 对象。
-
getFieldUsageInfo(fieldName){Object}
-
获取字段使用信息。字段的使用取决于它是否存储为场景服务缓存的一部分。返回的对象包含以下用法信息:
属性 类型 描述 supportsRenderer boolean 表示可以在渲染器中使用字段 (例如,在视觉变量中),请参阅渲染器。 supportsLabelingInfo boolean 表示可用于标注的字段,请参阅 labelingInfo。 supportsPopupTemplate boolean 表示可以在弹出模板中使用字段,请参阅 popupTemplate。 supportsLayerQuery boolean 表示可以在图层查询中使用字段,请参阅 queryFeatures()。 参数fieldName String要获取其使用情况信息的字段名称。
返回类型 描述 Object 字段用法。
-
起始版本: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()
可用于验证创建类的实例是否已完成 (已解决或已拒绝)。如果满足,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已完成 (已解决或已拒绝)。
-
isRejected()
可用于验证创建类的实例是否被拒绝。如果被拒绝,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已被拒绝。
-
isResolved()
可用于验证创建类的实例是否已解决。如果已解决,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已解决。
-
加载此类引用的资源。如果视图是使用地图实例构造的,则此方法会自动为 View 及其在 Map 中引用的所有资源执行。
开发人员在访问不会在 View 中加载的资源时,必须调用此方法。
load()
方法仅在第一次调用时触发资源的加载。随后的调用将返回相同的 promise。可以提供一个
signal
来停止对Loadable
实例加载状态感兴趣。当信号中止时,实例不会停止其加载过程,只有 cancelLoad 可以中止它。参数signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise 资源已加载时解析。
-
在实例上注册事件处理程序。调用此方法将事件与监听器挂钩。
参数要侦听的事件或者事件数组。
listener Function事件触发时要调用的函数。
返回类型 描述 Object 返回具有 remove()
方法的事件处理程序,可调用该方法来停止侦听事件。属性 类型 描述 remove Function 调用时,从事件中移除侦听器。 示例view.on("click", function(event){ // event is the event handle returned after the event fires. console.log(event.mapPoint); });
-
queryCachedStatistics(fieldName, options){Object}起始版本:GeoScene Maps SDK for JavaScript 4.13
-
从服务中查询给定字段的缓存统计信息。查看 I3S SceneLayer 规范中的响应详细信息
参数fieldName String要查询其统计信息的字段的名称。
options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Object 统计信息文档。 示例layer.queryCachedStatistics("FIELDNAME") .then(function(statistics) { console.log(statistics); });
-
对关联的要素服务执行查询,并返回满足查询条件的要素的 2D 范围。目前,可以使用 SceneLayerView.queryExtent() 返回 3D 范围,但这只会返回视图中当前要素的 3D 范围。仅当 SceneLayer 具有关联的要素图层时,查询才会成功。如果关联的要素图层不可用,则会抛出名为
scenelayer:query-not-available
的错误。更多关于查询的信息,请参阅上述类描述中的 Querying 部分。参数optional 自动转换自 Object指定查询参数。
options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise<Object> 解析后,返回满足输入查询的要素的范围和计数。有关详细信息,请参阅下面的对象规范表。 属性 类型 描述 count Number 满足输入查询的要素数量。 extent Extent 满足查询的要素范围。
-
对关联的要素服务执行查询,并返回满足查询条件的要素数。仅当启用图层的
supportsLayerQuery
功能时,查询才会成功。使用 getFieldUsageInfo() 方法检查图层是否支持查询。如果未启用查询,则会抛出名为scenelayer:query-not-available
的错误。更多关于查询的信息,请参阅上述类描述中的 Querying 部分。参数optional 自动转换自 Object指定查询参数。
options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise<number> 解析为满足查询的要素计数。
-
queryFeatures(query, options){Promise<FeatureSet>}
-
对关联的要素服务执行查询并返回 FeatureSet。仅当启用图层的
supportsLayerQuery
功能时,查询才会成功。使用 getFieldUsageInfo() 方法检查图层是否支持查询。如果未启用查询,则会抛出名为scenelayer:query-not-available
的错误。更多关于查询的信息,请参阅上述类描述中的 Querying 部分。参数optional 自动转换自 Object指定查询参数。
options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise<FeatureSet> 解析为包含满足查询的要素的 FeatureSet。
-
对关联的要素服务执行查询,并返回满足输入查询条件的要素的 ObjectID 数组。仅当启用图层的
supportsLayerQuery
功能时,查询才会成功。使用 getFieldUsageInfo() 方法检查图层是否支持查询。如果未启用查询,则会抛出名为scenelayer:query-not-available
的错误。更多关于查询的信息,请参阅上述类描述中的 Querying 部分。参数optional 自动转换自 Object指定查询参数。
options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise<number[]> 解析为一个数字数组,表示满足查询的要素的对象 ID。
-
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");
-
起始版本: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 });
事件概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
{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); });