コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }