FeatureLayerView

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

表示 FeatureLayer 添加到 MapViewSceneView 中的 Map 后的 LayerView

FeatureLayerView FeatureLayer's 的要素呈现为 View 中的图形。 FeatureLayerView 方法为开发人员提供了在视图中查询图形的能力。有关如何从视图访问客户端图形的示例,请参阅以下方法中的代码片段。

另请参阅:

属性概览

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

为每个要素提取的属性字段列表,包括图层 renderinglabelingelevation info 所需的字段,以及在 FeatureLayer.outFields 上定义的其他字段。

更多信息FeatureLayerView
String更多信息

类的名称。

更多信息Accessor
FeatureEffect更多信息

应用于 layerView 的效果。

更多信息FeatureLayerView
FeatureEffect更多信息

featureEffect 可用于吸引感兴趣的注意力特征。

更多信息FeatureLayerView
FeatureFilter更多信息

Attribute、geometrygeometrytime extent 过滤。

更多信息FeatureLayerView
FeatureLayer更多信息

正在查看的图层。

更多信息FeatureLayerView
Number更多信息

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

更多信息FeatureLayerView
Boolean更多信息

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

更多信息FeatureLayerView
Boolean更多信息

指示图层视图是否支持 MapViewspatialReference

更多信息LayerView
Boolean更多信息

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

更多信息LayerView
Boolean更多信息

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

更多信息LayerView
Boolean更多信息

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

更多信息LayerView

属性详情

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

为每个要素提取的属性字段列表,包括图层 renderinglabelingelevation info 所需的字段,以及在 FeatureLayer.outFields 上定义的其他字段。当 layerView 完成 updating 时,availableFields 属性会被填充。经度在客户端过滤或查询要素时使用 availableFields

另请参阅:
示例:
view.whenLayerView(layer).then(function(layerView){
  layerView.watch("updating", function(value){
    // availableFields will become available
    // once the layerView finishes updating
    if (!value) {
       layerView.queryFeatures({
         outFields: layerView.availableFields,
         where: "DEW_POINT > 10"
       })
       .then(function(results) {
         console.log(results.features.length, " features returned");
       })
       .catch(function(error) {
         console.log("query failed: ", error);
       });
     }
  });
});
declaredClass Stringreadonly inherited
起始版本:GeoScene API for JavaScript 4.7

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

起始版本:GeoScene API for JavaScript 4.11
已弃用从 4.22 版开始。请改用 FeatureEffect

应用于 layerView 的效果。效果允许通过 filter 选择要素,并且将 includedEffectexcludedEffect 应用于分别通过或未通过过滤器要求的那些要素。

已知限制

3D SceneViews 不支持 FeatureEffect。

另请参阅:
示例:
// set effect on excluded features
// make them gray and transparent
featureLayerView.effect = {
  filter: { // autocasts to FeatureFilter
    geometry: filterGeometry,
    spatialRelationship: geometryRel,
    distance: 3,
    units: "miles"
  },
  excludedEffect: "grayscale(100%) opacity(30%)"
};
featureEffect FeatureEffectautocast
起始版本:GeoScene API for JavaScript 4.22

featureEffect 可用于吸引感兴趣的注意力特征。它允许通过 filter 选择要素,并将 includedEffectexcludedEffect 应用于分别通过或未通过过滤器要求的那些要素。

如果在 layer 上设置了 featureEffect,除非开发者在 layerView 上覆盖它,否则它会被 layerView.featureEffect 继承。如果设置了这两个属性,则 layerView.featureEffect 将优先于 layer.featureEffect

已知限制

