Layer

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

图层是地图的最基本组成部分。它是矢量图形或栅格影像形式的空间数据的集合,用于表示现实世界的现象。图层可能包含存储矢量数据的离散要素或存储栅格数据的连续像元/像素。

对于基于矢量的图层,例如 FeatureLayerGraphicsLayer,图层中包含的每个要素都有一个 几何图形,允许将其渲染为具有空间上下文的图形视图上。图层中的要素还包含提供附加信息的数据属性,这些信息可以在弹出窗口中查看并用于渲染图层。

要创建图层,您必须使用 Layer 的子类之一或调用 Layer.fromPortalItem() 方法。图层的一些示例包括:

  • 道路和高速公路可以使用 FeatureLayer 中的线性要素来表示
  • 地块可以在 MapImageLayer 中显示为多边形
  • 卫星影像可以在 TileLayer 中显示为切片影像

可以将多个图层添加到同一地图中,并相互叠加,以进行可视化和分析。有关如何向地图添加图层 的其他信息,请参阅地图。图层在具有图层视图视图中呈现。

从广义上讲,图层可用于以下目的:

  • 显示地理环境的位置
  • 查询数据
  • 显示分类和/或数值数据
  • 分析学

所有图层类型都继承自图层。要了解有关每种图层类型的详细信息,并比较和对比其数据源和功能,请参阅下表。

用于查询、可视化、分析数据的图层

图层类型 数据源 数据类型 特点 局限性
FeatureLayer GeoScene FeatureServer/MapServer、GeoScene 门户项目或客户端图形 作为矢量图形下载的点、折线、多边形 客户端处理、弹出模板、带有 2D 和 3D 符号的渲染器、查询、编辑(在未来版本中) 显示的要素数量有限; 可能需要大量下载,具体取决于要素数量
GraphicsLayer 客户端图形 显示为矢量图形的点、折线、多边形 没有几何模式。点、折线和多边形可以存储在单个图层中。 没有渲染器或弹出模板; 可视化和弹出模板是逐个图形处理的。
MapImageLayer GeoScene MapServer, GeoScene portal item 在单个影像中导出的点、折线、面、栅格 可能包含嵌套的子图层。渲染器、弹出窗口模板、不透明度和标签的服务器端处理,可快速显示许多要素。可用于显示、查询和联接已注册工作区中的数据 无编辑支持
SceneLayer GeoScene SceneServer, GeoScene portal item 点和多面体几何形状 可以在客户端上显示大量要素。非常适合渲染 3D 要素 没有2D支持;通过关联的要素图层进行编辑
CSVLayer CSV 文件 作为矢量图形下载的点 客户端处理、弹出模板、带有 2D 和 3D 符号的渲染器 可能需要大量下载,具体取决于要素的数量
KMLLayer KML 文件(.kml、.kmz)、GeoScene 门户项目 显示为矢量图形的点、折线、多边形 在地图或 web 地图中显示 KML 文件 没有3D支持;需要从geoscene.cn 或 GeoScene Enterprise 访问实用程序服务
StreamLayer GeoScene StreamServer 作为矢量图形下载的点 实时下载和更新功能位置 N/A
ImageryLayer GeoScene ImageServer, GeoScene portal item 导出为单个影像的栅格数据 客户端和服务器端像素过滤和渲染;弹出模板;查询 N/A
ImageryTileLayer GeoScene ImageServer, GeoScene portal item 导出为单个影像的栅格数据 客户端渲染;弹出模板 N/A
GeoJSONLayer GeoJSON 点、折线、多边形 渲染器、标签、编辑、弹出窗口 数据必须符合 RFC 7946 规范,该规范指出坐标位于空间参考 WGS84 中
OGCFeatureLayer OGC API - Features 点、折线、多边形 渲染器、标签、弹出窗口 数据必须符合 RFC 7946 规范,该规范指出坐标位于空间参考 WGS84 中
GeoRSSLayer GeoRSS feed 点、折线、多边形 无几何架构;弹出模板 没有3D支持;不支持渲染器
MapNotesLayer GeoScene WebMap, GeoScene portal item 点、折线、多边形、文本 Web 地图中的地图注释 没有3D支持;只读
WCSLayer WCS 服务 导出为单个影像的栅格数据 OGC 规范 N/A
WFSLayer WFS 服务, GeoScene portal item 点、多点、线、面 OGC 规范 数据必须为 GeoJSON 格式,仅支持版本 2.0.0
WMSLayer WMS 服务, GeoScene portal item 导出为单个影像的数据 OGC 规范 N/A
BaseDynamicLayer GeoScene MapServer, WMS 服务 导出为单个影像的数据 可以扩展此类以创建动态地图图层 没有3D支持;导出的影像无法在浏览器中缓存
BuildingSceneLayer GeoScene SceneServer, GeoScene portal item 数据在 BuildingGroupSublayers 中进行组织,其中包含 BuildingComponentSublayers 可视化建筑物的复杂数字模型并与其组件进行交互 无 2D 支持
SubtypeGroupLayer GeoScene FeatureServer/MapServer, GeoScene portal item 作为矢量图形下载的点、折线、多边形 包含要素服务中每个子类型的子图层;每个子图层都可以使用自己的渲染器、弹出窗口和标注进行单独配置 没有3D支持;在子图层级别没有编辑支持

