AGS JS开发-动态图层全面解析二

以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

你可能感兴趣的:(AGS JS开发-动态图层全面解析二)