另请参阅:
示例:
// gray out features that fall outside of the 3 mile buffer of the mouse's location
// by setting feature effect on excluded features
layerView.featureEffect = new FeatureEffect({
  filter: new FeatureFilter({
    geometry: filterGeometry,
    spatialRelationship: "intersects",
    distance: 3,
    units: "miles"
  }),
  excludedEffect: "grayscale(100%) opacity(30%)"
});
// Apply a drop-shadow feature effect to the features that intersect the borough boundaries,
// while applying blur and brightness effects to the features that are excluded from filter criteria.
// The resulting map will make it easier to spot if the residents are more likely to experience deprivation
// if they live on a borough boundary.
const featureFilter = new FeatureFilter({
  where: "BoroughEdge='true'"
});
layerView.featureEffect = new FeatureEffect({
  filter: featureFilter,
  includedEffect: "drop-shadow(3px, 3px, 3px, black)",
  excludedEffect: "blur(1px) brightness(65%)"
});
起始版本:GeoScene API for JavaScript 4.11

Attribute、geometrygeometrytime extent 过滤。只有满足过滤器的要素才会显示在视图上。

另请参阅:
示例:
// display rain gauges where their water percent is over 30%
// and if the gauges are completely contained by the 10-mile
// buffer around the filter geometry
featureLayerView.filter = new FeatureFilter({
  where: "percentile >= 30",
  geometry: filterPolygon,
  spatialRelationship: "contains",
  distance: 10,
  units: "miles"
});
layer FeatureLayerreadonly

正在查看的图层。

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

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

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

已知限制

maximumNumberOfFeatures 仅在 3D SceneView 中受支持。

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

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

已知限制

maximumNumberOfFeaturesExceeded 仅在 3D SceneView 中受支持。

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更多信息

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

更多信息FeatureLayerView
Handle更多信息

突出显示给定的要素。

更多信息FeatureLayerView
Boolean更多信息

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

更多信息LayerView
Boolean更多信息

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

更多信息LayerView
Boolean更多信息

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

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

对 layerView 中可用于绘制的要素执行 Query,并返回满足查询的要素 Extent

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

对 layerView 中可用于绘制的要素执行 Query,并返回满足查询的要素数。

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

对 layerView 中可用于绘制的要素执行 Query 并返回 FeatureSet

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

对 layerView 中可用于绘制的要素执行 Query,并返回满足输入查询的要素的 ObjectID 数组。

更多信息FeatureLayerView
Promise更多信息

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

更多信息LayerView

方法详情

createQuery(){Query}
起始版本:GeoScene API for JavaScript 4.12

创建可用于在显示要素时获取要素的查询参数对象。它将查询参数的 outFields 属性设置为 ["*"] 并将 returnGeometry 设置为 true。输出空间参考 outSpatialReference 设置为视图的空间参考。当前应用于 layerview 的 filter 的参数也包含在返回的查询对象中。结果将包括 availableFields 的几何要素和值。

返回:
类型 说明
Query 查询参数对象。
highlight(target){Handle}
起始版本:GeoScene API for JavaScript 4.4

突出显示给定的要素。

参数:
可选

要突出显示的要素。传递图形或图形数组时,每个要素都必须具有有效的 objectID。您也可以将一个或多个 objectID 作为单个数字或数组传递。

