Skip to main content
All docs
V24.1

BingTrafficIncidentDataProvider.TrafficIncidentCalculated Event

Occurs after the provider has received a list of traffic incidents.

Namespace: DevExpress.XtraMap

Assembly: DevExpress.XtraMap.v24.1.dll

NuGet Package: DevExpress.Win.Map

Declaration

public event BingTrafficIncidentCalculatedEventHandler TrafficIncidentCalculated

Event Data

The TrafficIncidentCalculated event's data class is BingTrafficIncidentCalculatedEventArgs. The following properties provide information specific to this event:

Property Description
Cancelled Gets a value indicating whether an asynchronous operation has been canceled. Inherited from AsyncCompletedEventArgs.
Error Gets a value indicating which error occurred during an asynchronous operation. Inherited from AsyncCompletedEventArgs.
RequestResult Returns results of a request to a web service for traffic incident information.
UserState Gets the unique identifier for the asynchronous task. Inherited from AsyncCompletedEventArgs.

The event data class exposes the following methods:

Method Description
RaiseExceptionIfNecessary() Raises a user-supplied exception if an asynchronous operation failed. Inherited from AsyncCompletedEventArgs.

Example

How to: Obtain and Display a List of Traffic Incidents

This example obtains a list of incidents in the specified area from the Bing Maps service and displays information about obtained incidents in a MemoEdit control.

A traffic incident map

  • Create an InformationLayer object and add it to the MapControl.Layers collection.

  • Initialize the layer’s DataProvider property with a BingTrafficIncidentDataProvider object.

  • Specify the provider’s BingKey property.

  • Call the provider’s RequestTrafficIncidents method to receive a list of incidents.

  • Handle the BingTrafficIncidentDataProvider.TrafficIncidentCalculated event to access the list of incidents and display incident-related information in a MemoEdit control.

using DevExpress.Map;
using DevExpress.XtraMap;
using System;
using System.Text;
using System.Windows.Forms;

namespace TrafficAndIncidents {
    public partial class Form1 : Form {

        private void Form1_Load(object sender, EventArgs e) {
            // Create a background image layer.
            ImageLayer imageLayer = new ImageLayer();
            mapControl1.Layers.Add(imageLayer);
            BingMapDataProvider provider = new BingMapDataProvider();
            imageLayer.DataProvider = provider;
            provider.BingKey = "Insert your Bing Key.";
            provider.Kind = BingMapKind.RoadLight;

            // Create an information layer.
            InformationLayer infoLayer = new InformationLayer();
            mapControl1.Layers.Add(infoLayer);

            // Create a BingTrafficIncidentDataProvider and assign it to the information layer.
            BingTrafficIncidentDataProvider trafficIncidentDataProvider = new BingTrafficIncidentDataProvider();
            infoLayer.DataProvider = trafficIncidentDataProvider;
            trafficIncidentDataProvider.BingKey = "Insert your Bing Key."
            BingTrafficIncidentSeverity incidentSeverity = BingTrafficIncidentSeverity.LowImpact | BingTrafficIncidentSeverity.Minor | BingTrafficIncidentSeverity.Moderate | BingTrafficIncidentSeverity.Serious;
            BingTrafficIncidentType incidentType = BingTrafficIncidentType.Accident | BingTrafficIncidentType.Construction | BingTrafficIncidentType.Miscellaneous
                                                    | BingTrafficIncidentType.Weather;
            // Request a list of incidents in the specified area.
            trafficIncidentDataProvider.RequestTrafficIncidents(new SearchBoundingBox( -115.338457, 36.268745, -114.988268, 36.1010376),
                                                                incidentSeverity,
                                                                incidentType);
            trafficIncidentDataProvider.TrafficIncidentCalculated += OnTrafficIncidentCalculated;
            infoLayer.DataRequestCompleted += OnDataRequestCompleted;
        }

        private void OnDataRequestCompleted(object sender, RequestCompletedEventArgs e) {
            // Call the ZoomToFitLayerItems method to zoom the map so that it displays all the obtained incidents.
            mapControl1.ZoomToFitLayerItems();
        }

        private void OnTrafficIncidentCalculated(object sender, BingTrafficIncidentCalculatedEventArgs e) {
            if (e.Cancelled) return;
            if (e.RequestResult.ResultCode != RequestResultCode.Success) {
                memoEdit1.Text = "Traffic incidents were not found for this area.";
                return;
            }
            StringBuilder resultList = new StringBuilder("");
            int resCounter = 1;
            foreach (BingTrafficIncidentResult resultInfo in e.RequestResult.IncidentResults) {
                resultList.Append(string.Format("Incident {0}:  \r\n", resCounter));
                resultList.Append(string.Format("Type: {0}\r\n", resultInfo.Type));
                resultList.Append(string.Format("Description: {0}\r\n", resultInfo.Description));
                resultList.Append(string.Format("Start Time: {0}\r\n", resultInfo.StartTime));
                resultList.Append(string.Format("End Time: {0}\r\n", resultInfo.EndTime));
                resultList.Append(string.Format("Lat: {0}, Lon: {1}\r\n", resultInfo.Point.Latitude, resultInfo.Point.Longitude));
                resultList.Append(string.Format("______________________________\r\n"));
                resCounter++;
            }
            memoEdit1.Text = resultList.ToString();
        }
    }
}
See Also