ElevationLayer

AMD: require(["geoscene/layers/ElevationLayer"], (ElevationLayer) => { /* code goes here */ });
ESM: import ElevationLayer from "@geoscene/core/layers/ElevationLayer";
类: geoscene/layers/ElevationLayer
继承于:ElevationLayer Layer Accessor
起始版本:GeoScene API for JavaScript 4.0

高程图层是用于在 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 的服务器代理

另请参阅:

构造函数

new ElevationLayer(properties)
参数:
properties Object
可选

有关可能传递给构造函数的所有属性的列表,请参见属性

属性概述

可以设置、检索或侦听任何属性。请参阅使用属性 主题。
隐藏继承的属性 显示继承的属性
名称 类型 描述
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

属性详情

服务定义的版权文本。

declaredClass Stringreadonly inherited
起始版本: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。如果未由开发人员设置,则会在加载图层时自动生成。

listMode String inherited

指示图层在图层列表微件中的显示方式。下面列出可能值为:

说明
show 该图层在内容列表中可见。
hide 图层隐藏在内容列表中。
hide-children 如果图层时 GroupLayerBuildingSceneLayerKMLLayerMapImageLayer, TileLayerWMSLayer,请从内容列表中隐藏子图层。

可能值:"show"|"hide"|"hide-children"

默认值:show
loaded Booleanreadonly inherited

指示图层的资源是否已加载。当 true 时,可以访问对象的所有属性。

默认值:false
loadError Errorreadonly inherited

如果加载时发生错误,则返回 Error 对象。

默认值:null
loadStatus Stringreadonly inherited

表示加载操作的状态。

说明
not-loaded 对象的资源尚未加载。
loading 对象的资源当前正在加载。
loaded 对象的资源已加载且未出现错误。
failed 无法加载对象的资源。有关更多详情,请参阅加载错误

可能值:"not-loaded"|"loading"|"failed"|"loaded"

默认值:not-loaded
loadWarnings Object[]readonly inherited

加载时发生的警告列表。

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"

指示图层在视图中是否可见。当为 false 时,图层可能仍会添加到视图中引用的 地图 实例,但其要素在视图中将不可见。

默认值:true
示例:
// The layer is no longer visible in the view
layer.visible = false;

方法概述

隐藏继承方法 显示继承方法
名称 返回类型 描述
更多信息

如果 load() 操作已在进行中,则取消该操作。

更多信息Layer
Promise<ElevationSampler>更多信息

通过查询服务图层的高程数据并缓存它,为给定的范围创建高程采样器,以便之后可以快速采样值。

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

当图层添加到 Map.layers 集合并且必须为其创建图层视图时,由视图(例如 MapViewSceneView)调用。

更多信息Layer
更多信息

销毁图层和任何关联的资源(包括其 portalItem,如果它是图层上的属性)。

更多信息Layer
布尔值更多信息

在实例上发出事件。

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

在图层可用时提取图层的自定义归因数据。

更多信息Layer
Promise<ElevationTileData>更多信息

从服务请求切片并将数据解码为高程值的线性数组。

更多信息ElevationLayer
String更多信息

此方法返回给定级别、行和列的切片的 URL。

更多信息ElevationLayer
布尔值更多信息

指示实例上是否存在与提供的事件名称匹配的事件侦听器。

更多信息Layer
布尔值更多信息

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

更多信息Layer
布尔值更多信息

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

更多信息Layer
布尔值更多信息

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

更多信息Layer
Promise更多信息

加载此类引用的资源。

更多信息Layer
Object更多信息

在实例上注册事件处理程序。

更多信息Layer
Promise<ElevationQueryResult>更多信息

查询服务图层以获取给定几何的高程值。

更多信息ElevationLayer
Promise更多信息

when() 可以在创建类的实例后利用。

更多信息Layer

方法详情

cancelLoad()inherited

如果 load() 操作已在进行中,则取消该操作。

createElevationSampler(extent, options){Promise<ElevationSampler>}
起始版本:GeoScene API for JavaScript 4.7

通过查询服务图层的高程数据并缓存它,为给定的范围创建高程采样器,以便之后可以快速采样值。可以使用 demResolution 选项设置缓存数据的分辨率。在许多情况下,auto demResolution 可用于获取高质量的高程样本,而无需知道服务中数据的确切位置。这对于组合来自多个来源的高程数据的服务(例如世界高程服务)特别有用。如果需要更多控制或更高质量的样本,请使用 finest-contiguous 或固定 {number} 分辨率。

参数:
规范:
extent Extent

创建采样器的范围。

options Object
可选

其他查询选项。请参见下表。

规范:
demResolution Number|String
可选
默认值:auto

以米为单位控制对高程数据进行采样的水平分辨率(像元大小)(默认为 auto)。有关更多详情,请参阅高程图层

noDataValue Number
可选
默认值:0

没有可用数据时使用的值。

可选

中止请求的 AbortSignal。如果取消,promise 将被拒绝并出现名为 AbortError 的错误。另请参阅 AbortController

返回:
类型 说明
Promise<ElevationSampler> 高程采样器。
createLayerView(view, options){Promise<LayerView>}inherited

当图层添加到 Map.layers 集合并且必须为其创建图层视图时,由视图(例如 MapViewSceneView)调用。此方法在内部使用,没有直接调用它的用例。

参数:
view *

父视图。

options Object
可选

指定其他选项的对象。有关此对象的必需属性,请参阅下面的对象规范表。

规范:
可选

中止层视图创建的信号。

返回:
类型 说明
Promise<LayerView> 使用 LayerView 实例进行解析。
另请参阅:
destroy()inherited
起始版本:GeoScene API for JavaScript 4.17