返回:
类型 说明
Handle 返回一个带有 remove() 方法的高亮处理程序,可以调用该方法来删除高亮显示。
另请参阅:
示例:
// highlight features based on a query result
let highlight;
view.whenLayerView(treesLayer).then(function(layerView){
 let query = treesLayer.createQuery();
 query.where = "type = 'Quercus'";
 treesLayer.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.length) {
      let graphic = response.results.filter(function (result) {
        return result.graphic.layer === treesLayer;
      })[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>}

对 layerView 中可用于绘制的要素执行 Query,并返回满足查询的要素 Extent。仅对 geoscene.cn 上的托管要素服务和 GeoScene Server 2.0 及更高版本有效。如果未提供查询参数,则返回所有可绘制要素的范围和计数。

要直接从要素服务而不是视图中可见的要素范围查询要素范围,您必须使用 FeatureLayer.queryExtent() 方法。

已知限制

  • 空间查询是针对 layerView 中的量化几何图形执行的。layerView 几何图形的分辨率仅与视图的比例分辨率一样精确。因此,同一查询在不同规模下执行时的结果可能会有所不同。这也意味着从任何 layerView 查询返回的几何图形同样将具有相同的视图比例分辨率。
  • 空间查询具有与投影引擎文档中列出的相同的限制。
  • 如果 FeatureLayerView 具有以下任何 SpatialReferences,则当前不支持空间查询:
    • GDM 2000 (4742) – Malaysia
    • Gusterberg (Ferro) (8042) – Austria/Czech Republic
    • ISN2016 (8086) - Iceland
    • SVY21 (4757) - Singapore
参数:
optional
Autocasts from Object

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

options Object
optional

具有以下属性的对象。

规格:
optional

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

返回:
类型 说明
Promise<Object> 解析后,返回满足输入查询的要素的范围和计数。有关详细信息,请参阅下面的对象规格表。
属性 类型 说明
count Number 满足输入查询的特征数。
extent Extent 满足查询的要素的范围。
示例:
let layer = new FeatureLayer({
  url: fsUrl  // points to a Feature Service layer url
});

view.whenLayerView(layer).then(function(layerView){
  layerView.watch("updating", function(val){
    if(!val){  // wait for the layerView to finish updating
      layerView.queryExtent().then(function(results){
        view.goTo(results.extent);  // go to the extent of all the graphics in the layerView
      });
    }
  });
});
// Expand the extent so that a feature (i.e. point feature)
// won't be off screen after the end of goTo animation.
layerView.queryExtent()
 .then(function(result) {
   const zoomScale = 16000;
   const extent = result.extent;

   extent.expand((zoomScale / view.scale) * view.resolution);
   view.goTo(extent);
});
queryFeatureCount(query, options){Promise<Number>}

对 layerView 中可用于绘制的要素执行 Query,并返回满足查询的要素数。如果未提供查询参数,则返回可用于绘制的所有要素的计数。

要直接从要素服务而不是视图中可见的要素查询要素计数,您必须使用 FeatureLayer.queryFeatureCount() 方法。

已知限制

  • 空间查询是针对 layerView 中的量化几何图形执行的。layerView 几何图形的分辨率仅与视图的比例分辨率一样精确。因此,同一查询在不同规模下执行时的结果可能会有所不同。这也意味着从任何 layerView 查询返回的几何图形同样将具有相同的视图比例分辨率。
  • 空间查询具有与投影引擎文档中列出的相同的限制。
  • 如果 FeatureLayerView 具有以下任何 SpatialReferences,则当前不支持空间查询:
    • GDM 2000 (4742) – Malaysia
    • Gusterberg (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 FeatureLayer({
  url: fsUrl  // points to a Feature Service layer url
});

view.on("click", function(event){

  let query = new Query();
  query.geometry = event.mapPoint;  // obtained from a view click event
  query.spatialRelationship = "intersects";

  view.whenLayerView(layer).then(function(layerView){
    watchUtils.whenNotOnce(layerView, "updating")
    .then(function(){
      return layerView.queryFeatureCount(query);
    })
    .then(function(count){
      console.log(count);  // prints the number of the client-side graphics that satisfy the query
    });
  });
});
let layer = new FeatureLayer({
  url: fsUrl  // points to a Feature Service layer url
});

view.whenLayerView(layer).then(function(layerView){
  return layerView.queryFeatureCount()
}).then(function(count){
  console.log(count);  // prints the total number of client-side graphics to the console
});
queryFeatures(query, options){Promise<FeatureSet>}

对 layerView 中可用于绘制的要素执行 Query 并返回 FeatureSet。如果未提供查询参数,则返回所有可用于绘图的特征及其在客户端上可用的属性。对于客户端属性查询,相关字段应存在于 availableFields 列表中,以使查询成功。

要对要素服务中的所有要素(而不仅仅是客户端中的要素)执行查询,您必须使用 FeatureLayer.queryFeatures() 方法。

已知限制

  • 在针对 layerView 执行的属性查询中使用的属性值区分大小写。
  • 空间查询是针对 layerView 中的量化几何图形执行的。layerView 几何图形的分辨率仅与视图的比例分辨率一样精确。因此,同一查询在不同规模下执行时的结果可能会有所不同。这也意味着从任何 layerView 查询返回的几何图形同样将具有相同的视图比例分辨率。
  • 空间查询具有与投影引擎文档中列出的相同的限制。
  • 如果 FeatureLayerView 具有以下任何 SpatialReferences,则当前不支持空间查询:
    • GDM 2000 (4742) – Malaysia
    • Gsterberg (Ferro) (8042) – Austria/Czech Republic
    • ISN2016 (8086) - Iceland
    • SVY21 (4757) - Singapore
参数:
optional
Autocasts from Object

指定查询的属性和空间过滤器。当此参数未传递给 queryFeatures() 方法时,将返回所有可用于绘制的特征及其在客户端上可用的属性。要仅返回视图中可见的要素,请将查询对象中的 geometry 参数设置为视图的范围。

options Object
optional

具有以下属性的对象。

规格:
optional

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

返回:
类型 说明
Promise<FeatureSet> 解析后,将返回包含图形特征数组的 FeatureSet
另请参阅:
示例:
let layer = new FeatureLayer({
  url: fsUrl  // points to a Feature Service layer url
});

let query = new Query();
query.geometry = new Extent({
 xmin: -9177811,
 ymin: 4247000,
 xmax: -9176791,
 ymax: 4247784,
 spatialReference: 102100
});
query.spatialRelationship = "intersects";

view.whenLayerView(layer).then(function(layerView){
  layerView.watch("updating", function(val){
    if(!val){  // wait for the layerview to finish updating
      layerView.queryFeatures(query).then(function(results){
        console.log(results.features);  // prints the array of client-side graphics to the console
      });
    }
  });
});
let layer = new FeatureLayer({
  url: fsUrl  // points to a Feature Service layer url
});

// returns all the graphics from the layerView
view.whenLayerView(layer).then(function(layerView){
  layerView.watch("updating", function(val){
    if(!val){  // wait for the layerView to finish updating
      layerView.queryFeatures().then(function(results){
        console.log(results.features);  // prints all the client-side graphics to the console
      });
    }
  });
});
layerView.queryFeatures({
  geometry: mapPoint,
  // 6 pixels around a point at the view resolution to query around a finger.
  distance: view.resolution * 6,
});
queryObjectIds(query, options){Promise<Number[]>}

对 layerView 中可用于绘制的要素执行 Query,并返回满足输入查询的要素的 ObjectID 数组。如果未提供查询参数,则返回所有可绘制要素的 ObjectID。

要直接从要素服务而不是视图中可见的要素查询要素的 ObjectID,您必须使用 FeatureLayer.queryObjectIds() 方法。

已知限制

  • 空间查询是针对 layerView 中的量化几何图形执行的。layerView 几何图形的分辨率仅与视图的比例分辨率一样精确。因此,同一查询在不同规模下执行时的结果可能会有所不同。这也意味着从任何 layerView 查询返回的几何图形同样将具有相同的视图比例分辨率。
  • 空间查询具有与投影引擎文档中列出的相同的限制。
  • 如果 FeatureLayerView 具有以下任何 SpatialReferences,则当前不支持空间查询:
    • GDM 2000 (4742) – Malaysia
    • Gusterberg (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[]> 解析后,返回一个数字数组,表示满足查询的要素的 ObjectID。
示例:
let layer = new FeatureLayer({
  url: fsUrl  // points to a Feature Service layer url
});

view.on("click", function(event){

  let query = new Query();
  query.geometry = event.mapPoint;  // obtained from a view click event
  query.spatialRelationship = "intersects";

  view.whenLayerView(layer).then(function(layerView){
    watchUtils.whenNotOnce(layerView, "updating")
    .then(function(){
      return layerView.queryObjectIds(query);
    })
    .then(function(ids){
      console.log(ids);  // prints the ids of the client-side graphics to the console
    });
  });
});
let layer = new FeatureLayer({
  url: fsUrl  // points to a Feature Service layer url
});

// returns all the Ids from the graphics in the layerView
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.