BaseElevationLayer

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

BaseElevationLayer 旨在扩展以创建自定义高程图层。您可以通过在 BaseElevationLayer 上调用 createSubclass() 来创建自定义 ElevationLayer

如果新图层需要获取和准备资源,您可以在加载图层之前异步初始化属性。这在 load() 方法中处理。当图层即将显示时,由您或视图调用此方法一次。在方法的主体中,您可以调用 addResolvingPromise() 来添加一个必须在图层被认为已加载之前解决的 promise。

您必须覆盖 fetchTile() 方法中的逻辑以返回自定义高程数据的值。这样做可以夸大实际高程值或将专题数据映射为高程图层。转换高程数据的值时,建议保持无数据值不变。

const ExaggeratedElevationLayer = BaseElevationLayer.createSubclass({
  load: function() {
    // add loadable dependencies here and include
    // their returned promises in the
    // addResolvingPromise() method
    this._elevation = new ElevationLayer({
      url: "//links.geoscene.cn/elevation3d/rest/services/WorldElevation3D/Terrain3D/ImageServer"
    });
    this.addResolvingPromise(this._elevation.load());
  },

  fetchTile: function(level, row, col, options) {
    // must resolve to an object with the following properties:
    // values <number[]>: an array of elevation values for each pixel
    // width <number>: the width of the tile in pixels
    // height <number>: the height of the tile in pixels
    // noDataValue <number>: value of pixels where no elevation data is present
    return this._elevation.fetchTile(level, row, col, options).then(function(data) {
      let exaggeration = this.exaggeration;
      // `data` is an object that contains the width of the tile in pixels,
      // the height of the tile in pixels, and the values of each pixel
      for (let i = 0; i < data.values.length; i++) {
         // each value represents an elevation sample for the
         // given pixel position in the tile
         // check if the value is a no data value
         if (data.values[i] !== data.noDataValue) {
           // multiply the elevation value by the exaggeration value
           data.values[i] *= exaggeration;
         }
      }
      return data;
    }.bind(this))
  }
});

创建图层后,您必须将其添加到 Map.ground 属性的图层中并将地图添加到 SceneView 实例中。

let map = new Map({
  basemap: "satellite",
  ground: {
    layers: [ new ExaggeratedElevationLayer() ]
  }
});
sceneView.map = map;

属性概述

可以设置、检索或侦听任何属性。请参阅使用属性主题。
显示继承属性 隐藏继承属性
名称 类型 描述
String

类的名称。

更多详情
Accessor
Extent

图层的完整范围。

更多详情
Layer
String

分配给图层的唯一 ID。

更多详情
Layer
String

指示图层在 LayerList 微件中的显示方式。

更多详情
Layer
Boolean

指示图层的资源是否已加载。

更多详情
Layer
Error

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

更多详情
Layer
String

表示 load 操作的状态。

更多详情
Layer
Object[]

加载时发生的警告列表。

更多详情
Layer
Number

图层的不透明度。

更多详情
Layer
SpatialReference

图层的空间参考。

更多详情
BaseElevationLayer
TileInfo

图层的切片方案信息。

更多详情
BaseElevationLayer
String

用于在某些地方标识它的图层标题,例如 LayerList 微件。

更多详情
Layer
String对于 BaseElevationLayer,类型总是 "base-elevation"更多详情BaseElevationLayer
Boolean

指示图层在 View 中是否可见。

更多详情
Layer

属性详细信息

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

listMode String inherited

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

描述
show 图层在内容列表中可见。
hide 图层在内容列表中隐藏。
hide-children 如果图层是 GroupLayerBuildingSceneLayerKMLLayerMapImageLayerTileLayerWMSLayer,则从内容列表中隐藏子图层。

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

默认值:"show"
loaded Booleanreadonly inherited

指示图层的资源是否已加载。如果为 true,则可访问对象的所有属性。

默认值:false
loadError Errorreadonly inherited

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

默认值:null
loadStatus Stringreadonly inherited

表示 load 操作的状态。

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

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

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

加载时发生的警告列表。

图层的不透明度。此值的范围在 10 之间,其中 0 是 100% 透明,而 1 为完全不透明。

默认值:1
示例
// Makes the layer 50% transparent
layer.opacity = 0.5;
spatialReference SpatialReferenceautocast