用于提供地理环境的图层

图层类型 数据源 数据类型 特点 局限性
TileLayer GeoScene MapServer, GeoScene portal item 影像切片 大型数据集的性能更好;查询要素 无需编辑,客户端渲染或弹出模板;3D 视图中的一些架构限制。
BaseTileLayer GeoScene MapServer, GeoScene portal item 影像切片 可以扩展此类以创建自定义切片图层 无需编辑,客户端渲染或弹出模板;3D 视图中的一些架构限制。
VectorTileLayer GeoScene Portal item 渲染为矢量切片的点、折线和面 要素可在客户端设置样式并用作切片底图 无需编辑、客户端呈现或弹出模板。
IntegratedMeshLayer GeoScene SceneServer, GeoScene portal item 具有纹理的三角网 显示具有高细节的 3D 对象 无 2D 支持
VoxelLayer GeoScene SceneServer, GeoScene portal item 多维体素立方体 显示多维体积现象(例如地下模型) 无 2D 支持
ElevationLayer GeoScene ImageServer, GeoScene portal item 切片高程网格/表面 在 3D 视图中渲染高程表面 无 2D 支持
BaseElevationLayer GeoScene ImageServer, GeoScene portal item 切片高程网格/表面 可以扩展此类以创建自定义高程图层 无 2D 支持
PointCloudLayer GeoScene SceneServer, GeoScene portal item 点云(例如从 LiDAR 收集) 渲染器; 点云的快速显示 无 2D 支持
OpenStreetMapLayer OpenStreetMap 切片服务 影像切片 显示 OpenStreetMap 切片内容 N/A
WMTSLayer WMTS 切片服务、GeoScene 门户项目 影像切片 OGC 规范 N/A
WebTileLayer 非 GeoScene、非 OGC 和非 OSM 切片服务 影像切片 N/A 无需编辑、客户端呈现或弹出模板。
BingMapsLayer 必应空间数据服务数据 影像切片 显示 Microsoft 的 Bing 切片内容 必应地图密钥是必需的; 支持三种地图样式:roadaerialhybrid

其他图层

图层类型 数据源 数据类型 特征 局限性
GroupLayer 其他图层类型的任意组合 N/A 将两个或多个图层合并为一个图层 N/A
另请参阅:

属性概述

可以设置、检索或侦听任何属性。请参阅使用属性 主题。
隐藏继承的属性 显示继承的属性
图层 类型 描述
String更多信息

类的名称。

更多信息Accessor
范围更多信息

图层的全图范围。

更多信息Layer
String更多信息

分配给图层的唯一 ID。

更多信息Layer
String更多信息

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

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

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

更多信息Layer
错误更多信息

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

更多信息Layer
String更多信息

表示加载操作的状态。

更多信息Layer
Object[]更多信息

加载时发生的警告列表。

更多信息Layer
整数更多信息

