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

 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. 根据字符串创建FTP本地目录 并按照日期建立子目录返回路径

    /** * 根据字符串创建FTP本地目录 并按照日期建立子目录返回 * @param path * @return */ private String getFolder(String path) { ...

  2. Codeforces 278C Learning Languages(并查集)

    题意抽象出来就是求联通块的个数吧,然后添加最少边使图联通. 注意所有人都不会任何语言的时候,答案是n而不是n-1. #include<algorithm> #include<iost ...

  3. android149 360 程序锁输入密码

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  4. win7关机命令

    通过 DOS 命令 “shutdown” 来实现 Windows7 系统下的定时关机功能. 使用at 命令 at 12:00 shutdown -s,取消:at/delete shutdown -s ...

  5. 20+ Rsync command’s switches and common usages with examples – Unix/Linux--reference

    reference:http://crybit.com/rsync-commands-switches/ The “rsync” is a powerful command under the Lin ...

  6. http协议Authorization认证方式在Android开发中的使用

    我们都知道,http协议是一种无状态协议,在Web开发中,由于Session和Cookie的使用,使得服务端可以知道客户端的连接状态,即用户只需要在浏览器上登录一次,只要浏览器没有关闭,后续所有的请求 ...

  7. github使用成长记

    学校里一直都有自己写一些网页,一方面为了学习熟练技能,另一方面也是兴趣所在.但是独乐乐不如众乐乐,一直向往有那么一个平台能把自己做得东西分享给广大网友,并且想借着分享的契机和各位程序猿交流学习心得(这 ...

  8. CSS skills: 6) auto hide the top bar javascript

    //jquery $(document).ready(function(){ $(window).scroll(function() { $(this).scrollTop() > 10 ? $ ...

  9. 在vs环境中跑动sift特征提取(代码部分)

    因为在前两天的学习中发现.在opencv环境中跑动sift特征点提取还是比较困难的. 所以在此,进行记述. 遇到的问题分别有,csdn不愿意花费积分.配置gtk困难.教程海量然而能跑者鲜.描述不详尽等 ...

  10. c# 友元程序集

    在团队开发中,如果一个程序集中要调用另外一个程序集,但是要被调用的那个程序集又不想用public来公开自己的类, 那么怎么办,就是用最后一种internal来用来做类的可见性了. 下面来看一个简单例子 ...