SceneLayerView

类: geoscene/views/layers/SceneLayerView
继承于:SceneLayerView LayerView Accessor
起始版本:GeoScene API for JavaScript 4.3

表示将 SceneLayer 添加到 SceneView中的 Map 后的 LayerView

SceneLayerView 负责在 SceneView中流式传输和渲染 SceneLayer's 的功能。SceneLayerView中的 方法 为开发人员提供了查询加载功能的能力。有关如何从视图访问客户端图形的示例,请参阅以下方法中的代码片段。

SceneLayer 中的特征是逐步加载的,从粗略的表示开始,然后根据特写视图的需要细化到更高级别的细节。

SceneLayerView 上的查询将针对已为当前视图加载的功能执行。这意味着一旦图层完成更新,就保证只有可见的特征可用。在细节层次较低的情况下,SceneLayerView 的渲染可能会忽略特征,因此不会包含在查询结果中。这意味着当意图在整个数据集中进行查询或搜索时,不应使用 SceneLayerView 上的查询方法,而应使用 SceneLayer 上的查询方法。

如果 SceneLayer 具有关联的要素图层并且 Query.outFieldsSceneLayerView.queryFeatures() 中指定,则将从关联的要素图层中检索查询结果。在 使用场景图层指南主题的发布部分中阅读有关具有关联要素图层的 SceneLayers 的更多信息。

要仅在功能加载完成后执行查询,应用程序可以等到 SceneLayerView 的 更新 属性为 false。仅当此 SceneLayerView 未更新时才应使用带有 num 和 start 的批处理查询,否则结果未定义。

另请参阅:

属性概览

可以设置、检索或收听任何属性。请参阅使用属性主题。
显示继承的属性 隐藏继承的属性
名称 类型 描述
String[]更多信息

为每个要素提取的属性字段列表,包括图层渲染所需的字段和在 SceneLayer.outFields 上定义的其他字段。

更多信息SceneLayerView
String更多信息

类的名称。

更多信息Accessor
FeatureFilter更多信息

将客户端 FeatureFilter 应用于显示的数据。

更多信息SceneLayerView
SceneLayer更多信息

正在查看的图层。

更多信息SceneLayerView
Number更多信息

一次可以显示的最大要素数。

更多信息SceneLayerView
Boolean更多信息

表示是否已超过最大特征数。

更多信息SceneLayerView
Boolean更多信息

指示图层视图是否支持 MapViewspatialReference

更多信息LayerView
Boolean更多信息

如果图层被暂停,则值为 true(即,当范围发生变化时,图层不会重绘或更新自身)。

更多信息LayerView
Boolean更多信息

图层更新时值为 true;例如,如果它正在获取数据的过程中。

更多信息LayerView
Boolean更多信息

true 时,图层在视图中可见。

更多信息LayerView

属性详情

availableFields String[]readonly
起始版本:GeoScene API for JavaScript 4.12

为每个要素提取的属性字段列表,包括图层渲染所需的字段和在 SceneLayer.outFields 上定义的其他字段。当图层视图完成更新时,availableFields 会被填充。在客户端查询功能时使用此列表。

另请参阅:
declaredClass Stringreadonly inherited
起始版本:GeoScene API for JavaScript 4.7

类的名称。声明的类名格式为 geoscene.folder.className

起始版本:GeoScene API for JavaScript 4.11

将客户端 FeatureFilter 应用于显示的数据。只有满足过滤器的要素才会显示。用于过滤器的字段必须存在于图层视图的 availableFields 列表中。

已知限制

  • SceneLayerView 过滤器不支持 timeExtent 属性。
  • 对于 3D 对象场景图层,仅支持将 spatialRelationship 设置为 contains, intersectsdisjoint 的空间过滤器。
图层 SceneLayer只读

正在查看的图层。

maximumNumberOfFeatures Number
起始版本:GeoScene API for JavaScript 4.11

一次可以显示的最大要素数。此设置当前仅适用于点场景图层。默认情况下,根据符号系统、几何复杂性、内存消耗和显示质量配置文件自动估计最大要素数。

将此设置更改为更高的值可能会导致性能显着下降和内存使用量增加。

maximumNumberOfFeaturesExceeded Boolean
起始版本:GeoScene API for JavaScript 4.11

