第一步:根据鼠标点击处的点,找到被选中的要素

 public IFeature Find2(IPoint pPoint)
{
ITopologicalOperator pTopoOpe = pPoint as ITopologicalOperator;
double dis = m_pMapControl.ActiveView.ScreenDisplay.DisplayTransformation.FromPoints();
if (dis < 0.01)
dis = 0.01;
IGeometry pBuffer = pTopoOpe.Buffer(dis);
pBuffer.SpatialReference = m_pMapControl.Map.SpatialReference; UIDClass id = new UIDClass();
id.Value = "{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}";
IEnumLayer pEnumLayer = m_pMapControl.Map.get_Layers(id, true);
pEnumLayer.Reset();
IFeatureLayer pFLayer = pEnumLayer.Next() as IFeatureLayer; ISpatialFilter pSpatialFilter = new SpatialFilterClass();
pSpatialFilter.Geometry = pBuffer;
pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
pSpatialFilter.WhereClause = ""; while (pFLayer != null)
{
if (pFLayer.Visible == false)
{
pFLayer = pEnumLayer.Next() as IFeatureLayer;
continue;
}
IFeatureCursor pCursor = pFLayer.Search(pSpatialFilter, false);
IFeature pFeat = pCursor.NextFeature();
if (pFeat != null)
{
return pFeat;
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(pCursor);
pFLayer = pEnumLayer.Next() as IFeatureLayer;
}
return null;
}

第二步:取出被选要素的属性值

 IFields pFields = pFeat.Fields;
for (int i = ; i < pFields.FieldCount; i++)
{
IField pField = pFields.get_Field(i);
if (pField.Type != esriFieldType.esriFieldTypeBlob & pField.Type != esriFieldType.esriFieldTypeOID
& pField.Type != esriFieldType.esriFieldTypeGeometry)
{
checkedListBox1.Items.Add(pField.AliasName);
}
}

第三步:在mapcontrol中显示属性,用到ICallout 加ITextElement

 ICallout pCallout = new ESRI.ArcGIS.Display.BalloonCalloutClass();
pCallout.AnchorPoint = pPoint;
pCallout.LeaderTolerance = ; ITextElement pTextElement = new TextElementClass();
IElement pElement = pTextElement as IElement;
ITextSymbol pTextSysmbol = pTextElement.Symbol;
IFormattedTextSymbol pFormattedTextSymbol = new TextSymbolClass();
pFormattedTextSymbol.Background = pCallout as ITextBackground;
pFormattedTextSymbol.Size = ;
pFormattedTextSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHALeft;
pTextElement.Symbol = pFormattedTextSymbol;
pTextElement.Text = labelString; pElement.Geometry = pPoint;
m_pMapControl.ActiveView.GraphicsContainer.AddElement(pElement, );
m_pMapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, m_pMapControl.Extent);

