Esempio n. 1
0
        void MyQueryPoiSearch_QueryCompleted(object sender, QueryCompletedEventArgs<Route> e)
        {
            if (e.Error == null)
            {
                var myRoute = e.Result;
                if (!_sourcePoi)
                {
                    _myMapRoute = new MapRoute(myRoute);
                    Mymap.AddRoute(_myMapRoute);
                    // time to destination
                    var time1 = myRoute.EstimatedDuration;
                    time.Text = "Duration: " + time1.ToString();

                    // total meters
                    Dispatcher.BeginInvoke(() =>
                    {
                        var meters = myRoute.LengthInMeters;
                        var kilometers = meters / 1000.0;
                        distance.Text = "Distance: " + kilometers.ToString(CultureInfo.InvariantCulture) + " Km";
                    });
                }
                else
                {
                    time.Text = "Duration: Unknown";
                    // total meters
                    Dispatcher.BeginInvoke(() =>
                    {
                        distance.Text = "Distance: Unknown";
                    });
                }


                routeNavDetails.Clear();
                var routeList = new List<DirectionsList>();
                if (!_sourcePoi)
                {
                    foreach (var leg in myRoute.Legs)
                    {
                        foreach (var maneuver in leg.Maneuvers)
                        {
                            var direction = new DirectionsList();
                            var det = new RouteDetails
                            {
                                instractions = maneuver.InstructionText,
                                coordinate =
                                    new GeoCoordinate(maneuver.StartGeoCoordinate.Latitude,
                                        maneuver.StartGeoCoordinate.Longitude),
                                distance = maneuver.LengthInMeters
                            };
                            routeNavDetails.Add(det);
                            var dist = maneuver.LengthInMeters / 1000.0;
                            var str = maneuver.InstructionText.ToUpper();
                            if (str.Contains("LEFT"))
                                direction.image = new BitmapImage(new Uri("/Assets/Navigation/turn-left.png", UriKind.Relative));
                            else if (str.Contains("RIGHT"))
                                direction.image = new BitmapImage(new Uri("/Assets/Navigation/turn-right.png", UriKind.Relative));
                            else if (str.Contains("HEAD"))
                                direction.image = new BitmapImage(new Uri("/Assets/start.png", UriKind.Relative));
                            else if (str.Contains("YOU HAVE"))
                                direction.image = new BitmapImage(new Uri("/Assets/finish.png", UriKind.Relative));
                            else if (str.Contains("TRAFFIC CIRCLE"))
                                direction.image = new BitmapImage(new Uri("/Assets/Navigation/trafficcircle.png", UriKind.Relative));
                            direction.distance = dist.ToString(CultureInfo.InvariantCulture) + " Km";
                            direction.direction = maneuver.InstructionText;
                            direction.geocoordinate = det.coordinate;
                            routeList.Add(direction);
                        }
                    }
                }
                if (_getIndoornav)
                {
                    if (Mymap.Layers.Contains(indoorLayer))
                    {
                        Mymap.Layers.Remove(indoorLayer);
                    }



                    if (_poisByBuilding != null)
                    {
                        foreach (var obj1 in _poisByBuilding.pois)
                        {
                            if (obj1.puid.Equals(_floorPoiFrom))
                            {
                                if (obj1.is_building_entrance.Equals("true"))
                                {
                                    var direction = new DirectionsList
                                    {
                                        direction = "Get into Building",
                                        geocoordinate =
                                            new GeoCoordinate(double.Parse(obj1.coordinates_lat, CultureInfo.InvariantCulture),
                                                double.Parse(obj1.coordinates_lon, CultureInfo.InvariantCulture)),
                                        image =
                                            new BitmapImage(new Uri("/Assets/Navigation/entrance.png", UriKind.Relative))
                                    };
                                    routeList.Add(direction);

                                    _overlayFrom = new MapOverlay();
                                    var im = new Image
                                    {
                                        Source =
                                            new BitmapImage(new Uri("/Assets/Navigation/entrance.png", UriKind.Relative)),
                                        Width = 64,
                                        Height = 64
                                    };
                                    _overlayFrom.Content = im;
                                    _overlayFrom.GeoCoordinate = direction.geocoordinate; ;
                                    _overlayFrom.PositionOrigin = new Point(0.5, 1.0);
                                }
                                else
                                {
                                    var direction = new DirectionsList
                                    {
                                        direction = obj1.name,
                                        geocoordinate =
                                            new GeoCoordinate(double.Parse(obj1.coordinates_lat, CultureInfo.InvariantCulture),
                                                double.Parse(obj1.coordinates_lon, CultureInfo.InvariantCulture)),
                                        image = new BitmapImage(new Uri("/Assets/start.png", UriKind.Relative))
                                    };
                                    routeList.Add(direction);

                                    _overlayFrom = new MapOverlay();
                                    var im = new Image
                                    {
                                        Source = new BitmapImage(new Uri("/Assets/start.png", UriKind.Relative)),
                                        Width = 64,
                                        Height = 64
                                    };
                                    _overlayFrom.Content = im;
                                    _overlayFrom.GeoCoordinate = direction.geocoordinate; ;
                                    _overlayFrom.PositionOrigin = new Point(0.0, 1.0);
                                }
                            }
                        }

                        Mymap.SetView(set_coordinates, 20, MapAnimationKind.Parabolic);
                    }

                    if (_poisByBuilding != null)
                    {
                        foreach (var obj1 in _poisByBuilding.pois)
                        {
                            if (obj1.puid.Equals(_floorPoiTo))
                            {
                                var direction = new DirectionsList
                                {
                                    direction = obj1.name,
                                    geocoordinate =
                                        new GeoCoordinate(double.Parse(obj1.coordinates_lat, CultureInfo.InvariantCulture),
                                            double.Parse(obj1.coordinates_lon, CultureInfo.InvariantCulture)),
                                    image = new BitmapImage(new Uri("/Assets/finish.png", UriKind.Relative))
                                };
                                routeList.Add(direction);

                                _overlayTo = new MapOverlay();
                                var im = new Image
                                {
                                    Source = new BitmapImage(new Uri("/Assets/finish.png", UriKind.Relative))
                                };
                                _overlayTo.Content = im;
                                _overlayTo.GeoCoordinate = direction.geocoordinate; ;
                                _overlayTo.PositionOrigin = new Point(1.0, 1.0);
                            }
                        }
                    }
                    indoorLayer.Clear();

                    if (Mymap.Layers.Contains(indoorLayer))
                        Mymap.Layers.Remove(indoorLayer);
                    if (_floorPoiFromNumber == _floorPoiToNumber)
                    {
                        if (_selectedFloor == _floorPoiToNumber)
                        {
                            indoorLayer.Add(_overlayFrom);
                            indoorLayer.Add(_overlayTo);
                        }
                    }
                    else
                    {
                        if (_selectedFloor == _floorPoiFromNumber)
                        {
                            indoorLayer.Add(_overlayFrom);
                        }
                        else
                            if (_selectedFloor == _floorPoiToNumber)
                                indoorLayer.Add(_overlayTo);
                    }
                    Mymap.Layers.Add(indoorLayer);
                }
                //_sourcePoi = false;
                CreaterouteOverlays();
                RouteLLS.ItemsSource = routeList;
                RouteLLS.SelectionChanged += RouteLLS_SelectionChanged;
                MyQuery.Dispose();
            }

            calcroutestext.Visibility = Visibility.Collapsed;
            calcProgrBar.Visibility = Visibility.Collapsed;
            time.Visibility = Visibility.Visible;
            distance.Visibility = Visibility.Visible;

        }
