Skip to main content
You are viewing help content for a version that is no longer maintained/updated.
All docs
V21.1
  • BingRouteIsochroneDataProvider Class

    Allows you to use the Bing Maps service to calculate an isochrone and display it on the map. An isochrone shows an area reachable from a specific location.

    Namespace: DevExpress.Xpf.Map

    Assembly: DevExpress.Xpf.Map.v21.1.dll

    NuGet Package: DevExpress.Wpf.Map

    Declaration

    public class BingRouteIsochroneDataProvider :
        BingMapDataProviderBase

    Remarks

    Follow the steps below to calculate a route isochrone:

    You can also handle the IsochroneCalculated event to customize the appearance of the polygon that the BingRouteIsochroneDataProvider generates.

    The following code plots a polygon that shows an area accessible from the specified point:

    An isochrone map

    <Window
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:IsochroneMap"
            xmlns:dxm="http://schemas.devexpress.com/winfx/2008/xaml/map" 
            x:Class="IsochroneMap.MainWindow"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
        <Grid>
            <dxm:MapControl x:Name="mapControl">
                <dxm:ImageLayer>
                    <dxm:BingMapDataProvider BingKey="Insert your Bing key." 
                                                Kind="RoadLight" />
                </dxm:ImageLayer>
                <dxm:InformationLayer x:Name="infoLayer">
                    <dxm:BingRouteIsochroneDataProvider x:Name="isochroneProvider" 
                                                        BingKey="Insert your Bing key."
                                                        GenerateLayerItems="False"
                                                        IsochroneCalculated="OnIsochroneCalculated">
                        <dxm:BingRouteIsochroneDataProvider.IsochroneOptions>
                            <dxm:BingRouteIsochroneOptions Mode="Driving" 
                                                        DistanceUnit="Kilometer"/>
                        </dxm:BingRouteIsochroneDataProvider.IsochroneOptions>
                    </dxm:BingRouteIsochroneDataProvider>
                </dxm:InformationLayer>
            </dxm:MapControl>
        </Grid>
    </Window>
    
    using DevExpress.Xpf.Map;
    using System.Windows;
    using System.Windows.Media;
    
    namespace IsochroneMap {
        public partial class MainWindow : Window {
            public MainWindow() {
                InitializeComponent();
            }
    
            private void Window_Loaded(object sender, RoutedEventArgs e) {
                GeoPoint origin = new GeoPoint(42.3589935302734, -71.0586318969727);
                isochroneProvider.CalculateIsochroneByDistance(new RouteWaypoint("Origin", origin), 10);
            }
    
            private void OnIsochroneCalculated(object sender, BingRouteIsochroneCalculatedEventArgs e) {
                foreach (var polygon in e.CalculationResult.IsochroneResult.Polygons) {
                    MapPolyline item = new MapPolyline();
                    foreach (var points in polygon.Coordinates)
                        item.Points.Add(points);
                    item.StrokeStyle = new StrokeStyle { Thickness = 4 };
                    item.Stroke = Brushes.Red;
    
                    MapPushpin pushpin = new MapPushpin { Location = e.CalculationResult.IsochroneResult.Origin, Brush = Brushes.Red };
    
                    VectorLayer vectorLayer = new VectorLayer();
                    mapControl.Layers.Add(vectorLayer);
                    MapItemStorage storage = new MapItemStorage();
                    vectorLayer.Data = storage;
                    storage.Items.Add(item);
                    storage.Items.Add(pushpin);
                }
                mapControl.ZoomToFitLayerItems();
            }
        }
    }
    

    Implements

    See Also