====== Source Code DesktopEditionSample TravelingSalesmanProblem CS 100325.zip ====== ====Form1.cs==== using System; using System; using System.Diagnostics; using System.Globalization; using System.Windows.Forms; using ThinkGeo.MapSuite.Core; using ThinkGeo.MapSuite.DesktopEdition; using ThinkGeo.MapSuite.Routing; namespace TravelingSalesmanProblem { public partial class Form1 : Form { private static RoutingEngine routingEngine; private static RoutingSource routingSource; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { LayerOverlay overlay = (LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]; RoutingLayer routingLayer = (RoutingLayer)overlay.Layers["RoutingLayer"]; Stopwatch watch = new Stopwatch(); watch.Start(); //New API for GetRouteViaVisitstops wher you can have a start and an end point. RoutingResult routingResult = routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.EndPoint, routingLayer.StopPoints, int.Parse(txtIterations.Text)); watch.Stop(); // Render the route routingLayer.Routes.Clear(); routingLayer.Routes.Add(routingResult.Route); winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]); routingLayer.StopPoints.Clear(); foreach (PointShape stop in routingResult.OrderedStops) { routingLayer.StopPoints.Add(stop); } routingLayer.ShowStopOrder = true; txtTimeUsed.Text = watch.ElapsedMilliseconds.ToString(CultureInfo.InvariantCulture) + " ms"; txtDistance.Text = routingResult.Distance.ToString(CultureInfo.InvariantCulture); winformsMap1.Refresh(overlay); } private void Form1_Load(object sender, EventArgs e) { ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(@"..\..\data\Austinstreets.shp"); routingSource = new RtgRoutingSource(@"..\..\data\Austinstreets.rtg"); routingEngine = new RoutingEngine(routingSource, new AStarRoutingAlgorithm(), featureSource); RenderMap(); } private void RenderMap() { winformsMap1.MapUnit = GeographyUnit.DecimalDegree; winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#e6e5d1")); winformsMap1.CurrentExtent = new RectangleShape(-97.7319606824951, 30.2922109418945, -97.7002033277588, 30.269551640136); WorldMapKitWmsDesktopOverlay worldMapKitsOverlay = new WorldMapKitWmsDesktopOverlay(); winformsMap1.Overlays.Add(worldMapKitsOverlay); RoutingLayer routingLayer = new RoutingLayer(); LayerOverlay routingOverlay = new LayerOverlay(); winformsMap1.Overlays.Add("RoutingOverlay", routingOverlay); routingOverlay.Layers.Add("RoutingLayer", routingLayer); string[] startCoordinates = txtStart.Text.Split(','); routingLayer.StartPoint = new PointShape(double.Parse(startCoordinates[0], CultureInfo.InvariantCulture), double.Parse(startCoordinates[1], CultureInfo.InvariantCulture)); string[] endCoordinates = EndTxt.Text.Split(','); routingLayer.EndPoint = new PointShape(double.Parse(endCoordinates[0], CultureInfo.InvariantCulture), double.Parse(endCoordinates[1], CultureInfo.InvariantCulture)); foreach (object item in lsbPoints.Items) { string[] coordinate = item.ToString().Split(','); PointShape pointNeedVisit = new PointShape(double.Parse(coordinate[0], CultureInfo.InvariantCulture), double.Parse(coordinate[1], CultureInfo.InvariantCulture)); routingLayer.StopPoints.Add(pointNeedVisit); } routingLayer.ShowStopOrder = false; InMemoryFeatureLayer routingExtentLayer = new InMemoryFeatureLayer(); routingExtentLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = new AreaStyle(new GeoPen(GeoColor.SimpleColors.Green)); routingExtentLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; routingExtentLayer.InternalFeatures.Add(new Feature(new RectangleShape(-97.815409, 30.369949, -97.657999, 30.217922))); routingOverlay.Layers.Add("RoutingExtentLayer", routingExtentLayer); winformsMap1.Refresh(); } } } ====Program.cs==== using System; using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace TravelingSalesmanProblem { static class Program { /// /// The main entry point for the application. /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }