Ground 类包含指定如何在 SceneView 中显示地表面的属性。它包含一个 layers 属性,该属性是 ElevationLayer 的集合,用于定义地图表面的高程或地形。
在 Map 实例上,可以使用世界高程服务方便地通过地面属性初始化默认地面:
let map = new Map({
basemap: "tianditu-vector",
ground: "world-elevation"
});
当需要地形和测深值时,可以使用 TopoBathy 3D 服务:
let map = new Map({
basemap: "tianditu-vector",
ground: "world-topobathymetry"
});
当底图不可用时,默认情况下,地面将显示格网:
可以通过在 surfaceColor 属性上设置颜色来更改该属性:
map.ground.surfaceColor = '#004C73';
如果场景包含地下数据,可降低地面的不透明度,以便能够透过地面看到:
map.ground.opacity = 0.4;
构造函数
属性概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
String | 类的名称。 更多详情 | Accessor | |
Collection<ElevationLayer> | ElevationLayers 的集合,用于定义构成地表的高程或地形。 更多详情 | Ground | |
Boolean | 指示实例是否已加载。 更多详情 | Ground | |
Error | 如果加载时发生错误,则返回 Error 对象。 更多详情 | Ground | |
String | 表示 load 操作的状态。 更多详情 | Ground | |
Object[] | 加载时发生的警告列表。 更多详情 | Ground | |
Accessor | 指定相对于地表的用户导航约束。 更多详情 | Ground | |
Number | 地面的不透明度,包括表面默认颜色和底图 (不含参考图层)。 更多详情 | Ground | |
Color | 地表的颜色,显示在底图下方。 更多详情 | Ground |
属性详细信息
-
起始版本:GeoScene Maps SDK for JavaScript 4.7
-
类的名称。声明的类名称格式化为
geoscene.folder.className
。
-
layers Collection<ElevationLayer>
-
ElevationLayers 的集合,用于定义构成地表的高程或地形。将高程图层添加到地面时,表面的地形变化将以 3D 形式渲染,就像它们在现实世界中一样。
当图层集合为空时,地表是平坦的。
示例// Adds the world elevation service to the ground let layer = new ElevationLayer({ url: "//links.geoscene.cn/elevation3d/rest/services/WorldElevation3D/Terrain3D/ImageServer" }); map.ground.layers.add(layer);
-
loadError Errorreadonly
-
如果加载时发生错误,则返回 Error 对象。
- 默认值:null
-
loadStatus Stringreadonly
-
表示 load 操作的状态。
值 描述 not-loaded 对象的资源尚未加载。 loading 对象的资源当前正在加载。 loaded 对象的资源已加载且未出现错误。 failed 无法加载对象的资源。有关更多详情,请参阅 loadError。 可能值:"not-loaded"|"loading"|"failed"|"loaded"
- 默认值:not-loaded
-
加载时发生的警告列表。
-
起始版本:GeoScene Maps SDK for JavaScript 4.8
-
指定相对于地表的用户导航约束。
- 属性
-
type String
约束的类型。它可以是以下值之一:
值 描述 stay-above 用户只能在地表上导航 none 用户可以在地表上方和下方导航 默认值:stay-above
可能值:"stay-above"|"none"
-
opacity Number起始版本:GeoScene Maps SDK for JavaScript 4.8
-
地面的不透明度,包括表面默认颜色和底图 (不含参考图层)。此属性可用于透视地面效果。
- 默认值:1
-
起始版本:GeoScene Maps SDK for JavaScript 4.8
-
地表的颜色,显示在底图下方。如果此值为 null,则改为显示一个网格。颜色中的 Alpha 值将被忽略。使用 opacity 属性可以控制地面的不透明度。
- 默认值:null
方法概述
名称 | 返回值类值 | 描述 | 类 |
---|---|---|---|
添加一个或多个与对象的生命周期相关联的句柄。 更多详情 | Accessor | ||
如果 load() 操作已在进行中,则取消它。 更多详情 | Ground | ||
Ground | 创建此对象的深度克隆。 更多详情 | Ground | |
Promise<ElevationSampler> | 通过查询地面图层的高程数据并对其进行缓存,从而为给定范围创建高程采样器,以便之后可以快速采样值。 更多详情 | Ground | |
损坏地面及其图层。 更多详情 | Ground | ||
* | 创建此类的新实例并使用从 GeoScene 产品生成的 JSON 对象值对其进行初始化。 更多详情 | Ground | |
Boolean | 如果存在指定的句柄组,则返回 true。 更多详情 | Accessor | |
Boolean |
| Ground | |
Boolean |
| Ground | |
Boolean |
| Ground | |
Promise | 加载此类引用的资源。 更多详情 | Ground | |
Promise<Ground> | 加载与地面关联的所有外部可加载资源。 更多详情 | Ground | |
Promise<ElevationQueryResult> | 在地面图层服务中查询给定几何的高程值。 更多详情 | Ground | |
移除对象拥有的句柄组。 更多详情 | Accessor | ||
Object | 将此类的实例转换为 GeoScene Portal JSON 表示。 更多详情 | Ground | |
Promise | 一旦创建了类的实例,就可以使用 | Ground |
方法详细说明
-
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() 进行删除。如果未提供键,则句柄将被添加到默认组。
-
cancelLoad()
-
如果 load() 操作已在进行中,则取消它。
-
createElevationSampler(extent, options){Promise<ElevationSampler>}起始版本:GeoScene Maps SDK for JavaScript 4.7
-
通过查询地面图层的高程数据并对其进行缓存,从而为给定范围创建高程采样器,以便之后可以快速采样值。采样器使用具有可用数据的第一个图层中的高程数据。要从特定图层获取高程数据,请使用 ElevationLayer.createElevationSampler()。
参数规范extent Extent创建采样器的范围。
options Objectoptional其他采样器选项。
规范optional 默认值:auto控制采样高程数据的水平分辨率 (单元尺寸),以米为单位 (默认为
auto
)。有关不同设置的更多详细信息,请参见下表。noDataValue Numberoptional默认值:0没有可用数据时使用的值。
signal AbortSignaloptional中止请求的 AbortSignal。如果取消,则 promise 将被拒绝,并返回一个名为
AbortError
的错误。另请参见 AbortController。返回类型 描述 Promise<ElevationSampler> 高程采样器。
-
destroy()起始版本:GeoScene Maps SDK for JavaScript 4.17
-
损坏地面及其图层。一旦地面损坏,则无法再使用这些内容。为防止图层被损坏,请在调用
destroy()
之前将它们从地面中移除。// prevent the layers from being destroyed by removing them from the ground const layers = ground.layers.removeAll(); // destroy the ground and any remaining associated resources ground.destroy();
-
fromJSON(json){*}static
-
创建此类的新实例并使用从 GeoScene 产品生成的 JSON 对象值对其进行初始化。传入到输入
json
参数的对象通常来自对 REST API 中查询操作的响应或来自另一个 GeoScene 产品的 toJSON() 方法。有关何时以及如何使用该函数的详细信息和示例,请参阅指南中的使用 fromJSON() 主题。参数json ObjectGeoScene 格式实例的 JSON 表示。有关各种输入 JSON 对象的结构示例,请参阅 GeoScene REST API 文档。
返回类型 描述 * 返回该类的新实例。
-
起始版本: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"); }
-
isFulfilled(){Boolean}
-
isFulfilled()
可用于验证创建类的实例是否已完成 (已解决或已拒绝)。如果满足,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已完成 (已解决或已拒绝)。
-
isRejected(){Boolean}
-
isRejected()
可用于验证创建类的实例是否被拒绝。如果被拒绝,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已被拒绝。
-
load(signal){Promise}
-
加载此类引用的资源。如果视图是使用地图实例构造的,则此方法会自动为 View 及其在 Map 中引用的所有资源执行。
开发人员在访问不会在 View 中加载的资源时,必须调用此方法。
load()
方法仅在第一次调用时触发资源的加载。随后的调用将返回相同的 promise。可以提供一个
signal
来停止对Loadable
实例加载状态感兴趣。当信号中止时,实例不会停止其加载过程,只有 cancelLoad 可以中止它。参数signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise 资源已加载时解析。
-
起始版本:GeoScene Maps SDK for JavaScript 4.9
-
加载与地面关联的所有外部可加载资源。对于地面,这将加载所有图层。
返回类型 描述 Promise<Ground> 当所有可加载资源都已加载时解析。如果至少有一个可加载资源未能加载,则拒绝。 - 另请参阅
示例// Load all resources but ignore if one or more of them failed to load ground.loadAll() .catch(function(error) { // Ignore any failed resources }) .then(function() { console.log("All loaded"); });
-
queryElevation(geometry, options){Promise<ElevationQueryResult>}
-
在地面图层服务中查询给定几何的高程值。
返回的结果包含几何的副本,其中 z 值从具有可用数据的第一个图层的高程数据中采样。可以使用
demResolution
选项设置查询高程的分辨率。在许多情况下,auto
demResolution 可用于获取高质量的高程样本,而无需知道服务中数据的确切位置。这对于组合来自多个源的高程数据的服务 (例如世界高程服务) 特别有用。如果需要更多控制或更高质量的样本,请使用finest-contiguous
或固定{number}
分辨率。参数规范geometry Point|Multipoint|Polyline要采样的几何。
options Objectoptional其他查询选项。
规范optional 默认值:auto控制要从中采样高程数据的水平分辨率 (像元大小),以米为单位 (默认为
auto
)。有关不同设置的更多详细信息,请参见下表。demResolution 描述 auto
自动为输入几何的每个坐标选择适当的分辨率。当前实现将尝试使用最好的可用分辨率,前提是所需的切片请求总数不超过某个最大数量 (当前为 20 个)。请注意,这可能会导致根据不同的分辨率对值进行采样。 finest-contiguous
根据整个几何中的最佳可用分辨率(像元大小)对高程进行采样。 {number}
根据最接近指定分辨率的分辨率(以米为单位)对高程进行采样。 returnSampleInfo Booleanoptional默认值: false指示是否返回每个样本坐标的其他采样信息。
noDataValue Numberoptional默认值:0没有可用数据时,在生成的几何中显示的值。
signal AbortSignaloptional中止请求的 AbortSignal。如果取消,则 promise 将被拒绝,并返回一个名为
AbortError
的错误。另请参见 AbortController。返回类型 描述 Promise<ElevationQueryResult> 解析为具有采样几何、分辨率信息和无数据值的对象。 示例require(["geoscene/Map", "geoscene/geometry/Multipoint"], function(Map, Multipoint) { const map = new Map({ ground: "world-elevation" }); // Various points across a ridge of the mount everest const points = [ [ 86.9252, 27.9883 ], [ 86.9265, 27.9894 ], [ 86.9292, 27.9923 ], [ 86.9324, 27.9960 ], [ 86.9359, 27.9992 ] ]; map.ground.queryElevation(new Multipoint({ points }), { returnSampleInfo: true }) // Successfully sampled all points .then(function(result) { // Print result of each sampled point to the console result.geometry.points.forEach(function(point, index) { const elevation = Math.round(point[2]); const resolution = result.sampleInfo[index].demResolution; const coordinateText = "(" + point[0] + ", " + point[1] + ")"; const resolutionText = Math.round(resolution) + " meter resolution"; console.log("Sampled " + coordinateText + ": " + elevation + " at " + resolutionText); }); }) // Failed to sample (e.g. service unavailable) .catch(function(error) { console.error("Failed to query elevation:", error); }); });
-
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");
-
toJSON(){Object}
-
将此类的实例转换为 GeoScene Portal JSON 表示。有关详细信息,请参阅使用 fromJSON() 指南主题。
返回类型 描述 Object 此类实例的 GeoScene Portal JSON 表示。
-
when(callback, errback){Promise}起始版本:GeoScene Maps SDK for JavaScript 4.6
-
一旦创建了类的实例,就可以使用
when()
。此方法接受两个输入参数:callback
函数和errback
函数。callback
在类的实例加载时执行。errback
在类的实例无法加载时执行。参数callback Functionoptional当 promise 解决时调用的函数。
errback Functionoptional当 promise 失败时执行的函数。
返回类型 描述 Promise 返回 callback
结果的新 promise,可用于链接其他函数。示例// 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 });
类型定义
-
ElevationQueryResult
-
queryElevation() promise 完成时返回的对象:
- 属性
-
geometry Point|Multipoint|Polyline
具有采样 z 值的几何。
optional 包含有关如何对几何进行采样的附加信息。此属性的存在取决于用户是否为几何中的每个坐标设置
options.returnSampleInfo = true
。- 规范
-
demResolution Number
对 z 值进行采样的分辨率。如果没有数据可用于给定坐标的采样,则该坐标的 dem 分辨率值为 -1。
source ElevationLayer从中对相应坐标的数据进行采样的高程源。
noDataValue Number没有可用数据时使用的值。