private void TrackingStatusChanged(object sender, RouteTrackerTrackingStatusChangedEventArgs e) { // Check if the tracking status has a location. if (e.TrackingStatus.DisplayLocation != null) { // Call the base method for LocationDataSource to update the location with the tracked (snapped to route) location. UpdateLocation(e.TrackingStatus.DisplayLocation); } }
private async void TrackingStatusUpdated(object sender, RouteTrackerTrackingStatusChangedEventArgs e) { TrackingStatus status = e.TrackingStatus; // Start building a status message for the UI. System.Text.StringBuilder statusMessageBuilder = new System.Text.StringBuilder("Route Status:\n"); // Check the destination status. if (status.DestinationStatus == DestinationStatus.NotReached || status.DestinationStatus == DestinationStatus.Approaching) { statusMessageBuilder.AppendLine("Distance remaining: " + status.RouteProgress.RemainingDistance.DisplayText + " " + status.RouteProgress.RemainingDistance.DisplayTextUnits.PluralDisplayName); statusMessageBuilder.AppendLine("Time remaining: " + status.RouteProgress.RemainingTime.ToString(@"hh\:mm\:ss")); if (status.CurrentManeuverIndex + 1 < _directionsList.Count) { statusMessageBuilder.AppendLine("Next direction: " + _directionsList[status.CurrentManeuverIndex + 1].DirectionText); } // Set geometries for progress and the remaining route. _routeAheadGraphic.Geometry = status.RouteProgress.RemainingGeometry; _routeTraveledGraphic.Geometry = status.RouteProgress.TraversedGeometry; } else if (status.DestinationStatus == DestinationStatus.Reached) { statusMessageBuilder.AppendLine("Destination reached."); // Set the route geometries to reflect the completed route. _routeAheadGraphic.Geometry = null; _routeTraveledGraphic.Geometry = status.RouteResult.Routes[0].RouteGeometry; // Navigate to the next stop (if there are stops remaining). if (status.RemainingDestinationCount > 1) { await _tracker.SwitchToNextDestinationAsync(); } else { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { // Stop the simulated location data source. MyMapView.LocationDisplay.DataSource.StopAsync(); }); } } await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { // Show the status information in the UI. MessagesTextBlock.Text = statusMessageBuilder.ToString(); }); }
private void TrackingStatusUpdated(object sender, RouteTrackerTrackingStatusChangedEventArgs e) { TrackingStatus status = e.TrackingStatus; // Start building a status message for the UI. System.Text.StringBuilder statusMessageBuilder = new System.Text.StringBuilder(); // Check the destination status. if (status.DestinationStatus == DestinationStatus.NotReached || status.DestinationStatus == DestinationStatus.Approaching) { statusMessageBuilder.AppendLine("Distance remaining: " + status.RouteProgress.RemainingDistance.DisplayText + " " + status.RouteProgress.RemainingDistance.DisplayTextUnits.PluralDisplayName); statusMessageBuilder.AppendLine("Time remaining: " + status.RouteProgress.RemainingTime.ToString(@"hh\:mm\:ss")); if (status.CurrentManeuverIndex + 1 < _directionsList.Count) { statusMessageBuilder.AppendLine("Next direction: " + _directionsList[status.CurrentManeuverIndex + 1].DirectionText); } // Set geometries for progress and the remaining route. _routeAheadGraphic.Geometry = status.RouteProgress.RemainingGeometry; _routeTraveledGraphic.Geometry = status.RouteProgress.TraversedGeometry; } else if (status.DestinationStatus == DestinationStatus.Reached) { statusMessageBuilder.AppendLine("Destination reached."); // Set the route geometries to reflect the completed route. _routeAheadGraphic.Geometry = null; _routeTraveledGraphic.Geometry = status.RouteResult.Routes[0].RouteGeometry; // Navigate to the next stop (if there are stops remaining). if (status.RemainingDestinationCount > 1) { _tracker.SwitchToNextDestinationAsync(); } else { // This is needed because measurement change events occur on a non-UI thread and this code accesses UI object. BeginInvokeOnMainThread(() => { // Stop the simulated location data source. _myMapView.LocationDisplay.DataSource.StopAsync(); }); } } // Show the status information in the UI. _statusMessage = statusMessageBuilder.ToString().TrimEnd('\n').TrimEnd('\r'); BeginInvokeOnMainThread(UpdateStatusText); }
private void TrackingStatusUpdated(object sender, RouteTrackerTrackingStatusChangedEventArgs e) { TrackingStatus status = e.TrackingStatus; // Start building a status message for the UI. System.Text.StringBuilder statusMessageBuilder = new System.Text.StringBuilder("Route Status:\n"); // Check if navigation is on route. if (status.IsOnRoute && !status.IsRouteCalculating) { // Check the destination status. if (status.DestinationStatus == DestinationStatus.NotReached || status.DestinationStatus == DestinationStatus.Approaching) { statusMessageBuilder.AppendLine("Distance remaining: " + status.RouteProgress.RemainingDistance.DisplayText + " " + status.RouteProgress.RemainingDistance.DisplayTextUnits.PluralDisplayName); statusMessageBuilder.AppendLine("Time remaining: " + status.RouteProgress.RemainingTime.ToString(@"hh\:mm\:ss")); if (status.CurrentManeuverIndex + 1 < _directionsList.Count) { statusMessageBuilder.AppendLine("Next direction: " + _directionsList[status.CurrentManeuverIndex + 1].DirectionText); } // Set geometries for progress and the remaining route. _routeAheadGraphic.Geometry = status.RouteProgress.RemainingGeometry; _routeTraveledGraphic.Geometry = status.RouteProgress.TraversedGeometry; } else if (status.DestinationStatus == DestinationStatus.Reached) { statusMessageBuilder.AppendLine("Destination reached."); // Set the route geometries to reflect the completed route. _routeAheadGraphic.Geometry = null; _routeTraveledGraphic.Geometry = status.RouteResult.Routes[0].RouteGeometry; MyMapView.LocationDisplay.IsEnabled = false; } } else { statusMessageBuilder.AppendLine("Off route!"); } Device.BeginInvokeOnMainThread(() => { // Show the status information in the UI. MessagesTextBlock.Text = statusMessageBuilder.ToString().TrimEnd('\n').TrimEnd('\r'); }); }
private void TrackingStatusUpdated(object sender, RouteTrackerTrackingStatusChangedEventArgs e) { TrackingStatus status = e.TrackingStatus; // Start building a status message for the UI. System.Text.StringBuilder statusMessageBuilder = new System.Text.StringBuilder(); // Check the destination status. if (status.DestinationStatus == DestinationStatus.NotReached || status.DestinationStatus == DestinationStatus.Approaching) { statusMessageBuilder.AppendLine("Distance remaining: " + status.RouteProgress.RemainingDistance.DisplayText + " " + status.RouteProgress.RemainingDistance.DisplayTextUnits.PluralDisplayName); statusMessageBuilder.AppendLine("Time remaining: " + status.RouteProgress.RemainingTime.ToString(@"hh\:mm\:ss")); if (status.CurrentManeuverIndex + 1 < _directionsList.Count) { statusMessageBuilder.AppendLine("Next direction: " + _directionsList[status.CurrentManeuverIndex + 1].DirectionText); } // Set geometries for progress and the remaining route. _routeAheadGraphic.Geometry = status.RouteProgress.RemainingGeometry; _routeTraveledGraphic.Geometry = status.RouteProgress.TraversedGeometry; } else if (status.DestinationStatus == DestinationStatus.Reached) { statusMessageBuilder.AppendLine("Destination reached."); // Set the route geometries to reflect the completed route. _routeAheadGraphic.Geometry = null; _routeTraveledGraphic.Geometry = status.RouteResult.Routes[0].RouteGeometry; // Navigate to the next stop (if there are stops remaining). if (status.RemainingDestinationCount > 1) { _tracker.SwitchToNextDestinationAsync(); } } _statusMessage = statusMessageBuilder.ToString().TrimEnd('\n').TrimEnd('\r'); // Update the status in the UI. RunOnUiThread(SetLabelText); }