private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { try { if (listBoxFiles.SelectedItems.Count > 0) { //get path of huawei file to process string path = $@"{folder}\{listBoxFiles.SelectedItems[0]}"; //go do work hp = new HuaweiParser(path); //interpret results lblDistance.Text = $@"Distance: {Convert.ToInt32(hp.TotalDistance).ToString()}m"; lblAscent.Text = $@"Ascent: {Convert.ToInt32(hp.Ascent).ToString()}m"; lblDescent.Text = $@"Descent: {Convert.ToInt32(hp.Descent).ToString()}m"; //duration TimeSpan time = TimeSpan.FromSeconds(hp.Duration); lblDuration.Text = $"Duration: {time:hh\\:mm\\:ss}"; //show track on map LoadHuaweiDataOntoMap(hp); } } catch (Exception exception) { Console.WriteLine(exception); MessageBox.Show(exception.Message); } }
private void LoadHuaweiDataOntoMap(HuaweiParser hp) { try { //create layer to store route GMapRoute line_layer = new GMapRoute("single_line") { Stroke = new Pen(Brushes.Blue, 4) }; GMapOverlay line_overlay = new GMapOverlay("route"); gMapControl1.Overlays.Clear(); //remove any previous routes on map line_overlay.Routes.Add(line_layer); gMapControl1.Overlays.Add(line_overlay); //add route points foreach (HuaweiDatumPoint point in hp.Data) { //start of section ignored, as track sometimes ends with 'rogue' start of section if (point.HasPosition && !point.startOfSection) { line_layer.Points.Add(new PointLatLng(point.latitude, point.longitude)); } } //To force the draw, you need to update the route gMapControl1.UpdateRouteLocalPosition(line_layer); //zoom to route gMapControl1.ZoomAndCenterRoute(line_layer); //mark start pos GeoCoordinate startPos = hp.Data.Where(x => x.HasPosition).FirstOrDefault().position; PointLatLng startMarker = new PointLatLng(startPos.Latitude, startPos.Longitude); GMapMarker marker = new GMarkerGoogle(startMarker, GMarkerGoogleType.green_big_go); line_overlay.Markers.Add(marker); //mark end pos GeoCoordinate endPos = hp.Data.Where(x => x.HasPosition && !x.startOfSection).LastOrDefault().position; PointLatLng endMarker = new PointLatLng(endPos.Latitude, endPos.Longitude); marker = new GMarkerGoogle(endMarker, GMarkerGoogleType.red_big_stop); line_overlay.Markers.Add(marker); } catch (Exception ex) { Console.WriteLine(ex.Message); } }