SceneLayerView

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

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

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

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

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

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

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

另请参阅

属性概述

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

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

更多详情
SceneLayerView
String

类的名称。

更多详情
Accessor
FeatureFilter

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

更多详情
SceneLayerView
SceneLayer

正在查看的场景图层。

更多详情
SceneLayerView
Number

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

更多详情
SceneLayerView
Boolean

表示是否已超过最大要素数。

更多详情
SceneLayerView
Boolean

如果图层被挂起 (即,当图层范围发生更改时,图层将不会重绘或更新),则值为 true

更多详情
SceneLayerView
Boolean

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

更多详情
LayerView
Boolean

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

更多详情
LayerView

属性详细信息

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

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

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

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

起始版本:GeoScene Maps SDK for JavaScript 4.11

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

已知限制

  • SceneLayerView 过滤器不支持 timeExtent 属性。
  • 对于 3D 对象场景图层,仅支持将 spatialRelationship 设置为 containsintersectsdisjoint 的空间过滤器。
layer SceneLayerreadonly

正在查看的场景图层。

maximumNumberOfFeatures Number
起始版本:GeoScene Maps SDK for JavaScript 4.11

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

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

maximumNumberOfFeaturesExceeded Boolean
起始版本:GeoScene Maps SDK for JavaScript 4.11

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

suspended Booleanreadonly

如果图层被挂起 (即,当图层范围发生更改时,图层将不会重绘或更新),则值为 true

updating Booleanreadonly inherited

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

默认值:false

当为 true 时,图层在视图中可见。此属性的值继承自 layer.visible,除非开发人员重写它。如果设置了两个属性,则 layerView.visible 将优先于 layer.visible

默认值:true

方法概述

显示继承的方法 隐藏继承的方法
名称 返回值类值 描述

添加一个或多个与对象的生命周期相关联的句柄。

更多详情
Accessor
Query

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

更多详情
SceneLayerView
Boolean

如果存在指定的句柄组,则返回 true。

更多详情
Accessor
Handle

突出显示给定的要素。

更多详情
SceneLayerView
Boolean

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

更多详情
LayerView
Boolean

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

更多详情
LayerView
Boolean

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

更多详情
LayerView
Promise<Object>

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

更多详情
SceneLayerView
Promise<number>

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

更多详情
SceneLayerView
Promise<FeatureSet>

对图层视图中的要素执行查询,并返回 FeatureSet

更多详情
SceneLayerView
Promise<number[]>

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

更多详情
SceneLayerView

移除对象拥有的句柄组。

更多详情
Accessor
Promise

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

更多详情
LayerView

方法详细说明

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() 进行删除。如果未提供键,则句柄将被添加到默认组。

createQuery(){Query}

创建查询参数对象,该对象可用于在显示要素时获取要素。它将查询参数的 outFields 属性设置为 ["*"] 并将 returnGeometry 设置为 true。输出空间参考设置为视图的空间参考。当前应用于 layerview 的过滤器也包含在返回的查询对象中。

返回
类型 描述
Query 查询对象
hasHandles(groupKey){Boolean}inherited
起始版本: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");
}
highlight(target){Handle}
起始版本:GeoScene Maps SDK 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 Object SceneLayerView 上的空间查询使用要素的范围,而不是轮廓线。这意味着,即使要素的轮廓线与几何不存在空间关系,也可能从查询中返回要素。
  • 目前,空间查询仅支持 intersectscontainsdisjoint spatialRelationships
  • 如果 SceneLayerView 具有以下任何一个 SpatialReferences,则当前不支持空间查询:
    • GDM 2000 (4742) - 马来西亚
    • Gsterberg (Ferro) (8042) - 奥地利/捷克共和国
    • ISN2016 (8086) - 冰岛
    • SVY21 (4757) - 新加坡
参数
optional
自动转换自 Object

指定查询的属性和空间过滤器。当没有参数传递给此方法时,将返回客户端中的所有要素。

options Object
optional

具有以下属性的对象。

规范
optional

