0

我有这个函数可以从我的 Rtb 数据中获取经度和纬度(第一张图片):

// funkcja pobierająca szerokość i długość geograficzną w formacie dziesiętnym
    private Tuple<double, double>[] wsp_geograficzne(string[] lines)
    {
        return Array.ConvertAll(lines, line =>
        {
            string[] elems = line.Split(',');
            return new Tuple<double, double>(0.01*double.Parse(elems[1]), 0.01*double.Parse(elems[3]));
        });
    }

实时数据

这一行调用了上面的函数:

var data = wsp_geograficzne(richTextBox1.Lines);

这是一个示例,它在我的 OpenStreetMaps 上显示路线。

                    GMapOverlay routes = new GMapOverlay(gMapControl1, "routes");// Constructing object for Overlay
                    gMapControl1.Overlays.Add(routes);

                    List<PointLatLng> list = new List<PointLatLng>(); // The list of Coordinates to be plotted
                    list.Add(new PointLatLng(53.119149707703, 23.1447064876556));
                    list.Add(new PointLatLng(53.11963262556597, 23.1468522548676));
                    list.Add(new PointLatLng(53.1205276192621, 23.1460046768188));
                    list.Add(new PointLatLng(53.120701464779, 23.1463050842285));
                    list.Add(new PointLatLng(53.1200962217943, 23.1489872932434));
                    list.Add(new PointLatLng(53.1196970143107, 23.1489014625549));
                    list.Add(new PointLatLng(53.119439459128, 23.1490087509155));

                    GMapRoute r = new GMapRoute(list, "myroute"); // object for routing
                    r.Stroke.Width = 5;
                    r.Stroke.Color = Color.Blue;
                    routes.Routes.Add(r);
                    gMapControl1.ZoomAndCenterRoute(r);
                    gMapControl1.Zoom = 15;

它看起来像图片: 在 OpenStreetMap 上显示路线

我想在这张地图上显示我的数据“wsp_geograficzne”(wsp_geograficzne 包括经度和纬度)中的路线。我该怎么做?有什么方法可以让我从“wsp_geograficzne”创建列表数据吗?我尝试这样的事情:

List<PointLatLng> nowa = new List<PointLatLng>();
                   foreach (var p in data)
                   nowa.Add(p.Item1, p.Item2);

但它不起作用。我返回错误:错误 2 方法“添加”没有重载需要 2 个参数。

请帮忙 :)

4

1 回答 1

0

好的,我找到答案(从 rtb 取回 2 个值(经度和纬度)的新函数(经度和纬度以十进制表示):

// funkcja pobierająca szerokość i długość geograficzną w formacie dziesiętnym
    private Tuple<double, double>[] wsp_geograficzne(string[] lines)
    {
        return Array.ConvertAll(lines, line =>
        {
            string[] elems = line.Split(',');

            double we1 = 0.01 * double.Parse(elems[3], EnglishCulture);
            int stopnie1 = (int)we1;
            double minuty1 = ((we1 - stopnie1) * 100) / 60;
            double szerokosc_dziesietna = stopnie1 + minuty1;

            double we2 = 0.01 * double.Parse(elems[5], EnglishCulture);
            int stopnie2 = (int)we2;
            double minuty2 = ((we2 - stopnie2) * 100) / 60;
            double dlugosc_dziesietna = stopnie2 + minuty2;

            return new Tuple<double, double>(szerokosc_dziesietna, dlugosc_dziesietna);
        });
    }

这是在地图上显示路线的部分。

{
                    var data = wsp_geograficzne(richTextBox1.Lines);

                    List<PointLatLng> nowa = new List<PointLatLng>();
                    foreach (var p in data)
                    nowa.Add(new PointLatLng(p.Item1, p.Item2));

                    GMapOverlay routes = new GMapOverlay(gMapControl1, "routes");
                    gMapControl1.Overlays.Add(routes);

                    GMapRoute r = new GMapRoute(nowa, "myroute"); // object for routing
                    r.Stroke.Width = 9;
                    r.Stroke.Color = Color.Blue;
                    routes.Routes.Add(r);
                    gMapControl1.ZoomAndCenterRoute(r);
                    gMapControl1.Zoom = 16;

                }

如果有人对此部分有其他符号:

List<PointLatLng> nowa = new List<PointLatLng>();
                    foreach (var p in data)
                    nowa.Add(new PointLatLng(p.Item1, p.Item2));

请在这里给我看。

来自波兰的问候 :)。

于 2014-04-09T23:42:19.797 回答