Пример #1
0
        private void MapViewMapSingleTap(object sender, UIGestureRecognizer e)
        {
            CGPoint    location = e.LocationInView(View);
            PointShape position = ExtentHelper.ToWorldCoordinate(mapView.CurrentExtent, (float)location.X, (float)location.Y, (float)View.Frame.Width, (float)View.Frame.Height);

            routingLayer.Routes.Clear();
            if (firstClick)
            {
                routingLayer.StartPoint = position;
                firstClick = false;
            }
            else
            {
                routingLayer.EndPoint = position;
                firstClick            = true;
            }

            routingLayer.Routes.Clear();
            if (routingLayer.StartPoint != null && routingLayer.EndPoint != null)
            {
                RoutingResult routingResult = routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.EndPoint);
                routingLayer.Routes.Add(routingResult.Route);
                ShowTurnByTurnDirections(routingResult.RouteSegments, routingResult.Features);
            }

            layerOverlay.Refresh();
        }
Пример #2
0
        public void ShowRoute(MapPos startPos, MapPos stopPos)
        {
            // Run routing in background
            System.Threading.Tasks.Task.Run(() =>
            {
                RoutingResult result = Routing.GetResult(startPos, stopPos);

                // Update response in UI thread
                RunOnUiThread(() =>
                {
                    if (result == null)
                    {
                        ContentView.Banner.Show("Routing failed");
                        return;
                    }

                    string text = Routing.GetMessage(result);
                    ContentView.Banner.Show(text);


                    Routing.Show(result);

                    FeatureCollection collection = Routing.routeDataSource.GetFeatureCollection();
                    Search.FindAttractions(collection, (count) =>
                    {
                        text  = "Found " + count + " attractions. ";
                        text += "Click on one to find out more about it";
                        RunOnUiThread(delegate
                        {
                            ContentView.Banner.Show(text);
                        });
                    });
                });
            });
        }
Пример #3
0
        public string GetMessage(RoutingResult result)
        {
            string distance = "Your route is " + (int)(result.TotalDistance / 100) / 10f + "km";
            string time     = " (" + result.TotalTime.ConvertFromSecondsToHours() + ")";

            return(distance + time);
        }
        public void ShowRoute(MapPos startPos, MapPos stopPos)
        {
            // Run routing in background
            System.Threading.Tasks.Task.Run(() =>
            {
                long time = Java.Lang.JavaSystem.CurrentTimeMillis();

                RoutingResult result = Routing.GetResult(startPos, stopPos);

                // Update response in UI thread
                RunOnUiThread(() =>
                {
                    if (result == null)
                    {
                        Alert("Routing failed");
                        return;
                    }

                    Alert(Routing.GetMessage(result, time, Java.Lang.JavaSystem.CurrentTimeMillis()));

                    Color lineColor = new Color(Colors.ActionBar);
                    Routing.Show(result, lineColor);
                });
            });
        }
Пример #5
0
        private void btnRoute_Click(object sender, EventArgs e)
        {
            ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(@"..\..\SampleData\Austinstreets.shp");
            RoutingSource          routingSource = new RtgRoutingSource(@"..\..\SampleData\routeDataForFastest.rtg");
            RoutingEngine          routingEngine = new RoutingEngine(routingSource, featureSource);
            RoutingResult          routingResult = routingEngine.GetShortestPath(txtStartId.Text, txtEndId.Text);

            InMemoryFeatureLayer routingLayer = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            winformsMap1.Overlays["RoutingOverlay"].Lock.EnterWriteLock();
            try
            {
                routingLayer.InternalFeatures.Clear();
                foreach (Feature feature in routingResult.Features)
                {
                    routingLayer.InternalFeatures.Add(feature);
                }
            }
            finally
            {
                winformsMap1.Overlays["RoutingOverlay"].Lock.ExitWriteLock();
            }

            winformsMap1.Refresh();
        }