Esempio n. 2
0
        void MyQuery_QueryCompleted(object sender, QueryCompletedEventArgs<Route> e)
        {
            if (e.Error == null)
            {
                var myRoute = e.Result;
                _myMapRoute = new MapRoute(myRoute);
                Mymap.AddRoute(_myMapRoute);
                // time to destination
                var time1 = myRoute.EstimatedDuration;
                time.Text = "Duration: " + time1.ToString();

                // total meters
                Dispatcher.BeginInvoke(() =>
                {
                    var meters = myRoute.LengthInMeters;
                    var kilometers = meters / 1000.0;
                    distance.Text = "Distance: " + kilometers.ToString(CultureInfo.InvariantCulture) + " Km";
                });
                routeNavDetails.Clear();
                var routeList = new List<DirectionsList>();
                foreach (var leg in myRoute.Legs)
                {
                    foreach (var maneuver in leg.Maneuvers)
                    {
                        var direction = new DirectionsList();
                        var det = new RouteDetails
                        {
                            instractions = maneuver.InstructionText,
                            coordinate =
                                new GeoCoordinate(maneuver.StartGeoCoordinate.Latitude,
                                    maneuver.StartGeoCoordinate.Longitude),
                            distance = maneuver.LengthInMeters
                        };
                        routeNavDetails.Add(det);
                        var dist = maneuver.LengthInMeters / 1000.0;
                        var str = maneuver.InstructionText.ToUpper();
                        if (str.Contains("LEFT"))
                            direction.image =
                                new BitmapImage(new Uri("/Assets/Navigation/turn-left.png", UriKind.Relative));
                        else if (str.Contains("RIGHT"))
                            direction.image =
                                new BitmapImage(new Uri("/Assets/Navigation/turn-right.png", UriKind.Relative));
                        else if (str.Contains("HEAD"))
                            direction.image = new BitmapImage(new Uri("/Assets/start.png", UriKind.Relative));
                        else if (str.Contains("YOU HAVE"))
                            direction.image = new BitmapImage(new Uri("/Assets/finish.png", UriKind.Relative));
                        else if (str.Contains("TRAFFIC CIRCLE"))
                            direction.image =
                                new BitmapImage(new Uri("/Assets/Navigation/trafficcircle.png", UriKind.Relative));
                        direction.distance = dist.ToString(CultureInfo.InvariantCulture) + " Km";
                        direction.direction = maneuver.InstructionText;
                        direction.geocoordinate = det.coordinate;
                        routeList.Add(direction);
                    }
                }
                CreaterouteOverlays();
                RouteLLS.ItemsSource = routeList;
                RouteLLS.SelectionChanged += RouteLLS_SelectionChanged;
                MyQuery.Dispose();
            }
            else
            {
                ApplicationBar.IsVisible = true;
                MoveViewWindow(30);
                directions_grid.Visibility = Visibility.Collapsed;
                stackpanelClose();
                MessageBox.Show("Cannot get directions to the selected poi!");
            }

            calcroutestext.Visibility = Visibility.Collapsed;
            calcProgrBar.Visibility = Visibility.Collapsed;
            time.Visibility = Visibility.Visible;
            distance.Visibility = Visibility.Visible;

        }