User Tools

Site Tools


source_code_geocodersampleweb_addresslocator_cs.zip

Source Code GeocoderSampleWeb AddressLocator CS.zip

Default.aspx.cs

 using System;  
 using System.Collections.Generic;  
 using System.Collections.ObjectModel;  
 using System.Data;  
 using System.Globalization;  
 using System.Linq;  
 using System.Text;  
 using System.Web.UI.WebControls;  
 using ThinkGeo.MapSuite.Core;  
 using ThinkGeo.MapSuite.MapSuiteGeocoder;  
 using ThinkGeo.MapSuite.WebEdition;  
 
 namespace ThinkGeo.MapSuite.GeoCoderExamples  
 {  
     public partial class Default : System.Web.UI.Page  
     {  
         protected void Page_Load(object sender, EventArgs e)  
         {  
             if (!IsPostBack)  
             {  
                 // Initialize the map.  
                 Map1.MapUnit = GeographyUnit.DecimalDegree;  
                 Map1.CustomOverlays.Add(new WorldMapKitWmsWebOverlay("WMKOverlay"));  
                 Map1.CustomOverlays.Add(new SimpleMarkerOverlay("MarkerOverlay"));  
                 Map1.CurrentExtent = new RectangleShape(-88.3330001640625, 42.5966329101563, -86.9157638359375, 41.1629170898438);  
 
                 // Find result by default address.  
                 Collection<GeocoderMatch> matchedItems = SearchAddress(ddlGeoCoderDemoItems.SelectedValue);  
                 FillMarkers(matchedItems);  
                 FillResultTable(matchedItems);  
             }  
         }  
 
         protected void BtnSearch_Click(object sender, EventArgs e)  
         {  
             Collection<GeocoderMatch> matchedItems = new Collection<GeocoderMatch>();  
             if (ddlSearchType.SelectedIndex == 0)  
             {  
                 matchedItems = SearchAddress(ddlGeoCoderDemoItems.SelectedValue);  
             }  
             else  
             {  
                 matchedItems = SearchAddress(ddlReverseGeoCoderDemoItems.SelectedValue);  
             }  
 
             FillMarkers(matchedItems);  
             FillResultTable(matchedItems);  
         }  
 
         protected void BtnClear_Click(object sender, EventArgs e)  
         {  
             GridView1.DataSource = null;  
             GridView1.DataBind();  
 
             SimpleMarkerOverlay simpleMarkerOverlay = (SimpleMarkerOverlay)Map1.CustomOverlays["MarkerOverlay"];  
             simpleMarkerOverlay.Markers.Clear();  
         }  
 
         protected void GridView1_OnRowCommand(object sender, GridViewCommandEventArgs e)  
         {  
             if (e.CommandName == "Find")  
             {  
                 ImageButton imageButton = (ImageButton)e.CommandSource;  
                 TableCellCollection cells = ((GridViewRow)imageButton.Parent.Parent).Cells;  
 
                 string shapeWkt = cells[cells.Count|- 1].Text;  
                 if (!string.IsNullOrEmpty(shapeWkt))  
                 {  
                     BaseShape targetShape = BaseShape.CreateShapeFromWellKnownData(shapeWkt);  
 
                     PointShape targetWorldCenterPoint = targetShape as PointShape;  
                     if (targetWorldCenterPoint != null && targetWorldCenterPoint.X != 0)  
                     {  
                         Map1.ZoomTo(targetWorldCenterPoint, new ZoomLevelSet().ZoomLevel20.Scale);  
                     }  
                 }  
             }  
         }  
 
         private Collection<GeocoderMatch> SearchAddress(string text)  
         {  
             Collection<GeocoderMatch> results;  
             UsaGeocoder usaGeocoder = new UsaGeocoder(MapPath("~/App_Data/"), MatchMode.ExactMatch);  
             try  
             {  
                 usaGeocoder.Open();  
                 results = usaGeocoder.Match(text);  
             }  
             finally  
             {  
                 usaGeocoder.Close();  
             }  
 
             Collection<GeocoderMatch> searchResultItems = new Collection<GeocoderMatch>();  
             string searchType = ddlSearchType.SelectedIndex == 0 ? "Street" : string.Empty;  
             foreach (GeocoderMatch item in results)  
             {  
                 if (string.IsNullOrEmpty(searchType) ||  
                     item.NameValuePairs.ContainsKey(searchType))  
                 {  
                     // Add address marker to map.  
                     searchResultItems.Add(item);  
                 }  
             }  
             return searchResultItems;  
         }  
 
         private void FillMarkers(IEnumerable<GeocoderMatch> matches)  
         {  
             MultipointShape resultPoints = new MultipointShape();  
 
             SimpleMarkerOverlay simpleMarkerOverlay = (SimpleMarkerOverlay)Map1.CustomOverlays["MarkerOverlay"];  
             simpleMarkerOverlay.Markers.Clear();  
 
             foreach (GeocoderMatch matchItem in matches)  
             {  
                 PointShape point = new PointShape(matchItem.NameValuePairs["CentroidPoint"]);  
                 resultPoints.Points.Add(point);  
 
                 // Get the popup context.  
                 string popupContext = GetPopupContent(matchItem);  
                 CustomPopup popup = new CustomPopup("", point, popupContext);  
                 popup.BorderWidth = 1;  
                 popup.IsVisible = false;  
                 popup.AutoSize = true;  
 
                 Marker marker = new Marker(point) { WebImage = new WebImage("/Images/marker.png") };  
                 marker.Popup = popup;  
                 simpleMarkerOverlay.Markers.Add(marker);  
             }  
 
             if (resultPoints.Points.Count == 1)  
             {  
                 Map1.ZoomTo(resultPoints.Points[0], new ZoomLevelSet().ZoomLevel20.Scale);  
             }  
             else if (resultPoints.Points.Count > 1)  
             {  
                 Map1.CurrentExtent = resultPoints.GetBoundingBox();  
             }  
         }  
 
         private void FillResultTable(IList<GeocoderMatch> searchResultItems)  
         {  
             DataTable resultTable = new DataTable();  
             if (searchResultItems.Count > 0)  
             {  
                 foreach (var nameValuePair in searchResultItems[0].NameValuePairs)  
                 {  
                     DataColumn column = new DataColumn { ColumnName = nameValuePair.Key };  
                     resultTable.Columns.Add(column);  
                 }  
 
                 foreach (var searchResultItem in searchResultItems)  
                 {  
                     DataRow row = resultTable.NewRow();  
                     foreach (var nameValuePair in searchResultItem.NameValuePairs)  
                     {  
                         row[nameValuePair.Key] = nameValuePair.Value;  
                     }  
                     resultTable.Rows.Add(row);  
                 }  
             }  
 
             GridView1.DataSource = resultTable;  
             GridView1.DataBind();  
         }  
 
         private static string GetPopupContent(GeocoderMatch matchItem)  
         {  
             string[] streetkeyList = { "Street", "Zip", "State" };  
             StringBuilder keyValuesBuilder = new StringBuilder();  
 
             foreach (string item in streetkeyList)  
             {  
                 keyValuesBuilder.Append(string.Format(CultureInfo.InvariantCulture, "{0} ", matchItem.NameValuePairs[item]));  
             }  
             string headerText = keyValuesBuilder.ToString();  
 
             StringBuilder popupHtml = new StringBuilder("<table>");  
             popupHtml.Append(string.Format(CultureInfo.InvariantCulture, "<tr><td colspan='2' class='popupTitle noBoder'>{0}</td></tr>", headerText));  
             popupHtml.Append("<tr><td colspan='2' class='noBoder'><div class='hrLine'></div></td></tr>");  
 
             foreach (var pair in matchItem.NameValuePairs.Take(5))  
             {  
                 popupHtml.Append(string.Format("<tr class='popupText'><td class='noBoder'>{0} : </td><td class='noBoder'>{1}</td></tr>", pair.Key, pair.Value));  
             }  
             popupHtml.Append("</table>");  
             return popupHtml.ToString();  
         }  
     }  
 }  
 

