圖層作為地圖中最基本的要素胧谈,我們擼代碼過(guò)程肯定會(huì)使用到。ArcGIS for Js 中定義很多的圖層類募寨,有的可以展示矢量數(shù)據(jù)(例如:FeatureLayer
和 GraphicsLayer
), 有的可以展示柵格數(shù)據(jù)(如: ImageryLayer
)智绸。 這些圖層類都有一個(gè)共同的基類
Layer
壤躲, 我們先看看 Layer
中常用的屬性和方法。
Layer
常用屬性和方法
Layer
常用屬性
- fullExtent -> Extent
獲取圖層的全圖范圍秘蛇,經(jīng)常用來(lái)給MapView設(shè)置全圖范圍其做,限制MapView只能在某個(gè)圖層范圍內(nèi)瀏覽。
//當(dāng)圖層資源加載完成赁还,將 MapView 全圖范圍設(shè)置為圖層范圍
layer.when(function(){
view.extent = layer.fullExtent;
});
- id -> String
圖層的唯一表示妖泄,如果沒(méi)有設(shè)置,在添加到 Map
中時(shí)會(huì)自動(dòng)生成艘策,經(jīng)常用來(lái)查找圖層指定圖層蹈胡。
- listMode -> String
控制圖層在微件 LayerList
中是否顯示,它有三個(gè)可選值:
值 | 描述 |
---|---|
show | 在微件中顯示 |
hide | 在微件中隱藏 |
hide-children | 當(dāng)圖層 為 GroupLayer ,BuildingSceneLayer , KMLLayer , MapImageLayer , TileLayer 或 WMSLayer , 在微件中隱藏子圖層 |
- loaded -> Boolean 只讀
判斷圖層資源是否被加載朋蔫。當(dāng)為 true
時(shí)罚渐,圖層所有的屬性可以被獲取。
- loadError -> Error 只讀
當(dāng)圖層加載失敗時(shí)驯妄,可以通過(guò)它獲取錯(cuò)誤信息荷并。
- loadStatus -> String 只讀
圖層資源的加載狀態(tài), 有以下幾個(gè)值
值 | 描述 |
---|---|
not-loaded | 未加載 |
loading | 正在加載中 |
loaded | 已經(jīng)成功完成加載 |
failed | 加載失敗了青扔,可以通過(guò) loadError 查看具體錯(cuò)誤信息源织。 |
- opacity -> Number
圖層透明度,值在0到1之間微猖,0表示完全透明谈息,1表示完全不透明。
- title -> String
圖層標(biāo)題凛剥,可以在圖例控件(Legend
)和圖層控件(LayerList
)顯示侠仇。
- visible -> Boolean
圖層的顯示和隱藏。
Layer
繼承了Accessor
,所以我們可以使用watch()
方法監(jiān)聽(tīng)Layer
的中任何屬性的變化犁珠。
Layer
常用方法
- fromArcGISServerUrl(params) -> Promise<Layer> 靜態(tài)方法
根據(jù)ArcGISServer的url構(gòu)造圖層逻炊,方法參數(shù)為包含圖層url和屬性的對(duì)象互亮,返回的圖層類型有下面幾種(會(huì)根據(jù)URL自動(dòng)構(gòu)建):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> 靜態(tài)方法
根據(jù)ArcGIS Online或ArcGIS Enterprise 上托管的 portal item來(lái)構(gòu)建圖層嗅骄,如果該 portal item包含很多圖層胳挎,會(huì)返回GroupLayer
。
Layer.fromPortalItem({
portalItem: {
id: "8444e275037549c1acab02d2626daaee"
}
}).then(function(layer){
// 添加到地圖中
map.add(layer);
});dd(layer);
});
- on(type, listener) -> Object
注冊(cè)事件溺森,可以調(diào)用返回值的remove方法慕爬,移除注冊(cè)。
view.on("click", function(event){
console.log(event.mapPoint);
});
- when(callback, errback) -> Promise
在Layer實(shí)例創(chuàng)建的時(shí)候會(huì)調(diào)用一次屏积,接收兩個(gè)回掉函數(shù)医窿,實(shí)例化成功回調(diào)第一個(gè),失敗回掉第二個(gè)炊林。
Layer
的子類
我們通常不會(huì)直接使用Layer
, 我們一般都是使用它的子類進(jìn)行工作姥卢。 Layer
的子類有很多個(gè),用來(lái)對(duì)應(yīng)不同的類型的圖層渣聚,我們可以將這些子類分為三大類独榴,分別為:用來(lái)展示底圖、用來(lái)進(jìn)行查詢分析的業(yè)務(wù)圖層和圖層組奕枝。
1. 用來(lái)做底圖的圖層
圖層類型 | 數(shù)據(jù)源 | 數(shù)據(jù)類型 | 特點(diǎn) | 局限性 |
---|---|---|---|---|
TileLayer | ArcGIS MapServer, ArcGIS portal item | 圖片切片 | 高效率展示棺榔、提供查詢功能 | 不支持編輯、客戶端改變渲染隘道、popup;在三維中需要嚴(yán)格切片規(guī)范 |
BaseTileLayer | ArcGIS MapServer, ArcGIS portal item | 圖片切片 | 自定義切片圖層可以繼承該類 | 不支持編輯症歇、客戶端渲染、popup;在三維中需要嚴(yán)格切片規(guī)范 |
VectorTileLayer | ArcGIS portal item | 點(diǎn)谭梗、線忘晤、面矢量切片 | 切片在客戶端渲染樣式 | 不支持編輯、popup |
IntegratedMeshLayer | ArcGIS SceneServer, ArcGIS portal item | 傾斜攝影數(shù)據(jù) | 顯示三維傾斜攝影數(shù)據(jù) | 不支持二維 |
ElevationLayer | ArcGIS ImageServer, ArcGIS portal item | 高層數(shù)據(jù) | 在三維中用來(lái)描述地表 | 不支持二維 |
BaseElevationLayer | ArcGIS ImageServer, ArcGIS portal item | 高層數(shù)據(jù) | 可作為自定義高程圖層的父類 | 不支持二維 |
PointCloudLayer | ArcGIS SceneServer, ArcGIS portal item | 點(diǎn)云數(shù)據(jù) | 能快速高效展示點(diǎn)云激捏,渲染點(diǎn)云 | 不支持二維 |
OpenStreetMapLayer | OpenStreetMap切片服務(wù) | 圖片切片 | 展示OpenStreetMap | |
WMTSLayer | WMTS服務(wù),ArcGIS portal item | 圖片切片 | OGC WMTS規(guī)范 | |
WebTileLayer | 自定義切片服務(wù)數(shù)據(jù) | 圖片切片 | 不支持編輯设塔、客戶端改變渲染、popup | |
BingMapsLayer | BingMaps服務(wù) | 圖片切片 | 展示BingMap |
2. 用來(lái)查詢缩幸、分析的圖層
圖層類型 | 數(shù)據(jù)源 | 數(shù)據(jù)類型 | 特點(diǎn) | 局限性 |
---|---|---|---|---|
FeatureLayer | ArcGIS FeatureServer/MapServer, ArcGIS portal item或 客戶端的graphics | 由點(diǎn)線面構(gòu)成的Graphic | 客戶端分析壹置、popup、使用二三維符合渲染表谊、查詢和編輯操作 | 對(duì)展示的要素量要限制,一次可能要下載很大數(shù)據(jù) |
GraphicsLayer | 客戶端的graphic | 由點(diǎn)線面構(gòu)成的Graphic | 點(diǎn)線面有可能在同一個(gè)圖層 | 無(wú)法統(tǒng)一設(shè)置渲染器盖喷、popup爆办。 |
MapImageLayer | ArcGIS MapServer,ArcGIS portal item | 要素在服務(wù)端渲染之后的一個(gè)圖片 | 可能存在子圖層、由服務(wù)端負(fù)責(zé)渲染课梳、可以用來(lái)展示距辆、查詢或者關(guān)聯(lián)表操作 | 不支持編輯余佃、popup |
SceneLayer | ArcGIS SceneServer, ArcGIS portal item | 點(diǎn)和多面體 | 在客戶端展示三維要素 | 不支持二維、不支持編輯 |
CSVLayer | csv文件 | 根據(jù)csv生成的點(diǎn) | 可自定義點(diǎn)符號(hào)跨算、popup | 可能需要下載的數(shù)據(jù)量很大 |
KMLLayer | kml文件爆土、ArcGIS portal item | 點(diǎn)線面 | 顯示kml中的點(diǎn)線面 | 不支持三維,服務(wù)需要來(lái)自ArcGIS.com 或ArcGIS Enterprise |
StreamLayer | ArcGIS StreamServer | 點(diǎn)數(shù)據(jù) | 能進(jìn)行實(shí)時(shí)更新 | |
ImageryLayer | ArcGIS ImageServer, ArcGIS portal item | 柵格服務(wù)生成的圖片 | 可以在客戶端或服務(wù)端進(jìn)行查詢分析 | |
GeoJSONLayer | GeoJSON數(shù)據(jù) | 點(diǎn)線面 | 可以客戶端進(jìn)行渲染诸蚕、編輯步势、注記、popup | 數(shù)據(jù)規(guī)范必須符合RFC 7946背犯,坐標(biāo)系為WGS84 |
WMSLayer | WMS服務(wù),ArcGIS portal item | 服務(wù)端生成的圖片 | OGC MWS規(guī)定的特點(diǎn) | |
BaseDynamicLayer | ArcGIS MapServer, WMS 服務(wù) | 服務(wù)端生成的圖片 | 自定義圖層服務(wù)可以繼承此類 | 不支持三維坏瘩,瀏覽器端不會(huì)緩存 |
BuildingSceneLayer | ArcGIS SceneServer, ArcGIS portal item | BIM數(shù)據(jù) | 展示BIM數(shù)據(jù) | 不支持二維 |
3.圖層組
圖層類型 | 數(shù)據(jù)源 | 特點(diǎn) |
---|---|---|
GroupLayer | 包含一系列圖層 | 可以包含多個(gè)圖層統(tǒng)一管理 |