Пример #6
0
        private void btnFindBestRoute_Click(object sender, EventArgs e)
        {
            LayerOverlay overlay      = (LayerOverlay)winformsMap1.Overlays["RoutingOverlay"];
            RoutingLayer routingLayer = (RoutingLayer)overlay.Layers["RoutingLayer"];

            Stopwatch watch = new Stopwatch();

            watch.Start();
            RoutingResult routingResult = routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.StopPoints, int.Parse(txtIterations.Text));

            watch.Stop();
            // Render the route
            routingLayer.Routes.Clear();
            routingLayer.Routes.Add(routingResult.Route);
            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);

            routingLayer.StopPoints.Clear();
            foreach (PointShape stop in routingResult.OrderedStops)
            {
                routingLayer.StopPoints.Add(stop);
            }
            routingLayer.ShowStopOrder = true;
            txtTimeUsed.Text           = watch.ElapsedMilliseconds.ToString(CultureInfo.InvariantCulture) + " ms";
            txtDistance.Text           = routingResult.Distance.ToString(CultureInfo.InvariantCulture);
            winformsMap1.Refresh(overlay);
        }
        public void ShowRoute(MapPos startPos, MapPos stopPos)
        {
            // Run routing in background
            System.Threading.Tasks.Task.Run(() =>
            {
                long time = DateTime.Now.Millisecond;

                RoutingResult result = Routing.GetResult(startPos, stopPos);

                // Update response in UI thread
                InvokeOnMainThread(() =>
                {
                    if (result == null)
                    {
                        Alert("Routing failed");
                        return;
                    }

                    Alert(Routing.GetMessage(result, time, DateTime.Now.Millisecond));

                    Color darkGray = new Carto.Graphics.Color(50, 50, 50, 255);
                    Routing.Show(result, darkGray);
                });
            });
        }
Пример #8
0
        public void ShowRoute(MapPos startPos, MapPos stopPos)
        {
            // Run routing in background
            System.Threading.Tasks.Task.Run(() =>
            {
                long time = Java.Lang.JavaSystem.CurrentTimeMillis();

                RoutingResult result = Routing.GetResult(startPos, stopPos);

                // Update response in UI thread
                RunOnUiThread(() =>
                {
                    if (result == null)
                    {
                        Alert("Routing failed");
                        return;
                    }

                    Alert(Routing.GetMessage(result, time, Java.Lang.JavaSystem.CurrentTimeMillis()));

                    Color darkGray = new Carto.Graphics.Color(Android.Graphics.Color.DarkGray);
                    Routing.Show(result, darkGray);
                });
            });
        }
Пример #9
0
        public string GetMessage(RoutingResult result, long start, long current)
        {
            string distance    = "The route is " + (int)(result.TotalDistance / 100) / 10f + "km";
            string time        = "(" + result.TotalTime.ConvertFromSecondsToHours() + ")";
            string calculation = " | Calculation: " + (start - current) + " ms";

            return(distance + time + calculation);
        }
Пример #10
0
        protected Line CreatePolyline(RoutingResult result, Color color)
        {
            LineStyleBuilder builder = new LineStyleBuilder();

            builder.Color = color;
            builder.Width = 10;

            return(new Line(result.Points, builder.BuildStyle()));
        }
Пример #11
0
        private void ShowTheShortestPath(RoutingLayer routingLayer)
        {
            RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasWithOneWayRoad.rtg"));
            RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource);
            RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text);

            routingLayer.Routes.Clear();
            routingLayer.Routes.Add(routingResult.Route);
        }
Пример #12
0
        // Creates a line from GraphHopper response
        protected Line CreatePolyline(MapPos start, MapPos end, RoutingResult result)
        {
            LineStyleBuilder lineStyleBuilder = new LineStyleBuilder();

            lineStyleBuilder.Color = new Carto.Graphics.Color(Android.Graphics.Color.DarkGray);
            lineStyleBuilder.Width = 12;

            return(new Line(result.Points, lineStyleBuilder.BuildStyle()));
        }
