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. 用来做底图的图层

图层类型数据源数据类型特点局限性
TileLayerArcGIS MapServer, ArcGIS portal item图片切片高效率展示、提供查询功能不支持编辑、客户端改变渲染、popup;在三维中需要严格切片规范
BaseTileLayerArcGIS MapServer, ArcGIS portal item图片切片自定义切片图层可以继承该类不支持编辑、客户端渲染、popup;在三维中需要严格切片规范
VectorTileLayerArcGIS portal item点、线、面矢量切片切片在客户端渲染样式不支持编辑、popup
IntegratedMeshLayerArcGIS SceneServer, ArcGIS portal item倾斜摄影数据显示三维倾斜摄影数据不支持二维
ElevationLayerArcGIS ImageServer, ArcGIS portal item高层数据在三维中用来描述地表不支持二维
BaseElevationLayerArcGIS ImageServer, ArcGIS portal item高层数据可作为自定义高程图层的父类不支持二维
PointCloudLayerArcGIS SceneServer, ArcGIS portal item点云数据能快速高效展示点云,渲染点云不支持二维
OpenStreetMapLayerOpenStreetMap切片服务图片切片展示OpenStreetMap
WMTSLayerWMTS服务,ArcGIS portal item图片切片OGC WMTS规范
WebTileLayer自定义切片服务数据图片切片不支持编辑、客户端改变渲染、popup
BingMapsLayerBingMaps服务图片切片展示BingMap

2. 用来查询、分析的图层

图层类型数据源数据类型特点局限性
FeatureLayerArcGIS FeatureServer/MapServer, ArcGIS portal item或 客户端的graphics由点线面构成的Graphic客户端分析、popup、使用二三维符合渲染、查询和编辑操作对展示的要素量要限制,一次可能要下载很大数据
GraphicsLayer客户端的graphic由点线面构成的Graphic点线面有可能在同一个图层无法统一设置渲染器、popup。
MapImageLayerArcGIS MapServer,ArcGIS portal item要素在服务端渲染之后的一个图片可能存在子图层、由服务端负责渲染、可以用来展示、查询或者关联表操作不支持编辑、popup
SceneLayerArcGIS SceneServer, ArcGIS portal item点和多面体在客户端展示三维要素不支持二维、不支持编辑
CSVLayercsv文件根据csv生成的点可自定义点符号、popup可能需要下载的数据量很大
KMLLayerkml文件、ArcGIS portal item点线面显示kml中的点线面不支持三维,服务需要来自ArcGIS.com 或ArcGIS Enterprise
StreamLayerArcGIS StreamServer点数据能进行实时更新
ImageryLayerArcGIS ImageServer, ArcGIS portal item栅格服务生成的图片可以在客户端或服务端进行查询分析
GeoJSONLayerGeoJSON数据点线面可以客户端进行渲染、编辑、注记、popup数据规范必须符合RFC 7946,坐标系为WGS84
WMSLayerWMS服务,ArcGIS portal item服务端生成的图片OGC MWS规定的特点
BaseDynamicLayerArcGIS MapServer, WMS 服务服务端生成的图片自定义图层服务可以继承此类不支持三维,浏览器端不会缓存
BuildingSceneLayerArcGIS SceneServer, ArcGIS portal itemBIM数据展示BIM数据不支持二维

3.图层组

图层类型数据源特点
GroupLayer包含一系列图层可以包含多个图层统一管理
欢迎关注我的微信公众号,第一时间为您推送相关教程。

GIS猫公众号

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值