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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端说吧

css布局 - 九宫格布局的方法汇总(更新中...)

其实换一种角度和思路,又是一个解决方法,不用margin负值,我们想要li要对其ul两端效果,之所以纠结是因为li又需要margin-right,而右边最后一个...

2912
来自专栏姬小光

姬小光前端小讲堂【第003期】

在上一期的代码中,我们用到 h1,p,a 等标签,这些标签确定了我们想在网页中展示一个标题,一个段落,和一个链接。

791
来自专栏向治洪

android绘制虚线

有的时候我们需要一种虚线效果,比如图片的边框,愤怒的小鸟的飞翔路径,那么怎么绘制这些虚线呢?方法很多,目前我觉得好的有两种: 一、自己创建模式,一个点一个点的绘...

2596
来自专栏听雨堂

从MapX到MapXtreme2004[9]-标注的强调显示

        如果想要将一个选中的图元强调显示,用红色醒目的文字显示的话,我的思路如下:             1、不可能直接改原先的图元,所以必须要在一个...

2326
来自专栏哈雷彗星撞地球

iOS下使状态栏颜色与H5中背景色一致

iOS 中有的页面也能会内嵌WebView,然后WebView中用H5做了一个导航,而iOS 中状态栏的颜色很难调整的与H5中导航颜色一致。如下图所示:

1674
来自专栏前端知识分享

第157天:canvas基础知识详解

    github地址: https://github.com/malun666/AndyJS2

3172
来自专栏非典型技术宅

iOS动画系列之八:使用CAShapeLayer绘画动态流量图1. CAShapeLayer2. 实战:绘制一个镂空图层动画3. 使用CAShapeLayer绘画动态流量图

2453
来自专栏IMWeb前端团队

css3的学习笔记

适合初学者以及没看过css3的人快速了解css3的主要内容。 1.opacity ----------------------取值0-1之间,给整个元素和...

1905
来自专栏非典型技术宅

OC绘制基本图形1. UIKit中封装了一些最常用的绘图方法2. 贝塞尔路径常用方法列表(BezierPath)3. 保存屏幕截图,并存储至相册

1404
来自专栏云计算与大数据

css3 Flex布局 学习

在 flex 容器中默认存在两条轴,水平主轴(main axis) 和垂直的交叉轴(cross axis),这是默认的设置,当然你可以通过修改使垂直方向变为主轴...

4984

扫码关注云+社区

领取腾讯云代金券