示例#1
0
        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);
            }
        }