以FeatureLayer加载动态图层
1.环境说明
ArcGIS 10.4.1
JS API 3.15
2.实现思路
动态图层加载前需要先定义动态图层,根据理论篇的介绍,即需要先定义图层源,再为图层源指定数据源。后续文章中动态图层的定义都是按这个套路。
FeatureLayer中包含了一个source属性,用于设置数据源。将定义好的动态图层作为FeatureLayer的source源即完成了加载。
需要注意的是FeatureLayer的url指向的是地图服务的dynamicLayer地址。
3.以FeatureLayer方式加载动态图层
//以featurelayer加载动态图层,加载完成可对featurelayer执行query操作。
//备注:query中会增加layer参数,该参数值与restURL/dynamicLayer中传入的layer值一样。
on(dom.byId("showAsFtLayerBtn"),"click",showAsFtLayerBtnHandler);
function showAsFtLayerBtnHandler(){
var workspaceId = "FGDBWorkspace1224";
var layerName = dom.byId("dynamicLayers").value;
console.log("当前增加的图层名:"+layerName);
//定义一种数据源
//1.TableDataSource
var tableDS = new TableDataSource();
tableDS.workspaceId = workspaceId;
tableDS.dataSourceName = layerName;
//2.定义动态图层数据
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