====== Source Code WebEditionSample InteractWithMapPoints CS 120130.zip ====== ====Banner.ascx.cs==== using System; using System.IO; public partial class Banner : System.Web.UI.UserControl { private const string PreStart = "
";
    private const string PreEnd = "
"; private const string ErrorPageUrl = "~/Source Code Not Available in Beta.html"; protected void Page_Load(object sender, EventArgs e) { string filename = "Sample.aspx.cs"; string htmlFileName = filename.Replace(".cs", ".htm"); if (File.Exists(htmlFileName)) { return; } string text; try { using (StreamReader sr = new StreamReader(Server.MapPath(filename))) { text = sr.ReadToEnd(); } text = PreStart + text + PreEnd; using (StreamWriter sw = new StreamWriter(Server.MapPath(htmlFileName))) { sw.Write(text); } } catch { htmlFileName = ErrorPageUrl; } return; } }
====Footer.ascx.cs==== using System; public partial class Footer : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { } } ====Sample.aspx.cs==== using System; using System.Collections.ObjectModel; using System.Data; using System.Globalization; using System.Linq; using System.Text.RegularExpressions; using System.Web.UI; using System.Web.UI.WebControls; using ThinkGeo.MapSuite.Core; using ThinkGeo.MapSuite.WebEdition; public partial class Sample : System.Web.UI.Page, ICallbackEventHandler { private string columnValue = string.Empty; protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Map1.MapUnit = GeographyUnit.DecimalDegree; Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.StandardColors.White); Map1.OnClientClick = "mapClientClick"; WorldMapKitLayer worldLayer = new WorldMapKitLayer(); ShapeFileFeatureLayer shapeLayer = new ShapeFileFeatureLayer(Server.MapPath(@"/Data/FriscoHotels.shp")); shapeLayer.Open(); shapeLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimpleCircleStyle(GeoColor.StandardColors.Red, 12,GeoColor.StandardColors.Black,1); shapeLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; shapeLayer.DrawingFeatures += new EventHandler(shapeLayer_DrawingFeatures); Map1.StaticOverlay.Layers.Add("WorldMapLayer", worldLayer); Map1.DynamicOverlay.Layers.Add("ShapeLayer", shapeLayer); Map1.CurrentExtent = shapeLayer.GetBoundingBox(); DataTable data = GetDataTable(shapeLayer); GridView1.DataSource = data; GridView1.DataBind(); InMemoryFeatureLayer highLightLayer = new InMemoryFeatureLayer(); highLightLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimpleCircleStyle(GeoColor.FromHtml("#2E9AFE"), 13, GeoColor.StandardColors.Black, 2); highLightLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; Map1.DynamicOverlay.Layers.Add("HighLightLayer", highLightLayer); Map1.DynamicOverlay.TransitionEffect = TransitionEffect.Stretching; } } void shapeLayer_DrawingFeatures(object sender, DrawingFeaturesEventArgs e) { InMemoryFeatureLayer highLightLayer = (InMemoryFeatureLayer)Map1.DynamicOverlay.Layers["HighLightLayer"]; if (highLightLayer.InternalFeatures.Count > 0) { Feature feature = highLightLayer.InternalFeatures[0]; var featuresToRemove = e.FeaturesToDraw.Where(f => f.Id == feature.Id); if (featuresToRemove.Count() > 0) { e.FeaturesToDraw.Remove(featuresToRemove.ElementAt(0)); } } } public string GetCallbackResult() { return columnValue; } public void RaiseCallbackEvent(string eventArgument) { Collection features = new Collection(); ShapeFileFeatureLayer shapeLayer = (ShapeFileFeatureLayer)Map1.DynamicOverlay.Layers["ShapeLayer"]; shapeLayer.Open(); string columnName = shapeLayer.FeatureSource.GetColumns()[0].ColumnName; if (eventArgument.StartsWith("^")) { string[] lonLat = eventArgument.TrimStart('^').Split(','); float lon = 0; float lat = 0; if (float.TryParse(lonLat[0], NumberStyles.Number, CultureInfo.InvariantCulture, out lon) && float.TryParse(lonLat[1], NumberStyles.Number, CultureInfo.InvariantCulture, out lat)) { PointShape point = new PointShape(lon, lat); features = shapeLayer.QueryTools.GetFeaturesNearestTo(point, GeographyUnit.DecimalDegree, 1, new string[] { columnName }, 1, DistanceUnit.Kilometer); } } else { features = shapeLayer.QueryTools.GetFeaturesByColumnValue(columnName, eventArgument); } InMemoryFeatureLayer highLightLayer = (InMemoryFeatureLayer)Map1.DynamicOverlay.Layers["HighLightLayer"]; highLightLayer.InternalFeatures.Clear(); if (features.Count > 0) { highLightLayer.InternalFeatures.Add(features[0].Id, features[0]); columnValue = features[0].ColumnValues[columnName]; } } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { e.Row.Attributes.Add("onclick", "callServer('" + Server.HtmlDecode(e.Row.Cells[0].Text) + "')"); } private static DataTable GetDataTable(ShapeFileFeatureLayer shapeLayer) { DataTable data = new DataTable(); Collection columns = shapeLayer.FeatureSource.GetColumns(); foreach (var item in columns) { data.Columns.Add(item.ColumnName); } Collection features = shapeLayer.QueryTools.GetAllFeatures(ReturningColumnsType.AllColumns); foreach (var item in features) { DataRow row = data.NewRow(); foreach (var keyValuePaire in item.ColumnValues) { row[keyValuePaire.Key] = keyValuePaire.Value; } data.Rows.Add(row); } return data; } } ====InstructionsPanel.cs==== using System; using System.ComponentModel; using System.IO; using System.Web.UI.WebControls; namespace InteractWithMapPoints { // This class represents the "instructions" floating panel. [ToolboxItem(false)] public class InstructionPanel : Panel { protected override void OnPreRender(System.EventArgs e) { StreamReader reader = File.OpenText(Page.MapPath("~/Resources/InstructionsPanel/InstructionsPanel.js")); string script = reader.ReadToEnd(); reader.Close(); Page.ClientScript.RegisterClientScriptBlock(GetType(), "PanelScript", script, true); base.OnPreRender(e); } protected override void Render(System.Web.UI.HtmlTextWriter writer) { StreamReader reader = File.OpenText(Page.MapPath("~/Resources/InstructionsPanel/InstructionsPanel.htm")); string[] script = reader.ReadToEnd().Split(new string[] { "" }, StringSplitOptions.RemoveEmptyEntries); reader.Close(); writer.WriteLine(script[0].Trim()); base.Render(writer); writer.WriteLine(script[1].Trim()); } } } ====Sample.aspx==== <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Sample.aspx.cs" Inherits="Sample" %> <%@ Register Assembly="WebEdition" Namespace="ThinkGeo.MapSuite.WebEdition" TagPrefix="cc1" %> <%@ Register Src="Footer.ascx" TagName="Footer" TagPrefix="uc1" %> <%@ Register Src="Banner.ascx" TagName="Banner" TagPrefix="uc2" %> How to be interactive with map - Map Suite Web Sample application
<%-- --%>