Пример #13
0
        // Creates a line from GraphHopper response
        protected Line CreatePolyline(MapPos start, MapPos end, RoutingResult result, Color color)
        {
            LineStyleBuilder lineStyleBuilder = new LineStyleBuilder();

            lineStyleBuilder.Color = color;
            lineStyleBuilder.Width = 7;

            return(new Line(result.Points, lineStyleBuilder.BuildStyle()));
        }
Пример #14
0
        private void Route()
        {
            RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text);

            RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            routingLayer.Routes.Clear();
            routingLayer.Routes.Add(routingResult.Route);

            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);
        }
Пример #15
0
        // creates Nutiteq line from GraphHopper response
        protected Line createPolyline(MapPos start, MapPos end, RoutingResult result)
        {
            LineStyleBuilder lineStyleBuilder = new LineStyleBuilder();

            lineStyleBuilder.Color         = new Nutiteq.Graphics.Color(Android.Graphics.Color.DarkGray);
            lineStyleBuilder.LineJointType = LineJointType.LineJointTypeRound;
            lineStyleBuilder.StretchFactor = 2;
            lineStyleBuilder.Width         = 12;

            return(new Line(result.Points, lineStyleBuilder.BuildStyle()));
        }
Пример #16
0
        private void btnFindPath_Click(object sender, EventArgs e)
        {
            routingEngine.RoutingSource = routingSource;

            routingLayer.Routes.Clear();
            routingEngine.RoutingSource.Open();
            routingResult = routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.EndPoint);
            routingLayer.Routes.Add(routingResult.Route);

            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);
        }
Пример #17
0
        void cbmPrioritiy_SelectedIndexChanged(object sender, EventArgs e)
        {
            RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text);

            RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            routingLayer.Routes.Clear();
            routingLayer.Routes.Add(routingResult.Route);

            winformsMap1.CurrentExtent = new RectangleShape(-96.905564, 32.926216, -96.651506, 32.744942);
            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);
        }
Пример #18
0
        void cbmAlgorithm_SelectedIndexChanged(object sender, EventArgs e)
        {
            FeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp"));
            RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg"));
            RoutingEngine routingEngine = new RoutingEngine(routingSource, GetAlgorithm(), featureSource);
            RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text);

            RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            routingLayer.Routes.Clear();
            routingLayer.Routes.Add(routingResult.Route);

            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);
        }
Пример #19
0
        private void btnRoute_Click(object sender, EventArgs e)
        {
            RoutingSource          routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg"));
            ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp"));

            RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource);
            RoutingLayer  routingLayer  = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];
            RoutingResult routingResult = routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.EndPoint);

            routingLayer.Routes.Clear();
            routingLayer.Routes.Add(routingResult.Route);

            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);
        }
Пример #20
0
        private void btnRoute_Click(object sender, EventArgs e)
        {
            ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp"));
            RoutingSource          routingSource = new CustomRoutingSource(featureSource);
            RoutingEngine          routingEngine = new RoutingEngine(routingSource, featureSource);
            RoutingResult          routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text);

            RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            routingLayer.Routes.Clear();
            routingLayer.Routes.Add(routingResult.Route);

            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);
        }
Пример #21
0
        private void RenderPathBetweenPoints()
        {
            FeatureSource featureSource = new ShapeFileFeatureSource(@"..\..\SampleData\Austinstreets.shp");
            RoutingSource routingSource = new RtgRoutingSource(@"..\..\SampleData\Austinstreets.rtg");
            RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource);

            RoutingResult        routingResult = null;
            InMemoryFeatureLayer stopLayer     = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["StopOverlay"]).Layers["StopLayer"];

            if (stopLayer.InternalFeatures.Count > 2)
            {
                string startId = stopLayer.InternalFeatures[0].Id;
                string stopId  = stopLayer.InternalFeatures[1].Id;
                string endId   = stopLayer.InternalFeatures[2].Id;
                routingResult = routingEngine.GetRoute(startId, stopId);
                RoutingResult secondRoutingResult = routingEngine.GetRoute(stopId, endId);
                foreach (Feature item in secondRoutingResult.Features)
                {
                    routingResult.Features.Add(item);
                }
            }
            else
            {
                routingResult = routingEngine.GetRoute("4716", "9638");
            }
            //winformsMap1.Overlays["RoutingOverlay"].Lock.EnterWriteLock();
            //try
            //{
            InMemoryFeatureLayer inmemoryLayer = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            inmemoryLayer.InternalFeatures.Clear();

            foreach (Feature feature in routingResult.Features)
            {
                inmemoryLayer.InternalFeatures.Add(feature);
            }
            //}
            //finally
            //{
            //    winformsMap1.Overlays["RoutingOverlay"].Lock.ExitWriteLock();
            //}
            winformsMap1.Overlays["RoutingOverlay"].Lock.IsDirty = true;
            winformsMap1.Refresh();
        }
