.net开发-矩阵注记功能示例
一、实现步骤
1. 动态注记是对应到单个图层的,首先得获取到指定的图层,转为矢量图层
//获取指定图层
layer = (VectorLayer)map.get_Layer(0);
2. 初始化动态注记所需要的类
//实例化基础注记渲染器
BasicLabelEngineRenderer basicLabelEngineRenderer = new BasicLabelEngineRenderer();
//实例化图层注记实体
AnnotateLayerPropertiesCollection annotateLayerPropertiesCollection = new AnnotateLayerPropertiesCollection();
//实例化图层注记引擎属性类
LabelEngineLayerPropertiesClass labelEngineLayerPropertiesClass = new LabelEngineLayerPropertiesClass();
3. 实例化矩阵注记类
//实例化矩阵注记类
GeomMatrixLabel geomMatrixLabel = new GeomMatrixLabel();
图 1 新建矩阵注记
4. 设置矩阵注记相关参数
//实例化矩阵注记中矩阵单元格
MatrixLabelMatrixItem malm = new MatrixLabelMatrixItem();
//设置矩阵单元格的样式 2x2
malm.SetSize(3, 1);
//实例化文本单元格
MatrixLabelTextItem matrixLabelTextItem = new MatrixLabelTextItem();
//设置关联属性
matrixLabelTextItem.LabelExpression = "mpPerimeter";
//实例化图像单元格
MatrixLabelImageItem matrixLabelImageItem = new MatrixLabelImageItem();
//设置关联属性(路径表达式)
matrixLabelImageItem.PathField = "pic";
//设置格式化路径参数
matrixLabelImageItem.PathFormat = "\"C:\\Users\\hekan\\Desktop\\%s.jpg\",pic";
//设置图形的宽、高,尽量放大图元查看效果
matrixLabelImageItem.CustomHeight = 50;
matrixLabelImageItem.CustomWidth = 50;
//填充矩阵单元格
malm.SetCell(0, 0, matrixLabelTextItem);
malm.SetCell(1, 0, matrixLabelImageItem);
//将矩阵单元格设置为根元素
geomMatrixLabel.SetRootLabelItem(malm);
图 2 设置矩阵格式
图 3 图片单元格设置说明
图 4 符号项与实体类对应关系
5. 保存相关设置到图中,并进行展示
//填充矩阵注记类
labelEngineLayerPropertiesClass.SetGeomLabel(geomMatrixLabel);
//填充图层注记引擎属性类
annotateLayerPropertiesCollection.AddItem(labelEngineLayerPropertiesClass);
//填充图层注记实体basicLabelEngineRenderer.SetAnnotateLayerPropertiesCollection(annotateLayerPropertiesCollection);
//填充基础注记渲染器
layer.SetLabelRenderer(basicLabelEngineRenderer);
//开始动态注记显示
layer.LabelRendererVisible = true;
//复位地图控件
this.mapCtrl.Restore();