销毁图层和任何关联的资源(包括其 portalItem,如果它是图层上的属性)。该图层一旦被破坏就不能再使用了。

被破坏的图层将从其父对象(如 MapWebMapWebSceneBasemapGroundGroupLayer)中移除。

另请参阅:
emit(type, event){Boolean}inherited
起始版本:GeoScene API for JavaScript 4.5

在实例上发出事件。仅当创建此类的子类时,才应使用此方法。

参数:
type String

事件的名称。

event Object
可选

事件负载。

返回:
类型 说明
布尔值 true 如果通知了侦听器
fetchAttributionData(){Promise<Object>}inherited

在图层可用时提取图层的自定义归因数据。

返回:
类型 说明
Promise<Object> 解析为包含图层自定义属性数据的对象。
fetchTile(level, row, column, options){Promise<ElevationTileData>}

从服务请求切片并将数据解码为高程值的线性数组。

返回的承诺使用描述获得的切片高程数据的普通对象解析。该对象具有以下属性:

属性 类型 说明
values Float32Array 切片中包含的高程值。
width 整数 切片一行中的高程值数。
height 整数 切片一列中的高程值数。
maxZError 整数 高程值上压缩误差的上限。
参数:
规范:
level Number

切片级别。

row Number

切片行。

column Number

切片列。

options Object
可选

切片请求的可选设置。

规范:
noDataValue Number
可选

表示切片中不包含高程值的像素的值。

可选

中止请求的 AbortSignal。如果取消,promise 将被拒绝并出现名为 AbortError 的错误。另请参阅 AbortController

返回:
类型 说明
Promise<ElevationTileData> 使用高程图块数据解析的 Promise。
getTileUrl(level, row, col){String}

此方法返回给定级别、行和列的切片的 URL。

参数:
level Number

请求切片级别。

row Number

请求切片行。

col Number

请求切片列。

返回:
类型 说明
字符串 返回切片 URL。
hasEventListener(type){Boolean}inherited

指示实例上是否存在与提供的事件名称匹配的事件侦听器。

参数:
type String

事件的名称。

返回:
类型 说明
布尔值 如果类支持输入事件,则返回 true。
isFulfilled(){Boolean}inherited

isFulfilled() 可用于验证创建类的实例是否已完成(已解决或已拒绝)。如果满足,则返回 true

返回:
类型 说明
布尔值 指示创建类的实例是否已完成(已解决或已拒绝)。
isRejected(){Boolean}inherited

isRejected() 可用于验证创建类的实例是否被拒绝。如果拒绝,则返回 true

返回:
类型 说明
布尔值 指示创建类的实例是否已被拒绝。
isResolved(){Boolean}inherited

isResolved() 可用于验证创建类的实例是否已解决。如果已解决,则返回 true

返回:
类型 说明
布尔值 指示创建类的实例是否已解决。
load(signal){Promise}inherited

加载此类引用的资源。如果视图是使用地图实例构造的,则此方法会自动为视图及其在地图中引用的所有资源执行。

开发人员在访问不会在视图中加载的资源时必须调用此方法。

load() 方法仅在第一次调用时触发资源的加载。随后的调用返回相同的promise。

可以提供一个 signal 来停止对 Loadable 实例的加载状态感兴趣。当信号中止时,实例不会停止其加载过程,只有 cancelLoad 可以中止它。

参数:
可选

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

返回:
类型 说明
Promise 资源已加载时解析。
on(type, listener){Object}inherited

在实例上注册事件处理程序。调用此方法以将事件与侦听器挂钩。

参数:

要侦听的事件或事件数组。

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} 分辨率。

参数:
规范:

用于对高程数据进行采样的几何图形。

options Object
可选

其他查询选项。请参见下表。

规范:
demResolution Number|String
可选
默认值:auto

以米为单位控制对高程数据进行采样的水平分辨率(像元大小)(默认为 auto)。有关不同设置的更多详细信息,请参见下表。

分辨率 说明
auto 自动为输入几何的每个坐标选择适当的分辨率。当前实现将尝试使用最好的可用分辨率,前提是所需的切片请求总数不超过某个最大数量(当前为 20 个)。请注意,这可能会导致从不同的分辨率对值进行采样。
finest-contiguous 从整个几何图形中的最佳可用分辨率(像元大小)开始的样本高程。
{number} 从最接近指定分辨率的分辨率(以米为单位)的样本高程。
returnSampleInfo Boolean
可选
默认值:false

指示是否返回每个坐标的其他示例信息。

noDataValue Number
可选
默认值:0

没有可用数据时使用的值。

可选

中止请求的 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);
   });
});
when(callback, errback){Promise}inherited
起始版本: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() 承诺解决时返回的对象:

属性:

具有采样 z 值的几何图形。

sampleInfo Object[]
可选

包含有关如何对几何进行采样的附加信息。此属性的存在取决于用户是否为几何中的每个坐标设置 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 后激发。

属性:
view View

创建 layerView 的视图。

layerView LayerView

在视图中呈现的 LayerView 表示 layer 中的图层。

另请参阅:
示例:
// 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 期间发出错误时触发。

属性:
view View

未能为发出此事件的图层创建层视图的视图。

error Error

描述图层视图创建失败原因的错误对象。

另请参阅:
示例:
// 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);
});
layerview-destroyinherited

在图层的 LayerView 被销毁且不再在视图中渲染后触发。

属性:
view View

layerView 被销毁的视图。

layerView LayerView

表示图层的被破坏的 LayerView。

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.