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