Table of Contents

Source Code WebEditionSample GraphicLogoAdornmentLayer CS 100317.zip

GraphicLogoAdornmentLayer.cs

 using System.Collections.ObjectModel;  
 using System.Drawing;  
 using System.Drawing.Imaging;  
 using System.IO;  
 using ThinkGeo.MapSuite.Core;  
 
 namespace GraphicLogoAdornmentWeb  
 {  
     class GraphicLogoAdornmentLayer: AdornmentLayer  
     {  
         Bitmap logoImage;  
 
         public GraphicLogoAdornmentLayer()  
             : base()  
         {  
             Location = AdornmentLocation.LowerRight;  
         }  
 
         public Bitmap LogoImage  
         {  
             get { return logoImage; }  
             set { logoImage = value; }  
         }  
 
         protected override void DrawCore(GeoCanvas canvas, Collection<SimpleCandidate> labelsInAllLayers)  
         {  
             if (IsVisible)  
             {  
                 ScreenPointF screenPointF = GetDrawingLocation(canvas, logoImage.Width, logoImage.Height);  
 
                 // If the canvas happens to be using GDI+ then we can do an optimization and skip  
                 // the GeoImage.  Otherwise we go the longer route in the else statement  
                 if (canvas is GdiPlusGeoCanvas)  
                 {  
                     GdiPlusGeoCanvas gdiPlusGeoCanvas = canvas as GdiPlusGeoCanvas;  
                     gdiPlusGeoCanvas.DrawScreenImageWithoutScaling(logoImage, screenPointF.X + logoImage.Width * 0.5f, screenPointF.Y + logoImage.Height * 0.5f, DrawingLevel.LevelOne, 0, 0, 0);  
                 }  
                 else  
                 {  
                     //  Here we have to convert the stream to a TIFF to be used in the GeoImage  
                     Stream stream = new MemoryStream();  
                     logoImage.Save(stream, ImageFormat.Tiff);  
                     GeoImage geoImage = new GeoImage(stream);  
 
                     canvas.DrawScreenImageWithoutScaling(geoImage, screenPointF.X + logoImage.Width * 0.5f, screenPointF.Y + logoImage.Height * 0.5f, DrawingLevel.LevelOne, 0, 0, 0);  
                 }  
             }  
         }  
     }  
 }

TestForm.aspx.cs

 using System;  
 using System.Configuration;  
 using System.Drawing;  
 using ThinkGeo.MapSuite.Core;  
 using ThinkGeo.MapSuite.WebEdition;  
 
 namespace GraphicLogoAdornmentWeb  
 {  
     public partial class TestForm : System.Web.UI.Page  
     {  
         protected void Page_Load(object sender, EventArgs e)  
         {  
             if (!Page.IsPostBack)  
             {  
                 Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"));  
                 Map1.CurrentExtent = new RectangleShape(-136,52,-30,2);  
                 Map1.MapUnit = GeographyUnit.DecimalDegree;  
 
                 Map1.MapTools.OverlaySwitcher.Enabled = true;  
                 Map1.MapTools.MouseCoordinate.Enabled = true;  
 
                 //LayerOverlay for geographic layers such as countries.  
                 LayerOverlay layerOverlay = new LayerOverlay("WorldOverlay", false, TileType.SingleTile);  
                 layerOverlay.TransitionEffect = TransitionEffect.None;  
 
                 string shapePath = MapPath("App_Data
Countries02.shp");  
                 ShapeFileFeatureLayer Layer1 = new ShapeFileFeatureLayer(shapePath);  
                 Layer1.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1;  
                 Layer1.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;  
 
                 layerOverlay.Layers.Add("Countries", Layer1);  
 
                 //LayerOverlay for adornment layers such as GraphicLogoAdornmentLayer  
                 LayerOverlay adornmentOverlay = new LayerOverlay("adornemntOverlay", false, TileType.SingleTile);  
                 adornmentOverlay.TransitionEffect = TransitionEffect.None;  
 
                 string logoPath = MapPath("App_Data
logo.png");  
                 GraphicLogoAdornmentLayer graphicLogoAdornmentLayer = new GraphicLogoAdornmentLayer();  
                 graphicLogoAdornmentLayer.Location = AdornmentLocation.LowerLeft;  
                 graphicLogoAdornmentLayer.LogoImage = new Bitmap(logoPath);  
 
                 adornmentOverlay.Layers.Add(graphicLogoAdornmentLayer);  
 
                 Map1.CustomOverlays.Add(layerOverlay);  
                 Map1.CustomOverlays.Add(adornmentOverlay);  
 
 
              }  
         }  
     }  
 }  
 

TestForm.aspx

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestForm.aspx.cs" Inherits="GraphicLogoAdornmentWeb.TestForm" %>  
 
 <%@ Register Assembly="WebEdition" Namespace="ThinkGeo.MapSuite.WebEdition" TagPrefix="cc1" %>  
 <html xmlns="http://www.w3.org/1999/xhtml">  
 <head id="Head1" runat="server">  
     <link href="~/theme/default/samplepic/style.css" rel="stylesheet" type="text/css" />  
     <title>Graphic Logo Adornment Layer</title>  
 </head>  
 <body>  
     <form id="form1" runat="server">  
     <asp:ScriptManager ID="ScriptManager1" runat="server">  
     </asp:ScriptManager>  
     <cc1:Map ID="Map1" runat="server" Height="100%" Width="100%">  
     </cc1:Map>  
    <%-- <description:descriptionpanel ID="DescPanel" runat="server">  
         This sample displays a google map. Click buttons below to switch between different Google maps.  
         <br />  
         <br />  
         <asp:Button CssClass="btn" ID="btnRoad" runat="server" Text="Normal" OnClientClick="Map1.SetCurrentBackgroundMapType(G_NORMAL_MAP); return false;" />  
         <asp:Button CssClass="btn" ID="btnAerial" runat="server" Text="Hybrid" OnClientClick="Map1.SetCurrentBackgroundMapType(G_HYBRID_MAP); return false;" /><br />  
         <asp:Button CssClass="btn" ID="btnSatellite" runat="server" Text="Satellite" OnClientClick="Map1.SetCurrentBackgroundMapType(G_SATELLITE_MAP); return false;" />  
         <asp:Button CssClass="btn" ID="btnPhysical" runat="server" Text="Physical" OnClientClick="Map1.SetCurrentBackgroundMapType(G_PHYSICAL_MAP); return false;" />  
     </description:descriptionpanel>--%>  
     </form>  
 </body>  
 </html>