高程图层是用于在 SceneViews 中渲染高程的切片图层。通过将地图的 ground 属性设置为 world-elevation
,可以将默认的世界高程图层添加到地图中。
高程图层在地图地面的图层属性中设置。不应将它们添加到地图的 业务图层中。
let elevLyr = new ElevationLayer({
// Custom elevation service
url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Elevation/MtBaldy_Elevation/ImageServer"
});
// Add elevation layer to the map's ground.
map.ground.layers.add(elevLyr);
如果从其他域请求服务,则需要启用 CORS 的服务器或代理。
构造函数
属性概述
名称 | 类型 | 描述 | 类 | |
---|---|---|---|---|
String | 更多信息 服务定义的版权文本。 | 更多信息 | ElevationLayer | |
String | 更多信息 类的名称。 | 更多信息 | Accessor | |
范围 | 更多信息 图层的全图范围。 | 更多信息 | Layer | |
String | 更多信息 分配给图层的唯一 ID。 | 更多信息 | Layer | |
String | 更多信息 指示图层在图层列表微件中的显示方式。 | 更多信息 | Layer | |
布尔值 | 更多信息 指示图层的资源是否已加载。 | 更多信息 | Layer | |
错误 | 更多信息 如果加载时发生错误,则返回 Error 对象。 | 更多信息 | Layer | |
String | 更多信息 表示加载操作的状态。 | 更多信息 | Layer | |
Object[] | 更多信息 加载时发生的警告列表。 | 更多信息 | Layer | |
PortalItem | 更多信息 从中加载图层的门户项目。 | 更多信息 | ElevationLayer | |
Object | 更多信息 GeoScene REST API 公开的影像服务元数据 JSON。 | 更多信息 | ElevationLayer | |
SpatialReference | 更多信息 由服务定义的图层的空间参考。 | 更多信息 | ElevationLayer | |
TileInfo | 更多信息 包含有关图层切片方案的信息。 | 更多信息 | ElevationLayer | |
String | 更多信息 图层的标题,用于在“图层列表”微件等位置标识该图层。 | 更多信息 | ElevationLayer | |
String | 更多信息 对于ElevationLayer 类型始终为 "elevation"。 | 更多信息 | ElevationLayer | |
String | 更多信息 指向 GeoScene 影像服务器上的高程图层资源的 URL。 | 更多信息 | ElevationLayer | |
布尔值 | 更多信息 指示图层在视图中是否可见。 | 更多信息 | Layer |
属性详情
-
copyright String
-
服务定义的版权文本。
-
起始版本:GeoScene API 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。如果未由开发人员设置,则会在加载图层时自动生成。
-
指示图层在图层列表微件中的显示方式。下面列出可能值为:
值 说明 show 该图层在内容列表中可见。 hide 图层隐藏在内容列表中。 hide-children 如果图层时 GroupLayer, BuildingSceneLayer, KMLLayer, MapImageLayer, TileLayer 或 WMSLayer,请从内容列表中隐藏子图层。 可能值:"show"|"hide"|"hide-children"
- 默认值:show
-
指示图层的资源是否已加载。当
true
时,可以访问对象的所有属性。- 默认值:false
-
如果加载时发生错误,则返回 Error 对象。
- 默认值:null
-
表示加载操作的状态。
值 说明 not-loaded 对象的资源尚未加载。 loading 对象的资源当前正在加载。 loaded 对象的资源已加载且未出现错误。 failed 无法加载对象的资源。有关更多详情,请参阅加载错误。 可能值:"not-loaded"|"loading"|"failed"|"loaded"
- 默认值:not-loaded
-
加载时发生的警告列表。
-
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 lyr = 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 lyr = new FeatureLayer({ portalItem: { // autocasts as new PortalItem() id: "8d26f04f31f642b6828b7023b84c2188" }, // loads the third item in the given feature service layerId: 2 });
// 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 API for JavaScript 4.13
-
GeoScene REST API 公开的影像服务元数据 JSON。虽然最常用的属性直接显示在 ElevationLayer 类上,但此属性允许访问高程影像服务返回的所有信息。如果在使用较旧版本的 API 构建的应用程序中工作,该应用程序需要访问较新版本的高程影像服务属性,则此属性非常有用。
-
spatialReference SpatialReferencereadonly
-
由服务定义的图层的空间参考。
-
tileInfo TileInfo
-
包含有关图层切片方案的信息。
-
title String
-
图层的标题,用于在“图层列表”微件等位置标识该图层。
按服务 URL 加载图层时,标题派生自服务名称。从门户项目加载图层时,将改用门户项目的标题。最后,如果将图层作为 web 地图或 webscene 的一部分进行加载,则将使用存储在 webmap/webscene 中的图层标题。
-
type Stringreadonly
-
对于 ElevationLayer 类型总为 "elevation"。
-
url String
-
指向 GeoScene 影像服务器上的高程图层资源的 URL。
示例:url: "http://elevation3d.geoscene.cn/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer"
-
- 默认值:true
示例:// The layer is no longer visible in the view layer.visible = false;
方法概述
名称 | 返回类型 | 描述 | 类 | |
---|---|---|---|---|
更多信息 如果 load() 操作已在进行中,则取消该操作。 | 更多信息 | Layer | ||
Promise<ElevationSampler> | 更多信息 通过查询服务图层的高程数据并缓存它,为给定的范围创建高程采样器,以便之后可以快速采样值。 | 更多信息 | ElevationLayer | |
Promise<LayerView> | 更多信息 当图层添加到 Map.layers 集合并且必须为其创建图层视图时,由视图(例如 MapView 和 SceneView)调用。 | 更多信息 | Layer | |
更多信息 销毁图层和任何关联的资源(包括其 portalItem,如果它是图层上的属性)。 | 更多信息 | Layer | ||
布尔值 | 更多信息 在实例上发出事件。 | 更多信息 | Layer | |
Promise<Object> | 更多信息 在图层可用时提取图层的自定义归因数据。 | 更多信息 | Layer | |
Promise<ElevationTileData> | 更多信息 从服务请求切片并将数据解码为高程值的线性数组。 | 更多信息 | ElevationLayer | |
String | 更多信息 此方法返回给定级别、行和列的切片的 URL。 | 更多信息 | ElevationLayer | |
布尔值 | 更多信息 指示实例上是否存在与提供的事件名称匹配的事件侦听器。 | 更多信息 | Layer | |
布尔值 | 更多信息
| 更多信息 | Layer | |
布尔值 | 更多信息
| 更多信息 | Layer | |
布尔值 | 更多信息
| 更多信息 | Layer | |
Promise | 更多信息 加载此类引用的资源。 | 更多信息 | Layer | |
Object | 更多信息 在实例上注册事件处理程序。 | 更多信息 | Layer | |
Promise<ElevationQueryResult> | 更多信息 查询服务图层以获取给定几何的高程值。 | 更多信息 | ElevationLayer | |
Promise | 更多信息
| 更多信息 | Layer |
方法详情
-
createElevationSampler(extent, options){Promise<ElevationSampler>}起始版本:GeoScene API for JavaScript 4.7
-
通过查询服务图层的高程数据并缓存它,为给定的范围创建高程采样器,以便之后可以快速采样值。可以使用
demResolution
选项设置缓存数据的分辨率。在许多情况下,auto
demResolution 可用于获取高质量的高程样本,而无需知道服务中数据的确切位置。这对于组合来自多个来源的高程数据的服务(例如世界高程服务)特别有用。如果需要更多控制或更高质量的样本,请使用finest-contiguous
或固定{number}
分辨率。参数:规范:extent Extent创建采样器的范围。
options Object可选其他查询选项。请参见下表。
规范:可选 默认值:auto以米为单位控制对高程数据进行采样的水平分辨率(像元大小)(默认为
auto
)。有关更多详情,请参阅高程图层。noDataValue Number可选默认值:0没有可用数据时使用的值。
signal AbortSignal可选中止请求的 AbortSignal。如果取消,promise 将被拒绝并出现名为
AbortError
的错误。另请参阅 AbortController。返回:类型 说明 Promise<ElevationSampler> 高程采样器。
-
当图层添加到 Map.layers 集合并且必须为其创建图层视图时,由视图(例如 MapView 和 SceneView)调用。此方法在内部使用,没有直接调用它的用例。
参数:view *父视图。
options Object可选指定其他选项的对象。有关此对象的必需属性,请参阅下面的对象规范表。
规范:signal AbortSignal可选中止层视图创建的信号。
返回:类型 说明 Promise<LayerView> 使用 LayerView 实例进行解析。 - 另请参阅:
-
destroy()inherited起始版本:GeoScene API for JavaScript 4.17
-
销毁图层和任何关联的资源(包括其 portalItem,如果它是图层上的属性)。该图层一旦被破坏就不能再使用了。
被破坏的图层将从其父对象(如 Map、 WebMap、 WebScene、 Basemap、 Ground、GroupLayer)中移除。
-
起始版本:GeoScene API for JavaScript 4.5
-
在实例上发出事件。仅当创建此类的子类时,才应使用此方法。
参数:type String事件的名称。
event Object可选事件负载。
返回:类型 说明 布尔值 true
如果通知了侦听器
-
fetchTile(level, row, column, options){Promise<ElevationTileData>}
-
从服务请求切片并将数据解码为高程值的线性数组。
返回的承诺使用描述获得的切片高程数据的普通对象解析。该对象具有以下属性:
属性 类型 说明 values Float32Array 切片中包含的高程值。 width 整数 切片一行中的高程值数。 height 整数 切片一列中的高程值数。 maxZError 整数 高程值上压缩误差的上限。 参数:规范:level Number切片级别。
row Number切片行。
column Number切片列。
options Object可选切片请求的可选设置。
规范:noDataValue Number可选表示切片中不包含高程值的像素的值。
signal AbortSignal可选中止请求的 AbortSignal。如果取消,promise 将被拒绝并出现名为
AbortError
的错误。另请参阅 AbortController。返回:类型 说明 Promise<ElevationTileData> 使用高程图块数据解析的 Promise。
-
getTileUrl(level, row, col){String}
-
此方法返回给定级别、行和列的切片的 URL。
参数:level Number请求切片级别。
row Number请求切片行。
col Number请求切片列。
返回:类型 说明 字符串 返回切片 URL。
-
isFulfilled()
可用于验证创建类的实例是否已完成(已解决或已拒绝)。如果满足,则返回true
。返回:类型 说明 布尔值 指示创建类的实例是否已完成(已解决或已拒绝)。
-
isRejected()
可用于验证创建类的实例是否被拒绝。如果拒绝,则返回true
。返回:类型 说明 布尔值 指示创建类的实例是否已被拒绝。
-
isResolved()
可用于验证创建类的实例是否已解决。如果已解决,则返回true
。返回:类型 说明 布尔值 指示创建类的实例是否已解决。
-
加载此类引用的资源。如果视图是使用地图实例构造的,则此方法会自动为视图及其在地图中引用的所有资源执行。
开发人员在访问不会在视图中加载的资源时必须调用此方法。
load()
方法仅在第一次调用时触发资源的加载。随后的调用返回相同的promise。可以提供一个
signal
来停止对Loadable
实例的加载状态感兴趣。当信号中止时,实例不会停止其加载过程,只有 cancelLoad 可以中止它。参数:signal AbortSignal可选可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被一个名为
AbortError
的错误 拒绝。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。返回:类型 说明 Promise 资源已加载时解析。
-
在实例上注册事件处理程序。调用此方法以将事件与侦听器挂钩。
参数:要侦听的事件或事件数组。
listener Function事件触发时调用的函数。
返回:类型 说明 Object 返回带有 remove()
方法的事件处理程序,应调用该方法以停止侦听事件。属性 类型 说明 remove 函数 调用时,从事件中删除侦听器。 示例: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 Object可选其他查询选项。请参见下表。
规范:可选 默认值:auto以米为单位控制对高程数据进行采样的水平分辨率(像元大小)(默认为
auto
)。有关不同设置的更多详细信息,请参见下表。分辨率 说明 auto
自动为输入几何的每个坐标选择适当的分辨率。当前实现将尝试使用最好的可用分辨率,前提是所需的切片请求总数不超过某个最大数量(当前为 20 个)。请注意,这可能会导致从不同的分辨率对值进行采样。 finest-contiguous
从整个几何图形中的最佳可用分辨率(像元大小)开始的样本高程。 {number}
从最接近指定分辨率的分辨率(以米为单位)的样本高程。 returnSampleInfo Boolean可选默认值:false指示是否返回每个坐标的其他示例信息。
noDataValue Number可选默认值:0没有可用数据时使用的值。
signal AbortSignal可选中止请求的 AbortSignal。如果取消,promise 将被拒绝并出现名为
AbortError
的错误。另请参阅 AbortController。返回:类型 说明 Promise<ElevationQueryResult> 解析为具有采样几何图形、分辨率信息和无数据值的对象。 示例:require(["geoscene/layers/ElevationLayer", "geoscene/geometry/Multipoint"], function ( ElevationLayer, Multipoint ) { const url = "//elevation3d.arcgis.com/arcgis/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); }); });
-
起始版本:GeoScene API for JavaScript 4.6
-
when()
可以在创建类的实例后利用。这个方法有两个输入参数:一个callback
函数和一个errback
函数。callback
在类的实例加载时执行。errback
在类的实例无法加载时执行。参数:callback Function可选当 promise 解决时调用的函数。
errback Function可选当 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 });
类型定义
-
ElevationQueryResult
-
当 queryElevation() 承诺解决时返回的对象:
- 属性:
-
geometry Point|Multipoint|Polyline
具有采样 z 值的几何图形。
可选 包含有关如何对几何进行采样的附加信息。此属性的存在取决于用户是否为几何中的每个坐标设置
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); });