图层的空间参考。

图层的切片方案信息。

用于在某些地方标识它的图层标题,例如 LayerList 微件。

如果图层是从门户项目加载的,则将使用门户项目的标题。如果图层作为 webmap 或 webscene 的一部分加载,则将使用存储在 webmap/webscene 中的图层标题。

type Stringreadonly

对于 BaseElevationLayer,类型总是 "base-elevation"

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

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

方法概述

显示继承的方法 隐藏继承的方法
名称 返回值类值 描述

添加一个或多个与对象的生命周期相关联的句柄。

更多详情
Accessor
Promise

向图层的可加载链添加 promise。

更多详情
BaseElevationLayer

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

更多详情
Layer
Promise<ElevationSampler>

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

更多详情
BaseElevationLayer
Promise<LayerView>

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

更多详情
Layer

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

更多详情
Layer
Boolean

在实例上触发事件。

更多详情
Layer
Promise<Object>

在图层可用时,获取图层的自定义属性数据。

更多详情
Layer
Promise<ElevationTileData>

获取视图中存在的给定级别、行和列的切片。

更多详情
BaseElevationLayer
Number[]

以可以轻松转换为 Extent 对象的四个数字的数组形式,返回切片的边界。

更多详情
BaseElevationLayer
Boolean

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

更多详情
Layer
Boolean

如果存在指定的句柄组,则返回 true。

更多详情
Accessor
Boolean

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

更多详情
Layer
Boolean

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

更多详情
Layer
Boolean

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

更多详情
Layer
Promise

加载此类引用的资源。

更多详情
Layer
Object

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

更多详情
Layer
Promise<ElevationQueryResult>

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

更多详情
BaseElevationLayer

移除对象拥有的句柄组。

更多详情
Accessor
Promise

一旦创建了类的实例,就可以使用when()

更多详情
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 }
);

// Handle gets removed when the object is destroyed.
this.addHandles(handle);
参数
handleOrHandles WatchHandle|WatchHandle[]

对象销毁后,标记为要移除的句柄。

groupKey *
optional

标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。

addResolvingPromise(promiseToLoad){Promise}

向图层的可加载链添加 promise。这通常在 load() 方法中使用,以确保在解析和加载该图层之前加载该图层运行所需的所有可加载资源。

参数
promiseToLoad Promise

必须对待解析图层进行解析并将 loading 状态更改到 loaded 的 promise。

返回
类型 描述
Promise 当给定的 promise 解决时解析。
示例
// the _elevationLayer must load() prior to the ExaggeratedElevationLayer
// resolving and moving to the "loaded" status
const ExaggeratedElevationLayer = BaseElevationLayer.createSubclass({
  load: function() {
    this._elevationLayer = new ElevationLayer({
      url: "//links.geoscene.cn/elevation3d/rest/services/WorldElevation3D/Terrain3D/ImageServer"
    });

    this.addResolvingPromise(this._elevationLayer.load());
  }
});
cancelLoad()inherited

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

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

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

参数
规范
extent Extent

创建采样器的范围。

options Object
optional

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

规范
demResolution Number|String
optional
默认值:auto

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

noDataValue Number
optional
默认值:0

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

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

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

参数
view *

父视图。

options Object
optional

指定附加选项的对象。有关此对象所需的属性,请参阅下面的对象规范表。

规范
optional

中止 layerview 创建的信号。

返回
类型 描述
Promise<LayerView> 使用 LayerView 实例解析。
destroy()inherited
起始版本:GeoScene Maps SDK for JavaScript 4.17

销毁图层和任何相关资源 (包括其 portalItem,如果它是图层上的属性)。一旦图层被破坏,则无法再使用。

被破坏的图层将从其父对象中移除,例如 MapWebMapWebSceneBasemapGroundGroupLayer

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

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

参数
type String

事件的名称。

event Object
optional

事件有效负载。

返回
类型 描述
Boolean 如果监听器收到通知,则为true
fetchAttributionData(){Promise<object>}inherited

在图层可用时,获取图层的自定义属性数据。

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

获取视图中存在的给定级别、行和列的切片。必须覆盖此方法才能在 Map.ground 中显示自定义高程值。请注意,此方法必须返回一个 Promise,其解析为具有 ElevationTileData 中定义的属性的对象。