Пример #22
0
        public void Show(RoutingResult result, Color lineColor)
        {
            routeDataSource.Clear();

            startMarker.Visible = false;

            Line line = CreatePolyline(startMarker.Geometry.CenterPos, stopMarker.Geometry.CenterPos, result, lineColor);

            routeDataSource.Add(line);

            // Add instruction markers
            RoutingInstructionVector instructions = result.Instructions;

            for (int i = 0; i < instructions.Count; i++)
            {
                RoutingInstruction instruction = instructions[i];
                MapPos             position    = result.Points[instruction.PointIndex];
                CreateRoutePoint(position, instruction, routeDataSource);
            }
        }
Пример #23
0
        public void ShowRoute(MapPos startPos, MapPos stopPos)
        {
            // Run routing in background
            System.Threading.Tasks.Task.Run(() =>
            {
                RoutingResult result = Routing.GetResult(startPos, stopPos);

                InvokeOnMainThread(() =>
                {
                    if (result == null)
                    {
                        Alert("Routing failed. Have you downloaded offline package for the region?");
                        return;
                    }

                    Routing.Show(result);

                    Alert(Routing.GetMessage(result));
                });
            });
        }
Пример #24
0
        private void btnRoute_Click(object sender, EventArgs e)
        {
            RoutingSource routingSource = new RtgRoutingSource(@"..\..\SampleData\AustinStreetFromOleDb.rtg");
            RoutingEngine routingEngine = new RoutingEngine(routingSource, new DijkstraRoutingAlgorithm(), featureSource);
            RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text);

            RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            winformsMap1.Overlays["RoutingOverlay"].Lock.EnterWriteLock();
            try
            {
                routingLayer.Routes.Clear();
                routingLayer.Routes.Add(routingResult.Route);
            }
            finally
            {
                winformsMap1.Overlays["RoutingOverlay"].Lock.ExitWriteLock();
            }

            winformsMap1.Refresh();
        }
Пример #25
0
        public RoutingResult GetResult(MapPos startPos, MapPos stopPos)
        {
            MapPosVector poses = new MapPosVector();

            poses.Add(startPos);
            poses.Add(stopPos);

            RoutingRequest request = new RoutingRequest(Projection, poses);

            RoutingResult result = null;

            try
            {
                result = Service.CalculateRoute(request);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception calculating route: " + e.Message);
            }

            return(result);
        }
Пример #26
0
        public void Show(RoutingResult result)
        {
            routeDataSource.Clear();
            routeInstructionSource.Clear();

            var  color = new Color(0, 122, 255, 225);
            Line line  = CreatePolyline(result, color);

            routeDataSource.Add(line);

            // Add instruction markers
            RoutingInstructionVector instructions = result.Instructions;

            if (ShowTurns)
            {
                for (int i = 0; i < instructions.Count; i++)
                {
                    RoutingInstruction instruction = instructions[i];
                    MapPos             position    = result.Points[instruction.PointIndex];
                    CreateRoutePoint(position, instruction, routeInstructionSource);
                }
            }
        }