图层不透明。

更多信息Layer
String更多信息

图层的标题,用于在“图层列表”微件等位置标识该图层。

更多信息Layer
String更多信息

图层类型提供了一种方便的方法来检查图层的类型,而无需导入特定的图层模块。

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

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

更多信息Layer

属性详情

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

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

fullExtent Extentautocast

图层的全图范围。默认情况下,这是全球性的。此属性可用于设置视图范围以匹配图层的范围,以便其要素显示为填充视图。请参阅下面的示例代码段。

示例:
// Once the layer loads, set the view's extent to the layer's fullextent
layer.when(function(){
  view.extent = layer.fullExtent;
});

分配给图层的唯一 ID。如果未由开发人员设置,则会在加载图层时自动生成。

listMode String

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

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

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

默认值:show
loaded Booleanreadonly

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

默认值:false
loadError Errorreadonly

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

默认值:null
loadStatus Stringreadonly

表示加载操作的状态。

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

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

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

加载时发生的警告列表。

opacity Number

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

默认值:1
示例:
// Makes the layer 50% transparent
layer.opacity = 0.5;
title String
层的标题,用于在“图层列表”微件等位置标识该图层。

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

type Stringreadonly

图层类型提供了一种方便的方法来检查图层的类型,而无需导入特定的图层模块。

可能值:"base-dynamic"|"base-elevation"|"base-tile"|"bing-maps"|"building-scene"|"csv"|"elevation"|"feature"|"geojson"|"geo-rss"|"graphics"|"group"|"imagery"|"imagery-tile"|"integrated-mesh"|"kml"|"map-image"|"map-notes"|"ogc-feature"|"open-street-map"|"point-cloud"|"route"|"scene"|"stream"|"tile"|"unknown"|"unsupported"|"vector-tile"|"wcs"|"web-tile"|"wfs"|"wms"|"wmts"|"voxel"|"subtype-group"

visible Boolean

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

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

方法概述

名称 返回类型 描述
更多信息

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

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

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

更多信息Layer
更多信息

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

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

在实例上发出事件。

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

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

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

从 GeoScene Server URL 创建一个新图层实例。

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

从 GeoScene Online 或 GeoScene Enterprise 门户项目创建适当图层类的新图层实例。

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

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

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

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

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

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

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

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

更多信息Layer
Promise更多信息

加载此类引用的资源。

更多信息Layer
Object更多信息

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

更多信息Layer
Promise更多信息

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

更多信息Layer

方法详情

cancelLoad()

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

createLayerView(view, options){Promise<LayerView>}

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

参数:
view *

父视图。

options Object
可选

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

规范:
可选

中止层视图创建的信号。

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

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

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

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

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

参数:
type String

事件的名称。

event Object
可选

事件负载。

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

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

返回:
类型 说明
Promise<Object> 解析为包含图层自定义属性数据的对象。
fromGeoSceneServerUrl(params){Promise<Layer>}static

从 GeoScene Server URL 创建一个新图层实例。根据 URL,返回的图层类型可能是 FeatureLayerTileLayerMapImageLayerImageryLayerImageryTileLayerSceneLayerStreamLayerIntegratedMeshLayerPointCloudLayerBuildingSceneLayerElevationLayerGroupLayer

这在您使用各种 GeoScene Server URL 时很有用,但您不一定知道它们创建了哪些图层类型。此方法将为您创建适当的图层类型。对于要素服务或场景服务,当 URL 指向该服务并且该服务具有多个图层时,返回的承诺将解析为 GroupLayer

从版本 4.17 开始,可以从托管要素服务加载表。这仅适用于要素图层,如果 FeatureLayer.isTable 返回 true,将成功加载。

下表详细说明了加载特定 URL 类型时返回的内容。

URL 返回
单层要素服务 isTable 返回 falseFeatureLayer
单表要素服务 isTable 返回 trueFeatureLayer
具有多个层/表的要素服务 带有图层和表格的 GroupLayer
类型不是“要素图层”的层被丢弃,例如 公共设施网络图层 N/A
参数:
规范:
params Object

