这篇文章是对有webgis前端开发经验的人
1、假设之前的三维视图均已成功加载,获取到了三维视图,这里的三维视图变量定义的名字是mapView。(PS:三维视图mapview在项目初始化已经设置了,本示例中会直接使用调用结果)
2、注意:白膜图层的加载使用SceneLayer,所以需要引入或者加载对应的类库,具体引入方式根据自己项目。官网示例如下:
官网传送门:SceneLayer | API Reference | ArcGIS Maps SDK for JavaScript 4.27 | ArcGIS Developers

我这里是安装了整个arcgis到项目中,使用的是第二种方法

3、先定义渲染方式(这里会介绍分段、分类渲染两种方式)
3-1、分段渲染(这种渲染方式针对,字段值是数值类型的。例如1-100的数值分成三段,每段显示不同颜色)
官网传送门:ClassBreaksRenderer | API Reference | ArcGIS Maps SDK for JavaScript 4.27 | ArcGIS Developers
const fieldname = "" //渲染字段名称
 
const classbreaksrenderer = [{
                    min: 0.0,
                    max: 9.0,
                    value: "0-9",
                    color: [253, 245, 230, 1]
                },
                {
                    min: 10.0,
                    max: 99.0,
                    value: "10-99",
                    color: [142, 229, 238, 1]
                },
                {
                    min: 100,
                    max: 999.0,
                    value: "100-999",
                    color: [118, 238, 198, 1]
 }]
const renderer = {
                type: "class-breaks",//分段渲染类型
                field: fieldname,
                defaultSymbol: {//默认渲染样式(当字段值不属于任一分段时使用的备用样式)
                    type: "mesh-3d", //白膜图层是三维的,这里类型需要设置mesh-3d,具体查阅api
                    symbolLayers: [{
                        type: "fill",
                        material: {
                            color: [220, 220, 220, 1]
                        },
                        edges: {
                            type: "solid",
                            color: "rgba(200, 200, 200, 0.6)",
                            size: 1,
                        },
                    }, ],
                },
                classBreakInfos: classbreaksrenderer.map(u => {
                    return {
                        minValue: u.min,
                        maxValue: u.max,
                        symbol: {
                            type: "mesh-3d",
                            symbolLayers: [{
                                type: "fill", 
                                material: {
                                    color: u.color
                                },
                                edges: {
                                    type: "solid",
                                    color: "rgba(200, 200, 200, 0.6)",
                                    size: 1,
                                },
                            }, ]
                        }
                    }
                }),
  };
3-2、分类渲染(这种渲染方式,字段值一般是文本类型的。例如:一级、二级、三级、四级等等,每级显示不同颜色)
官网传送门:UniqueValueRenderer | API Reference | ArcGIS Maps SDK for JavaScript 4.27 | ArcGIS Developers
const fieldname = "" //渲染字段
const uniqueValueInfos = [{
                    value: "一级",
                    color: [253, 245, 230, 1]
                },
                {
                    value: "二级",
                    color: [142, 229, 238, 1]
                },
                {
                    value: "三级",
                    color: [118, 238, 198, 1]
                },
                {
                    value: "四级",
                    color: [30, 144, 255, 1]
                },
                {
                    value: "其它",
                    color: [221, 160, 221, 1]
}]
const renderer = {
                type: "unique-value",//分级渲染类型
                field: fieldname,
                defaultSymbol: {
                    type: "mesh-3d",
                    symbolLayers: [{
                        type: "fill", 
                        material: {
                            color: [220, 220, 220, 1]
                        },
                        edges: {
                            type: "solid",
                            color: "rgba(200, 200, 200, 0.6)",
                            size: 1,
                        },
                    }, ],
                },
                uniqueValueInfos: uniqueValueInfos.map(u => {
                    return {
                        value: u.value,
                        symbol: {
                            type: "mesh-3d",
                            symbolLayers: [{
                                type: "fill", 
                                material: {
                                    color: u.color
                                },
                                edges: {
                                    type: "solid",
                                    color: "rgba(200, 200, 200, 0.6)",
                                    size: 1,
                                },
                            }, ]
                        }
                    }
                }),
};4、白膜图层的加载
let layerUrl = "" //白膜服务url
 
let layerBM = new SceneLayer({
                id: "",
                title: "",
                url: layerUrl,
                renderer: renderer,//renderder 的值参考步骤3中的结果
                //definitionExpression: "", //字段筛选显示图层数据,这里默认显示全部注释(where根据自身需求写)
                elevationInfo:{
                    mode: 'on-the-ground'
                }
            })
            self.mapView.map.add(layerBM );


















