Files
@ 65c134a3d619
Branch filter:
Location: seniordesign-ui/Demo.WindowsPresentation/CustomMarkers/CustomMarkerDemo.xaml.cs
65c134a3d619
4.1 KiB
text/x-csharp
Initial import of mapping source (huge commit)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | 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 Demo.WindowsPresentation.CustomMarkers
{
/// <summary>
/// Interaction logic for CustomMarkerDemo.xaml
/// </summary>
public partial class CustomMarkerDemo
{
Popup Popup;
Label Label;
GMapMarker Marker;
MainWindow MainWindow;
public CustomMarkerDemo(MainWindow window, GMapMarker marker, string title)
{
this.InitializeComponent();
this.MainWindow = window;
this.Marker = marker;
Popup = new Popup();
Label = new Label();
this.Unloaded += new RoutedEventHandler(CustomMarkerDemo_Unloaded);
this.Loaded += new RoutedEventHandler(CustomMarkerDemo_Loaded);
this.SizeChanged += new SizeChangedEventHandler(CustomMarkerDemo_SizeChanged);
this.MouseEnter += new MouseEventHandler(MarkerControl_MouseEnter);
this.MouseLeave += new MouseEventHandler(MarkerControl_MouseLeave);
this.MouseMove += new MouseEventHandler(CustomMarkerDemo_MouseMove);
this.MouseLeftButtonUp += new MouseButtonEventHandler(CustomMarkerDemo_MouseLeftButtonUp);
this.MouseLeftButtonDown += new MouseButtonEventHandler(CustomMarkerDemo_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;
}
void CustomMarkerDemo_Loaded(object sender, RoutedEventArgs e)
{
if(icon.Source.CanFreeze)
{
icon.Source.Freeze();
}
}
void CustomMarkerDemo_Unloaded(object sender, RoutedEventArgs e)
{
this.Unloaded -= new RoutedEventHandler(CustomMarkerDemo_Unloaded);
this.Loaded -= new RoutedEventHandler(CustomMarkerDemo_Loaded);
this.SizeChanged-= new SizeChangedEventHandler(CustomMarkerDemo_SizeChanged);
this.MouseEnter -= new MouseEventHandler(MarkerControl_MouseEnter);
this.MouseLeave -= new MouseEventHandler(MarkerControl_MouseLeave);
this.MouseMove -= new MouseEventHandler(CustomMarkerDemo_MouseMove);
this.MouseLeftButtonUp -= new MouseButtonEventHandler(CustomMarkerDemo_MouseLeftButtonUp);
this.MouseLeftButtonDown -= new MouseButtonEventHandler(CustomMarkerDemo_MouseLeftButtonDown);
Marker.Shape = null;
icon.Source = null;
icon = null;
Popup = null;
Label = null;
}
void CustomMarkerDemo_SizeChanged(object sender, SizeChangedEventArgs e)
{
Marker.Offset = new Point(-e.NewSize.Width/2, -e.NewSize.Height);
}
void CustomMarkerDemo_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 CustomMarkerDemo_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if(!IsMouseCaptured)
{
Mouse.Capture(this);
}
}
void CustomMarkerDemo_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;
}
}
}
|