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

图层的显示和隐藏。

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

Layer 常用方法

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

根据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<Layer> 静态方法

根据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 包含一系列图层 可以包含多个图层统一管理

欢迎关注我的微信公众号,第一时间为您推送相关教程。

GIS猫公众号
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,815评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,251评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,999评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,996评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,993评论 6 400
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,477评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,848评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,823评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,361评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,401评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,518评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,119评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,850评论 3 338
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,292评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,424评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,072评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,588评论 2 365

推荐阅读更多精彩内容