public static void SetSideStreets(this RouteSegment segment, RouterDb routerDb, uint vertex, uint previousEdge, uint nextVertex) { List <RouteSegmentBranch> routeSegmentBranchList = new List <RouteSegmentBranch>(); RoutingNetwork.EdgeEnumerator edgeEnumerator = routerDb.Network.GetEdgeEnumerator(vertex); while (edgeEnumerator.MoveNext()) { if ((int)edgeEnumerator.Id != (int)previousEdge && (int)edgeEnumerator.To != (int)nextVertex) { RoutingEdge current = edgeEnumerator.Current; RouterDb db = routerDb; EdgeData data = current.Data; int profile = (int)data.Profile; data = current.Data; int metaId = (int)data.MetaId; TagsCollectionBase profileAndMeta = db.GetProfileAndMeta((uint)profile, (uint)metaId); ICoordinate firstPoint = routerDb.Network.GetFirstPoint(current, edgeEnumerator.From); routeSegmentBranchList.Add(new RouteSegmentBranch() { Latitude = firstPoint.Latitude, Longitude = firstPoint.Longitude, Tags = profileAndMeta.ConvertFrom() }); } } if (routeSegmentBranchList.Count <= 0) { return; } segment.SideStreets = routeSegmentBranchList.ToArray(); }
public static void SetStop(this RouteSegment segment, ICoordinate coordinate, TagsCollectionBase tags) { segment.Points = new RouteStop[1] { new RouteStop() { Latitude = coordinate.Latitude, Longitude = coordinate.Longitude, Metrics = (RouteMetric[])null, Tags = tags.ConvertFrom() } }; }
public static void Set(this RouteSegment segment, RouteSegment previous, Profile profile, TagsCollectionBase tags, Speed speed) { segment.SetDistanceAndTime(previous, speed); segment.Tags = tags.ConvertFrom(); segment.Profile = profile.Name; }