/// <summary>
/// 读取gpx文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
try
{
using (FileDialog dlg = new OpenFileDialog())
{
dlg.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory;
dlg.CheckPathExists = true;
dlg.CheckFileExists = false;
dlg.AddExtension = true;
dlg.DefaultExt = "gpx";
dlg.ValidateNames = true;
dlg.Title = "选择GPX文件";
dlg.Filter = "GPX文件 (*.gpx)|*.gpx|所有文件 (*.*)|*.*";
dlg.FilterIndex = 1;
dlg.RestoreDirectory = true;
if (dlg.ShowDialog() == DialogResult.OK)
{
var gpx = File.ReadAllText(dlg.FileName);
var r = MapControl.Manager.DeserializeGPX(gpx);
if (r != null)
{
var points = new List<PointLatLng>();
// 绘制gpx文件中的track
if (null != r.trk && r.trk.Length > 0)
{
foreach (var trk in r.trk)
{
foreach (var seg in trk.trkseg)
{
foreach (var p in seg.trkpt)
{
points.Add(new PointLatLng((double)p.lat, (double)p.lon));
}
}
var name = String.IsNullOrEmpty(trk.name) ? String.Empty : trk.name;
var rt = new AZMapRoute(points, name);
{
rt.Stroke = new Pen(Color.FromArgb(144, Color.Red))
{
Width = 5,
DashStyle = DashStyle.DashDot
};
}
_graphicLayer.Routes.Add(rt);
}
}
// 绘制gpx文件中的route
if (null != r.rte && r.rte.Length > 0)
{
foreach (var rte in r.rte)
{
foreach (var pt in rte.rtept)
{
points.Add(new PointLatLng((double)pt.lat, (double)pt.lon));
}
var name = String.IsNullOrEmpty(rte.name) ? String.Empty : rte.name;
var rt = new AZMapRoute(points, name);
{
rt.Stroke = new Pen(Color.FromArgb(144, Color.Red))
{
Width = 5,
DashStyle = DashStyle.DashDot
};
}
_graphicLayer.Routes.Add(rt);
}
}
MapControl.ZoomAndCenterRoutes(null);
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
|