表示将 GeoJSONLayer 添加到 MapView 或 SceneView 中的 Map 后的 LayerView。GeoJSONLayerView 负责将 GeoJSONLayer 的要素渲染为 View 中的图形。
- 另请参阅
属性概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
String[] | 为每个要素提取的属性字段列表,包括图层 rendering、labeling、elevation info 所需的字段,以及在 GeoJSONLayer.outFields 上定义的其他字段。 更多详情 | GeoJSONLayerView | |
String | 类的名称。 更多详情 | Accessor | |
FeatureEffect | featureEffect 可用于关注感兴趣的要素。 更多详情 | GeoJSONLayerView | |
FeatureFilter | 更多详情 | GeoJSONLayerView | |
Layer | 正在查看的图层。 更多详情 | LayerView | |
Number | 一次可以显示的最大要素数。 更多详情 | GeoJSONLayerView | |
Boolean | 表示是否已超过最大要素数。 更多详情 | GeoJSONLayerView | |
Boolean | 表示图层视图是否支持 MapView 的 spatialReference。 更多详情 | LayerView | |
Boolean | 如果图层被挂起 (即,当图层范围发生更改时,图层将不会重绘或更新),则值为 | LayerView | |
Boolean | 更新图层时,值为 | LayerView | |
Boolean | 当为 | LayerView |
属性详细信息
-
起始版本:GeoScene Maps SDK for JavaScript 4.15
-
为每个要素提取的属性字段列表,包括图层 rendering、labeling、elevation info 所需的字段,以及在 GeoJSONLayer.outFields 上定义的其他字段。当 layerView 完成更新时,属性
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: "magnitude > 6" }) .then(function(results) { console.log(results.features.length, " features returned"); }) .catch(function(error) { console.log("query failed: ", error); }); } }); });
-
类的名称。声明的类名称格式化为
geoscene.folder.className
。
-
featureEffect FeatureEffectautocast起始版本:GeoScene Maps SDK for JavaScript 4.22
-
featureEffect 可用于关注感兴趣的要素。它允许通过过滤器选择要素,并将 includedEffect 和 excludedEffect 应用于分别通过或未通过过滤器要求的那些要素。
如果在图层上设置了
featureEffect
,除非开发者在 layerView 上覆盖它,否则它将被layerView.featureEffect
继承。如果设置了两个属性,则layerView.featureEffect
将优先于layer.featureEffect
。已知限制
- 以下场景不支持 FeatureEffect:
- 在 3D SceneViews 中
- 在使用 HeatmapRenderer 渲染的图层中。
- 启用 FeatureReductionCluster 时
- 打印地图时
- 在 layerView 上设置的 FeatureEffect 不能在 WebMap 中持久化。
示例// 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%)" });
- 以下场景不支持 FeatureEffect:
-
filter FeatureFilterautocast
-
示例
// display earthquakes that have // magnitude value of 3 or higher layerView.filter = new FeatureFilter({ where: "mag >= 3", });
-
正在查看的图层。
-
maximumNumberOfFeatures Number
-
一次可以显示的最大要素数。此设置当前仅适用于 SceneView。默认情况下,根据符号系统、几何复杂性、内存消耗和显示质量配置文件自动估计最大要素数。
将此设置更改为更高的值可能会导致性能显着下降和内存使用量增加。
已知限制
maximumNumberOfFeatures
仅在 3D SceneViews 中受支持。
-
maximumNumberOfFeaturesExceeded Boolean
-
表示是否已超过最大要素数。当此值为
true
时,并非所有要素都可以显示。此设置当前仅适用于 SceneView。已知限制
maximumNumberOfFeaturesExceeded
仅在 3D SceneViews 中受支持。
-
起始版本:GeoScene Maps SDK for JavaScript 4.23
-
表示图层视图是否支持 MapView 的 spatialReference。当为
false
时,图层视图将 suspended。- 另请参阅
-
如果图层被挂起 (即,当图层范围发生更改时,图层将不会重绘或更新),则值为
true
。
-
更新图层时,值为
true
;例如,如果它正在获取数据。- 默认值:false
-
当为
true
时,图层在视图中可见。此属性的值继承自layer.visible
,除非开发人员重写它。如果设置了两个属性,则layerView.visible
将优先于layer.visible
。- 默认值:true
方法概述
名称 | 返回值类值 | 描述 | 类 |
---|---|---|---|
添加一个或多个与对象的生命周期相关联的句柄。 更多详情 | Accessor | ||
Query | 创建查询参数对象,该对象可用于在显示聚合要素时获取聚合要素。 更多详情 | GeoJSONLayerView | |
Query | 创建一个查询参数对象,该对象可用于在显示要素时获取要素。 更多详情 | GeoJSONLayerView | |
Boolean | 如果存在指定的句柄组,则返回 true。 更多详情 | Accessor | |
Handle | 突出显示给定的要素。 更多详情 | GeoJSONLayerView | |
Boolean |
| LayerView | |
Boolean |
| LayerView | |
Boolean |
| LayerView | |
Promise<FeatureSet> | 对聚合要素执行查询。 更多详情 | GeoJSONLayerView | |
Promise<Object> | 对 layerView 中可用于绘制的要素执行 Query,并返回满足查询的要素的 Extent。 更多详情 | GeoJSONLayerView | |
Promise<number> | 对 layerView 中可用于绘制的要素执行 Query,并返回满足查询的要素数。 更多详情 | GeoJSONLayerView | |
Promise<FeatureSet> | 对 layerView 中可用于绘制的要素执行 Query,并返回 FeatureSet。 更多详情 | GeoJSONLayerView | |
Promise<number[]> | 对 layerView 中可用于绘制的要素执行 Query,并返回满足输入查询的要素的 ObjectID 数组。 更多详情 | GeoJSONLayerView | |
移除对象拥有的句柄组。 更多详情 | Accessor | ||
Promise | 一旦创建了类的实例,就可以使用 | 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() 进行删除。如果未提供键,则句柄将被添加到默认组。
-
createAggregateQuery(){Query}起始版本:GeoScene Maps SDK for JavaScript 4.25
-
创建查询参数对象,该对象可用于在显示聚合要素时获取聚合要素。它将查询参数的 outFields 属性设置为
["*"]
并将 returnGeometry 设置为true
。输出空间参考 outSpatialReference 设置为视图的空间参考。返回类型 描述 Query 查询参数对象。 - 另请参阅
-
createQuery(){Query}起始版本:GeoScene Maps SDK for JavaScript 4.12
-
创建一个查询参数对象,该对象可用于在显示要素时获取要素。它将查询参数的 outFields 属性设置为
["*"]
并将 returnGeometry 设置为true
。输出空间参考 outSpatialReference 设置为视图的空间参考。当前应用于 layerview 的过滤器的参数也包含在返回的查询对象中。结果将包括要素几何和所有字段的值。返回类型 描述 Query 查询对象 示例const query = layerView.createQuery(); query.where = "magnitude > 4"; layerView.queryFeatures(query).then(function(results) { console.log(results); }) .catch(function() { console.log(error); });
-
起始版本: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}
-
突出显示给定的要素。
参数optional 要突出显示的要素。传递图形或图形数组时,每个要素都必须具有有效的
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()
可用于验证创建类的实例是否已完成 (已解决或已拒绝)。如果满足,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已完成 (已解决或已拒绝)。
-
isRejected()
可用于验证创建类的实例是否被拒绝。如果被拒绝,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已被拒绝。
-
isResolved()
可用于验证创建类的实例是否已解决。如果已解决,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已解决。
-
queryAggregates(query, options){Promise<FeatureSet>}起始版本:GeoScene Maps SDK for JavaScript 4.25
-
对 layerView 中可用于绘制的聚合要素 (例如聚类或图格化) 执行 Query,并返回 FeatureSet。如果未提供查询参数,则返回可用于绘制的所有聚合要素及其在客户端上可用的属性。统计查询或 where 子句中引用的字段必须首先定义为聚合字段。
已知限制
此方法当前不支持空间查询 (即 Query.geometry 选项及其相关属性)。
参数optional 自动转换自 Object指定查询的参数。将此参数保留为空以查询视图中的所有聚合。
options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise<FeatureSet> 解析后,将返回一个包含聚合要素数组的 FeatureSet。 示例// clustered point layer const layer = new GeoJSONLayer({ featureReduction: { type: "cluster" } }); const layerView = await view.whenLayerView(layer); layerView.watch("updating", async (val) => { if(!val){ // wait for the layer view to finish updating const { features } = await layerView.queryAggregates(); // features represents all the clusters in the view } });
-
对 layerView 中可用于绘制的要素执行 Query,并返回满足查询的要素的 Extent。
已知限制
- 空间查询具有与投影引擎文档中列出的查询相同的限制。
- 如果 layerView 具有以下任何一个 SpatialReferences,则当前不支持空间查询:
- GDM 2000 (4742) – 马来西亚
- Gusterberg (Ferro) (8042) – 奥地利/捷克共和国
- ISN2016 (8086) - 冰岛
- SVY21 (4757) - 新加坡
参数optional 自动转换自 Object指定查询的属性和空间过滤器。当没有参数传递给此方法时,将返回客户端中的所有要素。要仅返回视图中可见的要素,可将查询对象中的
geometry
参数设置为视图的范围。options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise<Object> 解析后,返回满足输入查询的要素的范围和计数。有关详细信息,请参阅下面的对象规范表。 属性 类型 描述 count Number 满足输入查询的要素数量。 extent Extent 满足查询的要素范围。 示例let layer = new GeoJSONLayer({ url: geoJSONUrl // URL to a geoJSON file }); 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); });
-
对 layerView 中可用于绘制的要素执行 Query,并返回满足查询的要素数。如果未提供查询参数,则返回可用于绘制的所有要素的计数。
已知限制
- 空间查询具有与投影引擎文档中列出的查询相同的限制。
- 如果 layerView 具有以下任何一个 SpatialReferences,则当前不支持空间查询:
- GDM 2000 (4742) – 马来西亚
- Gusterberg (Ferro) (8042) – 奥地利/捷克共和国
- ISN2016 (8086) - 冰岛
- SVY21 (4757) - 新加坡
参数optional 自动转换自 Object指定查询的属性和空间过滤器。当没有参数传递给此方法时,将返回客户端中的所有要素。要仅返回视图中可见的要素,可将查询对象中的
geometry
参数设置为视图的范围。options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise<number> 解析后,可返回满足查询的要素数。 示例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){ reactiveUtils.whenOnce(() => !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 }); }); });
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。如果未提供查询参数,则返回可用于绘制的所有要素。
已知限制
- 在针对 layerViews 执行的属性查询中使用的属性值区分大小写。
- 空间查询具有与投影引擎文档中列出的查询相同的限制。
- 如果 layerView 具有以下任何一个 SpatialReferences,则当前不支持空间查询:
- GDM 2000 (4742) – 马来西亚
- Gusterberg (Ferro) (8042) – 奥地利/捷克共和国
- ISN2016 (8086) - 冰岛
- SVY21 (4757) - 新加坡
参数optional 自动转换自 Object指定查询的属性和空间过滤器。当没有参数传递给此方法时,将返回客户端中的所有要素。要仅返回视图中可见的要素,可将查询对象中的
geometry
参数设置为视图的范围。options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise<FeatureSet> 解析后,将返回包含图形要素数组的 FeatureSet。 示例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 }); } }); });
// 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, });
-
对 layerView 中可用于绘制的要素执行 Query,并返回满足输入查询的要素的 ObjectID 数组。如果未提供查询参数,则返回可用于绘制的所有要素的 ObjectID。
已知限制
- 空间查询具有与投影引擎文档中列出的查询相同的限制。
- 如果 layerView 具有以下任何一个 SpatialReferences,则当前不支持空间查询:
- GDM 2000 (4742) – 马来西亚
- Gusterberg (Ferro) (8042) – 奥地利/捷克共和国
- ISN2016 (8086) - 冰岛
- SVY21 (4757) - 新加坡
参数optional 自动转换自 Object指定查询的属性和空间过滤器。当没有参数传递给此方法时,将返回客户端中的所有要素。要仅返回视图中可见的要素,可将查询对象中的
geometry
参数设置为视图的范围。options Objectoptional具有以下属性的对象。
规范signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise<number[]> 解析后,返回一个数字数组,表示满足查询的要素的 ObjectID。 示例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){ reactiveUtils.whenOnce(() => !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 }); }); });
// 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 });
-
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
函数。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 });