ArcGIS_Routing_CSharp\App_Code\CustomTools.cs
// Copyright 2010 ESRI // // All rights reserved under the copyright laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this sample code, with or // without modification, provided you include the original copyright // notice and use restrictions. // // See the use restrictions. // using ESRI.ArcGIS.ADF.Web.UI.WebControls.Tools; using ESRI.ArcGIS.ADF.Web.UI.WebControls; using ESRI.ArcGIS.ADF.Web.DataSources; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Data; using System.Drawing; using System.Collections; using System.Web; using ESRI.ArcGIS.ADF.Web.Geometry; using ESRI.ArcGIS.Server.Web.NetworkAnalyst; using System; using ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer; using ESRI.ArcGIS.ADF.Web; namespace RouteFinder { public class CustomTools : IMapServerCommandAction, IMapServerToolAction { public void ServerAction(ToolbarItemInfo info) { ESRI.ArcGIS.ADF.Web.UI.WebControls.Map mapctrl = (ESRI.ArcGIS.ADF.Web.UI.WebControls.Map)info.BuddyControls[0]; switch (info.Name) { case "FullRoute": Envelope fullextent = mapctrl.Page.Session["PathExtent"] as Envelope; if (fullextent != null) { mapctrl.Extent = fullextent; } break; case "ZoomToStep": HtmlInputHidden Step = (HtmlInputHidden)mapctrl.Page.FindControl("Step"); int step = Convert.ToInt32(Step.Value); if (step < 1) step = 1; Envelope[] extents = mapctrl.Page.Session["DirectionExtents"] as Envelope[]; if (extents != null) { Envelope extent = extents[step]; mapctrl.Extent = extent; } break; case "ReverseDirections": IBaseRouteFinderPage bpi = (IBaseRouteFinderPage)mapctrl.Page; // get coords and locations from session double toX = Convert.ToDouble(mapctrl.Page.Session["FromX"]); double toY = Convert.ToDouble(mapctrl.Page.Session["FromY"]); double fromX = Convert.ToDouble(mapctrl.Page.Session["ToX"]); double fromY = Convert.ToDouble(mapctrl.Page.Session["ToY"]); string fromAddress = Convert.ToString(mapctrl.Page.Session["ToAddress"]); string toAddress = Convert.ToString(mapctrl.Page.Session["FromAddress"]); // solve the route and display if (fromX == 0.0 && toX == 0.0 && fromY == 0.0 && toY == 0.0) return; NetworkAnalystRouteResult result = bpi.SolveRoute(fromX, fromY, toX, toY, fromAddress, toAddress); bpi.DisplayDirections(result, fromAddress, toAddress); mapctrl.Page.Session["FromX"] = fromX; mapctrl.Page.Session["FromY"] = fromY; mapctrl.Page.Session["ToX"] = toX; mapctrl.Page.Session["ToY"] = toY; mapctrl.Page.Session["FromAddress"] = fromAddress; mapctrl.Page.Session["ToAddress"] = toAddress; break; case "NewDirections": string url = "Default.aspx?Reset=true"; mapctrl.Page.Response.Redirect(url, true); break; case "PrintVersion": MapFunctionality mf = (MapFunctionality)mapctrl.GetFunctionality(0); mapctrl.ImageFormat = ESRI.ArcGIS.ADF.Web.WebImageFormat.PNG8; ESRI.ArcGIS.ADF.Web.MapImage mi = mf.DrawExtent(mapctrl.Extent); MimeData md = mi.MimeData; mapctrl.Page.Session["mymimedata"] = md; mapctrl.Page.Response.Write("<script>window.open('" + "PrintPage.aspx', 'PrintWindow', 'dependent=yes ,width=800, height=500, status=no, toolbar=no, menubar=yes, location=no, resizable=yes, scrollbars=yes'); </script>"); break; } } #region IMapServerToolAction Members public void ServerAction(ToolEventArgs args) { throw new System.Exception("The method or operation is not implemented."); } #endregion } }