Welcome
Guest
, you are in:
<root>
EnterpriseLibrary
FDOT Security STS
FDOT_Application_Model
GisFramework
•
Login
FDOT Wiki
GisFramework
¶
Gis Framework
Fdot Wiki
Random Page
All Pages
Categories
Search the wiki
»
Back
DrawCommand
Modified on Wednesday, 06 July 2011 11:06 AM
by
Administrator
Categorized as
Commands
{TOC} ==DrawCommand== (((@@public class DrawCommand : ScriptableCommand<DrawCommandParameters> { /// <summary> /// A string identifier for this command. /// </summary> public override string CommandVerb { get { return "draw"; } } /// <summary> /// Executes the command with the specified <see cref="DrawCommandParameters"/>. /// </summary> /// <param name="parameters"></param> public override sealed void Execute(DrawCommandParameters parameters) { var executionContext = new ActionExecutionContext(); Coroutine.BeginExecute(GetWorkflow(parameters).GetEnumerator(), executionContext, Complete); } private void Complete(object sender, ResultCompletionEventArgs e) { if (e.Error != null) Failure(e.Error); else Success(null); } protected IEnumerable<IResult> GetWorkflow(DrawCommandParameters parameters) { if (!IsInitialized) throw new Exception("Command not initiaized."); if (parameters.DoClearFirst) { ClearGraphics(); } if (parameters.DrawingObjects != null && parameters.DrawingObjects.Length > 0) { var symbol = SymbolManager.GetMarkerSymbol(parameters.SymbolType, parameters.SymbolFillColor, parameters.SymbolStrokeColor); yield return new DrawGeometry(parameters.GeometryObjects, GraphicsManager, parameters.HueShift, symbol); if (parameters.DoPan || parameters.DoZoom) { yield return new ZoomToGeometry(GeometryHelper.GetViewableArea(parameters.Envelope, parameters.DoPan, parameters.DoZoom), parameters.Buffer); } } } }@@))) ==DrawCommandParameters== (((@@ public class DrawCommandParameters { public DataContracts.Geometry[] DrawingObjects { get; set; } public bool DoClearFirst { get; set; } public bool DoShowLabels { get; set; } public bool DoPan { get; set; } public bool DoZoom { get; set; } public double HueShift { get; set; } public string SymbolType { get; set; } public string SymbolFillColor { get; set; } public string SymbolStrokeColor { get; set; } public double Buffer { get; set; } private DataContracts.Geometry[] _geometryObjects = null; internal DataContracts.Geometry[] GeometryObjects { get { if (_geometryObjects == null) { foreach (DataContracts.Geometry g in DrawingObjects) { if (g.Radius != null && g.X != null && g.Y != null) { double[][] ring = CreateRing(new Point(g.X.Value, g.Y.Value), g.Radius.Value); g.Rings = new double[][][] { ring }; g.X = null; g.Y = null; } _geometryObjects = (DataContracts.Geometry[])DrawingObjects; } } return _geometryObjects; } } private Envelope _envelope = null; internal Envelope Envelope { get { if (_envelope == null) { _envelope = GeometryHelper.GetEnvelope(GeometryObjects); } return _envelope; } } #region create a ring from an origin and radius private double[][] CreateRing(Point origin, double radius) { List<double[]> points = new List<double[]>(); for (double i = 0d; i < 360d; i++) { double angle = i * (Math.PI / 180d); points.Add(new double[] { origin.X + radius * Math.Cos(angle), origin.Y + radius * Math.Sin(angle) }); } return points.ToArray(); } #endregion }@@))) ==See Also== {Incoming}
Meta Keywords:
Meta Description:
Change Comment:
Any Questions or Comments? Email
GIS Framework Development Team
Some of the icons created by
FamFamFam
.