IntegratedMeshLayer

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

IntegratedMeshLayer 旨在可视化难以访问的基础设施和自然景观的 SceneView 中的准确表示。

集成网格数据通常由自动化过程捕获,用于从大型重叠影像集构建 3D 对象。结果使用交错三角结构将原始输入图像信息集成为纹理网格。集成网格可以表示建造的和自然的 3D 要素 (如建筑物墙壁、树木、山谷和悬崖),具有真实的纹理。集成网格场景图层将始终在地表面的前面渲染。它们通常是为全市范围的 3D 制图而创建的,并且可以使用 Drone2Map for GeoScene 创建,然后可以将其共享到 GeoScene Desktop 或 web 应用程序。

integratedmeshlayer

场景服务由 GeoScene Server REST 资源的 URL 标识:

IntegratedMeshLayer = new IntegratedMeshLayer({
  url: "https://tiles.geoscene.cn/tiles/u0sSNqDXr7puKJrF/geoscene/rest/services/Frankfurt2017_v17/SceneServer/layers/0"
});

如果从不同域请求服务,则需要启用 CORS 服务器代理

另请参阅

构造函数

new IntegratedMeshLayer(properties)
参数
properties Object
optional

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

属性概述

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

场景服务定义的版权文本。

更多详情
IntegratedMeshLayer
String

类的名称。

更多详情
Accessor
Object

指定网格在垂直轴 (z) 上的放置方式。

更多详情
IntegratedMeshLayer
Extent

图层的完整范围。

更多详情
Layer
String

分配给图层的唯一 ID。

更多详情
Layer
Number

场景服务图层的图层 ID 或图层索引。

更多详情
IntegratedMeshLayer
String

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

更多详情
Layer
Boolean

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

更多详情
Layer
Error

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

更多详情
Layer
String

表示 load 操作的状态。

更多详情
Layer
Object[]

加载时发生的警告列表。

更多详情
Layer
Number

图层在视图中可见时的最大比例 (放至最大)。

更多详情
IntegratedMeshLayer
Number

图层在视图中可见时的最小比例 (缩至最小)。

更多详情
IntegratedMeshLayer
SceneModifications

SceneModification 集合,具有应用客户端修改的多边形和类型。

更多详情
IntegratedMeshLayer
PortalItem

从中加载图层的门户项目。

更多详情
IntegratedMeshLayer
SpatialReference

图层的空间参考。

更多详情
IntegratedMeshLayer
String

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

更多详情
IntegratedMeshLayer
String对于 IntegratedMeshLayer,类型总是 "integrated-mesh"更多详情IntegratedMeshLayer
String

图层或场景服务的 REST 端点的 URL。

更多详情
IntegratedMeshLayer
Object

用于此服务的场景服务规范的版本。

更多详情
IntegratedMeshLayer
Boolean

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

更多详情
Layer

属性详细信息

apiKey String
起始版本:GeoScene Maps SDK for JavaScript 4.20

用于访问资源或服务的授权字符串。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"
});

场景服务定义的版权文本。

declaredClass Stringreadonly inherited
起始版本:GeoScene Maps SDK for JavaScript 4.7

类的名称。声明的类名称格式化为 geoscene.folder.className

elevationInfo Object
起始版本:GeoScene Maps SDK for JavaScript 4.5

指定网格在垂直轴 (z) 上的放置方式。此属性仅在使用 absolute-height 模式时影响 IntegratedMeshLayers。集成网格图层始终在地表之上渲染,因此设置负偏移值不会将它们渲染到地表以下。

属性
mode String

定义网格在垂直轴 (z) 上的放置方式。目前仅支持 absolute-height

模式 描述
absolute-height 网格放置在海平面以上的绝对高程 (z 值) 处。此 z 值是通过将 offset 值和网格的 z 值相加来确定的。它没有考虑地形的高度。这是 IntegratedMeshLayer 唯一支持的高程模式。
offset Number
optional
默认值:0

高程偏移,将其添加到网格的垂直位置。

unit String
optional
默认值:meters

offset 值的单位。

可能值"feet"|"meters"|"kilometers"|"miles"|"us-feet"|"yards"

图层的完整范围。默认情况下,这是全球范围的。可使用此属性设置视图的范围以匹配图层的范围,以便其要素出现在视图中。请参阅以下示例片段。

