Source Code DesktopEditionSample NativeTabFileSupport CS 110524.zip
Banner.cs
using System;
using System.Diagnostics;
using System.IO;
using System.Management;
using System.Windows.Forms;
public partial class Banner : UserControl
{
public Banner()
{
InitializeComponent();
SetupBannerAd();
}
public void SetupBannerAd()
{
if (Process.GetCurrentProcess().ProcessName != "devenv")
{
adRotator.Url = new Uri(new DirectoryInfo(@"..\..\Resources\bannerad_offline.html").FullName);
if (IsNetworkAlive())
{
adsRotatorTimer.Start();
}
}
}
private static bool IsNetworkAlive()
{
ObjectQuery objectQuery = new ObjectQuery("select * from Win32_NetworkAdapter where NetConnectionStatus=2");
ManagementObjectSearcher searcher = null;
try
{
searcher = new ManagementObjectSearcher(objectQuery);
return (searcher.Get().Count > 0);
}
finally
{
if (searcher != null)
{
searcher.Dispose();
}
}
}
private void adsRotatorTimer_Tick(object sender, EventArgs e)
{
adRotator.Navigate("http://gis.thinkgeo.com/Default.aspx?tabid=640&random=" + Guid.NewGuid().ToString());
}
}
using System;
using System.Diagnostics;
using System.Windows.Forms;
using DisplayASimpleMap.Properties;
public partial class Footer : UserControl
{
public Footer()
{
InitializeComponent();
}
private void btnProductInformation_Click(object sender, EventArgs e)
{
Process.Start("http://gis.thinkgeo.com/Default.aspx?tabid=674");
}
private void btnProductInformation_Activate(object sender, EventArgs e)
{
btnProductInformation.Image = Resources.btn_active_map_suite_products;
}
private void btnProductInformation_Deactivate(object sender, EventArgs e)
{
btnProductInformation.Image = Resources.btn_inactive_map_suite_products;
}
private void btnSupportCenter_Click(object sender, EventArgs e)
{
Process.Start("http://gis.thinkgeo.com/supportcenter");
}
private void btnSupportCenter_Activate(object sender, EventArgs e)
{
btnSupportCenter.Image = Resources.btn_active_support_center;
}
private void btnSupportCenter_Deactivate(object sender, EventArgs e)
{
btnSupportCenter.Image = Resources.btn_inactive_support_center;
}
private void btnDiscussForum_Click(object sender, EventArgs e)
{
Process.Start("http://gis.thinkgeo.com/Support/DiscussionForums/tabid/143/afv/topicsview/aff/21/Default.aspx");
}
private void btnDiscussForum_Activate(object sender, EventArgs e)
{
btnDiscussForum.Image = Resources.btn_active_discussion_forums;
}
private void btnDiscussForum_Deactivate(object sender, EventArgs e)
{
btnDiscussForum.Image = Resources.btn_inactive_discussion_forums;
}
private void btnWiki_Click(object sender, EventArgs e)
{
Process.Start("http://wiki.thinkgeo.com/wiki/Map_Suite_Desktop_Edition");
}
private void btnWiki_Activate(object sender, EventArgs e)
{
btnWiki.Image = Resources.btn_active_thinkgeo_wiki;
}
private void btnWiki_Deactivate(object sender, EventArgs e)
{
btnWiki.Image = Resources.btn_inactive_thinkgeo_wiki;
}
private void btnContactUs_Click(object sender, EventArgs e)
{
Process.Start("http://gis.thinkgeo.com/Default.aspx?tabid=147");
}
private void btnContactUs_Activate(object sender, EventArgs e)
{
btnContactUs.Image = Resources.btn_active_contact_us;
}
private void btnContactUs_Deactivate(object sender, EventArgs e)
{
btnContactUs.Image = Resources.btn_inactive_contact_us;
}
}
Program.cs
using System;
using System.Windows.Forms;
namespace SourceDisplayASimpleMap
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Sample());
}
}
}
Sample.cs
using System;
using System.Windows.Forms;
using ThinkGeo.MapSuite.Core;
using ThinkGeo.MapSuite.DesktopEdition;
using System.Collections.ObjectModel;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
public partial class Sample : Form
{
Collection<Feature> editFeatures = new Collection<Feature>();
Collection<Feature> addFeatures = new Collection<Feature>();
Collection<Feature> deleteFeatures = new Collection<Feature>();
//original tab files.
private const string fileName = @"..\..\Data\USA.TAB";
public Sample()
{
InitializeComponent();
}
private void Sample_Load(object sender, EventArgs e)
{
winformsMap1.MapUnit = GeographyUnit.DecimalDegree;
winformsMap1.AdornmentOverlay.ShowLogo = true;
winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.GeographicColors.DeepOcean);
//load the tab file and set the styles.
TabFeatureLayer tabFeatureLayer = new TabFeatureLayer(fileName, TabFileReadWriteMode.ReadWrite);
tabFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.StandardColors.White, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green));
tabFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
tabFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City1;
tabFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.Canal1;
tabFeatureLayer.RequireIndex = false;
//create an InMemoryFeatureLayer to hold the selected feature. Style the layer so it appears to be highlighted.
InMemoryFeatureLayer highLightFeatureLayer = new InMemoryFeatureLayer();
highLightFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.PaleGreen, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green));
highLightFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
highLightFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City3;
highLightFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.Interstate3;
//Create our overlays, add our layers to the overlays, and add the overlays to the map.
LayerOverlay staticOverlay = new LayerOverlay();
staticOverlay.Layers.Add("TabFeatureLayer", tabFeatureLayer);
LayerOverlay highLightOverlay = new LayerOverlay();
highLightOverlay.Layers.Add("HighLightFeatureLayer", highLightFeatureLayer);
winformsMap1.Overlays.Add("StaticOverlay", staticOverlay);
winformsMap1.Overlays.Add("HighLightOverlay", highLightOverlay);
//zoom the map to the extent of the TabFeatureLayer.
tabFeatureLayer.Open();
winformsMap1.CurrentExtent = tabFeatureLayer.GetBoundingBox();
tabFeatureLayer.Close();
winformsMap1.Refresh();
}
private void BtnClick_Handle(object sender, EventArgs e)
{
Button button = sender as Button;
if (null != button)
{
switch (button.Name)
{
case "Mouse_Btn":
winformsMap1.TrackOverlay.TrackMode = TrackMode.None;
break;
case "Point_Btn":
winformsMap1.TrackOverlay.TrackMode = TrackMode.Point;
break;
case "Line_Btn":
winformsMap1.TrackOverlay.TrackMode = TrackMode.Line;
break;
case "Rectangle_Btn":
winformsMap1.TrackOverlay.TrackMode = TrackMode.Rectangle;
break;
case "Square_Btn":
winformsMap1.TrackOverlay.TrackMode = TrackMode.Square;
break;
case "Polygon_Btn":
winformsMap1.TrackOverlay.TrackMode = TrackMode.Polygon;
break;
case "Circle_Btn":
winformsMap1.TrackOverlay.TrackMode = TrackMode.Circle;
break;
case "Ellipse_Btn":
winformsMap1.TrackOverlay.TrackMode = TrackMode.Ellipse;
break;
case "Edit_Btn":
{
//add the selected feature into the EditOverlay and clear it from the highlightLayer.
InMemoryFeatureLayer highlightLayer = (InMemoryFeatureLayer)winformsMap1.FindFeatureLayer("HighLightFeatureLayer");
FeatureLayer tabFeatureLayer = winformsMap1.FindFeatureLayer("TabFeatureLayer");
foreach (Feature feature in highlightLayer.InternalFeatures)
{
winformsMap1.EditOverlay.EditShapesLayer.InternalFeatures.Add(feature);
tabFeatureLayer.FeatureIdsToExclude.Add(feature.Id);
}
winformsMap1.EditOverlay.CalculateAllControlPoints();
highlightLayer.InternalFeatures.Clear();
winformsMap1.Refresh();
}
break;
case "Delete_Btn":
{
//delete the selected features from the TabFileLayer.
InMemoryFeatureLayer highlightLayer = winformsMap1.FindFeatureLayer("HighLightFeatureLayer") as InMemoryFeatureLayer;
highlightLayer.Open();
Collection<Feature> deleteFeatures = highlightLayer.FeatureSource.GetAllFeatures(ReturningColumnsType.NoColumns);
FeatureLayer tabFeatureLayer = winformsMap1.FindFeatureLayer("TabFeatureLayer");
tabFeatureLayer.Open();
tabFeatureLayer.EditTools.BeginTransaction();
if (deleteFeatures.Count > 0)
{
foreach (Feature deleteFeature in deleteFeatures)
{
tabFeatureLayer.EditTools.Delete(deleteFeature.Id);
}
}
tabFeatureLayer.EditTools.CommitTransaction();
highlightLayer.InternalFeatures.Clear();
tabFeatureLayer.Close();
highlightLayer.Close();
winformsMap1.Refresh();
}
break;
default:
winformsMap1.TrackOverlay.TrackMode = TrackMode.None;
break;
}
}
}
private void Save_Btn_Click(object sender, EventArgs e)
{
//query the EditOverlay for edited features and query the TrackOverlay for new features.
Collection<Feature> editFeatures = winformsMap1.EditOverlay.EditShapesLayer.InternalFeatures;
Collection<Feature> newFeatures = winformsMap1.TrackOverlay.TrackShapeLayer.InternalFeatures;
FeatureLayer tabFeatureLayer = winformsMap1.FindFeatureLayer("TabFeatureLayer");
tabFeatureLayer.FeatureIdsToExclude.Clear();
tabFeatureLayer.Open();
tabFeatureLayer.EditTools.BeginTransaction();
//update all features that were in the EditOverlay.
if (editFeatures.Count > 0)
{
foreach (Feature editFeature in editFeatures)
{
tabFeatureLayer.EditTools.Update(editFeature);
}
}
//create all features that were in the TrackOverlayl.
if (newFeatures.Count > 0)
{
foreach (Feature newFeature in newFeatures)
{
tabFeatureLayer.EditTools.Add(newFeature);
}
}
tabFeatureLayer.EditTools.CommitTransaction();
tabFeatureLayer.Close();
//set the map back to normal mode. Clear all features from the EditOverlay and TrackOverlay.
winformsMap1.TrackOverlay.TrackMode = TrackMode.None;
winformsMap1.EditOverlay.EditShapesLayer.InternalFeatures.Clear();
winformsMap1.TrackOverlay.TrackShapeLayer.InternalFeatures.Clear();
winformsMap1.Refresh();
}
private void winformsMap1_MapClick(object sender, MapClickWinformsMapEventArgs e)
{
if (winformsMap1.TrackOverlay.TrackMode == TrackMode.None)
{
FeatureLayer tabFeatureLayer = winformsMap1.FindFeatureLayer("TabFeatureLayer");
if (null != tabFeatureLayer)
{
//Open the TabFeatureLayer and do a spatial query to get the features that contained the point you clicked.
tabFeatureLayer.Open();
Collection<Feature> selectedFeatures = tabFeatureLayer.QueryTools.GetFeaturesContaining(e.WorldLocation, ReturningColumnsType.NoColumns);
tabFeatureLayer.Close();
InMemoryFeatureLayer highlightLayer = (InMemoryFeatureLayer)winformsMap1.FindFeatureLayer("HighLightFeatureLayer");
highlightLayer.InternalFeatures.Clear();
//insert each selected feature into the highlightLayer.
foreach (Feature selectedFeature in selectedFeatures)
{
highlightLayer.InternalFeatures.Add(selectedFeature);
}
winformsMap1.Refresh(winformsMap1.Overlays["HighLightOverlay"]);
}
}
}
}