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; }
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; }