User Tools

Site Tools


source_code_desktopeditionsample_travelingsalesmanproblem_cs_100325.zip

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
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
source_code_desktopeditionsample_travelingsalesmanproblem_cs_100325.zip.txt · Last modified: 2015/09/09 03:32 by admin