有关如何覆盖此方法的示例,请参阅以下示例:

参数
规范
level Number

要获取的切片的细节级别。

row Number

要获取的切片的行 (y) 位置。

column Number

要获取的切片的列 (x) 位置。

options Object
optional

切片请求的可选设置。

规范
noDataValue Number
optional

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

optional

中止请求的 AbortSignal。覆盖 fetchTile 时,应处理 signal,例如通过将其传递给请求或中止挂起的操作。对 fetchTile 的中止调用应拒绝其返回的承诺,并出现名为 AbortError 的错误。另请参见 AbortController

返回
类型 描述
Promise<ElevationTileData> 解析为 ElevationTileData 的实例。
getTileBounds(level, row, column, out){Number[]}

以可以轻松转换为 Extent 对象的四个数字的数组形式,返回切片的边界。有关此方法返回的值的更多详细信息,请参阅下面的 returns 部分中的表格。

此函数可在 fetchTile() 中使用,因此您可获取当前切片的边界,将其转换为范围对象,并请求给定范围的所需数据。有关此方法如何工作的示例,请参阅自定义 ElevationLayer:专题高程数据示例。

参数
level Number

切片的细节层次 (LOD)。

row Number

数据集中切片的行 (y) 位置。

column Number

数据集中切片的列 (x) 位置。

optional

用于存储切片边界或范围的数组。

返回
类型 描述
Number[] 返回一个表示切片边界或范围的数组。该数组有四个项目,每个项目代表一个范围的边界。下表描述了每个项目的值。
索引
0 最小 x 值
1 最小 y 值
2 最大 x 值
3 最大 y 值
hasEventListener(type){Boolean}inherited

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

参数
type String

事件的名称。

返回
类型 描述
Boolean 如果类支持输入事件,则返回 true。
hasHandles(groupKey){Boolean}inherited
起始版本: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}inherited

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

返回
类型 描述
Boolean 指示创建类的实例是否已完成 (已解决或已拒绝)。
isRejected(){Boolean}inherited

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

返回
类型 描述
Boolean 指示创建类的实例是否已被拒绝。
isResolved(){Boolean}inherited

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

返回
类型 描述
Boolean 指示创建类的实例是否已解决。
load(signal){Promise}inherited

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

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

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

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

参数
optional

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

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

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

参数

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

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>}
起始版本:GeoScene Maps SDK for JavaScript 4.12

查询服务图层以获取给定几何的高程值。返回的结果包含几何的副本,其中 z 值从服务的高程数据中采样。可以使用 demResolution 选项设置查询高程的分辨率。在许多情况下,auto demResolution 可用于获取高质量的高程样本,而无需知道服务中数据的确切位置。这对于组合来自多个源的高程数据的服务 (例如世界高程服务) 特别有用。如果需要更多控制或更高质量的样本,请使用 finest-contiguous 或固定 {number} 分辨率。

参数
规范

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

options Object
optional

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

规范
demResolution Number|String
optional
默认值:auto

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

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

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

noDataValue Number
optional
默认值:0

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

返回
类型 描述
Promise<ElevationQueryResult> 解析为具有采样几何、分辨率信息和无数据值的对象。
另请参阅
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){Promise}inherited
起始版本:GeoScene Maps SDK for JavaScript 4.6

一旦创建了类的实例,就可以使用when() 。此方法接受两个输入参数:callback 函数和 errback 函数。callback 在类的实例加载时执行。errback 在类的实例无法加载时执行。

参数
callback Function
optional

当 promise 解决时调用的函数。

errback Function
optional

当 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
});

类型定义

ElevationTileData

描述组成高程切片的像素中包含的高程。

属性
values Number[]

切片中每个像素的高程值。

width Number

切片的宽度,以像素为单位。

height Number

切片的高度,以像素为单位。

maxZError Number

每个值的 Z 值允许的最大误差(以米为单位)。

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

在表示 layer 中图层的视图中进行渲染的 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 期间出现错误时触发。

属性
view View

为图层创建 layerview 失败触发此事件的视图。

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。

您的浏览器不再受支持。请升级您的浏览器以获得最佳体验。请参阅浏览器弃用帖子以获取更多信息