• ArcGIS.Server.9.2.DotNet在ElementGraphicsLayer画点、线、折线、面、圆、矩形的代码


    ArcGIS.Server.9.2.DotNet在ElementGraphicsLayer画点、线、折线、面、圆、矩形的代码:

      1public class AddTool:IMapServerToolAction  
      2    {
      3
      4
      5        public void ServerAction(ESRI.ArcGIS.ADF.Web.UI.WebControls.ToolEventArgs args)
      6        {
      7            //获取map控件
      8            ESRI.ArcGIS.ADF.Web.UI.WebControls.Map adfMap = (ESRI.ArcGIS.ADF.Web.UI.WebControls.Map)args.Control;
      9            ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality adfGraphicsMapFunctionality = null;
     10
     11            if (args is PointEventArgs)
     12            {
     13                //转成点
     14                PointEventArgs pointEventArgs = (PointEventArgs)args;
     15                //屏幕点
     16                System.Drawing.Point screenPoint = pointEventArgs.ScreenPoint;
     17                //屏幕坐标转成地理坐标
     18                ESRI.ArcGIS.ADF.Web.Geometry.Point adfPoint = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(screenPoint.X, screenPoint.Y, adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
     19                
     20                //MapFunctionality
     21                foreach (ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality mapFunctionality in adfMap.GetFunctionalities())
     22                {
     23                    //当Resource为ADFGraphicsResource,ADFGraphicsResource为GraphicsLayer, 保存在内存中用显示临时图层
     24                    if (mapFunctionality.Resource.Name == "GraphicsResource")
     25                    {
     26                        adfGraphicsMapFunctionality = (ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
     27                        break;
     28                    }

     29                }

     30                //从adfGraphicsMapFunctionality获取名为Element Graphics的DataTable
     31                //ElementGraphicsLayers通常用来显示图形元素,例如显示Map中被选择的图形元素。图层并不用来存储属性,而可以存储不同的图形类型。
     32                ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer elementGraphicsLayer = null;
     33                foreach (System.Data.DataTable dataTable in adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
     34                {
     35                    if (dataTable.TableName == "Element Graphics")
     36                    {
     37                        elementGraphicsLayer = (ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
     38                        break;
     39                    }

     40                }

     41                //如果名为Element Graphics的DataTable为null,就新建Element Graphics DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同时刷新Toc1显示
     42                if (elementGraphicsLayer == null)
     43                {
     44                    elementGraphicsLayer = new ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
     45                    elementGraphicsLayer.TableName = "Element Graphics";
     46                    adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
     47                }

     48
     49                //定义标点样式
     50                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleMarkerSymbol simpleMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleMarkerSymbol();
     51                //simpleMarkerSymbol.Type = ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
     52                simpleMarkerSymbol.Color = System.Drawing.Color.Green;
     53                simpleMarkerSymbol.Width = 10;
     54
     55                //定义标点选中样式
     56                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleMarkerSymbol simpleSelectedMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleMarkerSymbol();
     57                simpleSelectedMarkerSymbol.Color = System.Drawing.Color.Yellow;
     58                simpleSelectedMarkerSymbol.Width = 12;
     59                simpleSelectedMarkerSymbol.Type = ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
     60
     61                ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement graphicElement = new ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(adfPoint, simpleMarkerSymbol, simpleSelectedMarkerSymbol);
     62                //把标点添加到elementGraphicsLayer
     63                elementGraphicsLayer.Add(graphicElement);
     64                
     65            }

     66            else if(args is LineEventArgs)
     67            {
     68                //转成点
     69                LineEventArgs lineEventArgs = (LineEventArgs)args;
     70                //屏幕点
     71                //屏幕坐标转成地理坐标
     72                ESRI.ArcGIS.ADF.Web.Geometry.Point adfPoint1 = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(lineEventArgs.BeginPoint.X, lineEventArgs.BeginPoint.Y, adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
     73                //屏幕坐标转成地理坐标
     74                ESRI.ArcGIS.ADF.Web.Geometry.Point adfPoint2 = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(lineEventArgs.EndPoint.X, lineEventArgs.EndPoint.Y, adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
     75                ESRI.ArcGIS.ADF.Web.Geometry.Path pa=new ESRI.ArcGIS.ADF.Web.Geometry.Path();
     76                pa.Points.Add(adfPoint1);
     77                pa.Points.Add(adfPoint2);
     78                ESRI.ArcGIS.ADF.Web.Geometry.Polyline Line = new ESRI.ArcGIS.ADF.Web.Geometry.Polyline();
     79                Line.Paths.Add(pa);
     80
     81                //MapFunctionality
     82                foreach (ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality mapFunctionality in adfMap.GetFunctionalities())
     83                {
     84                    //当Resource为ADFGraphicsResource,ADFGraphicsResource为GraphicsLayer, 保存在内存中用显示临时图层
     85                    if (mapFunctionality.Resource.Name == "GraphicsResource")
     86                    {
     87                        adfGraphicsMapFunctionality = (ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
     88                        break;
     89                    }

     90                }

     91                //从adfGraphicsMapFunctionality获取名为Element Graphics的DataTable
     92                //ElementGraphicsLayers通常用来显示图形元素,例如显示Map中被选择的图形元素。图层并不用来存储属性,而可以存储不同的图形类型。
     93                ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer elementGraphicsLayer = null;
     94                foreach (System.Data.DataTable dataTable in adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
     95                {
     96                    if (dataTable.TableName == "Element Graphics")
     97                    {
     98                        elementGraphicsLayer = (ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
     99                        break;
    100                    }

    101                }

    102                //如果名为Element Graphics的DataTable为null,就新建Element Graphics DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同时刷新Toc1显示
    103                if (elementGraphicsLayer == null)
    104                {
    105                    elementGraphicsLayer = new ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
    106                    elementGraphicsLayer.TableName = "Element Graphics";
    107                    adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
    108                }

    109
    110                //定义标点样式
    111                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol simpleMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol();
    112                //simpleMarkerSymbol.Type = ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
    113                simpleMarkerSymbol.Color = System.Drawing.Color.Red;
    114                simpleMarkerSymbol.Width = 3;
    115                simpleMarkerSymbol.Type = ESRI.ArcGIS.ADF.Web.Display.Symbol.LineType.Dash;
    116                //定义标点选中样式
    117                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol simpleSelectedMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol();
    118                simpleSelectedMarkerSymbol.Color = System.Drawing.Color.Yellow;
    119                simpleSelectedMarkerSymbol.Width = 3;
    120                //simpleSelectedMarkerSymbol.Type = ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
    121
    122                ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement graphicElement = new ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(Line, simpleMarkerSymbol, simpleSelectedMarkerSymbol);
    123                //把标点添加到elementGraphicsLayer
    124                elementGraphicsLayer.Add(graphicElement);
    125                
    126            }

    127            else if (args is PolylineEventArgs)
    128            {
    129                PolylineEventArgs lineEventArgs = (PolylineEventArgs)args;
    130                ESRI.ArcGIS.ADF.Web.Geometry.Path pa = new ESRI.ArcGIS.ADF.Web.Geometry.Path();
    131                for (int i = 0; i <= lineEventArgs.Vectors.Length - 1; i++)
    132                {
    133                    ESRI.ArcGIS.ADF.Web.Geometry.Point point = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(lineEventArgs.Vectors[i].X, lineEventArgs.Vectors[i].Y, adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
    134                    pa.Points.Add(point);
    135                }

    136                ESRI.ArcGIS.ADF.Web.Geometry.Polyline Line = new ESRI.ArcGIS.ADF.Web.Geometry.Polyline();
    137                Line.Paths.Add(pa);
    138
    139                //MapFunctionality
    140                foreach (ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality mapFunctionality in adfMap.GetFunctionalities())
    141                {
    142                    //当Resource为ADFGraphicsResource,ADFGraphicsResource为GraphicsLayer, 保存在内存中用显示临时图层
    143                    if (mapFunctionality.Resource.Name == "GraphicsResource")
    144                    {
    145                        adfGraphicsMapFunctionality = (ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
    146                        break;
    147                    }

    148                }

    149                //从adfGraphicsMapFunctionality获取名为Element Graphics的DataTable
    150                //ElementGraphicsLayers通常用来显示图形元素,例如显示Map中被选择的图形元素。图层并不用来存储属性,而可以存储不同的图形类型。
    151                ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer elementGraphicsLayer = null;
    152                foreach (System.Data.DataTable dataTable in adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
    153                {
    154                    if (dataTable.TableName == "Element Graphics")
    155                    {
    156                        elementGraphicsLayer = (ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
    157                        break;
    158                    }

    159                }

    160                //如果名为Element Graphics的DataTable为null,就新建Element Graphics DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同时刷新Toc1显示
    161                if (elementGraphicsLayer == null)
    162                {
    163                    elementGraphicsLayer = new ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
    164                    elementGraphicsLayer.TableName = "Element Graphics";
    165                    adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
    166                }

    167
    168                //定义标点样式
    169                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol simpleMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol();
    170                //simpleMarkerSymbol.Type = ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
    171                simpleMarkerSymbol.Color = System.Drawing.Color.Red;
    172                simpleMarkerSymbol.Width = 3;
    173                simpleMarkerSymbol.Type = ESRI.ArcGIS.ADF.Web.Display.Symbol.LineType.Dash;
    174                //定义标点选中样式
    175                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol simpleSelectedMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol();
    176                simpleSelectedMarkerSymbol.Color = System.Drawing.Color.Yellow;
    177                simpleSelectedMarkerSymbol.Width = 3;
    178                //simpleSelectedMarkerSymbol.Type = ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
    179
    180                ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement graphicElement = new ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(Line, simpleMarkerSymbol, simpleSelectedMarkerSymbol);
    181                //把标点添加到elementGraphicsLayer
    182                elementGraphicsLayer.Add(graphicElement);
    183            }

    184            else if (args is PolygonEventArgs)
    185            {
    186                PolygonEventArgs polygonEventArgs = (PolygonEventArgs)args;
    187                ESRI.ArcGIS.ADF.Web.Geometry.Ring points = new ESRI.ArcGIS.ADF.Web.Geometry.Ring();
    188                for (int i = 0; i <= polygonEventArgs.Vectors.Length - 1; i++)
    189                {
    190                    ESRI.ArcGIS.ADF.Web.Geometry.Point point = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(polygonEventArgs.Vectors[i].X, polygonEventArgs.Vectors[i].Y, adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
    191                    points.Points.Add(point);
    192                }

    193                ESRI.ArcGIS.ADF.Web.Geometry.Polygon polygon = new ESRI.ArcGIS.ADF.Web.Geometry.Polygon();
    194                polygon.Rings.Add(points);
    195
    196                //MapFunctionality
    197                foreach (ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality mapFunctionality in adfMap.GetFunctionalities())
    198                {
    199                    //当Resource为ADFGraphicsResource,ADFGraphicsResource为GraphicsLayer, 保存在内存中用显示临时图层
    200                    if (mapFunctionality.Resource.Name == "GraphicsResource")
    201                    {
    202                        adfGraphicsMapFunctionality = (ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
    203                        break;
    204                    }

    205                }

    206                //从adfGraphicsMapFunctionality获取名为Element Graphics的DataTable
    207                //ElementGraphicsLayers通常用来显示图形元素,例如显示Map中被选择的图形元素。图层并不用来存储属性,而可以存储不同的图形类型。
    208                ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer elementGraphicsLayer = null;
    209                foreach (System.Data.DataTable dataTable in adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
    210                {
    211                    if (dataTable.TableName == "Element Graphics")
    212                    {
    213                        elementGraphicsLayer = (ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
    214                        break;
    215                    }

    216                }

    217                //如果名为Element Graphics的DataTable为null,就新建Element Graphics DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同时刷新Toc1显示
    218                if (elementGraphicsLayer == null)
    219                {
    220                    elementGraphicsLayer = new ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
    221                    elementGraphicsLayer.TableName = "Element Graphics";
    222                    adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
    223                }

    224
    225                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol simpleMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
    226                simpleMarkerSymbol.Color = System.Drawing.Color.Yellow;
    227                simpleMarkerSymbol.FillType= ESRI.ArcGIS.ADF.Web.Display.Symbol.PolygonFillType.DiagCross;
    228
    229                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol simpleSelectedMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
    230                ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement graphicElement = new ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(polygon, simpleMarkerSymbol, simpleSelectedMarkerSymbol);
    231                //把标点添加到elementGraphicsLayer
    232                elementGraphicsLayer.Add(graphicElement);
    233       
    234            }

    235            else if (args is CircleEventArgs)
    236            {
    237                CircleEventArgs circleEventArgs = (CircleEventArgs)args;
    238                
    239                ESRI.ArcGIS.ADF.Web.Geometry.PointCollection pc = new ESRI.ArcGIS.ADF.Web.Geometry.PointCollection();
    240                double degree;
    241                double rad  = circleEventArgs.Radius;
    242                for (int i = 0; i < 359; i++)
    243                
    244                    degree = i * (Math.PI / 180);
    245                    double x = circleEventArgs.CenterPoint.X + Math.Cos(degree) * rad;
    246                    double y = circleEventArgs.CenterPoint.Y + Math.Sin(degree) * rad;
    247                    ESRI.ArcGIS.ADF.Web.Geometry.Point nPoint = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint((int)Math.Round(x),(int)Math.Round(y), adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
    248                    pc.Add(nPoint);
    249                }

    250                ESRI.ArcGIS.ADF.Web.Geometry.Ring ring = new ESRI.ArcGIS.ADF.Web.Geometry.Ring();
    251                ring.Points = pc;
    252                ESRI.ArcGIS.ADF.Web.Geometry.RingCollection rings = new ESRI.ArcGIS.ADF.Web.Geometry.RingCollection();
    253                rings.Add(ring);
    254                ESRI.ArcGIS.ADF.Web.Geometry.Polygon polygon = new ESRI.ArcGIS.ADF.Web.Geometry.Polygon();
    255                polygon.Rings = rings;
    256
    257                //MapFunctionality
    258                foreach (ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality mapFunctionality in adfMap.GetFunctionalities())
    259                {
    260                    //当Resource为ADFGraphicsResource,ADFGraphicsResource为GraphicsLayer, 保存在内存中用显示临时图层
    261                    if (mapFunctionality.Resource.Name == "GraphicsResource")
    262                    {
    263                        adfGraphicsMapFunctionality = (ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
    264                        break;
    265                    }

    266                }

    267                //从adfGraphicsMapFunctionality获取名为Element Graphics的DataTable
    268                //ElementGraphicsLayers通常用来显示图形元素,例如显示Map中被选择的图形元素。图层并不用来存储属性,而可以存储不同的图形类型。
    269                ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer elementGraphicsLayer = null;
    270                foreach (System.Data.DataTable dataTable in adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
    271                {
    272                    if (dataTable.TableName == "Element Graphics")
    273                    {
    274                        elementGraphicsLayer = (ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
    275                        break;
    276                    }

    277                }

    278                //如果名为Element Graphics的DataTable为null,就新建Element Graphics DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同时刷新Toc1显示
    279                if (elementGraphicsLayer == null)
    280                {
    281                    elementGraphicsLayer = new ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
    282                    elementGraphicsLayer.TableName = "Element Graphics";
    283                    adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
    284                }

    285
    286                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol simpleMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
    287                simpleMarkerSymbol.Color = System.Drawing.Color.Yellow;
    288                simpleMarkerSymbol.FillType = ESRI.ArcGIS.ADF.Web.Display.Symbol.PolygonFillType.DiagCross;
    289
    290                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol simpleSelectedMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
    291                ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement graphicElement = new ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(polygon, simpleMarkerSymbol, simpleSelectedMarkerSymbol);
    292                //把标点添加到elementGraphicsLayer
    293                elementGraphicsLayer.Add(graphicElement);
    294
    295            }

    296            else if(args is RectangleEventArgs)
    297            {
    298                RectangleEventArgs rectargs = (RectangleEventArgs)args;
    299                //矩形
    300                System.Drawing.Rectangle myrect = rectargs.ScreenExtent;
    301                //矩形左下定点坐标转换成地理坐标
    302                ESRI.ArcGIS.ADF.Web.Geometry.Point minpnt = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(myrect.Left, myrect.Bottom, adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
    303                //矩形右上定点坐标转换成地理坐标
    304                ESRI.ArcGIS.ADF.Web.Geometry.Point maxpnt = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(myrect.Right, myrect.Top, adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
    305                //
    306                ESRI.ArcGIS.ADF.Web.Geometry.Envelope mappoly = new ESRI.ArcGIS.ADF.Web.Geometry.Envelope(minpnt, maxpnt);
    307
    308                //MapFunctionality
    309                foreach (ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality mapFunctionality in adfMap.GetFunctionalities())
    310                {
    311                    //当Resource为ADFGraphicsResource,ADFGraphicsResource为GraphicsLayer, 保存在内存中用显示临时图层
    312                    if (mapFunctionality.Resource.Name == "GraphicsResource")
    313                    {
    314                        adfGraphicsMapFunctionality = (ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
    315                        break;
    316                    }

    317                }

    318                //从adfGraphicsMapFunctionality获取名为Element Graphics的DataTable
    319                //ElementGraphicsLayers通常用来显示图形元素,例如显示Map中被选择的图形元素。图层并不用来存储属性,而可以存储不同的图形类型。
    320                ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer elementGraphicsLayer = null;
    321                foreach (System.Data.DataTable dataTable in adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
    322                {
    323                    if (dataTable.TableName == "Element Graphics")
    324                    {
    325                        elementGraphicsLayer = (ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
    326                        break;
    327                    }

    328                }

    329                //如果名为Element Graphics的DataTable为null,就新建Element Graphics DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同时刷新Toc1显示
    330                if (elementGraphicsLayer == null)
    331                {
    332                    elementGraphicsLayer = new ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
    333                    elementGraphicsLayer.TableName = "Element Graphics";
    334                    adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
    335                }

    336
    337                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol simpleMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
    338                simpleMarkerSymbol.Color = System.Drawing.Color.Yellow;
    339                simpleMarkerSymbol.FillType = ESRI.ArcGIS.ADF.Web.Display.Symbol.PolygonFillType.DiagCross;
    340
    341                ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol simpleSelectedMarkerSymbol = new ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
    342                ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement graphicElement = new ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(mappoly, simpleMarkerSymbol, simpleSelectedMarkerSymbol);
    343                //把标点添加到elementGraphicsLayer
    344                elementGraphicsLayer.Add(graphicElement);
    345
    346            }

    347
    348            //刷新显示
    349            if (adfMap.ImageBlendingMode == ImageBlendingMode.WebTier)
    350            {
    351                //整个地图控件刷新
    352                adfMap.Refresh();
    353            }

    354            else
    355            {
    356                //只刷新部分Resource
    357                adfMap.RefreshResource(adfGraphicsMapFunctionality.Resource.Name);
    358            }

    359        }

    360
    361    }
  • 相关阅读:
    vue.js 源代码学习笔记 ----- 工具方法 option
    日期字符串格式转换
    MySQL数据库的知识总结
    Mybatis 中#{}和${}的区别
    MySQL数据库 常用命令
    MySQL -进阶
    JQuery杂项方法
    ASP.NET MVC 扩展自定义视图引擎支持多模板&动态换肤skins机制
    C#各种导入Excel文件的数据的方法总结
    C#基础随手笔记之基础操作优化
  • 原文地址:https://www.cnblogs.com/hll2008/p/1310381.html
Copyright © 2020-2023  润新知