ElevationLayer 是用于在 SceneViews 中渲染高程的切片图层。通过将地图的 ground 属性设置为 world-elevation
,可将默认的世界高程图层添加到地图中。
高程图层在地图地面的 layers 属性中设置。不应将它们添加到地图的业务图层中。
let elevLyr = new ElevationLayer({
// Custom elevation service
url: "url"
});
// Add elevation layer to the map's ground.
map.ground.layers.add(elevLyr);
构造函数
属性概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
String | 服务定义的版权信息。 更多详情 | ElevationLayer | |
String | 类的名称。 更多详情 | Accessor | |
Extent | 图层的完整范围。 更多详情 | Layer | |
String | 分配给图层的唯一 ID。 更多详情 | Layer | |
String | 指示图层在 LayerList 微件中的显示方式。 更多详情 | Layer | |
Boolean | 指示图层的资源是否已加载。 更多详情 | Layer | |
Error | 加载时发生的错误,返回 Error 对象 更多详情 | Layer | |
String | load 操作的状态 更多详情 | Layer | |
Object[] | 加载时发生的警告列表 更多详情 | Layer | |
Number | 图层的不透明度。 更多详情 | Layer | |
Map|Basemap|Ground|GroupLayer | 图层所属的父图层。 更多详情 | Layer | |
PortalItem | 从中加载图层的门户项目。 更多详情 | ElevationLayer | |
Object | GeoScene REST API 公开的影像服务元数据 JSON。 更多详情 | ElevationLayer | |
SpatialReference | 由服务定义的图层的空间参考。 更多详情 | ElevationLayer | |
TileInfo | 包含有关图层切片方案的信息。 更多详情 | ElevationLayer | |
String | 用于在某些地方标识它的图层标题,例如 LayerList 微件。 更多详情 | ElevationLayer | |
String | 对于 ElevationLayer,类型总是 "elevation"。更多详情 | ElevationLayer | |
String | 指向 GeoScene Image Server 上的高程图层资源的 URL。 更多详情 | ElevationLayer | |
Boolean | 指示图层在 View 中是否可见。 更多详情 | Layer |
属性详细信息
-
copyright String
-
服务定义的版权信息。
-
起始版本:GeoScene Maps SDK for JavaScript 4.7
-
类的名称。声明的类名称格式化为
geoscene.folder.className
。
-
图层的完整范围。默认情况下,这是全球范围的。可使用此属性设置视图的范围以匹配图层的范围,以便其要素出现在视图中。请参阅以下示例片段。
示例// Once the layer loads, set the view's extent to the layer's fullextent layer.when(function(){ view.extent = layer.fullExtent; });
-
分配给图层的唯一 ID。如果不是开发人员设置的,它将在加载图层时自动生成。
-
指示图层在 LayerList 微件中的显示方式。下面列出了可能的值。
值 描述 show 图层在内容列表中可见。 hide 图层在内容列表中隐藏。 hide-children 如果图层是 GroupLayer、BuildingSceneLayer、KMLLayer、MapImageLayer、TileLayer 或 WMSLayer,则从内容列表中隐藏子图层。 可能值:"show"|"hide"|"hide-children"
- 默认值:"show"
-
指示图层的资源是否已加载。如果为
true
,则可访问对象的所有属性。- 默认值:false
-
加载时发生的错误,返回 Error 对象
- 默认值:null
-
load 操作的状态
值 描述 not-loaded 尚未加载 loading 正在加载 loaded 对象已加载且未出现错误 failed 无法加载对象的资源。有关更多详情,请参阅 loadError。 可能值:"not-loaded"|"loading"|"failed"|"loaded"
- 默认值:not-loaded
-
加载时发生的警告列表
-
图层的不透明度。此值的范围在
1
和0
之间,其中0
是 100% 透明,而1
为完全不透明。- 默认值:1
示例// Makes the layer 50% transparent layer.opacity = 0.5;
-
起始版本:GeoScene Maps SDK for JavaScript 4.27
-
图层所属的父图层。
-
portalItem PortalItem
-
从中加载图层的门户项目。如果门户项目引用要素服务或场景服务,则可以使用 layerId 属性指定要加载的单个图层。
从版本 4.17 开始,可以从 GeoScene Online 和 GeoScene Enterprise 中托管的要素服务项目加载表。这仅适用于要素图层,如果 FeatureLayer.isTable 返回
true
,将成功加载。示例// While this example uses FeatureLayer, this same pattern can be // used for other layers that may be loaded from portalItem ids. const layer = new FeatureLayer({ portalItem: { // autocasts as new PortalItem() id: "caa9bd9da1f4487cb4989824053bb847" } // the first layer in the service is returned });
// Set hostname when using an on-premise portal (default is GeoScene Online) // geosceneConfig.portalUrl = "http://myHostName.geoscene.cn/geoscene"; // While this example uses FeatureLayer, this same pattern can be // used for SceneLayers. const layer = new FeatureLayer({ portalItem: { // autocasts as new PortalItem() id: "8d26f04f31f642b6828b7023b84c2188" }, // loads the third item in the given feature service layerId: 2 });
// Initialize GeoJSONLayer by referencing a portalItem id pointing to geojson file. const layer = new GeoJSONLayer({ portalItem: new PortalItem({ id: "81e769cd7031482797e1b0768f23c7e1", // optionally define the portal, of the item. // if not specified, the default portal defined is used. // see https://doc.geoscene.cn/javascript/latest/api-reference/geoscene-config.html#portalUrl portal: new Portal({ url: "https://www.geosceneonline.cn/geoscene" }) } });
// This snippet loads a table hosted in GeoScene Online. const table = new FeatureLayer({ portalItem: { // autocasts as geoscene/portal/PortalItem id: "123f4410054b43d7a0bacc1533ceb8dc" } }); // Before adding the table to the map, it must first be loaded and confirm it is the right type. table.load().then(function() { if (table.isTable) { map.tables.add(table); } });
-
sourceJSON Object起始版本:GeoScene Maps SDK for JavaScript 4.13
-
GeoScene REST API 公开的影像服务元数据 JSON。虽然最常用的属性直接在 ElevationLayer 类上公开,但此属性允许访问高程影像服务返回的所有信息。如果在使用较旧版本的 API 构建的应用程序中工作,该应用程序需要访问较新版本的高程影像服务属性,则此属性非常有用。
-
spatialReference SpatialReferencereadonly
-
由服务定义的图层的空间参考。
-
tileInfo TileInfo
-
包含有关图层切片方案的信息。
-
title String
-
用于在某些地方标识它的图层标题,例如 LayerList 微件。
通过服务 url 加载图层时,标题派生自服务名称。从门户项目加载图层时,将使用门户项目的标题。最后,如果图层作为 webmap 或 webscene 的一部分加载,则将使用存储在 webmap/webscene 中的图层标题。
-
type Stringreadonly
-
对于 ElevationLayer,类型总是 "elevation"。
-
url String
-
指向 GeoScene Image Server 上的高程图层资源的 URL。
示例url: "http://links.geoscene.cn/elevation3d/rest/services/WorldElevation3D/Terrain3D/ImageServer"
-
- 默认值:true
示例// The layer is no longer visible in the view layer.visible = false;
方法概述
名称 | 返回值类值 | 描述 | 类 |
---|---|---|---|
添加一个或多个与对象生命周期相关联的句柄 更多详情 | Accessor | ||
如果 load() 操作已在进行中,则取消它。 更多详情 | Layer | ||
Promise<ElevationSampler> | 通过查询服务图层的高程数据并对其进行缓存,从而为给定的范围创建高程采样器,以便之后可以快速采样值。 更多详情 | ElevationLayer | |
Promise<LayerView> | 将图层添加到 Map.layers 集合并且必须为其创建图层视图时,由视图调用,例如 MapView 和 SceneView。 更多详情 | Layer | |
销毁图层和任何相关资源 (包括其 portalItem,如果它是图层上的属性)。 更多详情 | Layer | ||
Boolean | 在实例上触发事件。 更多详情 | Layer | |
Promise<Object> | 在图层可用时,获取图层的自定义属性数据。 更多详情 | Layer | |
Promise<ElevationTileData> | 从服务请求切片并将数据解码为高程值的线性数组。 更多详情 | ElevationLayer | |
String | 此方法返回给定级别、行和列的切片的 URL。 更多详情 | ElevationLayer | |
Boolean | 指示实例上是否存在与提供的事件名称相匹配的事件监听器。 更多详情 | Layer | |
Boolean | 如果存在指定的句柄组,则返回 true。 更多详情 | Accessor | |
Boolean |
| Layer | |
Boolean |
| Layer | |
Boolean |
| Layer | |
Promise | 加载此类引用的资源。 更多详情 | Layer | |
Object | 在实例上注册事件处理程序。 更多详情 | Layer | |
Promise<ElevationQueryResult> | 查询服务图层以获取给定几何的高程值。 更多详情 | ElevationLayer | |
移除对象拥有的句柄组。 更多详情 | Accessor | ||
Promise |
| Layer |
方法详细说明
-
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 } ); this.addHandles(handle); // Destroy the object this.destroy();
参数handleOrHandles WatchHandle|WatchHandle[]对象销毁后,标记为要移除的句柄。
groupKey *optional标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。
-
createElevationSampler(extent, options){Promise<ElevationSampler>}起始版本:GeoScene Maps SDK for JavaScript 4.7
-
通过查询服务图层的高程数据并对其进行缓存,从而为给定的范围创建高程采样器,以便之后可以快速采样值。可以使用
demResolution
选项设置缓存数据的分辨率。在许多情况下,auto
demResolution 可用于获取高质量的高程样本,而无需知道服务中数据的确切位置。这对于组合来自多个源的高程数据的服务 (例如世界高程服务) 特别有用。如果需要更多控制或更高质量的样本,请使用finest-contiguous
或固定{number}
分辨率。参数规范extent Extent创建采样器的范围。
options Objectoptional其他查询选项。请参见下表。
规范optional 默认值:auto控制采样高程数据的水平分辨率 (单元尺寸),以米为单位 (默认为
auto
)。有关更多详情,请参阅 ElevationLayer。noDataValue Numberoptional默认值:0没有可用数据时使用的值。
signal AbortSignaloptional中止请求的 AbortSignal。如果取消,则 promise 将被拒绝,并返回一个名为
AbortError
的错误。另请参见 AbortController。返回类型 描述 Promise<ElevationSampler> 高程采样器。
-
将图层添加到 Map.layers 集合并且必须为其创建图层视图时,由视图调用,例如 MapView 和 SceneView。此方法在内部使用,没有直接调用它的用例。
参数view *父视图。
options Objectoptional指定附加选项的对象。有关此对象所需的属性,请参阅下面的对象规范表。
规范signal AbortSignaloptional中止 layerview 创建的信号。
返回类型 描述 Promise<LayerView> 使用 LayerView 实例解析。 - 另请参阅
-
destroy()inherited起始版本:GeoScene Maps SDK for JavaScript 4.17
-
销毁图层和任何相关资源 (包括其 portalItem,如果它是图层上的属性)。一旦图层被破坏,则无法再使用。
被破坏的图层将从其父对象中移除,例如 Map、WebMap、WebScene、Basemap、Ground 或 GroupLayer。
-
起始版本:GeoScene Maps SDK for JavaScript 4.5
-
在实例上触发事件。仅当创建此类的子类时,才应使用此方法。
参数type String事件的名称。
event Objectoptional事件有效负载。
返回类型 描述 Boolean true
如果监听器收到通知,则为
-
fetchTile(level, row, column, options){Promise<ElevationTileData>}
-
从服务请求切片并将数据解码为高程值的线性数组。
返回的承诺解析为一个普通对象,用于描述获得的切片高程数据。此对象具有以下属性:
属性 类型 描述 values Float32Array 切片中包含的高程值。 width number 切片一行中的高程值个数。 height number 切片一列中的高程值个数。 maxZError number 高程值上压缩误差的上限。 参数规范level Number切片级别。
row Number切片行。
column Number切片列。
options Objectoptional切片请求的可选设置。
规范noDataValue Numberoptional表示切片中不包含高程值的像素的值。
signal AbortSignaloptional中止请求的 AbortSignal。如果取消,则 promise 将被拒绝,并返回一个名为
AbortError
的错误。另请参见 AbortController。返回类型 描述 Promise<ElevationTileData> 使用高程切片数据解析的 Promise。
-
getTileUrl(level, row, col){String}
-
此方法返回给定级别、行和列的切片的 URL。
参数level Number请求的切片级别。
row Number请求的切片行。
col Number请求的切片列。
返回类型 描述 String 返回切片 URL。
-
起始版本: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()
可用于验证创建类的实例是否已完成 (已解决或已拒绝)。如果满足,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已完成 (已解决或已拒绝)。
-
isRejected()
可用于验证创建类的实例是否被拒绝。如果被拒绝,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已被拒绝。
-
isResolved()
可用于验证创建类的实例是否已解决。如果已解决,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已解决。
-
加载此类引用的资源。如果视图是使用地图实例构造的,则此方法会自动为 View 及其在 Map 中引用的所有资源执行。
开发人员在访问不会在 View 中加载的资源时,必须调用此方法。
load()
方法仅在第一次调用时触发资源的加载。随后的调用将返回相同的 promise。可以提供一个
signal
来停止对Loadable
实例加载状态感兴趣。当信号中止时,实例不会停止其加载过程,只有 cancelLoad 可以中止它。参数signal AbortSignaloptional可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为
AbortError
的错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回类型 描述 Promise 资源已加载时解析。
-
在实例上注册事件处理程序。调用此方法将事件与监听器挂钩。
参数要监听的事件或事件数组。
listener Function事件触发时要调用的函数。
返回类型 描述 Object 返回一个具有 remove()
方法的事件处理程序,应该调用该方法以停止监听事件。属性 类型 描述 remove Function 当调用时,将从事件中移除该监听器。 示例view.on("click", function(event){ // event is the event handle returned after the event fires. console.log(event.mapPoint); });
-
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/layers/ElevationLayer", "geoscene/geometry/Multipoint"], function ( ElevationLayer, Multipoint ) { const url = "//links.geoscene.cn/elevation3d/rest/services/WorldElevation3D/Terrain3D/ImageServer/"; const layer = new ElevationLayer(url); // 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.996], [86.9359, 27.9992] ]; // Uses "auto" resolution by default layer .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");
-
起始版本: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。
noDataValue Number没有可用数据时使用的值。
事件概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
{view: View,layerView: LayerView} |
创建图层的 LayerView 并在视图中呈现后触发。 更多详情 |
Layer | |
{view: View,error: Error} |
将图层添加到地图后,在创建 LayerView 期间出现错误时触发。 更多详情 |
Layer | |
{view: View,layerView: LayerView} |
销毁图层的 LayerView 并不再在视图中呈现后触发。 更多详情 |
Layer |
事件详细说明
-
layerview-createinherited
-
创建图层的 LayerView 并在视图中呈现后触发。
示例// This function will fire each time a layer view is created for this // particular view. layer.on("layerview-create", function(event){ // The LayerView for the layer that emitted this event event.layerView; });
-
layerview-create-errorinherited
-
将图层添加到地图后,在创建 LayerView 期间出现错误时触发。
示例// This function fires when an error occurs during the creation of the layer's layerview layer.on("layerview-create-error", function(event) { console.error("LayerView failed to create for layer with the id: ", layer.id, " in this view: ", event.view); });