public AugmentedPlacemarks() { Mode = AugmentedMode.Explorer; mapData = MapDataHandler.FetchGraphData(); allPlacemarks = new List <GeoPlacemark>(); foreach (GeoPoint point in mapData["Placemarks"]) { allPlacemarks.Add(new GeoPlacemark(point)); } allPoints = mapData["AllPoints"]; pointsIndex = new Dictionary <int, int>(); pointsByID = new Dictionary <int, GeoGraphPoint>(); int index = 0; foreach (GeoPoint point in mapData["AllPoints"]) { pointsIndex.Add(point.ID, index++); } foreach (GeoPoint point in allPoints) { pointsByID.Add(point.ID, new GeoGraphPoint { ID = point.ID, Name = point.Name, Position = point.Position }); } currentPosition = new GeoCoordinate(); PrepareDistanceMatrix(); //FindShortestPath(pointsByID[-1460], pointsByID[-1508]); }
public void SwitchToNavigator(GeoPlacemark destination) { int nodeID = int.MaxValue; double tempDistance = double.PositiveInfinity, dummy; foreach (GeoPoint point in allPoints) { if ((dummy = LatLongMath.GetDistance(currentPosition, point.Position)) < tempDistance) { tempDistance = dummy; nodeID = point.ID; } } if (nodeID != int.MaxValue) { pathWay = FindShortestPath(pointsByID[nodeID], destination); } GeoPlacemark place = pathWay.ElementAt(0); place.Distance = LatLongMath.GetDistance(currentPosition, place.Position); place.Orientation = LatLongMath.GetCompassBearing(currentPosition, place.Position); Mode = AugmentedMode.Navigator; }
public void SwitchToExplorer() { UpdatePlacemarks(); pathWay = null; Mode = AugmentedMode.Explorer; }