Default.aspx

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ThinkGeo.MapSuite.GeoCoderExamples.Default" %>  
 
 <%@ Register Assembly="WebEdition" Namespace="ThinkGeo.MapSuite.WebEdition" TagPrefix="cc1" %>  
 <!DOCTYPE html>  
 <html xml:en-us">  
 <head id="Head1" runat="server">  
     <title>Chicago Address Locator</title>  
     <link href="Images/MapSuite.ico" rel="shortcut icon" type="Images/x-icon" />  
     <link href="Styles/style.css" rel="stylesheet" type="text/css" />  
     <script src="Scripts/jquery-1.10.2.js" type="text/javascript"></script>  
 </head>  
 <body>  
     <form id="form1" runat="server">  
     <asp:ScriptManager ID="ScriptManager1" runat="server">  
     </asp:ScriptManager>  
     <div id="container">  
         <div id="header">  
             <div id="left-header">  
                 <span id="header-mapsuite">Map Suite</span> <span id="header-title">Chicago Address Locator</span>  
             </div>  
         </div>  
         <div id="content-container">  
             <div id="left-content">  
                 <div id="left-content-container">  
                     <h4>  
                         Search Types:  
                     </h4>  
                     <asp:DropDownList ID="ddlSearchType" runat="server" Width="98%" onchange="JavaScript:selectChange(this);">  
                         <asp:ListItem Selected="True" Value="0">Geocoder</asp:ListItem>  
                         <asp:ListItem Value="1">Reverse Geocoder</asp:ListItem>  
                     </asp:DropDownList>  
                     <h4 id="lblSelectAddress">  
                         Select an Address:  
                     </h4>  
                     <div id="geocoderPanel">  
                         <span class="titleDescrition">(ex: '5300 N Winthrop Ave' etc.) </span>  
                         <asp:DropDownList ID="ddlGeoCoderDemoItems" runat="server" Width="98%">  
                             <asp:ListItem>5300 N Winthrop Ave</asp:ListItem>  
                             <asp:ListItem>1401 W Ainslie St</asp:ListItem>  
                             <asp:ListItem>1401 W Estes Ave</asp:ListItem>  
                             <asp:ListItem>7430 N Seeley Ave</asp:ListItem>  
                             <asp:ListItem>7400 N Greenview Ave</asp:ListItem>  
                             <asp:ListItem>1101 W Farwell Ave</asp:ListItem>  
                         </asp:DropDownList>  
                     </div>  
                     <div id="reverseGeoCoderPanel" style="display: none;">  
                         <span class="titleDescrition">(ex: '42.011431 -87.678457' etc.) </span>  
                         <asp:DropDownList ID="ddlReverseGeoCoderDemoItems" runat="server" Width="98%">  
                             <asp:ListItem>42.020431 -87.666757</asp:ListItem>  
                             <asp:ListItem>42.017069 -87.672102</asp:ListItem>  
                             <asp:ListItem>42.016106 -87.668558</asp:ListItem>  
                             <asp:ListItem>42.005451 -87.664937</asp:ListItem>  
                             <asp:ListItem>42.011431 -87.678457</asp:ListItem>  
                             <asp:ListItem>42.013912 -87.699847</asp:ListItem>  
                         </asp:DropDownList>  
                     </div>  
                     <div class="buttonRight">  
                         <asp:Button ID="BtnSearch" runat="server" Text="Locate" OnClick="BtnSearch_Click" />  
                         <asp:Button ID="BtnClear" runat="server" Text="Clear" OnClick="BtnClear_Click" />  
                     </div>  
                 </div>  
             </div>  
             <div id="toggle">  
                 <img id="collapse" alt="collapse" src="Images/collapse.gif" />  
             </div>  
             <div id="right-content">  
                 <asp:UpdatePanel ID="UpdatePanel1" runat="server">  
                     <ContentTemplate>  
                         <div id="mapContainer">  
                             <cc1:Map ID="Map1" runat="server" Width="100%" Height="100%" MapUnit="DecimalDegree">  
                             </cc1:Map>  
                         </div>  
                     </ContentTemplate>  
                     <Triggers>  
                         <asp:AsyncPostBackTrigger ControlID="BtnSearch" />  
                         <asp:AsyncPostBackTrigger ControlID="BtnClear" />  
                     </Triggers>  
                 </asp:UpdatePanel>  
                 <asp:UpdatePanel ID="UpdatePanel2" runat="server">  
                     <ContentTemplate>  
                         <div id="resultContainer">  
                             <div class="grid-contianer">  
                                 <asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_OnRowCommand">  
                                     <EmptyDataTemplate>  
                                         No match found  
                                     </EmptyDataTemplate>  
                                     <Columns>  
                                         <asp:TemplateField>  
                                             <ItemTemplate>  
                                                 <asp:ImageButton ID="Image1" runat="server" ImageUrl='/Images/find.png' CommandName="Find">  
                                                 </asp:ImageButton>  
                                             </ItemTemplate>  
                                         </asp:TemplateField>  
                                     </Columns>  
                                     <HeaderStyle CssClass="result-header" />  
                                 </asp:GridView>  
                             </div>  
                         </div>  
                     </ContentTemplate>  
                     <Triggers>  
                         <asp:AsyncPostBackTrigger ControlID="BtnSearch" />  
                         <asp:AsyncPostBackTrigger ControlID="BtnClear" />  
                     </Triggers>  
                 </asp:UpdatePanel>  
             </div>  
         </div>  
     </div>  
     <div id="footer">  
         <span id="coordinate"></span>  
     </div>  
     <script type="text/javascript" src="Scripts/ready-functions.js"></script>  
     </form>  
 </body>  
 </html>  
 
source_code_geocodersampleweb_addresslocator_cs.zip.txt · Last modified: 2015/09/09 03:33 by admin