ArcGIS4Js重要概念2:图层

图层作为地图中最基本的要素,我们撸代码过程肯定会使用到。ArcGIS for Js 中定义很多的图层类,有的可以展示矢量数据(例如:FeatureLayerGraphicsLayer), 有的可以展示栅格数据(如: ImageryLayer)。 这些图层类都有一个共同的基类
Layer , 我们先看看 Layer 中常用的属性和方法。

Layer 常用属性和方法

Layer 常用属性

  1. fullExtent -> Extent

获取图层的全图范围,经常用来给MapView设置全图范围,限制MapView只能在某个图层范围内浏览。

//当图层资源加载完成,将 MapView 全图范围设置为图层范围
layer.when(function(){
  view.extent = layer.fullExtent;
});
  1. id -> String

图层的唯一表示,如果没有设置,在添加到 Map 中时会自动生成,经常用来查找图层指定图层。

  1. listMode -> String

控制图层在微件 LayerList 中是否显示,它有三个可选值:

描述
show 在微件中显示
hide 在微件中隐藏
hide-children 当图层 为 GroupLayer ,BuildingSceneLayer , KMLLayer , MapImageLayer , TileLayerWMSLayer, 在微件中隐藏子图层
  1. loaded -> Boolean 只读

判断图层资源是否被加载。当为 true 时,图层所有的属性可以被获取。

  1. loadError -> Error 只读

当图层加载失败时,可以通过它获取错误信息。

  1. loadStatus -> String 只读

图层资源的加载状态, 有以下几个值

描述
not-loaded 未加载
loading 正在加载中
loaded 已经成功完成加载
failed 加载失败了,可以通过 loadError 查看具体错误信息。
  1. opacity -> Number

图层透明度,值在0到1之间,0表示完全透明,1表示完全不透明。

  1. title -> String

图层标题,可以在图例控件(Legend)和图层控件(LayerList)显示。

  1. visible -> Boolean

图层的显示和隐藏。

Accessor 继承了 Accessor ,所以我们可以使用 watch()方法监听Layer的中任何属性的变化。

Layer 常用方法

  1. fromArcGISServerUrl(params) -> Promise 静态方法

根据ArcGISServer的url构造图层,方法参数为包含图层url和属性的对象,返回的图层类型有下面几种(会根据URL自动构建):FeatureLayer, TileLayer, MapImageLayer,
SceneLayer, StreamLayer, ElevationLayerGroupLayer

Layer.fromArcGISServerUrl({
  url: arcgisUrl, //图层URL
  properties: { //图层属性
    popupTemplate: new PopupTemplate()
  }
}).then(function(layer){
  // 添加到地图中
  map.add(layer);
});
  1. fromPortalItem(params) -> Promise 静态方法

根据ArcGIS Online或ArcGIS Enterprise 上托管的 portal item来构建图层,如果该 portal item包含很多图层,会返回GroupLayer

Layer.fromPortalItem({
  portalItem: { 
    id: "8444e275037549c1acab02d2626daaee"
  }
}).then(function(layer){
  // 添加到地图中
  map.add(layer);
});dd(layer);
});
  1. on(type, listener) -> Object

注册事件,可以调用返回值的remove方法,移除注册。

view.on("click", function(event){
  console.log(event.mapPoint);
});
  1. 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 包含一系列图层 可以包含多个图层统一管理
欢迎关注我的微信公众号,第一时间为您推送相关教程。

ArcGIS4Js重要概念2:图层_第1张图片

你可能感兴趣的:(ArcGIS,for,JS)