Ejemplo n.º 1
0
        /// <summary>
        /// Initializing Controls
        /// </summary>
        private void InitControls()
        {
            try
            {
                // Вкладка №0
                TrackNameTextBox.Text = $"Test track - ({DateTime.Now:HH:mm:ss dd.MM.yy})";
                _track             = new ImitationTrack();
                _track.Author      = "User1";
                _track.Description = "Put here your description...";

                _pinStart = new Pushpin {
                    Content = "A"
                };                                         // Start marker
                _pinEnd = new Pushpin {
                    Content = "B"
                };                                         // End marker
                _pinCar = new Pushpin                      // A marker for playing a route
                {
                    Content    = "->",
                    Background = new SolidColorBrush(Color.FromRgb(53, 196, 53))
                };

                NewGpsDevices         = new ObservableRangeCollection <GpsDevice>();
                TrackPositions        = new ObservableRangeCollection <TrackPosition>();
                OsrmWayPointsPushpins = new ObservableRangeCollection <DraggablePin>();

                NewImitationTrackGpsDevicesDataGrid.ItemsSource = NewGpsDevices;
                TrackPositionsDataGrid.ItemsSource   = TrackPositions;
                WayPointsForOsrmDataGrid.ItemsSource = OsrmWayPointsPushpins;

                NewGpsDevices.Add(new GpsDevice(0)
                {
                    Imei = "000002245678915"
                });
                NewGpsDevices.Add(new GpsDevice(0)
                {
                    Imei = "444555678154689"
                });

                foreach (var item in TabControlItems.Items)
                {
                    _tabItemsIsValidCollection.Add(new bool());
                }

                Player.Timer.Tick += Timer_Tick;
                Player.PlayerSlider.ValueChanged += PlayerSlider_ValueChanged;
                TrackPositions.CollectionChanged += TrackPositions_CollectionChanged;
                Player.CurrentPosition            = 0;

                CommonData.DataContext = _track;
                TotalView.DataContext  = _track;
            }
            catch (Exception exc)
            {
                LogWindowControl.AddMessage(exc.ToString());
            }
        }
Ejemplo n.º 2
0
        private async Task InitAndDrowTrack(TrackPosition[] points)
        {
            TrackPositions.Clear();
            MapPolyline.Locations?.Clear();

            Player.CurrentPosition = 0;

            if (points == null || !points.Any())
            {
                LogWindowControl.AddMessage($"No data...");
                return;
            }

            TrackPositions.AddRange(points);

            if (points.Any())
            {
                foreach (var device in NewGpsDevices)
                {
                    device.TrackPositionsCount = TrackPositions.Count;
                }
            }

            if (!TrackPositions.Any())
            {
                foreach (var device in NewGpsDevices)
                {
                    device.TrackPositionsCount = 0;
                }
                return;
            }

            LogWindowControl.AddMessage($"Loaded {TrackPositions.Count} points.");

            LogWindowControl.AddMessage($"Drowing route...");

            MapPolyline.Locations = await ConvertTrackPositionsToLocations(TrackPositions);

            MainMap.Center = MapPolyline.Locations.FirstOrDefault();

            _pinStart.Location = MapPolyline.Locations.First();
            _pinEnd.Location   = MapPolyline.Locations.Last();
            _pinCar.Location   = MapPolyline.Locations.First();

            if (!MainMap.Children.Contains(_pinStart))
            {
                MainMap.Children.Add(_pinStart);
            }
            if (!MainMap.Children.Contains(_pinEnd))
            {
                MainMap.Children.Add(_pinEnd);
            }

            LogWindowControl.AddMessage($"Completed");

            CheckTabItems();
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Save/Export created track
 /// </summary>
 private void SaveCreatedTrack()
 {
     try
     {
         if (_track != null)
         {
             // TODO Put here you custum code
             throw new NotImplementedException("Need to create save/export implementation");
         }
     }
     catch (Exception exc)
     {
         LogWindowControl.AddMessage(exc.ToString());
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Building a route from Osrm data
        /// </summary>
        /// <param name="waypoints"></param>
        /// <returns></returns>
        private async Task GetDataFromOsrm(TrackPosition[] waypoints)
        {
            if (waypoints.Length > 1)
            {
                LogWindowControl.AddMessage($"Creation of a route (provider OSRM)");

                var newOsrmPositions = await _provider.CreateTrack(waypoints);

                await InitAndDrowTrack(newOsrmPositions);
            }
            else
            {
                LogWindowControl.AddMessage($"There are not enough points to build a route - you need at least 2 points");
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Clone track
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CloneTrackButton_OnClick(object sender, RoutedEventArgs e)
        {
            var result = MessageBox.Show($"Do you want to save the current track?", "Saving data", MessageBoxButton.OKCancel, MessageBoxImage.Information);

            if (result.Equals(MessageBoxResult.OK))
            {
                SaveCreatedTrack();
            }

            _track = _track.Clone() as ImitationTrack;

            if (_track != null)
            {
                _track.Name           = _track.Name += " Cloned at " + DateTime.Now.ToString("HH:mm:ss dd.MM.yyyy");
                TrackNameTextBox.Text = _track.Name;

                LogWindowControl.AddMessage($"The track was successfully cloned as { _track.Name }");
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Build a route based on Osrm
        /// </summary>
        /// <returns></returns>
        private async Task GetLoadOsrmTrack()
        {
            try
            {
                MapPolyline.Locations?.Clear(); // Delete the current route

                var trackPositions =
                    OsrmWayPointsPushpins.Select(
                        point => new TrackPosition {
                    Latitude = point.Location.Latitude, Longitude = point.Location.Longitude
                })
                    .ToArray();

                await GetDataFromOsrm(trackPositions);
            }
            catch (Exception exc)
            {
                LogWindowControl.AddMessage(exc.Message);
            }
        }