Exemple #1
0
        private void RedrawPoly()
        {
            mapContent.Clear();
            finalpoly = null;

            if (inMapPoly.Count == 0)
            {
                MView.DrawOnMapData();
                return;
            }
            ;
            if (inMapPoly.Count == 1)
            {
                NaviMapNet.MapPoint ms = new NaviMapNet.MapPoint(inMapPoly[0]);
                ms.BodyColor   = Color.Red;
                ms.BorderColor = Color.FromArgb(125, Color.Red);
                ms.SizePixels  = new Size(16, 16);
                ms.Name        = "Start";
                mapContent.Add(ms);
            }
            else
            {
                if (!cLR.Checked)
                {
                    NaviMapNet.MapPolygon mp = new NaviMapNet.MapPolygon(inMapPoly.ToArray());
                    mp.Width       = 2;
                    mp.Name        = "MyPoly";
                    mp.Color       = Color.FromArgb(125, Color.Red);
                    mp.BorderColor = Color.Red;
                    mapContent.Add(mp);
                    finalpoly = mp.Points;
                }
                else
                {
                    NaviMapNet.MapPolyLine ml = new NaviMapNet.MapPolyLine(inMapPoly.ToArray());
                    ml.Width       = 2;
                    ml.Name        = "MyLine";
                    ml.Color       = Color.FromArgb(125, Color.Maroon);
                    ml.BorderColor = Color.Maroon;
                    PolyLineBuffer.PolyLineBufferCreator.PolyResult pr = PolyLineBuffer.PolyLineBufferCreator.GetLineBufferPolygon(inMapPoly.ToArray(), (int)cD.Value, cR.Checked, cL.Checked, DistFunc);
                    NaviMapNet.MapPolygon mp = new NaviMapNet.MapPolygon(pr.polygon);
                    mp.Width       = 2;
                    mp.Name        = "MyPoly";
                    mp.Color       = Color.FromArgb(125, Color.Red);
                    mp.BorderColor = Color.Red;
                    mapContent.Add(mp);
                    mapContent.Add(ml);
                    finalpoly = mp.Points;
                };
            };
            MView.DrawOnMapData();
        }
Exemple #2
0
        private void loadroute(string filename)
        {
            System.IO.FileStream   fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
            System.IO.StreamReader sr = new StreamReader(fs);
            inMapPoly.Clear();

            if (System.IO.Path.GetExtension(filename).ToLower() == ".kml")
            {
                string   file = sr.ReadToEnd();
                int      si   = file.IndexOf("<coordinates>");
                int      ei   = file.IndexOf("</coordinates>");
                string   co   = file.Substring(si + 13, ei - si - 13).Trim().Replace("\r", " ").Replace("\n", " ").Replace("\t", " ");
                string[] arr  = co.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                if ((arr != null) && (arr.Length > 0))
                {
                    for (int i = 0; i < arr.Length; i++)
                    {
                        string[] xyz = arr[i].Split(new string[] { "," }, StringSplitOptions.None);
                        inMapPoly.Add(new PointF(float.Parse(xyz[0], System.Globalization.CultureInfo.InvariantCulture), float.Parse(xyz[1], System.Globalization.CultureInfo.InvariantCulture)));
                    }
                }
                ;
            }
            ;
            if (System.IO.Path.GetExtension(filename).ToLower() == ".gpx")
            {
                string file = sr.ReadToEnd();
                int    si   = 0;
                int    ei   = 0;
                si = file.IndexOf("<rtept", ei);
                ei = file.IndexOf(">", si);
                while (si > 0)
                {
                    string rtept = file.Substring(si + 7, ei - si - 7).Replace("\"", "").Replace("/", "").Trim();
                    int    ssi   = rtept.IndexOf("lat=");
                    int    sse   = rtept.IndexOf(" ", ssi);
                    if (sse < 0)
                    {
                        sse = rtept.Length;
                    }
                    string lat = rtept.Substring(ssi + 4, sse - ssi - 4);
                    ssi = rtept.IndexOf("lon=");
                    sse = rtept.IndexOf(" ", ssi);
                    if (sse < 0)
                    {
                        sse = rtept.Length;
                    }
                    string lon = rtept.Substring(ssi + 4, sse - ssi - 4);
                    inMapPoly.Add(new PointF(float.Parse(lon, System.Globalization.CultureInfo.InvariantCulture), float.Parse(lat, System.Globalization.CultureInfo.InvariantCulture)));

                    si = file.IndexOf("<rtept", ei);
                    if (si > 0)
                    {
                        ei = file.IndexOf(">", si);
                    }
                }
                ;
            }
            ;
            sr.Close();
            fs.Close();

            if (inMapPoly.Count > 0)
            {
                cLR.Checked = false;
                NaviMapNet.MapPolygon mp = new NaviMapNet.MapPolygon(inMapPoly.ToArray());
                MView.CenterDegrees = mp.Center;
            }
            ;
            RedrawPoly();
        }