图层作为地图中最基本的要素,我们撸代码过程肯定会使用到。ArcGIS for Js 中定义很多的图层类,有的可以展示矢量数据(例如:FeatureLayer
和 GraphicsLayer
), 有的可以展示栅格数据(如: ImageryLayer
)。 这些图层类都有一个共同的基类
Layer
, 我们先看看 Layer
中常用的属性和方法。
Layer
常用属性和方法
Layer
常用属性
- fullExtent -> Extent
获取图层的全图范围,经常用来给MapView设置全图范围,限制MapView只能在某个图层范围内浏览。
//当图层资源加载完成,将 MapView 全图范围设置为图层范围
layer.when(function(){
view.extent = layer.fullExtent;
});
- id -> String
图层的唯一表示,如果没有设置,在添加到 Map
中时会自动生成,经常用来查找图层指定图层。
- listMode -> String
控制图层在微件 LayerList
中是否显示,它有三个可选值:
值 | 描述 |
---|---|
show | 在微件中显示 |
hide | 在微件中隐藏 |
hide-children | 当图层 为 GroupLayer ,BuildingSceneLayer , KMLLayer , MapImageLayer , TileLayer 或 WMSLayer , 在微件中隐藏子图层 |
- loaded -> Boolean 只读
判断图层资源是否被加载。当为 true
时,图层所有的属性可以被获取。
- loadError -> Error 只读
当图层加载失败时,可以通过它获取错误信息。
- loadStatus -> String 只读
图层资源的加载状态, 有以下几个值
值 | 描述 |
---|---|
not-loaded | 未加载 |
loading | 正在加载中 |
loaded | 已经成功完成加载 |
failed | 加载失败了,可以通过 loadError 查看具体错误信息。 |
- opacity -> Number
图层透明度,值在0到1之间,0表示完全透明,1表示完全不透明。
- title -> String
图层标题,可以在图例控件(Legend
)和图层控件(LayerList
)显示。
- visible -> Boolean
图层的显示和隐藏。
Layer
继承了Accessor
,所以我们可以使用watch()
方法监听Layer
的中任何属性的变化。
Layer
常用方法
- fromArcGISServerUrl(params) -> Promise<Layer> 静态方法
根据ArcGISServer的url构造图层,方法参数为包含图层url和属性的对象,返回的图层类型有下面几种(会根据URL自动构建):FeatureLayer
, TileLayer
, MapImageLayer
,
SceneLayer
, StreamLayer
, ElevationLayer
或 GroupLayer
。
Layer.fromArcGISServerUrl({
url: arcgisUrl, //图层URL
properties: { //图层属性
popupTemplate: new PopupTemplate()
}
}).then(function(layer){
// 添加到地图中
map.add(layer);
});
- fromPortalItem(params) -> Promise<Layer> 静态方法
根据ArcGIS Online或ArcGIS Enterprise 上托管的 portal item来构建图层,如果该 portal item包含很多图层,会返回GroupLayer
。
Layer.fromPortalItem({
portalItem: {
id: "8444e275037549c1acab02d2626daaee"
}
}).then(function(layer){
// 添加到地图中
map.add(layer);
});dd(layer);
});
- on(type, listener) -> Object
注册事件,可以调用返回值的remove方法,移除注册。
view.on("click", function(event){
console.log(event.mapPoint);
});
- when(callback, errback) -> Promise
在Layer实例创建的时候会调用一次,接收两个回掉函数,实例化成功回调第一个,失败回掉第二个。
Layer
的子类
我们通常不会直接使用Layer
, 我们一般都是使用它的子类进行工作。 Layer
的子类有很多个,用来对应不同的类型的图层,我们可以将这些子类分为三大类,分别为:用来展示底图、用来进行查询分析的业务图层和图层组。
1. 用来做底图的图层
图层类型 | 数据源 | 数据类型 | 特点 | 局限性 |
---|---|---|---|---|
TileLayer | ArcGIS MapServer, ArcGIS portal item | 图片切片 | 高效率展示、提供查询功能 | 不支持编辑、客户端改变渲染、popup;在三维中需要严格切片规范 |
BaseTileLayer | ArcGIS MapServer, ArcGIS portal item | 图片切片 | 自定义切片图层可以继承该类 | 不支持编辑、客户端渲染、popup;在三维中需要严格切片规范 |
VectorTileLayer | ArcGIS portal item | 点、线、面矢量切片 | 切片在客户端渲染样式 | 不支持编辑、popup |
IntegratedMeshLayer | ArcGIS SceneServer, ArcGIS portal item | 倾斜摄影数据 | 显示三维倾斜摄影数据 | 不支持二维 |
ElevationLayer | ArcGIS ImageServer, ArcGIS portal item | 高层数据 | 在三维中用来描述地表 | 不支持二维 |
BaseElevationLayer | ArcGIS ImageServer, ArcGIS portal item | 高层数据 | 可作为自定义高程图层的父类 | 不支持二维 |
PointCloudLayer | ArcGIS SceneServer, ArcGIS portal item | 点云数据 | 能快速高效展示点云,渲染点云 | 不支持二维 |
OpenStreetMapLayer | OpenStreetMap切片服务 | 图片切片 | 展示OpenStreetMap | |
WMTSLayer | WMTS服务,ArcGIS portal item | 图片切片 | OGC WMTS规范 | |
WebTileLayer | 自定义切片服务数据 | 图片切片 | 不支持编辑、客户端改变渲染、popup | |
BingMapsLayer | BingMaps服务 | 图片切片 | 展示BingMap |
2. 用来查询、分析的图层
图层类型 | 数据源 | 数据类型 | 特点 | 局限性 |
---|---|---|---|---|
FeatureLayer | ArcGIS FeatureServer/MapServer, ArcGIS portal item或 客户端的graphics | 由点线面构成的Graphic | 客户端分析、popup、使用二三维符合渲染、查询和编辑操作 | 对展示的要素量要限制,一次可能要下载很大数据 |
GraphicsLayer | 客户端的graphic | 由点线面构成的Graphic | 点线面有可能在同一个图层 | 无法统一设置渲染器、popup。 |
MapImageLayer | ArcGIS MapServer,ArcGIS portal item | 要素在服务端渲染之后的一个图片 | 可能存在子图层、由服务端负责渲染、可以用来展示、查询或者关联表操作 | 不支持编辑、popup |
SceneLayer | ArcGIS SceneServer, ArcGIS portal item | 点和多面体 | 在客户端展示三维要素 | 不支持二维、不支持编辑 |
CSVLayer | csv文件 | 根据csv生成的点 | 可自定义点符号、popup | 可能需要下载的数据量很大 |
KMLLayer | kml文件、ArcGIS portal item | 点线面 | 显示kml中的点线面 | 不支持三维,服务需要来自ArcGIS.com 或ArcGIS Enterprise |
StreamLayer | ArcGIS StreamServer | 点数据 | 能进行实时更新 | |
ImageryLayer | ArcGIS ImageServer, ArcGIS portal item | 栅格服务生成的图片 | 可以在客户端或服务端进行查询分析 | |
GeoJSONLayer | GeoJSON数据 | 点线面 | 可以客户端进行渲染、编辑、注记、popup | 数据规范必须符合RFC 7946,坐标系为WGS84 |
WMSLayer | WMS服务,ArcGIS portal item | 服务端生成的图片 | OGC MWS规定的特点 | |
BaseDynamicLayer | ArcGIS MapServer, WMS 服务 | 服务端生成的图片 | 自定义图层服务可以继承此类 | 不支持三维,浏览器端不会缓存 |
BuildingSceneLayer | ArcGIS SceneServer, ArcGIS portal item | BIM数据 | 展示BIM数据 | 不支持二维 |
3.图层组
图层类型 | 数据源 | 特点 |
---|---|---|
GroupLayer | 包含一系列图层 | 可以包含多个图层统一管理 |