ThinkGeo Cloud
ThinkGeo UI Controls
ThinkGeo Open Source
Help and Support
External Resources
ThinkGeo Cloud
ThinkGeo UI Controls
ThinkGeo Open Source
Help and Support
External Resources
using System; using System.IO; public partial class Banner : System.Web.UI.UserControl { private const string PreStart = "<body oncontextmenu='return false;'><pre name='code' class='c-sharp:nocontrols'>"; private const string PreEnd = "</pre><link type='text/css' rel='stylesheet' href='../Resources/SyntaxHighlighter/SyntaxHighlighter.css'></link><script language='javascript' src='../Resources/SyntaxHighlighter/shCore.js'></script><script language='javascript' src='../Resources/SyntaxHighlighter/shBrushCSharp.js'></script><script language='javascript' src='../Resources/SyntaxHighlighter/shBrushXml.js'></script><script language='javascript'>dp.SyntaxHighlighter.HighlightAll('code');</script></body>"; 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; } }
using System; public partial class Footer : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { } }
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<DrawingFeaturesEventArgs>(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<Feature> features = new Collection<Feature>(); 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<FeatureSourceColumn> columns = shapeLayer.FeatureSource.GetColumns(); foreach (var item in columns) { data.Columns.Add(item.ColumnName); } Collection<Feature> 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; } }
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[] { "<!--Split-->" }, StringSplitOptions.RemoveEmptyEntries); reader.Close(); writer.WriteLine(script[0].Trim()); base.Render(writer); writer.WriteLine(script[1].Trim()); } } }
<%@ 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <link href="Resources/css.css" rel="stylesheet" type="text/css" /> <title>How to be interactive with map - Map Suite Web Sample application</title> <script type="text/javascript"> function callServer(param){ <%= ClientScript.GetCallbackEventReference(this, "param", "receiveServerData", null)%>; } function mapClientClick(e){ var map = Map1.GetOpenLayersMap(); var screenPoint = new OpenLayers.Pixel(e.xy.x, e.xy.y); var mapPoint = map.getLonLatFromViewPortPx(screenPoint); callServer('^'+mapPoint.lon + ','+mapPoint.lat); } function receiveServerData(columnValue){ var map = Map1.GetOpenLayersMap(); var layers = map.getLayersByName('DynamicOverlay'); if (layers.length > 0){ layers[0].mergeNewParams({extra:parseInt(Math.random() * 10)}); layers[0].redraw(true); } var table = document.getElementById('<%=GridView1.ClientID %>'); for (var i = 0; i < table.rows.length; i++) { if (table.rows[i].cells[0].innerText == columnValue) { table.rows[i].style.backgroundColor = "#2E9AFE"; } else { table.rows[i].style.backgroundColor = "white"; } } } </script> </head> <body onresize="resizeElementHeight()"> <form id="form1" runat="server"> <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; height: 90%;"> <tr> <td> <uc2:Banner ID="Header1" runat="server" /> </td> </tr> <tr> <td align="left"> <div id="TabContainer"> <a id="A1" runat="server" class="tab selected" href="#" onclick="this.className='tab selected';document.getElementById('A2').className='tab';document.getElementById('maptoggle').style.display='block';document.getElementById('sourcecode').style.display='none';"> Map View</a> <a id="A2" runat="server" class="tab" href="#" onclick="this.className='tab selected';document.getElementById('A1').className='tab';document.getElementById('sourcecode').style.display='block';document.getElementById('maptoggle').style.display='none';"> Source Code</a> </div> </td> </tr> <tr> <td align="center" style="height: 100%; width: 100%;"> <div id="MapContainer"> <div id="maptoggle"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <cc1:Map ID="Map1" runat="server" Height="100%" Width="100%"> </cc1:Map> <Instruction:InstructionPanel ID="FunctionPanel" runat="server" Width="292px"> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True" EnableModelValidation="True" Style="margin-top: 0px" Height="51px" Width="95%" OnRowDataBound="GridView1_RowDataBound"> <%--<Columns> <asp:BoundField HeaderText="Name" DataField="Name"> <ItemStyle HorizontalAlign="Center" /> </asp:BoundField> </Columns>--%> </asp:GridView> </Instruction:InstructionPanel> </div> <div id="sourcecode" style="display: none;"> <iframe height="100%" width="100%" id="sourcepage" runat="server" src="Sample.aspx.htm"> </iframe> </div> </div> </td> </tr> <tr> <td> <uc1:Footer ID="Footer1" runat="server" /> </td> </tr> </table> </form> </body> <script type="text/javascript"> function resizeElementHeight() { var height = 0; var body = window.document.body; if (window.innerHeight) { height = window.innerHeight; } else if (body.parentElement.clientHeight) { height = body.parentElement.clientHeight; } else if (body && body.clientHeight) { height = body.clientHeight; } document.getElementById('MapContainer').style.height = ((height - 170) + "px"); } var alreadyrun = 0 if (document.addEventListener) document.addEventListener("DOMContentLoaded", function () { alreadyrun = 1; resizeElementHeight() }, false) else if (document.all && !window.opera) { document.write('<script type="text/javascript" id="contentloadtag" defer="defer" src="javascript:void(0)"><\/script>') var contentloadtag = document.getElementById("contentloadtag") contentloadtag.onreadystatechange = function () { if (this.readyState == "complete") { alreadyrun = 1 resizeElementHeight() } } } window.onload = function () { setTimeout("if (!alreadyrun) resizeElementHeight()", 0) } </script> </html>