⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addline.cs

📁 arcims加点的测试程序
💻 CS
字号:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using ESRI.ArcGIS.ADF.Web.UI.WebControls.Tools;
using ESRI.ArcGIS.ADF.Web.UI.WebControls;
using ESRI.ArcGIS.ADF.Web.DataSources.IMS;

/// <summary>
/// 用于地图线(测试标记A016726156281729)
/// </summary>
public class AddLine : IMapServerToolAction
{
    
    public void ServerAction(ToolEventArgs args)
    {
        ESRI.ArcGIS.ADF.Web.UI.WebControls.Map mapctrl = (ESRI.ArcGIS.ADF.Web.UI.WebControls.Map)args.Control;
        PolylineEventArgs peal = (PolylineEventArgs)args;
        System.Drawing.Point[] screen_points = peal.Vectors;

        MapFunctionality mf = (MapFunctionality)mapctrl.GetFunctionality(0);
                
        ESRI.ArcGIS.ADF.IMS.Carto.MapView mapview = mf.MapView;
        //线的点序列
        ESRI.ArcGIS.ADF.Web.Geometry.Point[] pnts1 = new ESRI.ArcGIS.ADF.Web.Geometry.Point[screen_points.Length];

        //转换点坐标
        for (int i = 0; i < screen_points.Length; i++)
        {
            ESRI.ArcGIS.ADF.Web.Geometry.Point pnt = new ESRI.ArcGIS.ADF.Web.Geometry.Point();
            ESRI.ArcGIS.ADF.Web.Geometry.Point adf_map_point =
                ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(screen_points[i],
                mapctrl.Extent,
                (int)mf.DisplaySettings.ImageDescriptor.Width,
                (int)mf.DisplaySettings.ImageDescriptor.Height);

            ESRI.ArcGIS.ADF.IMS.Geometry.Point mapPoint = (ESRI.ArcGIS.ADF.IMS.Geometry.Point)ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToIMSGeometry(adf_map_point);

            pnt.X = mapPoint.X;
            pnt.Y = mapPoint.Y;
            //记录点
            pnts1[i] = pnt;
        }

        //创建线类
        ESRI.ArcGIS.ADF.IMS.Geometry.Polyline line =
            new ESRI.ArcGIS.ADF.IMS.Geometry.Polyline();

        //装载轨迹
        for (int i = 0; i < pnts1.Length-1; i++)
        {
            ESRI.ArcGIS.ADF.IMS.Geometry.Path path;
            path = new ESRI.ArcGIS.ADF.IMS.Geometry.Path();
            path.Points.Add(new ESRI.ArcGIS.ADF.IMS.Geometry.Point(pnts1[i].X, pnts1[i].Y));
            path.Points.Add(new ESRI.ArcGIS.ADF.IMS.Geometry.Point(pnts1[i+1].X, pnts1[i+1].Y));
            line.Paths.Add(path);
            mapctrl.Page.Session["LinePoints"] += pnts1[i].X.ToString() + "," + pnts1[i].Y.ToString() + ",";
        }

        //保存信息点
        mapctrl.Page.Session["LinePoints"] += pnts1[pnts1.Length-1].X.ToString() + "," + pnts1[pnts1.Length-1].Y.ToString() + "|";
        
        //创建图层
        string acetateName = "ALayer" + mapview.Layers.Count.ToString();
        //设置渲染
        ESRI.ArcGIS.ADF.IMS.Display.Symbol.SimpleLineSymbol lineSymbol =
                        new ESRI.ArcGIS.ADF.IMS.Display.Symbol.SimpleLineSymbol();

        lineSymbol.Color = System.Drawing.Color.Red;
        ESRI.ArcGIS.ADF.IMS.Display.AcetateElement.GeometryElement acetatePoly =
            new ESRI.ArcGIS.ADF.IMS.Display.AcetateElement.GeometryElement(
            ESRI.ArcGIS.ADF.IMS.Display.AcetateElement.AcetateUnits.Database, line, lineSymbol);

        ////添加图层
        ESRI.ArcGIS.ADF.IMS.Carto.Layer.AcetateLayer originalLayer =
            new ESRI.ArcGIS.ADF.IMS.Carto.Layer.AcetateLayer(acetateName);
        originalLayer.AcetateElements.Add(acetatePoly); 
        mapview.Layers.Add(originalLayer);

        //刷新地图
        mapctrl.Refresh();


    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -