体素图层表示多维体积数据。例如,大气或海洋数据、地质地下模型或时空立方体可以可视化为体素图层。VoxelLayer 可以在 SceneView 中可视化,viewingMode 设置为本地。
使用体素图层探索与其他内容的空间关系。例如,可视化为体素图层的地下模型可以与建筑物或地下公用设施一起查看,以评估地下以进行规划施工或维护。
已知限制
- VoxelLayer 需要 WebGL2 和
EXT_color_buffer_float
扩展。 - 可视化数据类型为
INT16
或UINT16
的体素还需要EXT_texture_norm16
扩展,目前仅 Chrome 浏览器支持。 - 为获得最佳性能,请使用 Chrome 浏览器和专用显卡。
- 移动支持因设备而异。不建议在移动设备上使用体素场景图层。
场景服务由 GeoScene Server REST 资源的 URL 标识:
let voxelLayer = new VoxelLayer({
url: "https://tiles.geoscene.cn/tiles/z2tnIkrLQ2BRzr6P/arcgis/rest/services/EMU_Caribbean_Voxel/SceneServer"
});
如果从不同域请求体素服务,则需要启用 CORS 的服务器或代理。
- 另请参阅:
构造函数
属性概述
名称 | 类型 | 描述 | 类 | |
---|---|---|---|---|
String | 更多信息 用于访问资源或服务的授权字符串。 | 更多信息 | VoxelLayer | |
String | 更多信息 场景服务定义的版权文本。 | 更多信息 | VoxelLayer | |
String | 更多信息 类的名称。 | 更多信息 | Accessor | |
范围 | 更多信息 图层的全图范围。 | 更多信息 | Layer | |
String | 更多信息 分配给图层的唯一 ID。 | 更多信息 | Layer | |
整数 | 更多信息 场景服务图层的图层 ID 或图层索引。 | 更多信息 | VoxelLayer | |
String | 更多信息 指示图层在图层列表微件中的显示方式。 | 更多信息 | Layer | |
布尔值 | 更多信息 指示图层的资源是否已加载。 | 更多信息 | Layer | |
错误 | 更多信息 如果加载时发生错误,则返回 Error 对象。 | 更多信息 | Layer | |
String | 更多信息 表示加载操作的状态。 | 更多信息 | Layer | |
Object[] | 更多信息 加载时发生的警告列表。 | 更多信息 | Layer | |
整数 | 更多信息 图层在视图中可见时的最大比例 (放至最大)。 | 更多信息 | VoxelLayer | |
整数 | 更多信息 图层在视图中可见的最小比例(最大缩小)。 | 更多信息 | VoxelLayer | |
PortalItem | 更多信息 从中加载图层的门户项目。 | 更多信息 | VoxelLayer | |
SpatialReference | 更多信息 图层的空间参考。 | 更多信息 | VoxelLayer | |
String | 更多信息 图层的标题,用于在“图层列表”微件等位置标识该图层。 | 更多信息 | Layer | |
String | 更多信息 对于VoxelLayer 类型始终为 "voxel"。 | 更多信息 | VoxelLayer | |
String | 更多信息 图层或场景服务的 REST 端点的 URL。 | 更多信息 | VoxelLayer | |
Object | 更多信息 用于此服务的场景服务规范的版本。 | 更多信息 | VoxelLayer | |
布尔值 | 更多信息 指示图层在视图中是否可见。 | 更多信息 | Layer |
属性详情
-
apiKey String
-
用于访问资源或服务的授权字符串。API 密钥在 GeoScene Developer 仪表板中生成和管理。API 密钥明确绑定到 GeoScene 帐户; 它还用于监视服务使用情况。在特定类上设置细粒度 API 密钥会覆盖全局 API 密钥。
示例:// set the api key to access a protected service const layer = new FeatureLayer({ url: serviceUrl, apiKey: "YOUR_API_KEY" });
-
copyright String
-
场景服务定义的版权文本。
-
类的名称。声明的类名的格式为
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。如果未由开发人员设置,则会在加载图层时自动生成。
-
layerId Number
-
场景服务图层的图层 ID 或图层索引。这在从包含多个图层的服务加载具有 portalItem 属性的单个图层时特别有用。您可以在以下两种情况之一中指定此值:
- 通过 portalItem 属性加载图层时。
- 将图层 url 直接指向场景服务时。
如果上述任一场景中均未指定 layerId,则选择服务中的第一层(
layerId = 0
)。示例:// while these examples use a SceneLayer, the same pattern can be // used for other layers that may be loaded from portalItem ids // loads the third layer in the given Portal Item let layer = new SceneLayer({ portalItem: { id: "73df987984b24094b848d580eb83b0fb" }, layerId: 2 });
// If not specified, the first layer (layerId: 0) will be returned let layer = new SceneLayer({ portalItem: { id: "73df987984b24094b848d580eb83b0fb" } });
// Can also be used if URL points to service and not layer let layer = new SceneLayer({ url: "https://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/SceneServer", layerId: 0 // Notice that the url doesn't end with /2 });
// This code returns the same layer as the previous snippet let layer = new SceneLayer({ url: "https://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/SceneServer/layers/0", // The layer id is specified in the URL });
-
指示图层在图层列表微件中的显示方式。下面列出可能值为:
值 说明 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
-
加载时发生的警告列表。
-
maxScale Number
-
图层在视图中可见时的最大比例 (放至最大)。如果地图放大至超过此比例,则图层将不可见。值为
0
时,表示该图层没有最大比例。maxScale 值应始终小于 minScale 值,并且大于或等于服务规范。- 默认值:0
示例:// The layer will not be visible when the view is zoomed in beyond a scale of 1:1,000 layer.maxScale = 1000;
// The layer's visibility is not restricted to a maximum scale. layer.maxScale = 0;
-
minScale Number
-
图层在视图中可见的最小比例(最大缩小)。如果地图缩小到超出此比例,则图层将不可见。值为
0
表示该图层没有最小比例。minScale 应始终大于 maxScale 值,并且小于或等于服务规范。- 默认值:0
示例:// The layer will not be visible when the view is zoomed out beyond a scale of 1:3,000,000 layer.minScale = 3000000;
// The layer's visibility is not restricted to a minimum scale. layer.minScale = 0;
-
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); } });
-
spatialReference SpatialReferenceautocast
-
图层的空间参考。
-
图层的标题,用于在“图层列表”微件等位置标识该图层。
如果图层是从门户项目加载的,则将使用门户项目的标题。如果图层作为 webmap 或 webscene 的一部分加载,则将使用存储在 webmap/webscene 中的图层标题。
-
type Stringreadonly
-
对于 VoxelLayer 类型总为 "voxel"。
-
url String
-
图层或场景服务的 REST 端点的 URL。URL 可以指向 GeoScene Enterprise 或 GeoScene Online 上的资源。
当 url 直接指向服务而不是特定层时,可以使用 layerId 属性指定该层。如果未指定 layerId,则它将默认为服务中的第一个图层。
示例:// Layer from Scene Service on GeoScene Server let sceneLayer = new SceneLayer({ url: "https://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/layers/0" });
// Can also be used if URL points to service and not layer let layer = new SceneLayer({ // Notice that the url doesn't end with /0 url: "https://www.geosceneonline.cn/server/rest/services/Hosted/4%E5%85%A8%E5%B1%80%E5%9C%BA%E6%99%AF_WSL1/SceneServer", layerId: 0 });
-
version Objectreadonly
-
用于此服务的场景服务规范的版本。
示例:// Prints the version to the console - e.g. 1.4, 1.5, etc. console.log(layer.version.versionString);
-
- 默认值:true
示例:// The layer is no longer visible in the view layer.visible = false;
方法概述
名称 | 返回类型 | 描述 | 类 | |
---|---|---|---|---|
更多信息 如果 load() 操作已在进行中,则取消该操作。 | 更多信息 | Layer | ||
更多信息 销毁图层和任何关联的资源(包括其 portalItem,如果它是图层上的属性)。 | 更多信息 | Layer | ||
布尔值 | 更多信息 在实例上发出事件。 | 更多信息 | Layer | |
Promise<Object> | 更多信息 在图层可用时提取图层的自定义归因数据。 | 更多信息 | Layer | |
布尔值 | 更多信息 指示实例上是否存在与提供的事件名称匹配的事件侦听器。 | 更多信息 | Layer | |
布尔值 | 更多信息
| 更多信息 | Layer | |
布尔值 | 更多信息
| 更多信息 | Layer | |
布尔值 | 更多信息
| 更多信息 | Layer | |
Promise | 更多信息 加载此类引用的资源。 | 更多信息 | Layer | |
Object | 更多信息 在实例上注册事件处理程序。 | 更多信息 | Layer | |
Promise | 更多信息
| 更多信息 | Layer |
方法详情
-
destroy()inherited
-
销毁图层和任何关联的资源(包括其 portalItem,如果它是图层上的属性)。该图层一旦被破坏就不能再使用了。
被破坏的图层将从其父对象(如 Map、 WebMap、 WebScene、 Basemap、 Ground、GroupLayer)中移除。
-
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); });
-
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 });
事件概述
名称 | 类型 | 描述 | 类 | |
---|---|---|---|---|
{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); });