ArcIMS_Geocoding_CSharp\Default.aspx.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 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.IMS.Carto; using ESRI.ArcGIS.ADF.Connection.IMS; using ESRI.ArcGIS.ADF.Web; using ESRI.ArcGIS.ADF.IMS.Carto.Layer; using ESRI.ArcGIS.ADF.IMS.Geocode; using System.Collections; using ESRI.ArcGIS.ADF.Web.Geometry; using ESRI.ArcGIS.ADF.IMS.Display.AcetateElement; using ESRI.ArcGIS.ADF.IMS.Display.Symbol; public partial class _Default : System.Web.UI.Page { private string appservername = "servername"; private int appserverport = 5300; private string servicename = "SanFrancisco"; private string geocodelayername = "streets"; private TCPConnection serverconnection; private MapService mapservice; private MapView mapview; private LayerCollection layercollection; protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Session.IsNewSession) { serverconnection = new TCPConnection(appservername, appserverport); serverconnection.ServiceName = servicename; mapservice = new MapService(serverconnection, new InitializationParameters(), true); mapview = mapservice.CreateMapView(); ESRI.ArcGIS.ADF.IMS.Carto.ImageDescriptor imgdesc = mapview.ImageDescriptor; imgdesc.Height = (int) ((Image1.Height).Value); imgdesc.Width = (int) ((Image1.Width).Value); layercollection = mapview.Layers; this.DrawMap(); this.DrawLegend(); Session.Add("sc", serverconnection); Session.Add("ms", mapservice); Session.Add("mv", mapview); } } else { serverconnection = Session["sc"] as TCPConnection; mapservice = Session["ms"] as MapService; mapview = Session["mv"] as MapView; layercollection = mapview.Layers; } } private void DrawMap() { mapview.Draw(); CartoImage cartoimage = mapview.Image; this.Image1.ImageUrl = cartoimage.Url; } private void DrawLegend() { Legend legend = mapview.Legend; legend.Height = (int)((Image2.Height).Value); legend.Width = (int)((Image2.Width).Value); legend.Draw(); CartoImage legendimage = legend.Image; this.Image2.ImageUrl = legendimage.Url; } private void ShowDebug(String message) { System.Diagnostics.Debug.WriteLine(message); } protected void Button1_Click(object sender, EventArgs e) { Layer layer = layercollection.FindByName(geocodelayername); FeatureLayer flayer = (FeatureLayer)layer; Geocoder geocoder = flayer.Geocoder; geocoder.MaxCandidates = Int32.Parse(DropDownList2.Text); geocoder.MinScore = Int32.Parse(DropDownList1.Text); ShowDebug(geocoder.Style); InputFieldCollection ifc = geocoder.InputFields; IEnumerator ie = ifc.GetEnumerator(); ie.Reset(); while (ie.MoveNext()) { InputField inf = (InputField) ie.Current; ShowDebug(inf.Description); ShowDebug(inf.ID); ShowDebug(inf.Label); } AddressValueCollection avc = new AddressValueCollection(); AddressValue av1 = new AddressValue("STREET", TextBox1.Text); AddressValue av2 = new AddressValue("ZONE", TextBox3.Text); avc.Add(av1); avc.Add(av2); FeatureTable ft = geocoder.Geocode(avc); AcetateLayer alayer = (AcetateLayer)layercollection.FindByName("mygeocodepoints"); if (ft.Rows.Count > 0) { if (alayer != null) { alayer.AcetateElements.Clear(); } else { alayer = this.CreateAcetateLayer("mygeocodepoints"); } IEnumerator ftrows = ft.Rows.GetEnumerator(); while (ftrows.MoveNext()) { DataRow dr = (DataRow)ftrows.Current; int ss = (int) dr["SCORE"]; string af = (string) dr["ADDRESSFOUND"]; ESRI.ArcGIS.ADF.IMS.Geometry.Point pnt = (ESRI.ArcGIS.ADF.IMS.Geometry.Point)dr["#SHAPE#"]; this.AddGeometry(pnt, alayer); } } else if (alayer != null) { alayer.AcetateElements.Clear(); layercollection.Remove(alayer); } IEnumerator ftcols = ft.Columns.GetEnumerator(); while (ftcols.MoveNext()){ DataColumn dc = (DataColumn)ftcols.Current; ShowDebug(dc.Caption); ShowDebug(dc.DataType.ToString()); } GridView1.DataSource = ft; GridView1.DataBind(); Label5.Text = "Number of Matches: " + ft.Rows.Count; Label6.Visible = true; this.DrawMap(); } private AcetateLayer CreateAcetateLayer(String AcetateName) { AcetateLayer alayer = new AcetateLayer(AcetateName); alayer.Name = AcetateName; alayer.Visible = true; layercollection.Add(alayer); mapview.Layers = layercollection; return alayer; } private void AddGeometry(ESRI.ArcGIS.ADF.IMS.Geometry.Geometry InputGeometry, AcetateLayer MyAcetateLayer) { AcetateElementCollection aec = MyAcetateLayer.AcetateElements; GeometryElement ge = new GeometryElement(AcetateUnits.Database); ge.Element = InputGeometry; SimpleMarkerSymbol sms = new SimpleMarkerSymbol(); sms.Color = System.Drawing.Color.SpringGreen; sms.Type = MarkerSymbolType.Star; sms.OutlineColor = System.Drawing.Color.Black; sms.Width = 24; ge.Symbol = sms; aec.Add(ge); } protected void Button2_Click(object sender, EventArgs e) { AcetateLayer alayer = (AcetateLayer)layercollection.FindByName("mygeocodepoints"); if (alayer != null) { alayer.AcetateElements.Clear(); layercollection.Remove(alayer); } GridView1.DataSource = null; GridView1.DataBind(); this.DrawMap(); } protected void TextBox1_TextChanged(object sender, EventArgs e) { } }