How to: Calculate a Route by Addresses

  • 2 minutes to read

To send a route request, use the BingRouteDataProvider.CalculateRoute method. This method receives a list of RouteWaypoint objects as a parameter. Note that RouteWaypoint objects are created using the constructor that receives the waypoint description and a keyword that is used to search for a location on a map.

using DevExpress.XtraMap;
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace ZoomToFitOnRouteCalculated {
    public partial class Form1 : Form {
        const String yourBingKey = "Insert Your Key Here";

        public Form1() {
            InitializeComponent();
            imageProvider.BingKey = yourBingKey;
        }

        private void Form1_Load(object sender, EventArgs e) {
            // Create a new route provider.
            BingRouteDataProvider provider = new BingRouteDataProvider { BingKey = yourBingKey };
            informationLayer.DataProvider = provider;

            // Send a request and handle request result.
            provider.RouteCalculated += OnRouteCalculated;
            // Note that waypoints are created using address instead of the location.
            provider.CalculateRoute(new List<RouteWaypoint>() {
                new RouteWaypoint("New York", "Belmont Park, New York, USA"),
                new RouteWaypoint("Las Vegas", "Lorenzi Park, Las Vegas, USA")});
            splashScreenManager1.ShowWaitForm();
        }

        void OnRouteCalculated(object sender, BingRouteCalculatedEventArgs e) {
            SearchBoundingBox box = e.CalculationResult.RouteResults[0].BoundingBox;
            GeoPoint topLeft = new GeoPoint {
                Latitude = box.NorthLatitude,
                Longitude = box.WestLongitude
            };
            GeoPoint bottomRight = new GeoPoint {
                Latitude = box.SouthLatitude,
                Longitude = box.EastLongitude
            };
            mapControl.ZoomToRegion(topLeft, bottomRight, 0.4);
            splashScreenManager1.CloseWaitForm();
        }
    }
}