表示将 SceneLayer 添加到 SceneView中的 Map 后的 LayerView 。
SceneLayerView 负责在 SceneView中流式传输和渲染 SceneLayer's 的功能。SceneLayerView中的 方法 为开发人员提供了查询加载功能的能力。有关如何从视图访问客户端图形的示例,请参阅以下方法中的代码片段。
SceneLayer 中的特征是逐步加载的,从粗略的表示开始,然后根据特写视图的需要细化到更高级别的细节。
SceneLayerView 上的查询将针对已为当前视图加载的功能执行。这意味着一旦图层完成更新,就保证只有可见的特征可用。在细节层次较低的情况下,SceneLayerView 的渲染可能会忽略特征,因此不会包含在查询结果中。这意味着当意图在整个数据集中进行查询或搜索时,不应使用 SceneLayerView 上的查询方法,而应使用 SceneLayer 上的查询方法。
如果 SceneLayer 具有关联的要素图层并且 Query.outFields 在 SceneLayerView.queryFeatures() 中指定,则将从关联的要素图层中检索查询结果。在 使用场景图层指南主题的发布部分中阅读有关具有关联要素图层的 SceneLayers 的更多信息。
要仅在功能加载完成后执行查询,应用程序可以等到 SceneLayerView 的 更新 属性为 false
。仅当此 SceneLayerView 未更新时才应使用带有 num 和 start 的批处理查询,否则结果未定义。
属性概览
名称 | 类型 | 描述 | 类 | |
---|---|---|---|---|
String[] | 更多信息 为每个要素提取的属性字段列表,包括图层渲染所需的字段和在 SceneLayer.outFields 上定义的其他字段。 | 更多信息 | SceneLayerView | |
String | 更多信息 类的名称。 | 更多信息 | Accessor | |
FeatureFilter | 更多信息 将客户端 FeatureFilter 应用于显示的数据。 | 更多信息 | SceneLayerView | |
SceneLayer | 更多信息 正在查看的图层。 | 更多信息 | SceneLayerView | |
Number | 更多信息 一次可以显示的最大要素数。 | 更多信息 | SceneLayerView | |
Boolean | 更多信息 表示是否已超过最大特征数。 | 更多信息 | SceneLayerView | |
Boolean | 更多信息 指示图层视图是否支持 MapView 的 spatialReference。 | 更多信息 | LayerView | |
Boolean | 更多信息 如果图层被暂停,则值为 | 更多信息 | LayerView | |
Boolean | 更多信息 图层更新时值为 | 更多信息 | LayerView | |
Boolean | 更多信息 为 | 更多信息 | LayerView |
属性详情
-
起始版本:GeoScene API for JavaScript 4.12
-
为每个要素提取的属性字段列表,包括图层渲染所需的字段和在 SceneLayer.outFields 上定义的其他字段。当图层视图完成更新时,availableFields 会被填充。在客户端查询功能时使用此列表。
- 另请参阅:
-
起始版本:GeoScene API for JavaScript 4.7
-
类的名称。声明的类名格式为
geoscene.folder.className
。
-
filter FeatureFilterautocast起始版本:GeoScene API for JavaScript 4.11
-
将客户端 FeatureFilter 应用于显示的数据。只有满足过滤器的要素才会显示。用于过滤器的字段必须存在于图层视图的 availableFields 列表中。
已知限制
- SceneLayerView 过滤器不支持 timeExtent 属性。
- 对于 3D 对象场景图层,仅支持将 spatialRelationship 设置为
contains
,intersects
或disjoint
的空间过滤器。
-
图层 SceneLayer只读
-
正在查看的图层。
-
maximumNumberOfFeatures Number起始版本:GeoScene API for JavaScript 4.11
-
一次可以显示的最大要素数。此设置当前仅适用于点场景图层。默认情况下,根据符号系统、几何复杂性、内存消耗和显示质量配置文件自动估计最大要素数。
将此设置更改为更高的值可能会导致性能显着下降和内存使用量增加。
-
maximumNumberOfFeaturesExceeded Boolean起始版本:GeoScene API for JavaScript 4.11
-
表示是否已超过最大特征数。当此值为
true
时,并非所有功能都可以显示。此设置当前仅适用于点场景图层。
-
起始版本:GeoScene API for JavaScript 4.23
-
指示图层视图是否支持 MapView 的 spatialReference。当
false
层视图将暂停。- 另请参阅:
-
如果图层被暂停,则值为
true
(即,当范围发生变化时,图层不会重绘或更新自身)。
-
图层更新时值为
true
;例如,如果它正在获取数据的过程中。- 默认值:false
-
为
true
时,图层在视图中可见。此属性的值是从layer.visible
继承的,除非开发人员覆盖它。如果设置了这两个属性,layerView.visible
将优先于layer.visible
。- 默认值:true
方法概览
名称 | 返回类型 | 描述 | 类 | |
---|---|---|---|---|
Query | 更多信息 创建可用于在显示要素时获取要素的查询参数对象。 | 更多信息 | SceneLayerView | |
Handle | 更多信息 突出显示给定的要素。 | 更多信息 | SceneLayerView | |
Boolean | 更多信息
| 更多信息 | LayerView | |
Boolean | 更多信息
| 更多信息 | LayerView | |
Boolean | 更多信息
| 更多信息 | LayerView | |
Promise<Object> | 更多信息 | 更多信息 | SceneLayerView | |
Promise<Number> | 更多信息 对图层视图中的要素执行 查询 并返回满足查询查询条件的要素数量。 | 更多信息 | SceneLayerView | |
Promise<FeatureSet> | 更多信息 | 更多信息 | SceneLayerView | |
Promise<Number[]> | 更多信息 对图层视图中的要素执行 查询 ,并返回满足输入查询的要素的 ObjectID 数组。 | 更多信息 | SceneLayerView | |
Promise | 更多信息
| 更多信息 | LayerView |
方法详情
-
createQuery(){Query}
-
创建可用于在显示要素时获取要素的查询参数对象。它将查询参数的 outFields 属性设置为
["*"]
并将 returnGeometry 设置为true
。输出空间参考设置为视图的空间参考。当前应用于 layerview 的过滤器也包含在返回的查询对象中。返回:类型 说明 Query 查询对象
-
highlight(target){Handle}起始版本:GeoScene API for JavaScript 4.4
-
突出显示给定的要素。
参数:optional 要突出显示的要素。传递图形或图形数组时,每个要素都必须具有有效的
objectID
。您也可以将一个或多个 objectID 作为单个数字或数组传递。返回:类型 说明 Handle 返回一个带有 remove()
方法的高亮处理程序,可以调用该方法来删除高亮显示。示例:// highlight features based on a layer query result // this workflow is valid only if the scene layer has an associated feature layer let highlight; view.whenLayerView(sceneLayer).then(function(layerView){ let query = sceneLayer.createQuery(); query.where = "type = 'Quercus'"; sceneLayer.queryFeatures(query).then(function(result){ if (highlight) { highlight.remove(); } highlight = layerView.highlight(result.features); }) });
// highlight feature on pointer-move view.on("pointer-move", function(event){ view.hitTest(event).then(function(response){ if (response.results[0]) { let graphic = response.results[0].graphic; view.whenLayerView(graphic.layer).then(function(layerView){ layerView.highlight(graphic); }) } }) });
-
isFulfilled()
可用于验证创建类的实例是否已完成(已解决或已拒绝)。如果满足,则返回true
。返回:类型 说明 Boolean 指示创建类的实例是否已完成(已解决或已拒绝)。
-
isRejected()
可用于验证创建类的实例是否被拒绝。如果被拒绝,则返回true
。返回:类型 说明 Boolean 指示创建类的实例是否已被拒绝。
-
isResolved()
可用于验证创建类的实例是否已解决。如果已解决,将返回true
。返回:类型 说明 Boolean 指示创建类的实例是否已解决。
-
对图层视图中的要素执行 查询 并返回满足查询的要素的 3D 范围 。如果未提供查询参数,则返回所有已加载要素的范围和计数。
在 SceneLayer 类描述的查询部分中阅读有关查询的更多信息。
要直接从场景服务中查询要素的范围,而不是为当前视图加载的要素范围,您必须使用 SceneLayer.queryExtent() 方法。。
要在 SceneLayerView 上进行基于属性的查询,您需要在 SceneLayer 的 outFields 属性中指定必填字段,以确保客户端上的属性值可用于查询。您可以使用 availableFields 来检查客户端上可用的字段。
已知限制
- 空间查询具有与投影引擎文档中列出的相同的限制。
- 在计算与 查询几何的空间关系时,3D 对象 SceneLayerView 上的空间查询使用要素的 范围 而不是足迹。这意味着可能会从查询中返回一个要素,即使它的足迹与几何图形没有空间关系。
- 目前,空间查询仅支持
intersects
,contains
, 以及disjoint
空间关系 。 - 如果 SceneLayerView 具有以下任何 SpatialReferences,则当前不支持空间查询:
- GDM 2000 (4742) - Malaysia
- Gsterberg (Ferro) (8042) - Austria/Czech Republic
- ISN2016 (8086) - Iceland
- SVY21 (4757) - Singapore
参数:optional 来自 Object指定查询的属性和空间过滤器。当没有参数传递给此方法时,将返回客户端中的所有功能。
options Objectoptional具有以下属性的对象。
规格:signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的 Error 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回:类型 说明 Promise<Object> 解析后,返回满足输入查询的要素的范围和计数。有关详细信息,请参阅下面的对象规格表。 属性 类型 说明 count Number 满足输入查询的特征数。 extent Extent 满足查询的要素的范围。 示例:let layer = new SceneLayer({ url: ssUrl // points to a Scene Service layer url }); view.whenLayerView(layer).then(function(layerView){ watchUtils.whenNotOnce(layerView, "updating") // watches when the layer finishes updating the first time .then(function() { return layerView.queryExtent(); }) .then(function(results) { view.goTo(results.extent); // go to the extent of all the graphics in the layer view }); });
-
对图层视图中的要素执行 查询 并返回满足查询查询条件的要素数量。如果未提供查询参数,则返回所有已加载要素的计数。在 SceneLayer 类描述的查询部分中阅读有关查询的更多信息。
要直接从场景服务而不是为当前视图加载的要素数量查询,您必须使用 SceneLayer.queryFeatureCount() 方法。。
要在 SceneLayerView 上进行基于属性的查询,您需要在 SceneLayer 的 outFields 属性中指定必填字段,以确保客户端上的属性值可用于查询。您可以使用 availableFields 来检查客户端上可用的字段。
已知限制
- 空间查询具有与投影引擎文档中列出的相同的限制。
- 在计算与 查询几何的空间关系时,3D 对象 SceneLayerView 上的空间查询使用要素的 范围 而不是足迹。这意味着可能会从查询中返回一个要素,即使它的足迹与几何图形没有空间关系。
- 目前,空间查询仅支持
intersects
,contains
, 以及disjoint
空间关系 。 - 如果 SceneLayerView 具有以下任何 SpatialReferences,则当前不支持空间查询:
- GDM 2000 (4742) - Malaysia
- Gsterberg (Ferro) (8042) - Austria/Czech Republic
- ISN2016 (8086) - Iceland
- SVY21 (4757) - Singapore
参数:optional Autocasts from Object指定查询的属性和空间过滤器。当没有参数传递给此方法时,将返回客户端中的所有功能。要仅返回视图中可见的要素,请将查询对象中的
geometry
参数设置为视图的范围。options Objectoptional具有以下属性的对象。
规格:signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的 Error 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回:类型 说明 Promise<Number> 解析后,返回满足查询的要素数。 示例:let layer = new SceneLayer({ url: ssUrl // points to a Scene Service layer url }); view.whenLayerView(layer).then(function(layerView){ watchUtils.whenNotOnce(layerView, "updating") // watches when the layer finishes updating the first time .then(function() { return layerView.queryFeatureCount(); }) .then(function(count) { console.log(count); // prints the number of client-side graphics that are currently loaded }); });
-
queryFeatures(query, options){Promise<FeatureSet>}
-
对 图层 中可用于绘制的要素执行 查询 并返回 要素集。如果未提供查询参数,则返回所有加载的要素。
要针对场景服务中的所有要素执行查询,而不仅仅是为当前视图加载的要素,您必须使用 SceneLayer.queryFeatures() 方法。
要在 SceneLayerView 上进行基于属性的查询,您需要在 SceneLayer 的 outFields 属性中指定必填字段,以确保客户端上的属性值可用于查询。您可以使用 availableFields 来检查客户端上可用的字段。
已知限制
- 空间查询具有与投影引擎文档中列出的相同的限制。
- 在计算与 查询几何的空间关系时,3D 对象 SceneLayerView 上的空间查询使用要素的 范围 而不是足迹。这意味着可能会从查询中返回一个要素,即使它的足迹与几何图形没有空间关系。
- 目前,空间查询仅支持
intersects
,contains
, 以及disjoint
空间关系 。 - 如果 SceneLayerView 具有以下任何 SpatialReferences,则当前不支持空间查询:
- GDM 2000 (4742) - Malaysia
- Gsterberg (Ferro) (8042) - Austria/Czech Republic
- ISN2016 (8086) - Iceland
- SVY21 (4757) - Singapore
参数:optional Autocasts from Object指定查询的属性和空间过滤器。当没有参数传递给此方法时,客户端中的所有功能都将连同它们在 availableFields 中指定的属性一起返回。要仅返回视图中可见的要素,请将查询对象中的
geometry
参数设置为视图的范围。options Objectoptional具有以下属性的对象。
规格:signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的 Error 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回:类型 说明 Promise<FeatureSet> 解析后,返回 FeatureSet 。如果找到零个结果,则该集合将为空。 示例:let layer = new SceneLayer({ url: ssUrl // points to a Scene Service layer url }); // returns loaded features from the layer view that match the query let query = new Query(); query.objectIds = [10, 125, 126, 200, 201]; query.outFields = ["NAME", "STATE_ABBR", "POP04"]; view.whenLayerView(layer).then(function(layerView){ watchUtils.whenNotOnce(layerView, "updating") .then(function() { return layerView.queryFeatures(query); }) .then(function(result) { console.log(result.features); // prints the client-side graphics to the console }); });
let layer = new SceneLayer({ url: ssUrl // points to a Scene Service layer url }); // returns all loaded features from the layer view view.whenLayerView(layer).then(function(layerView){ layerView.watch("updating", function(val){ if(!val){ // wait for the layer view to finish updating layerView.queryFeatures().then(function(result){ console.log(result.features); // prints all loaded client-side graphics to the console }); } }); });
-
对图层视图中的要素执行 查询 ,并返回满足输入查询的要素的 ObjectID 数组。如果未提供查询参数,则返回所有已加载要素的 ObjectID。
要直接从场景服务查询要素的 ObjectID,而不是为当前视图加载的要素,您必须使用 SceneLayer.queryObjectIds() 方法。
要在 SceneLayerView 上进行基于属性的查询,您需要在 SceneLayer 的 outFields 属性中指定必填字段,以确保客户端上的属性值可用于查询。您可以使用 availableFields 来检查客户端上可用的字段。
已知限制
- 空间查询具有 投影引擎 文档中列出的限制。
- 在计算与 查询几何的空间关系时,3D 对象 SceneLayerView 上的空间查询使用要素的 范围 而不是足迹。这意味着可能会从查询中返回一个要素,即使它的足迹与几何图形没有空间关系。
- 目前,空间查询仅支持
intersects
,contains
, 以及disjoint
空间关系 。 - 如果 SceneLayerView 具有以下任何 空间参考,则当前不支持空间查询:
- GDM 2000 (4742) - Malaysia
- Gsterberg (Ferro) (8042) - Austria/Czech Republic
- ISN2016 (8086) - Iceland
- SVY21 (4757) - Singapore
参数:optional Autocasts from Object指定查询的属性。如果未提供查询参数,则返回所有加载的要素。
options Objectoptional具有以下属性的对象。
规格:signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的 Error 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回:类型 说明 Promise<Number[]> 解析后,返回一个数字数组,表示满足查询的要素的 ObjectID。 示例:let layer = new SceneLayer({ url: ssUrl // points to a Scene Service layer url }); // returns all the Ids from the features in the layer view view.whenLayerView(layer).then(function(layerView){ return layerView.queryObjectIds(); }).then(function(ids){ console.log(ids); // prints the ids of all the client-side graphics to the console });
-
起始版本:GeoScene API 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 });