• AE实现点击一个要素,并显示其属性


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

     1 public IFeature Find2(IPoint pPoint)
     2         {
     3             ITopologicalOperator pTopoOpe = pPoint as ITopologicalOperator;
     4             double dis = m_pMapControl.ActiveView.ScreenDisplay.DisplayTransformation.FromPoints(5);
     5             if (dis < 0.01)
     6                 dis = 0.01;
     7             IGeometry pBuffer = pTopoOpe.Buffer(dis);
     8             pBuffer.SpatialReference = m_pMapControl.Map.SpatialReference;
     9 
    10             UIDClass id = new UIDClass();
    11             id.Value = "{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}";
    12             IEnumLayer pEnumLayer = m_pMapControl.Map.get_Layers(id, true);
    13             pEnumLayer.Reset();
    14             IFeatureLayer pFLayer = pEnumLayer.Next() as IFeatureLayer;
    15 
    16             ISpatialFilter pSpatialFilter = new SpatialFilterClass();
    17             pSpatialFilter.Geometry = pBuffer;
    18             pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
    19             pSpatialFilter.WhereClause = "";
    20 
    21             while (pFLayer != null)
    22             {
    23                 if (pFLayer.Visible == false)
    24                 {
    25                     pFLayer = pEnumLayer.Next() as IFeatureLayer;
    26                     continue;
    27                 }
    28                 IFeatureCursor pCursor = pFLayer.Search(pSpatialFilter, false);
    29                 IFeature pFeat = pCursor.NextFeature();
    30                 if (pFeat != null)
    31                 {
    32                     return pFeat;
    33                 }
    34                 System.Runtime.InteropServices.Marshal.ReleaseComObject(pCursor);
    35                 pFLayer = pEnumLayer.Next() as IFeatureLayer;
    36             }
    37             return null;
    38         }
    View Code

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

     1 IFields pFields = pFeat.Fields;
     2             for (int i = 0; i < pFields.FieldCount; i++)
     3             {
     4                 IField pField = pFields.get_Field(i);
     5                 if (pField.Type != esriFieldType.esriFieldTypeBlob & pField.Type != esriFieldType.esriFieldTypeOID
     6                     & pField.Type != esriFieldType.esriFieldTypeGeometry)
     7                 {
     8                     checkedListBox1.Items.Add(pField.AliasName);
     9                 }
    10             }
    View Code

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

     1 ICallout pCallout = new ESRI.ArcGIS.Display.BalloonCalloutClass();
     2                         pCallout.AnchorPoint = pPoint;
     3                         pCallout.LeaderTolerance = 2;
     4 
     5                         ITextElement pTextElement = new TextElementClass();
     6                         IElement pElement = pTextElement as IElement;
     7                         ITextSymbol pTextSysmbol = pTextElement.Symbol;
     8                         IFormattedTextSymbol pFormattedTextSymbol = new TextSymbolClass();
     9                         pFormattedTextSymbol.Background = pCallout as ITextBackground;
    10                         pFormattedTextSymbol.Size = 8;
    11                         pFormattedTextSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHALeft;
    12                         pTextElement.Symbol = pFormattedTextSymbol;
    13                         pTextElement.Text = labelString;
    14 
    15                         pElement.Geometry = pPoint;
    16                         m_pMapControl.ActiveView.GraphicsContainer.AddElement(pElement, 0);
    17                         m_pMapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, m_pMapControl.Extent);
    View Code
  • 相关阅读:
    gdb remote 使用
    gdb调试的layout使用
    经典名言--教父
    GDB dump mem example和命令
    再谈音响的七个频段,个个是真理
    Ubuntu 16.04下GDB调试
    shell脚本中if的“-e,-d,-f”
    ubuntu下makeinfo安装,其实真正安装的是texinfo包
    【svn】svn的使用
    【linux】监控磁盘情况并自动删除备份文件
  • 原文地址:https://www.cnblogs.com/fatherZyl/p/3303312.html
Copyright © 2020-2023  润新知