桌面GIS

.net开发-矩阵注记功能示例

文章
头像
发布时间:2023-07-25 09:13:12
35574
0
0

.net开发-矩阵注记功能示例

图片.png 

一、实现步骤

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();

 

图片.png 

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);

图片.png 

2 设置矩阵格式

图片.png 

3 图片单元格设置说明

 

图片.png 

4 符号项与实体类对应关系

 

5. 保存相关设置到图中,并进行展示

                     //填充矩阵注记类

            labelEngineLayerPropertiesClass.SetGeomLabel(geomMatrixLabel);

            //填充图层注记引擎属性类

            annotateLayerPropertiesCollection.AddItem(labelEngineLayerPropertiesClass);

            //填充图层注记实体basicLabelEngineRenderer.SetAnnotateLayerPropertiesCollection(annotateLayerPropertiesCollection);

            //填充基础注记渲染器

            layer.SetLabelRenderer(basicLabelEngineRenderer);

            //开始动态注记显示

            layer.LabelRendererVisible = true;

            //复位地图控件

            this.mapCtrl.Restore();

 

net开发-矩阵注记示例.docx


 


评论区
暂无评论
暂无评论,快来抢占第一个沙发吧~
发布评论