Пример #27
0
        public void ShowRoute(MapPos startPos, MapPos stopPos)
        {
            // Run routing in background
            System.Threading.Tasks.Task.Run(() =>
            {
                RoutingResult result = Routing.GetResult(startPos, stopPos);

                // Update response in UI thread
                RunOnUiThread(() =>
                {
                    if (result == null)
                    {
                        Alert("Routing failed");
                        return;
                    }

                    Alert(Routing.GetMessage(result));

                    Routing.Show(result);
                    RoutingComplete();
                });
            });
        }
Пример #28
0
        public void ShowRoute(MapPos startPos, MapPos stopPos)
        {
            // Run routing in background
            System.Threading.Tasks.Task.Run(() =>
            {
                long time = DateTime.Now.Millisecond;

                RoutingResult result = null;

                try
                {
                    result = Routing.GetResult(startPos, stopPos);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }

                // Update response in UI thread
                long now = DateTime.Now.Millisecond;

                InvokeOnMainThread(() =>
                {
                    if (result == null)
                    {
                        Alert("Routing failed. Have you downloaded offline package for the region?");
                        return;
                    }

                    Alert(Routing.GetMessage(result, time, now));

                    Color lineColor = new Color(0, 122, 255, 255);
                    Routing.Show(result, lineColor);
                });
            });
        }
Пример #29
0
        private void Route()
        {
            RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];

            avoidableFeatureIds.Clear();
            foreach (Feature feature in roadblocksLayer.InternalFeatures)
            {
                avoidableFeatureIds.Add(feature.Id);
            }

            routingLayer.Routes.Clear();
            RoutingResult routingResult = routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.EndPoint);

            if (routingResult.Features.Count == 0)
            {
                MessageBox.Show("No route exists!");
            }
            else
            {
                routingLayer.Routes.Add(routingResult.Route);
            }

            winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]);
        }
Пример #30
0
        private void MapView_SingleTap(object sender, SingleTapMapViewEventArgs e)
        {
            routingLayer.Routes.Clear();
            if (firstClick)
            {
                routingLayer.StartPoint = e.WorldPoint;
                firstClick = false;
            }
            else
            {
                routingLayer.EndPoint = e.WorldPoint;
                firstClick            = true;
            }

            routingLayer.Routes.Clear();
            if (routingLayer.StartPoint != null && routingLayer.EndPoint != null)
            {
                RoutingResult routingResult = routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.EndPoint);
                routingLayer.Routes.Add(routingResult.Route);
                ShowTurnByTurnDirections(routingResult.RouteSegments, routingResult.Features);
            }

            layerOverlay.Refresh();
        }
Пример #31
0
        // Creates a line from GraphHopper response
        protected Line CreatePolyline(MapPos start, MapPos end, RoutingResult result, Color darkGray)
        {
            LineStyleBuilder lineStyleBuilder = new LineStyleBuilder();
            lineStyleBuilder.Color = darkGray;
            lineStyleBuilder.Width = 12;

            return new Line(result.Points, lineStyleBuilder.BuildStyle());
        }
Пример #32
0
        public void Show(RoutingResult result, Color darkGray)
        {
            routeDataSource.Clear();

            startMarker.Visible = false;

            Line line = CreatePolyline(startMarker.Geometry.CenterPos, stopMarker.Geometry.CenterPos, result, darkGray);
            routeDataSource.Add(line);

            // Add instruction markers
            RoutingInstructionVector instructions = result.Instructions;

            for (int i = 0; i < instructions.Count; i++)
            {
                RoutingInstruction instruction = instructions[i];
                MapPos position = result.Points[instruction.PointIndex];
                CreateRoutePoint(position, instruction, routeDataSource);
            }
        }
Пример #33
0
        public string GetMessage(RoutingResult result, long start, long current)
        {
            string distance = "The route is " + (int)(result.TotalDistance / 100) / 10f + "km";
            string time = "(" + result.TotalTime.ConvertFromSecondsToHours() + ")";
            string calculation = " | Calculation: " + (current - start) + " ms";

            return distance + time + calculation;
        }
Пример #34
0
 void Done(RoutingResult result)
 {
     if (_rr != null)
         return;
     _rr = result;
     _completed = true;
     _done.Set ();
     if (_callback != null)
         _callback (this);
 }