📄 addpoly.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>
/// 用于地图面(测试标记A917882716221729)
/// </summary>
public class AddPoly : IMapServerToolAction
{
public void ServerAction(ToolEventArgs args)
{
ESRI.ArcGIS.ADF.Web.UI.WebControls.Map mapctrl = (ESRI.ArcGIS.ADF.Web.UI.WebControls.Map)args.Control;
PolygonEventArgs peal = (PolygonEventArgs)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.Polygon Poly =
new ESRI.ArcGIS.ADF.IMS.Geometry.Polygon();
ESRI.ArcGIS.ADF.IMS.Geometry.Ring ring =
new ESRI.ArcGIS.ADF.IMS.Geometry.Ring();
ESRI.ArcGIS.ADF.IMS.Geometry.Hole polyHole =
new ESRI.ArcGIS.ADF.IMS.Geometry.Hole();
ESRI.ArcGIS.ADF.IMS.Geometry.Point pt;
//装载轨迹
for (int i = 0; i < pnts1.Length; i++)
{
pt = new ESRI.ArcGIS.ADF.IMS.Geometry.Point(pnts1[i].X, pnts1[i].Y);
ring.Points.Add(pt);
polyHole.Points.Add(pt);
ring.Holes.Add(polyHole);
Poly.Rings.Add(ring);
mapctrl.Page.Session["polyPoints"] += pnts1[i].X.ToString() + "," + pnts1[i].Y.ToString() + ",";
}
//保存信息点
mapctrl.Page.Session["polyPoints"] += "|";
//创建图层
string acetateName = "ALayer" + mapview.Layers.Count.ToString();
//设置渲染
ESRI.ArcGIS.ADF.IMS.Display.Symbol.SimpleFillSymbol polySymbol =
new ESRI.ArcGIS.ADF.IMS.Display.Symbol.SimpleFillSymbol();
polySymbol.Color = System.Drawing.Color.Red;
polySymbol.BoundaryColor = System.Drawing.Color.Coral;
polySymbol.FillType = ESRI.ArcGIS.ADF.IMS.Display.Symbol.PolygonFillType.Gray;
polySymbol.Transparency = 50;
polySymbol.BoundaryWidth = 2;
ESRI.ArcGIS.ADF.IMS.Display.AcetateElement.GeometryElement acetatePoly =
new ESRI.ArcGIS.ADF.IMS.Display.AcetateElement.GeometryElement(
ESRI.ArcGIS.ADF.IMS.Display.AcetateElement.AcetateUnits.Database, Poly, polySymbol);
//添加图层
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 + -