AE实现点击一个要素,并显示其属性的更多相关文章

  1. 商务系统的构造思路(无源码!)+如何用jsp实现点击单选框内容显示在另一个jsp页面

    敲码经验总结: 之前犯了一个错误就是,没有从底层开始学起,有啥问题,就直接博客园找源码,去CSDN找源代码,看到代码就复制粘贴,结果从新梳理知识点的时候,貌似除了复制粘贴,印象深刻的知识啥也没学到. ...

  2. 页面上有3个输入框:分别为max,min,num;三个按钮:分别为生成,排序,去重;在输入框输入三个数字后,先点击生成按钮,生成一个数组长度为num,值为max到min之间的随机整数点击排序,对当前数组进行排序,点击去重,对当前数组进行去重。 每次点击之后使结果显示在控制台

    <!DOCTYPE html> <html> <head> <!-- 页面上有3个输入框:分别为max,min,num:三个按钮:分别为生成,排序,去重: 在 ...

  3. AE三维点击查询(3D Identify)的实现(转)

    AE三维点击查询(3D Identify)的实现,类似ArcGIS的Identify对话框/////////////////////////////////////////////////////// ...

  4. AE常用代码(标注要素、AE中画带箭头的线、如何获得投影坐标、参考坐标、投影方式、FeatureCount注意事项)

    手上的电脑已经用了将近三年了,想入手一台Surface Pro,所以计划着把电脑上的资料整理下,部分资料打算发到博客上来,资料有同事.也有自己的.也有来自网络的,来源途径太多,也没法详细注明,请见谅! ...

  5. 如何设计点击点击一个div,其他div做出对应反应,以及获取一个节点下的子节点

    <div id="show"> <div>1</div> <div>2</div> <div>3</d ...

  6. 关于一个隐藏和显示物品列表的demo

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  7. Winform 基础二 最小化 最大化 关闭 点击任务栏隐藏显示 点击鼠标左键移动窗体

    一 最大化 二 最小化 三 关闭 四 点击任务栏隐藏显示 五 点击鼠标左键移动窗体 六 阴影效果鼠标左键移动窗口 #region UI设置 最大化.最小化.关闭.鼠标移动窗口.点击任务栏切换窗口 th ...

  8. JS实现点击参数面板按钮显示或隐藏数据

    当报表中列出数据太多时,想通过显示按钮隐藏明细数据只显示统计数据.如下图示例,那么该如何实现呢?本文以FineReport为例,来讲述JS如何实现点击参数面板按钮显示或隐藏数据. 打开报表 在参数面板 ...

  9. Bootstrap学习笔记(5)--实现Bootstrap导航条可点击和鼠标悬停显示下拉菜单

    实现Bootstrap导航条可点击和鼠标悬停显示下拉菜单 微笑的鱼 2014-01-03 Bootstrap 5,281 次围观 11条评论 使用Bootstrap导航条组件时,如果你的导航条带有下拉 ...

随机推荐

  1. delphi 16 网页缩放

    网页放大 网页缩小         WebBrowser1.OleObject.Document.Body.Style.Zoom := 0.50; 缩放网页 Ctrl+中键↑ 放大 Ctrl+中键↓ ...

  2. cocos2d(3.0)一些基础的东西

    1.创建项目后环境配置: 附加文件夹:加入 $(EngineRoot) $(EngineRoot)cocos $(EngineRoot)cocos\editor-support $(EngineRoo ...

  3. RabbitMQ+PHP 消息队列环境配置

    参考文档:http://www.cnblogs.com/phpinfo/p/4104551...http://blog.csdn.net/historyasamirror/ar... 依赖包安装 yu ...

  4. __asm__ __volatile__("": : :"memory");

    参考:http://stackoverflow.com/questions/14950614/working-of-asm-volatile-memory asmvolatile("&quo ...

  5. Java SE ---关系运算符

    java里的关系运算符有这么几种:大于(>).小于(<).等于(==).不等于(!=).大于等于(>=).小于等于(<=), 关系运算的结果是个boolean值,关系式成立为t ...

  6. cocos2d-x lua 使用http(下载图片, POST JSON)

    cocos2d-x lua 使用http(下载图片, POST JSON) version: cocos2d-x 3.6 1.使用http post json与服务器交互 require(" ...

  7. TCP/IP协议原理与应用笔记18:构成子网和超网

    1. 引言: (1)类别IP编址(Classful IP)的缺陷 • 固定的3种IP网络规模      C类地址:少于255台主机的网络      B类地址:介于255~65535台主机的网络     ...

  8. struts2拦截器源码分析

    前面博客我们介绍了开发struts2应用程序的基本流程(开发一个struts2的实例),通过前面我们知道了struts2实现请求转发和配置文件加载都是拦截器进行的操作,这也就是为什么我们要在web.x ...

  9. mybatis缓存创建过程

    带着 上篇 的问题,再来看看mybatis的创建过程 1.从SqlSessionFactoryBuilder解析mybatis-config.xml开始 对文件流解析 XMLConfigBuilder ...

  10. CF Covered Path (贪心)

    Covered Path time limit per test 1 second memory limit per test 256 megabytes input standard input o ...