Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
                });
            }
        }