Back to Devexpress

BingRouteDataProvider.RouteCalculated Event

windowsforms-devexpress-dot-xtramap-dot-bingroutedataprovider.md

latest8.1 KB
Original Source

BingRouteDataProvider.RouteCalculated Event

Occurs when a route has been calculated.

Namespace : DevExpress.XtraMap

Assembly : DevExpress.XtraMap.v25.2.dll

NuGet Package : DevExpress.Win.Map

Declaration

csharp
public event BingRouteCalculatedEventHandler RouteCalculated
vb
Public Event RouteCalculated As BingRouteCalculatedEventHandler

Event Data

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

PropertyDescription
CalculationResultReturns a result of a route calculation.
CancelledGets a value indicating whether an asynchronous operation has been canceled. Inherited from AsyncCompletedEventArgs.
ErrorGets a value indicating which error occurred during an asynchronous operation. Inherited from AsyncCompletedEventArgs.
UserStateGets the unique identifier for the asynchronous task. Inherited from AsyncCompletedEventArgs.

The event data class exposes the following methods:

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

Example

csharp
private void OnRouteCalculated(object sender, BingRouteCalculatedEventArgs e) {
    RouteCalculationResult result = e.CalculationResult;
    if((result.RouteResults == null) ||
        (result.ResultCode == RequestResultCode.BadRequest)) {
        rtbResults.Text = "The Bing Route service does not work for this location.";
        return;
    }

    StringBuilder resultList = new StringBuilder("");

    if(result.IntermediatePoints != null) {
        resultList.Append(String.Format(" _________________________ \n"));

        for(int i = 0; i < e.CalculationResult.IntermediatePoints.Count; i++)
            resultList.Append(
                String.Format("Starting point {0}: {1} ({2})\n",
                i + 1,
                e.CalculationResult.IntermediatePoints[i].Description,
                e.CalculationResult.IntermediatePoints[i].Location)
            );
    }

    if((result.RouteResults != null) & (result.ResultCode == RequestResultCode.Success)) {

        for(int rnum = 0; rnum < e.CalculationResult.RouteResults.Count; rnum++) {
            resultList.Append(String.Format(" _________________________ \n"));
            resultList.Append(String.Format("Path {0}:\n", rnum + 1));
            resultList.Append(String.Format(
                "Distance: {0}\n",
                e.CalculationResult.RouteResults[rnum].Distance
            ));
            resultList.Append(String.Format(
                "Time: {0}\n",
                e.CalculationResult.RouteResults[0].Time
            ));

            if(e.CalculationResult.RouteResults[rnum].Legs != null) {
                int legNum = 1;
                foreach(BingRouteLeg leg in e.CalculationResult.RouteResults[rnum].Legs) {
                    resultList.Append(String.Format("\tLeg {0}:\n", legNum++));
                    resultList.Append(String.Format("\tDistance: {0}\n", leg.Distance));
                    resultList.Append(String.Format("\tTime: {0}\n", leg.Time));
                    if(leg.Itinerary != null) {
                        foreach(BingItineraryItem itineraryItem in leg.Itinerary) {
                            resultList.Append(String.Format(itineraryItem.Maneuver + "\n"));
                            resultList.Append(String.Format(
                                "\t\tLocation: {0}\n",
                                itineraryItem.Location
                            ));
                        }
                    }
                }
            }
        }
    }
    rtbResults.Text = resultList.ToString();
}
vb
Private Sub OnRouteCalculated(ByVal sender As Object, ByVal e As BingRouteCalculatedEventArgs)
    Dim result As RouteCalculationResult = e.CalculationResult
    If (result.RouteResults Is Nothing) OrElse (result.ResultCode = RequestResultCode.BadRequest) Then
        rtbResults.Text = "The Bing Route service does not work for this location."
        Return
    End If

    Dim resultList As New StringBuilder("")

    If result.IntermediatePoints IsNot Nothing Then
        resultList.Append(String.Format(" _________________________" & ControlChars.Lf))

        For i As Integer = 0 To e.CalculationResult.IntermediatePoints.Count - 1
            resultList.Append(String.Format("Starting point {0}: {1} ({2})" & ControlChars.Lf, i + 1, e.CalculationResult.IntermediatePoints(i).Description, e.CalculationResult.IntermediatePoints(i).Location))
        Next i
    End If

    If (result.RouteResults IsNot Nothing) And (result.ResultCode = RequestResultCode.Success) Then

        For rnum As Integer = 0 To e.CalculationResult.RouteResults.Count - 1
            resultList.Append(String.Format(" _________________________" & ControlChars.Lf))
            resultList.Append(String.Format("Path {0}:" & ControlChars.Lf, rnum + 1))
            resultList.Append(String.Format("Distance: {0}" & ControlChars.Lf, e.CalculationResult.RouteResults(rnum).Distance))
            resultList.Append(String.Format("Time: {0}" & ControlChars.Lf, e.CalculationResult.RouteResults(0).Time))

            If e.CalculationResult.RouteResults(rnum).Legs IsNot Nothing Then
                Dim legNum As Integer = 1
                For Each leg As BingRouteLeg In e.CalculationResult.RouteResults(rnum).Legs
                    resultList.Append(String.Format(ControlChars.Tab & "Leg {0}:" & ControlChars.Lf, legNum))
                    legNum += 1
                    resultList.Append(String.Format(ControlChars.Tab & "Distance: {0}" & ControlChars.Lf, leg.Distance))
                    resultList.Append(String.Format(ControlChars.Tab & "Time: {0}" & ControlChars.Lf, leg.Time))
                    If leg.Itinerary IsNot Nothing Then
                        For Each itineraryItem As BingItineraryItem In leg.Itinerary
                            resultList.Append(String.Format(itineraryItem.Maneuver & ControlChars.Lf))
                            resultList.Append(String.Format(ControlChars.Tab & ControlChars.Tab & "Location: {0}" & ControlChars.Lf, itineraryItem.Location))
                        Next itineraryItem
                    End If
                Next leg
            End If
        Next rnum
    End If
    rtbResults.Text = resultList.ToString()
End Sub

See Also

BingRouteDataProvider Class

BingRouteDataProvider Members

DevExpress.XtraMap Namespace