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(); }
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(); }