表示是否已超过最大特征数。当此值为 true 时,并非所有功能都可以显示。此设置当前仅适用于点场景图层。

spatialReferenceSupported Booleanreadonly inherited
起始版本:GeoScene API for JavaScript 4.23

指示图层视图是否支持 MapViewspatialReference。当 false 层视图将暂停

另请参阅:
suspended Booleanreadonly inherited

如果图层被暂停,则值为 true(即,当范围发生变化时,图层不会重绘或更新自身)。

另请参阅:
updating Booleanreadonly inherited

图层更新时值为 true;例如,如果它正在获取数据的过程中。

默认值:false

true 时,图层在视图中可见。此属性的值是从 layer.visible 继承的,除非开发人员覆盖它。如果设置了这两个属性,layerView.visible 将优先于 layer.visible

默认值:true

方法概览

显示继承的方法 隐藏继承的方法
名称 返回类型 描述
Query更多信息

创建可用于在显示要素时获取要素的查询参数对象。

更多信息SceneLayerView
Handle更多信息

突出显示给定的要素。

更多信息SceneLayerView
Boolean更多信息

isFulfilled() 可用于验证创建类的实例是否已完成(已解决或已拒绝)。

更多信息LayerView
Boolean更多信息

isRejected() 可用于验证创建类的实例是否被拒绝。

更多信息LayerView
Boolean更多信息

isResolved() 可用于验证创建类的实例是否已解决。

更多信息LayerView
Promise<Object>更多信息

对图层视图中的要素执行 查询 并返回满足查询的要素的 3D 范围

更多信息SceneLayerView
Promise<Number>更多信息

对图层视图中的要素执行 查询 并返回满足查询查询条件的要素数量。

更多信息SceneLayerView
Promise<FeatureSet>更多信息

对 图层 中可用于绘制的要素执行 查询 并返回 要素集

更多信息SceneLayerView
Promise<Number[]>更多信息

对图层视图中的要素执行 查询 ,并返回满足输入查询的要素的 ObjectID 数组。

更多信息SceneLayerView
Promise更多信息

when() 一旦创建了类的实例,就可以利用它。

更多信息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(){Boolean}inherited

isFulfilled() 可用于验证创建类的实例是否已完成(已解决或已拒绝)。如果满足,则返回 true

返回:
类型 说明
Boolean 指示创建类的实例是否已完成(已解决或已拒绝)。
isRejected(){Boolean}inherited

isRejected() 可用于验证创建类的实例是否被拒绝。如果被拒绝,则返回 true

返回:
类型 说明
Boolean 指示创建类的实例是否已被拒绝。
isResolved(){Boolean}inherited

isResolved() 可用于验证创建类的实例是否已解决。如果已解决,将返回 true

返回:
类型 说明
Boolean 指示创建类的实例是否已解决。
queryExtent(query, options){Promise<Object>}

对图层视图中的要素执行 查询 并返回满足查询的要素的 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 Object
optional

具有以下属性的对象。

规格:
optional

可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为 AbortErrorError 拒绝。另请参阅 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
   });
});
queryFeatureCount(query, options){Promise<Number>}

对图层视图中的要素执行 查询 并返回满足查询查询条件的要素数量。如果未提供查询参数,则返回所有已加载要素的计数。在 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 Object
optional

具有以下属性的对象。

规格:
optional

可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为 AbortErrorError 拒绝。另请参阅 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 Object
optional

具有以下属性的对象。

规格:
optional

可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为 AbortErrorError 拒绝。另请参阅 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
      });
    }
  });
});
queryObjectIds(query, options){Promise<Number[]>}

对图层视图中的要素执行 查询 ,并返回满足输入查询的要素的 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 Object
optional

具有以下属性的对象。

规格:
optional

可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为 AbortErrorError 拒绝。另请参阅 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
});
when(callback, errback){Promise}inherited
起始版本:GeoScene API for JavaScript 4.6

when() 一旦创建了类的实例,就可以利用它。这个方法有两个输入参数:一个 callback 函数和一个 errback 函数。callback 在类的实例加载时执行。如果类的实例无法加载,则执行 errback

参数:
callback Function
optional

当 promise 解决时调用的函数。

errback Function
optional

当 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
});

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.