Subversion Repositories Projects

Rev

Rev 2289 | Go to most recent revision | Blame | Last modification | View Log | RSS feed

using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
using System.Windows.Media;
using GMap.NET.WindowsPresentation;
using System.Diagnostics;

namespace MKLiveView.GMapCustomMarkers
{
    /// <summary>
    /// Interaction logic for CustomMarkerCopter.xaml
    /// </summary>
    public partial class CustomMarkerCopter
    {
        //Popup Popup;
        //Label Label;
        GMapMarker Marker;
        MainWindow MainWindow;

        public CustomMarkerCopter(MainWindow window, GMapMarker marker, string title, string sColor)
        {
            this.InitializeComponent();

            this.MainWindow = window;
            this.Marker = marker;

            //Popup = new Popup();
            //Label = new Label();

            this.Unloaded += new RoutedEventHandler(CustomMarkerCopter_Unloaded);
            this.Loaded += new RoutedEventHandler(CustomMarkerCopter_Loaded);
            this.SizeChanged += new SizeChangedEventHandler(CustomMarkerCopter_SizeChanged);
            //this.MouseEnter += new MouseEventHandler(MarkerControl_MouseEnter);
            //this.MouseLeave += new MouseEventHandler(MarkerControl_MouseLeave);
            //this.MouseMove += new MouseEventHandler(CustomMarkerCopter_MouseMove);
            //this.MouseLeftButtonUp += new MouseButtonEventHandler(CustomMarkerCopter_MouseLeftButtonUp);
            //this.MouseLeftButtonDown += new MouseButtonEventHandler(CustomMarkerCopter_MouseLeftButtonDown);

            //Popup.Placement = PlacementMode.Mouse;
            //{
            //   Label.Background = Brushes.Blue;
            //   Label.Foreground = Brushes.White;
            //   Label.BorderBrush = Brushes.WhiteSmoke;
            //   Label.BorderThickness = new Thickness(2);
            //   Label.Padding = new Thickness(5);
            //   Label.FontSize = 22;
            //   Label.Content = title;
            //}
            //Popup.Child = Label;
            lbl.Content = title;
        }
 
        void CustomMarkerCopter_Loaded(object sender, RoutedEventArgs e)
        {
            if (icon.Source.CanFreeze)
            {
                icon.Source.Freeze();
            }
        }

        void CustomMarkerCopter_Unloaded(object sender, RoutedEventArgs e)
        {
            this.Unloaded -= new RoutedEventHandler(CustomMarkerCopter_Unloaded);
            this.Loaded -= new RoutedEventHandler(CustomMarkerCopter_Loaded);
            this.SizeChanged -= new SizeChangedEventHandler(CustomMarkerCopter_SizeChanged);
            //this.MouseEnter -= new MouseEventHandler(MarkerControl_MouseEnter);
            //this.MouseLeave -= new MouseEventHandler(MarkerControl_MouseLeave);
            //this.MouseMove -= new MouseEventHandler(CustomMarkerCopter_MouseMove);
            //this.MouseLeftButtonUp -= new MouseButtonEventHandler(CustomMarkerCopter_MouseLeftButtonUp);
            //this.MouseLeftButtonDown -= new MouseButtonEventHandler(CustomMarkerCopter_MouseLeftButtonDown);

            Marker.Shape = null;
            icon.Source = null;
            icon = null;
            //Popup = null;
            //Label = null;        
        }
        public void setText(string s)
        {
            lbl.Content = s;
        }
        public void setColor(string sColor)
        {
            switch (sColor)
            {
                case "red":
                    icon.Source = new System.Windows.Media.Imaging.BitmapImage(new System.Uri("CopterRed.png", System.UriKind.Relative));
                    break;
                case "green":
                    icon.Source = new System.Windows.Media.Imaging.BitmapImage(new System.Uri("CopterGreen.png", System.UriKind.Relative));
                    break;
                case "blue":
                    icon.Source = new System.Windows.Media.Imaging.BitmapImage(new System.Uri("CopterBlue.png", System.UriKind.Relative));
                    break;
                case "yellow":
                    icon.Source = new System.Windows.Media.Imaging.BitmapImage(new System.Uri("CopterYellow.png", System.UriKind.Relative));
                    break;
                case "pink":
                    icon.Source = new System.Windows.Media.Imaging.BitmapImage(new System.Uri("CopterPink.png", System.UriKind.Relative));
                    break;

                default:
                    icon.Source = new System.Windows.Media.Imaging.BitmapImage(new System.Uri("CopterRed.png", System.UriKind.Relative));
                    break;
            }
        }
        void CustomMarkerCopter_SizeChanged(object sender, SizeChangedEventArgs e)
        {
           // Marker.Offset = new Point(-e.NewSize.Width / 4, -e.NewSize.Height /2);
        }

        void CustomMarkerCopter_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed && IsMouseCaptured)
            {
                Point p = e.GetPosition(MainWindow.MainMap);
                Marker.Position = MainWindow.MainMap.FromLocalToLatLng((int)(p.X), (int)(p.Y));
            }
        }

        void CustomMarkerCopter_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (!IsMouseCaptured)
            {
                Mouse.Capture(this);
            }
        }

        void CustomMarkerCopter_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            if (IsMouseCaptured)
            {
                Mouse.Capture(null);
            }
        }

        void MarkerControl_MouseLeave(object sender, MouseEventArgs e)
        {
            Marker.ZIndex -= 10000;
            //Popup.IsOpen = false;
        }

        void MarkerControl_MouseEnter(object sender, MouseEventArgs e)
        {
            Marker.ZIndex += 10000;
            //Popup.IsOpen = true;
        }

    }
}