private async void ShowWayPointsAsync(object sender, ItemClickEventArgs e) { var route = (RouteClient)e.ClickedItem; Geolocator locator = new Geolocator(); locator.DesiredAccuracyInMeters = 1; BasicGeoposition point; var path2 = new List <Geopoint>(); var newRoute = new RouteClient() { RouteID = route.RouteID, Route = route.Route }; for (int i = 0; i < newRoute.Route.Count - 1; i++) { var cp1 = newRoute.Route[i]; var cp2 = newRoute.Route[i + 1]; point = new BasicGeoposition() { Latitude = converter.FromStringToDouble(cp1.Latitude), Longitude = converter.FromStringToDouble(cp1.Longitude) }; string speedString = Math.Abs(timeUtility.ComputeSpeed(cp1, cp2)).ToString(); string speed = speedString.Substring(0, 6); AddMarker(point, "Date: " + timeUtility.GetDate(cp1.CPDateTime) + "\n" + "Speed: " + speed + " m/s"); path2.Add(new Geopoint(point)); } var last = newRoute.Route[newRoute.Route.Count - 1]; point = new BasicGeoposition() { Latitude = converter.FromStringToDouble(last.Latitude), Longitude = converter.FromStringToDouble(last.Longitude) }; AddMarker(point, "Date: " + timeUtility.GetDate(last.CPDateTime) + "\n" + "Speed: 0 m/s"); path2.Add(new Geopoint(point)); MapRouteFinderResult routeResult = await MapRouteFinder.GetWalkingRouteFromWaypointsAsync(path2); if (routeResult.Status == MapRouteFinderStatus.Success) { if (PopupRouteInfo.IsOpen) { PopupRouteInfo.IsOpen = false; RouteListView.Items.Clear(); } if (PopupBeenHereInfo.IsOpen) { PopupBeenHereInfo.IsOpen = false; BeenHereListView.Items.Clear(); ButtonAutomationPeer peer = new ButtonAutomationPeer(PreviousRouteButton); IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider; invokeProv.Invoke(); } MapRouteView viewOfRoute = new MapRouteView(routeResult.Route); viewOfRoute.RouteColor = Colors.Yellow; viewOfRoute.OutlineColor = Colors.Black; MapControl1.Routes.Add(viewOfRoute); await MapControl1.TrySetViewBoundsAsync( routeResult.Route.BoundingBox, null, Windows.UI.Xaml.Controls.Maps.MapAnimationKind.None); } }