AE实现点击一个要素,并显示其属性
第一步:根据鼠标点击处的点,找到被选中的要素
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实现点击一个要素,并显示其属性的更多相关文章
- 商务系统的构造思路(无源码!)+如何用jsp实现点击单选框内容显示在另一个jsp页面
敲码经验总结: 之前犯了一个错误就是,没有从底层开始学起,有啥问题,就直接博客园找源码,去CSDN找源代码,看到代码就复制粘贴,结果从新梳理知识点的时候,貌似除了复制粘贴,印象深刻的知识啥也没学到. ...
- 页面上有3个输入框:分别为max,min,num;三个按钮:分别为生成,排序,去重;在输入框输入三个数字后,先点击生成按钮,生成一个数组长度为num,值为max到min之间的随机整数点击排序,对当前数组进行排序,点击去重,对当前数组进行去重。 每次点击之后使结果显示在控制台
<!DOCTYPE html> <html> <head> <!-- 页面上有3个输入框:分别为max,min,num:三个按钮:分别为生成,排序,去重: 在 ...
- AE三维点击查询(3D Identify)的实现(转)
AE三维点击查询(3D Identify)的实现,类似ArcGIS的Identify对话框/////////////////////////////////////////////////////// ...
- AE常用代码(标注要素、AE中画带箭头的线、如何获得投影坐标、参考坐标、投影方式、FeatureCount注意事项)
手上的电脑已经用了将近三年了,想入手一台Surface Pro,所以计划着把电脑上的资料整理下,部分资料打算发到博客上来,资料有同事.也有自己的.也有来自网络的,来源途径太多,也没法详细注明,请见谅! ...
- 如何设计点击点击一个div,其他div做出对应反应,以及获取一个节点下的子节点
<div id="show"> <div>1</div> <div>2</div> <div>3</d ...
- 关于一个隐藏和显示物品列表的demo
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- Winform 基础二 最小化 最大化 关闭 点击任务栏隐藏显示 点击鼠标左键移动窗体
一 最大化 二 最小化 三 关闭 四 点击任务栏隐藏显示 五 点击鼠标左键移动窗体 六 阴影效果鼠标左键移动窗口 #region UI设置 最大化.最小化.关闭.鼠标移动窗口.点击任务栏切换窗口 th ...
- JS实现点击参数面板按钮显示或隐藏数据
当报表中列出数据太多时,想通过显示按钮隐藏明细数据只显示统计数据.如下图示例,那么该如何实现呢?本文以FineReport为例,来讲述JS如何实现点击参数面板按钮显示或隐藏数据. 打开报表 在参数面板 ...
- Bootstrap学习笔记(5)--实现Bootstrap导航条可点击和鼠标悬停显示下拉菜单
实现Bootstrap导航条可点击和鼠标悬停显示下拉菜单 微笑的鱼 2014-01-03 Bootstrap 5,281 次围观 11条评论 使用Bootstrap导航条组件时,如果你的导航条带有下拉 ...
随机推荐
- JSON API in Javascript
1. Serialize JavaScript object to JSON var messageObject = { title: 'Hello World!', body: 'It\'s gr ...
- hdu 5279 Reflect phi 欧拉函数
Reflect Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_chi ...
- 保存form配置信息INI
(* 功能:IniFormState1 保存和读取 窗体的大小2 保存和读取 窗体在屏幕上的位置//让程序第1次出现在屏幕的中心点获取屏幕的中心点POSITION:poScreenCenter //不 ...
- Android文件选择器的实例分享
本文给大家讲解下Android文件选择器的使用.实际上就是获取用户在SD卡中选择的文件或文件夹的路径,这很像C#中的OpenFileDialog控件. 此实例的实现过程很简单,这样可以让大家快速的熟悉 ...
- TransactionScope使用
public void FixProjectSorceInsert() { TransactionOptions transactionOption = new TransactionOptions( ...
- 探讨一个新的两个进程间的通信和编程模型 (Windows)
本文探讨一个新的Windows上的两个UI进程间的通信和编程模型. 开门见山,下面是这个通信模型的梗概图: 这个模型的设计目标描述如下: (1)发送数据接口:RpcSend, RpcPost RpcS ...
- iOS开发——UI_swift篇&UITableView实现单元格展开与隐藏
UITableView实现单元格展开与隐藏 关于UITableView的展开的收缩在前面的文章我已经结束,就是使用代理,通知,block传值的时候实现的,当时是使用一个Bool值来实现,最后使用着三 ...
- 项目源码--Android3D影音播放器源码
下载源码 技术要点: 1.本地音乐管理 2.音频流的解码 3. UI控件的综合使用 4. 视频流的解码 5. 动态更换皮肤 6. 3D效果的实现 7. 源码带详细的中文注释 ...... 详细 ...
- python(7)– 类的反射
python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删除成员. ...
- Centos6.4最小化安装后使用xfce桌面环境
由于我个人使用的Centos是在虚拟机中最小化安装的,gnome实在是不喜欢,所以自己装了个xfce,安装后启动不起来,才发现x window等依赖环境没装,为了少走弯路,在此写下安装过程. 1.yu ...