以FeatureLayer加載動態(tài)圖層
1.環(huán)境說明
ArcGIS 10.4.1
JS API 3.15
2.實現(xiàn)思路
動態(tài)圖層加載前需要先定義動態(tài)圖層,根據(jù)理論篇的介紹尿扯,即需要先定義圖層源谐鼎,再為圖層源指定數(shù)據(jù)源。后續(xù)文章中動態(tài)圖層的定義都是按這個套路。
FeatureLayer中包含了一個source屬性,用于設置數(shù)據(jù)源绑嘹。將定義好的動態(tài)圖層作為FeatureLayer的source源即完成了加載。
需要注意的是FeatureLayer的url指向的是地圖服務的dynamicLayer地址橘茉。
3.以FeatureLayer方式加載動態(tài)圖層
//以featurelayer加載動態(tài)圖層圾叼,加載完成可對featurelayer執(zhí)行query操作。
//備注:query中會增加layer參數(shù)捺癞,該參數(shù)值與restURL/dynamicLayer中傳入的layer值一樣。
on(dom.byId("showAsFtLayerBtn"),"click",showAsFtLayerBtnHandler);
function showAsFtLayerBtnHandler(){
var workspaceId = "FGDBWorkspace1224";
var layerName = dom.byId("dynamicLayers").value;
console.log("當前增加的圖層名:"+layerName);
//定義一種數(shù)據(jù)源
//1.TableDataSource
var tableDS = new TableDataSource();
tableDS.workspaceId = workspaceId;
tableDS.dataSourceName = layerName;
//2.定義動態(tài)圖層數(shù)據(jù)
var layerSource = new LayerDataSource();
layerSource.dataSource = tableDS;
//3.以featurelayer來加載构挤,支持在此基礎上的query操作髓介。注意url地址
var featureLayer = new FeatureLayer("http://portal140.xinli.local/server/rest/services/worldcities/MapServer/dynamicLayer", {
id:layerName,
mode: FeatureLayer.MODE_ONDEMAND,
outFields: ["*"],
infoTemplate: new InfoTemplate(tableDS.dataSourceName,"${*}"),
source: layerSource
});
map.addLayer(featureLayer);
//設置圖層渲染
featureLayer.on("load",function(){
var renderer = new SimpleRenderer(createSymbol(featureLayer.geometryType));
featureLayer.setRenderer(renderer);
})
}
4.源碼
xinligis github