Создать маршрут из списка точек Gmap - PullRequest
0 голосов
/ 09 ноября 2018

В настоящее время я работаю над приложением Windows Forms, которое извлекает список PointLatLng с сервера и отображает их на карте.

Вот что мне удалось сделать до сих пор (Рисование линий между всеми точками):

private void DrawRoute()
{
       List<PointLatLng> inter = new List<PointLatLng>();
       //--- 
       GMap.NET.WindowsForms.GMapOverlay markers = new GMap.NET.WindowsForms.GMapOverlay("markers");
       //--- Creating the "Start" marker below
       GMap.NET.WindowsForms.GMapMarker marker_start = new GMap.NET.WindowsForms.Markers.GMarkerGoogle(
            new GMap.NET.PointLatLng(points[0].Lat, points[0].Lng),
            GMap.NET.WindowsForms.Markers.GMarkerGoogleType.arrow);
        marker_start.ToolTipText = "Start";

        //--- Center the map on the Start marker
        _Map.Position = new PointLatLng(points[0].Lat,points[0].Lng);
        _Map.MinZoom = 5;
        _Map.MaxZoom = 100;
        _Map.Zoom = 14;
        //---
        GMap.NET.WindowsForms.GMapOverlay polyOverlay = new GMap.NET.WindowsForms.GMapOverlay("polygons");
        for (int i=0; i<points.Count -2; i++)
        {
                anterior = false;
                //--- Adding a GmapPolygon with only 2 points (Drawing a line on the map)
                inter.Add(points[i]);
                inter.Add(points[i + 1]);
                GMap.NET.WindowsForms.GMapPolygon polygon = new GMap.NET.WindowsForms.GMapPolygon(inter, "mypolygon");
                polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
                polygon.Stroke = new Pen(Color.Red, 5);
                polyOverlay.Polygons.Add(polygon);
                _Map.Overlays.Add(polyOverlay);
                inter.Remove(inter[1]);
                inter.Remove(inter[0]);
        }
        //-- Creating the "Finish" marker
        GMap.NET.WindowsForms.GMapMarker marker_finish = new GMap.NET.WindowsForms.Markers.GMarkerGoogle(
            new GMap.NET.PointLatLng(p_anterior.Lat , p_anterior.Lng),
            GMap.NET.WindowsForms.Markers.GMarkerGoogleType.arrow);
        marker_finish.ToolTipText = "Finish";
        //--- Adding the "Start" and the "Finish" marker on map
        markers.Markers.Add(marker_start);
        markers.Markers.Add(marker_finish);            
}

Есть ли возможность для меня создать маршрут из этого списка точек с помощью библиотеки gmap

1 Ответ

0 голосов
/ 09 ноября 2018

Создать маршрут так же просто, как передать List<PointLatLng> в GMapRoute и добавить его в оверлей:

val route = new GMapRoute(points, "sample route");

route.Stroke = new Pen(GetRandomColor());
route.Stroke.Width = 4;
route.Stroke.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot;
route.Stroke.StartCap = LineCap.NoAnchor;
route.Stroke.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
route.Stroke.LineJoin = LineJoin.Round;

routes.Routes.Add(route);

В случае сомнений проверить образец на github .

...