用于创建图层的输入参数。

规范:
url String

用于创建图层的 GeoScene Server URL。

properties Object
可选

在此处设置任何层的属性以构建图层实例(例如 popupTemplate、渲染器等)。

返回:
类型 说明
Promise<Layer> 返回一个解析为新的 Layer 实例的 Promise。
另请参阅:
示例:
// This snippet shows how to add a feature layer from an GeoScene Server URL
// Get an GeoScene Server URL from a custom function
const geosceneUrl = getLayerUrl();

Layer.fromGeoSceneServerUrl({
  url: geosceneUrl,
  properties: {
    // set any layer properties here
    popupTemplate: new PopupTemplate()
  }
}).then(function(layer){
  // add the layer to the map
  map.add(layer);
});
// This snippet shows how to add a table from an GeoScene Server URL
// Get an GeoScene Server URL from a custom function
const geosceneUrl = getLayerUrl();

Layer.fromGeoSceneServerUrl({
  url: geosceneUrl
}).then(function(layer){
  // Load the table before it can be used
  layer.load().then(function() {
    // Check that it is the right type
    if (layer.isTable) {
      // Add table to map's tables collection
      map.tables.add(layer);
    }
  });
});
fromPortalItem(params){Promise<Layer>}static

从 GeoScene Online 或 GeoScene Enterprise 门户项目创建适当图层类的新图层实例。如果项目指向具有多个图层的要素服务,则会创建 GroupLayer。如果项目指向具有单层的服务,则它解析为与该服务具有相同类型类的图层。

从版本 4.17 开始,可以从 GeoScene Online 和 GeoScene Enterprise 中托管的要素服务项目加载表。这仅适用于要素图层,如果 FeatureLayer.isTable 返回 true,将成功加载。

下表详细说明了加载特定项目类型时返回的内容。

项目 返回
单层要素服务 isTable 返回 falseFeatureLayer
单表要素服务 isTable 返回 trueFeatureLayer
具有多个层/表的要素服务 带有图层和表格的 GroupLayer
单层要素集合 isTable 返回 falseFeatureLayer
单表要素集合 isTable 返回 trueFeatureLayer
具有多个层/表的要素集合 带有图层和表格的 GroupLayer

已知限制

参数:
params Object

用于加载门户项目的参数。

规范:
portalItem PortalItem

表示要从中加载图层的 GeoScene Online 或 GeoScene Enterprise 门户项目的对象。

返回:
类型 说明
Promise<Layer> 返回一个解析为新的图层实例的 Promise。
另请参阅:
示例:
// Create a layer from a specified portal item and add to the map
Layer.fromPortalItem({
  portalItem: {  // autocasts new PortalItem()
    id: "8444e275037549c1acab02d2626daaee"
  }
}).then(function(layer){
  // add the layer to the map
  map.add(layer);
});
// Create a table from a specified portal item and add it to the map's tables collection
Layer.fromPortalItem({
  portalItem: { // autocasts new PortalItem()
    id: "123f4410054b43d7a0bacc1533ceb8dc" // This is a hosted table stored in a feature service
  }
}).then(function(layer) {
  // Necessary to load the table in order for it to be read correctly
  layer.load().then(function() {
    // Confirm this reads as a table
    if (layer.isTable) {
      // Add the new table to the map's table collection
      map.tables.add(layer);
    }
  });
});
hasEventListener(type){Boolean}

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

参数:
type String

事件的名称。

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

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

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

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

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

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

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

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

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

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

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

参数:
可选

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

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

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

参数:

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

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){Promise}
起始版本: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
});

事件概述

名称 类型 描述
{view: View,layerView: LayerView}
更多信息

在视图中创建并渲染图层的 LayerView 后激发。

更多信息 Layer
{view: View,error: Error}
更多信息

在将图层添加到地图后,在创建 LayerView 期间发出错误时触发。

更多信息 Layer
{view: View,layerView: LayerView}
更多信息

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

更多信息 Layer

事件详述

layerview-create

在视图中创建并渲染图层的 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-error

在将图层添加到地图后,在创建 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-destroy

在图层的 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.