从MapX到MapXtreme2004[9]-标注的强调显示
时间:2022-04-23
本文章向大家介绍从MapX到MapXtreme2004[9]-标注的强调显示,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
如果想要将一个选中的图元强调显示,用红色醒目的文字显示的话,我的思路如下:
1、不可能直接改原先的图元,所以必须要在一个新的图层上进行操作
2、新的图层因为不同的人用,会放置不同的东西,用固定图层不合适,得用动态生成的图层
碰到很多问题,如下:
1、原来的图层,默认设置了autolabel,所以可以直接显示,但是mapxtreme2004并不支持对图层的autolabel的设置。要想在程序中自动标注,必须得依赖labellayer。
2、用固定的设置好autolabel的图层不行,那么能否动态的将一个设置好autolabel属性的固定层复制成一个动态图层呢?我没有找到图层的clone方法。
3、试验过程中,试过复制图层,在旁边动态创建一个标注文字的方式。但文字随放大缩小变化,很不好快。
最终解决方法:
1、创建一个ShowLayer,同时也创建一个LabelLayer,关联,并设置好显示效果。
2、强调显示时,用Feature.Clone复制图元。但是必须注意,要保证ShowLayer的列与被复制的图元的列一致才行。
3、如果强调点的位置偏移,可以重新调整坐标系。
创建ShowLayer
的代码:
public ShowLayerSys(Map MainMap)
{
map=MainMap;
_tempTable=MapInfo.Engine.Session.Current.Catalog.GetTable("ShowLayer");
if(_tempTable==null)
{
TableInfo ti= TableInfoFactory.CreateTemp("ShowLayer"); // create tableinfo with just obj and style cols
ti.Columns.Add(new Column("ID",MapInfo.Data.MIDbType.String,50,0));
ti.Columns.Add(new Column("f_name",MapInfo.Data.MIDbType.String,50,0));
_tempTable = MapInfo.Engine.Session.Current.Catalog.CreateTable(ti);
}
map.Layers.Insert(0, new FeatureLayer(_tempTable));
//设置标注层
LabelLayer layer = new LabelLayer();
MainMap.Layers.Add(layer);
LabelSource source = new LabelSource(MapInfo.Engine.Session.Current.Catalog.GetTable("ShowLayer"));
source.DefaultLabelProperties.Caption = "f_name";
source.DefaultLabelProperties.Style.Font.ForeColor=System.Drawing.Color.Blue; //字体颜色
//source.DefaultLabelProperties.Style.Font.BackColor =System.Drawing.Color.PowderBlue ; //字体背景
source.DefaultLabelProperties.Style.Font.TextEffect=MapInfo.Styles.TextEffect.Box; //边缘效果
source.DefaultLabelProperties.Style.Font.FontWeight =MapInfo.Styles.FontWeight.Bold ; //粗体
source.DefaultLabelProperties.Layout.Alignment=MapInfo.Text.Alignment.CenterRight; //相对位置
source.DefaultLabelProperties.Layout.Offset=2;
layer.Sources.Append(source);
}
强调显示的代码:
MapInfo.Styles.SimpleVectorPointStyle sty=new SimpleVectorPointStyle();
sty.Color=System.Drawing.Color.Blue ;
Feature f=(Feature)ftr.Clone();
f.Style=sty;
_tempTable.InsertFeature(f);
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- TRTC/MLVB/IM案例:SDK用户日志提取与管理的一种实现方案
- 从 1 到 0 构建博客项目(3) --LNMP--WordPress
- 4. Validator校验器的五大核心组件,一个都不能少
- leetcode之罗马数字转整数
- B站签到-云函数
- echarts常用功能封装|抽象为mixin
- TCB系列学习文章——云开发的云托管(八)
- TCB系列学习文章——云开发登录篇(九)
- 字符串操作的全面总结
- C 语言 C++ 中 assert 的用法
- kubernetes之StatefulSet控制器
- 如何使用 S3CMD 访问 COS 服务
- 利用STS临时密钥服务快速搭建直传页面的实践
- codeforces 1436C(二分+数学)
- WAF案例:为什么curl可以wget不行?