可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为 AbortError错误。另请参阅 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){
  reactiveUtils.whenOnce(() => !layerView.updating)
  .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 Object SceneLayerView 上的空间查询使用要素的范围,而不是轮廓线。这意味着,即使要素的轮廓线与几何不存在空间关系,也可能从查询中返回要素。
  • 目前,空间查询仅支持 intersectscontainsdisjoint spatialRelationships
  • 如果 SceneLayerView 具有以下任何一个 SpatialReferences,则当前不支持空间查询:
    • GDM 2000 (4742) - 马来西亚
    • Gsterberg (Ferro) (8042) - 奥地利/捷克共和国
    • ISN2016 (8086) - 冰岛
    • SVY21 (4757) - 新加坡
参数
optional
自动转换自 Object

指定查询的属性和空间过滤器。当没有参数传递给此方法时,将返回客户端中的所有要素。要仅返回视图中可见的要素,可将查询对象中的 geometry 参数设置为视图的范围。

options Object
optional

具有以下属性的对象。

规范
optional

可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为 AbortError错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。

返回
类型 描述
Promise<number> 解析后,可返回满足查询的要素数。
示例
let layer = new SceneLayer({
  url: ssUrl  // points to a Scene Service layer url
});

view.whenLayerView(layer).then(function(layerView){
  reactiveUtils.whenOnce(() => !layerView.updating)
  .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>}

对图层视图中的要素执行查询,并返回 FeatureSet。如果未提供查询参数,则返回所有加载的要素。

要对场景服务中的所有要素 (而不仅仅是为当前视图加载的要素) 执行查询,您必须使用 SceneLayer.queryFeatures() 方法。

为了在 SceneLayerView 上进行基于属性的查询,需要在 SceneLayer 的 outFields 属性中指定必填字段,以确保客户端上的属性值可用于查询。您可以使用 availableFields 来检查客户端上可用的字段。

已知限制

  • 空间查询具有与投影引擎文档中列出的查询相同的限制。
  • 计算与查询几何的空间关系时,3D Object SceneLayerView 上的空间查询使用要素的范围,而不是轮廓线。这意味着,即使要素的轮廓线与几何不存在空间关系,也可能从查询中返回要素。
  • 目前,空间查询仅支持 intersectscontainsdisjoint spatialRelationships
  • 如果 SceneLayerView 具有以下任何一个 SpatialReferences,则当前不支持空间查询:
    • GDM 2000 (4742) - 马来西亚
    • Gsterberg (Ferro) (8042) - 奥地利/捷克共和国
    • ISN2016 (8086) - 冰岛
    • SVY21 (4757) - 新加坡
参数
optional
自动转换自 Object

指定查询的属性和空间过滤器。当没有参数传递给此方法时,将返回客户端中的所有要素及其它们在 availableFields 中指定的属性。要仅返回视图中可见的要素,可将查询对象中的 geometry 参数设置为视图的范围。

options Object
optional

具有以下属性的对象。

规范
optional

可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为 AbortError错误。另请参阅 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){
  reactiveUtils.whenOnce(() => !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 Object SceneLayerView 上的空间查询使用要素的范围,而不是轮廓线。这意味着,即使要素的轮廓线与几何不存在空间关系,也可能从查询中返回要素。
  • 目前,空间查询仅支持 intersectscontainsdisjoint spatialRelationships
  • 如果 SceneLayerView 具有以下任何一个 SpatialReferences,则当前不支持空间查询:
    • GDM 2000 (4742) - 马来西亚
    • Gsterberg (Ferro) (8042) - 奥地利/捷克共和国
    • ISN2016 (8086) - 冰岛
    • SVY21 (4757) - 新加坡
参数
optional
自动转换自 Object

指定查询的属性。如果未提供查询参数,则返回所有加载的要素。

options Object
optional

具有以下属性的对象。

规范
optional

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

您的浏览器不再受支持。请升级您的浏览器以获得最佳体验。请参阅浏览器弃用帖子以获取更多信息