| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Windows;
- using System.Windows.Media;
- using InABox.WPF;
- using net.sf.mpxj;
- using Syncfusion.UI.Xaml.Maps;
- namespace PRSDesktop;
- public enum MapViewType
- {
- Current,
- History
- }
- public class MapViewModel : DependencyObject
- {
-
- private readonly List<MapMarker> _markers = new();
- private readonly List<MapMarker> _waypoints = new();
- private MapMarker? _selected;
- public MapViewModel()
- {
- Markers = new ObservableCollection<MapMarker>();
- WayPoints = new ObservableCollection<Point>();
- }
- public ObservableCollection<MapMarker> Markers { get; }
- public ObservableCollection<Point> WayPoints { get; }
-
- static readonly DependencyProperty ViewProperty =
- DependencyProperty.Register(
- nameof(View),
- typeof(MapViewType),
- typeof(MapViewModel));
- public MapViewType View
- {
- get => (MapViewType)GetValue(ViewProperty);
- set
- {
- SetValue(ViewProperty, value);
- Refresh();
- }
- }
- public MapMarker Selected
- {
- get => _selected;
- set
- {
- _selected = value;
- Refresh();
- }
- }
- public void AddWayPoint(MapMarker waypoint)
- {
- _waypoints.Add(waypoint);
- }
- public void AddMarker(MapMarker marker, bool refresh = false)
- {
- _markers.Add(marker);
- if (refresh)
- Refresh();
- }
- public void Clear()
- {
- _selected = null;
- _markers.Clear();
- _waypoints.Clear();
- Refresh();
- }
- public void Refresh()
- {
- Markers.Clear();
- WayPoints.Clear();
- if (View == MapViewType.Current)
- {
- foreach (var marker in _markers)
- {
- marker.Background = new SolidColorBrush(marker == _selected ? Colors.Yellow : Colors.Orange);
- if (marker != _selected)
- Markers.Add(marker);
- }
- if (_selected != null)
- Markers.Add(_selected);
- }
- else if (_selected != null)
- {
- foreach (var waypoint in _waypoints)
- {
- Markers.Add(waypoint);
- WayPoints.Add(new Point(double.Parse(waypoint.Longitude), double.Parse(waypoint.Latitude)));
- }
- }
- }
- }
|