示例
// 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://scenesampleserverdev.arcgis.com/geoscene/rest/services/Hosted/DevA_Trees/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://scenesampleserverdev.arcgis.com/geoscene/rest/services/Hosted/DevA_Trees/SceneServer/layers/0",
  // The layer id is specified in the URL
});
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

加载时发生的警告列表。

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;
modifications SceneModifications
起始版本:GeoScene Maps SDK for JavaScript 4.16

SceneModification 集合,具有应用客户端修改的多边形和类型。修改不受 elevationInfo 偏移的影响。使用 WebScene.save(),可以保留 SceneModifications。这允许您通过 web 场景共享修改后的集成网格。可以对集成网格应用以下修改:

图示 修改 描述
modification-type-clip clip - 移除所选区域 剪切出集成网格部分以查看以下要素。例如,公用事业在一个地区的天然气或供水管道上工作。规划人员可以创建一个场景,在该场景中,集成网格在某个地点被剪掉,以暴露其下方的水或煤气管线。
modification-type-mask mask - 仅显示所选区域 定义感兴趣区域。使用多边形并仅在该多边形内绘制集成网格的一部分。例如,如果您只想显示城市边界内的集成网格的一部分。
modification-type-replace replace - 展平所选区域 替换基于 3D 多边形的集成网格区域。例如,要添加已建造的建筑物,可将建筑物覆盖区的集成网格展平,以便能够可视化新建筑物。创建新建筑区域的不同场景,并将这些场景作为 web 场景进行分享,以便与利益相关者讨论。集成网格展平到修改多边形的最小 z 顶点。

IntegratedMeshLayer 的修改需要与 IntegratedMeshLayer 位于同一空间参考中。WGS84 和 WebMercator 之间的重新投影将自动完成。可以使用客户端投影引擎将几何重新投影到其他空间参考。

另请参阅
示例
// create the IntegratedMeshLayer
const layer = new IntegratedMeshLayer({ ... })

// create a polygon
const polygon = new Polygon({ ... });

// create the modifications
let modifications = new SceneModifications(
  [
    new SceneModification({geometry: polygon, type: 'replace'})
  ]);

// add the modification to the IntegratedMesh
layer.modifications = modifications;
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/4.25/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);
  }
});
spatialReference SpatialReferenceautocast

图层的空间参考。

title String

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

通过服务 url 加载图层时,标题派生自服务名称。如果服务具有多个图层,则每个图层的标题将是服务名称和图层名称的串联。从门户项目加载图层时,将使用门户项目的标题。最后,如果图层作为 webmap 或 webscene 的一部分加载,则将使用存储在 webmap/webscene 中的图层标题。

type Stringreadonly

对于 IntegratedMeshLayer,类型总是 "integrated-mesh"

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://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Paris_3D_Local_WSL2/SceneServer/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://scenesampleserverdev.arcgis.com/geoscene/rest/services/Hosted/DevA_Trees/SceneServer",
  layerId: 0
});
version Objectreadonly

用于此服务的场景服务规范的版本。

属性
major Number

场景图层的主要版本。

minor Number

场景图层的次要版本。

versionString String

场景图层的完整版本字符串。

另请参阅
示例
// Prints the version to the console - e.g. 1.4, 1.5, etc.
console.log(layer.version.versionString);

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

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

方法概述

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

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

更多详情
Accessor

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

更多详情
Layer
Promise<LayerView>

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

更多详情
Layer

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

更多详情
Layer
Boolean

在实例上触发事件。

更多详情
Layer
Promise<Object>

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

更多详情
Layer
Boolean

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

更多详情
Layer
Boolean

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

更多详情
Accessor
Boolean

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

更多详情
Layer
Boolean

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

更多详情
Layer
Boolean

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

更多详情
Layer
Promise

加载此类引用的资源。

更多详情
Layer
Object

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

更多详情
Layer

移除对象拥有的句柄组。

更多详情
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() 进行删除。如果未提供键,则句柄将被添加到默认组。

cancelLoad()inherited

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

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> 解析为包含图层自定义属性数据的对象。
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);
});
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
});

事件概述

显示继承的事件 隐藏继承的事件
名称 类型 描述
{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。

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