BingRouteIsochroneDataProvider.CalculateIsochroneByTimeWithTraffic(RouteWaypoint, Int32, DateTime) Method
Calculates a time-based isochrone based on traffic information for the specified point in time.
Namespace: DevExpress.Xpf.Map
Assembly: DevExpress.Xpf.Map.v24.2.dll
NuGet Package: DevExpress.Wpf.Map
Declaration
public void CalculateIsochroneByTimeWithTraffic(
RouteWaypoint waypoint,
int maxTime,
DateTime dateTime
)
Parameters
Name | Type | Description |
---|---|---|
waypoint | RouteWaypoint | Specifies an origin point’s coordinates. |
maxTime | Int32 | Specifies the maximum travel time in which the isochrone polygon is calculated. The default measurement unit is second. Use the BingRouteIsochroneOptions.TimeUnit property to define the measurement unit. |
dateTime | DateTime | Specifies a point in time used to obtain the current or predictive traffic information. |
Remarks
You can specify the following parameters to calculate a time-based isochrone:
Example
The following code plots a polygon that shows the area that is accessible from the specified point. The size of the area depends on a given travel time (the time is equal to 10 minutes in the example below):
Create an InformationLayer object and add it to the MapControl.Layers collection.
Initialize the layer’s InformationLayer.DataProvider property with a BingRouteIsochroneDataProvider object.
Specify the provider’s BingKey property.
Call the provider’s
CalculateIsochroneByTimeWithTraffic
method to calculate an isochrone.
<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>
<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"
TimeUnit="Minute"/>
</dxm:BingRouteIsochroneDataProvider.IsochroneOptions>
</dxm:BingRouteIsochroneDataProvider>
</dxm:InformationLayer>
</dxm:MapControl>
</Grid>
</Window>
using DevExpress.Xpf.Map;
using System;
using System.Windows;
using System.Windows.Media;
namespace IsochroneMap {
public partial class MainWindow : Window {
private void Window_Loaded(object sender, RoutedEventArgs e) {
GeoPoint origin = new GeoPoint(42.3589935302734, -71.0586318969727);
isochroneProvider.CalculateIsochroneByTimeWithTraffic(new RouteWaypoint("Origin", origin), 10, new DateTime(2021, 05, 05, 15, 0, 0));
}
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 = 2 };
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();
}
}
}