private static void TestSearch() { Stopwatch stopwatch = Stopwatch.StartNew(); Stop from = Lines.SelectMany(l => l.Stops).First(s => Likes(s.Name, "Saint-Lazare")); // "Saint-Lazare", "Apollo" Stop to = Lines.SelectMany(l => l.Stops).First(s => Likes(s.Name, "Odysseum")); // "Pierre de Coubertin", "Lattes Centre", "Odysseum" Console.WriteLine("Setup ..."); RouteSearch routeSearch = new RouteSearch(); routeSearch.Settings.AllowBusLinks = true; routeSearch.Settings.AllowWalkLinks = false; routeSearch.Prepare(Lines); Console.WriteLine("Setup finished in {0} ms", stopwatch.ElapsedMilliseconds); //Console.WriteLine(); DateTime now = new DateTime(2016, 05, 27, 16, 24, 00); DateTime end = DateTime.Now + TimeSpan.FromSeconds(1000); List <RouteLink[]> routeLinks = new List <RouteLink[]>(); List <RouteSegment[]> routeSegments = new List <RouteSegment[]>(); stopwatch.Reset(); routeLinks = routeSearch.FindRoutes(from, to).ToList(); routeLinks.Sort((r1, r2) => (int)(r1.Sum(l => l.Weight) - r2.Sum(l => l.Weight))); foreach (RouteLink[] route in routeLinks) { routeSegments.AddRange(routeSearch.SimulateTimeStepsFrom(route, now, TimeSpan.Zero, TimeSpan.FromMinutes(15))); } routeSegments.Sort((r1, r2) => (int)(r1.Last().DateTo - r2.Last().DateTo).TotalSeconds); stopwatch.Stop(); Console.WriteLine("Results found in {0} ms", stopwatch.ElapsedMilliseconds); foreach (RouteSegment[] route in routeSegments.Take(5)) { Console.WriteLine(); foreach (RouteSegment segment in route) { Console.WriteLine(segment); } } Console.ReadKey(true); }
protected override void OnCreate(Android.OS.Bundle savedInstanceState) { base.OnCreate(savedInstanceState); ContentView = new RouteSearchView(this); SetContentView(ContentView); Client = new Routing(ContentView.MapView, null); Routing.ShowTurns = false; Routing.SetSourcesAndElements(this); Search = new RouteSearch(ContentView.MapView, (ContentView as RouteSearchView).BaseLayer); MapListener = new RouteMapEventListener(); SetOnlineMode(); ContentView.HidePackageDownloadButtons(); }
public override void ViewDidLoad() { base.ViewDidLoad(); ContentView = new RouteSearchView(); View = ContentView; Client = new Routing(ContentView.MapView, null); Routing.ShowTurns = false; Routing.SetSourcesAndElements(); Search = new RouteSearch(ContentView.MapView, (ContentView as RouteSearchView).BaseLayer); MapListener = new RouteMapEventListener(); SetOnlineMode(); ContentView.HidePackageDownloadButtons(); }
private async void DriveRouteSearchTest(string cityCode, string searchName, string searchEndName) { POISearchOption pst = new POISearchOption(); pst.SearchName = searchName; pst.CityCode = cityCode; POISearchOption ped = new POISearchOption(); ped.SearchName = searchEndName; ped.CityCode = cityCode; POISearchResult iopStart = await POISearch.PoiSearchWithOption(pst); //查起点坐标 POISearchResult iopEnd = await POISearch.PoiSearchWithOption(ped); //查终点坐标 if (iopStart.Erro != null || iopStart.POIs == null) { MessageDialog msd = new MessageDialog(iopStart.Erro.Message); this.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { msd.ShowAsync(); }); return; } if (iopEnd.Erro != null || iopEnd.POIs == null) { MessageDialog msd = new MessageDialog(iopStart.Erro.Message); this.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { msd.ShowAsync(); }); return; } POI poist = Enumerable.First <POI>(iopStart.POIs); POI poied = Enumerable.First <POI>(iopEnd.POIs); RouteSearchOption rgo = new RouteSearchOption(); rgo.X1 = poist.X; rgo.Y1 = poist.Y; rgo.X2 = poied.X; rgo.Y2 = poied.Y; RouteSearchResult rgcs = await RouteSearch.RouteSearchWithOption(rgo); if (rgcs.Erro != null) { MessageDialog msd = new MessageDialog("查询公交失败!" + rgcs.Erro.Message, "提示"); this.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { msd.ShowAsync(); }); return; } else { this.Dispatcher.RunAsync(CoreDispatcherPriority.High, () => { ALngLat lnglatst = new ALngLat(poist.X, poist.Y); AMarker poiMarkerst = new AMarker(); poiMarkerst.IconURI = new Uri("/Samples/qd.png", UriKind.Relative); poiMarkerst.LngLat = lnglatst; ATip tipst = new ATip(); tipst.Title = poist.Name; tipst.ContentText = poist.Address; poiMarkerst.TipFrameworkElement = tipst; map.Children.Add(poiMarkerst); ALngLat lnglated = new ALngLat(poied.X, poied.Y); AMarker poiMarkered = new AMarker(); poiMarkered.IconURI = new Uri("/Samples/zd.png", UriKind.Relative); poiMarkered.LngLat = lnglated; ATip tiped = new ATip(); tiped.Title = poied.Name; tiped.ContentText = poied.Address; poiMarkered.TipFrameworkElement = tiped; map.Children.Add(poiMarkered); APolyline pol = new APolyline(); pol.LineThickness = 5; ObservableCollection <ALngLat> lnglatRoute = new ObservableCollection <ALngLat>(); //线路坐标 IEnumerable <String> lnglatstring; IEnumerable <RouteSegment> rsegment = rgcs.Segment; foreach (RouteSegment rs in rsegment) { lnglatstring = rs.Coor.Split(new Char[] { ';' }); foreach (String ss in lnglatstring) { String[] lnglatds = ss.Split(new Char[] { ',' }); lnglatRoute.Add(new ALngLat(Double.Parse(lnglatds[0]), Double.Parse(lnglatds[1]))); } } pol.LngLats = lnglatRoute; markLayer.Children.Add(pol); map.SetOverlaysFitView(); }); } }