public static LvcMap Get(string file) { //file = Path.Combine(Directory.GetCurrentDirectory(), file); if (!File.Exists(file)) { #if DEBUG //Console.WriteLine("File not found!"); #endif #pragma warning disable 162 // ReSharper disable once HeuristicUnreachableCode return null; #pragma warning restore 162 } var svgMap = new LvcMap { DesiredHeight = 600, DesiredWidth = 800, Data = new List<MapData>() }; using (var reader = XmlReader.Create(file, new XmlReaderSettings {IgnoreComments = true})) { while (reader.Read()) { if (reader.Name == "Height") svgMap.DesiredHeight = double.Parse(reader.ReadInnerXml()); if (reader.Name == "Width") svgMap.DesiredWidth = double.Parse(reader.ReadInnerXml()); if (reader.Name == "MapShape") { var p = new MapData { LvcMap = svgMap }; reader.Read(); while (reader.NodeType != XmlNodeType.EndElement) { if (reader.NodeType != XmlNodeType.Element) reader.Read(); if (reader.Name == "Id") p.Id = reader.ReadInnerXml(); if (reader.Name == "Name") p.Name = reader.ReadInnerXml(); if (reader.Name == "Path") p.Data = reader.ReadInnerXml(); } svgMap.Data.Add(p); } } } return svgMap; }
public static LvcMap Get(string file) { //file = Path.Combine(Directory.GetCurrentDirectory(), file); if (!File.Exists(file)) { #if DEBUG Console.WriteLine("File not found!"); #endif #pragma warning disable 162 // ReSharper disable once HeuristicUnreachableCode return(null); #pragma warning restore 162 } var svgMap = new LvcMap { DesiredHeight = 600, DesiredWidth = 800, Data = new List <MapData>() }; using (var reader = XmlReader.Create(file, new XmlReaderSettings { IgnoreComments = true })) { while (reader.Read()) { if (reader.Name == "Height") { svgMap.DesiredHeight = double.Parse(reader.ReadInnerXml()); } if (reader.Name == "Width") { svgMap.DesiredWidth = double.Parse(reader.ReadInnerXml()); } if (reader.Name == "MapShape") { var p = new MapData { LvcMap = svgMap }; reader.Read(); while (reader.NodeType != XmlNodeType.EndElement) { if (reader.NodeType != XmlNodeType.Element) { reader.Read(); } if (reader.Name == "Id") { p.Id = reader.ReadInnerXml(); } if (reader.Name == "Name") { p.Name = reader.ReadInnerXml(); } if (reader.Name == "Path") { p.Data = reader.ReadInnerXml(); } } svgMap.Data.Add(p); } } } return(svgMap); }
public static LvcMap Get(string file) { //file = Path.Combine(Directory.GetCurrentDirectory(), file); if (!File.Exists(file)) { throw new FileNotFoundException(String.Format("This file {0} was not found.", file)); } var svgMap = new LvcMap { DesiredHeight = 600, DesiredWidth = 800, Data = new List <MapData>() }; using (var reader = XmlReader.Create(file, new XmlReaderSettings { IgnoreComments = true })) { while (reader.Read()) { if (reader.Name == "Height") { svgMap.DesiredHeight = double.Parse(reader.ReadInnerXml()); } if (reader.Name == "Width") { svgMap.DesiredWidth = double.Parse(reader.ReadInnerXml()); } if (reader.Name == "MapShape") { var p = new MapData { LvcMap = svgMap }; reader.Read(); while (reader.NodeType != XmlNodeType.EndElement) { if (reader.NodeType != XmlNodeType.Element) { reader.Read(); } if (reader.Name == "Id") { p.Id = reader.ReadInnerXml(); } if (reader.Name == "Name") { p.Name = reader.ReadInnerXml(); } if (reader.Name == "Path") { p.Data = reader.ReadInnerXml(); } } svgMap.Data.Add(p); } } } return(svgMap); }
public static LvcMap Get(string file) { var isFromResource = false; var svgMap = new LvcMap { DesiredHeight = 600, DesiredWidth = 800, Data = new List <MapData>() }; if (File.Exists(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, file))) { file = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, file); } else { isFromResource = true; file = System.Diagnostics.Process.GetCurrentProcess().ProcessName.Replace(@"\", "") + file.Replace("/", ".").Replace(@"\", "."); } using (var stream = isFromResource ? Assembly.GetExecutingAssembly().GetManifestResourceStream(file) : File.Open(file, FileMode.Open)) { if (stream == null) { return(null); } using (var reader = XmlReader.Create(stream)) { while (reader.Read()) { if (reader.Name == "Height") { svgMap.DesiredHeight = double.Parse(reader.ReadInnerXml()); } if (reader.Name == "Width") { svgMap.DesiredWidth = double.Parse(reader.ReadInnerXml()); } if (reader.Name != "MapShape") { continue; } var p = new MapData { LvcMap = svgMap }; reader.Read(); while (reader.NodeType != XmlNodeType.EndElement) { if (reader.NodeType != XmlNodeType.Element) { reader.Read(); } if (reader.Name == "Id") { p.Id = reader.ReadInnerXml(); } if (reader.Name == "Name") { p.Name = reader.ReadInnerXml(); } if (reader.Name == "Path") { p.Data = reader.ReadInnerXml(); } } svgMap.Data.Add(p); } } } return(svgMap); }
/// <summary> /// Initializes a new instance of the <see cref="CustomeGeoMap"/> class. /// </summary> public CustomeGeoMap() { Canvas = new Canvas(); Map = new Canvas(); Canvas.ClipToBounds = true; Map.ClipToBounds = true; Canvas.Children.Add(Map); Content = Canvas; Canvas.SetBinding(WidthProperty, new Binding { Path = new PropertyPath(ActualWidthProperty), Source = this }); Canvas.SetBinding(HeightProperty, new Binding { Path = new PropertyPath(ActualHeightProperty), Source = this }); Lands = new Dictionary <string, MapData>(); SetCurrentValue(DefaultLandFillProperty, new SolidColorBrush(Color.FromArgb(200, 255, 255, 255))); SetCurrentValue(LandStrokeProperty, new SolidColorBrush(Color.FromArgb(30, 55, 55, 55))); SetCurrentValue(LandStrokeThicknessProperty, 1.3d); SetCurrentValue(AnimationsSpeedProperty, TimeSpan.FromMilliseconds(500)); SetCurrentValue(BackgroundProperty, new SolidColorBrush(Color.FromArgb(150, 96, 125, 138))); SetCurrentValue(GradientStopCollectionProperty, new GradientStopCollection { new GradientStop(Color.FromArgb(100, 2, 119, 188), 0d), new GradientStop(Color.FromRgb(2, 119, 188), 1d), }); SetCurrentValue(HeatMapProperty, new Dictionary <string, double>()); SetCurrentValue(GeoMapTooltipProperty, new DefaultGeoMapTooltip { Visibility = Visibility.Hidden }); Canvas.Children.Add(GeoMapTooltip); SizeChanged += (sender, e) => { Draw(); }; MouseWheel += (sender, e) => { if (!EnableZoomingAndPanning) { return; } e.Handled = true; var rt = Map.RenderTransform as ScaleTransform; var p = rt == null ? 1 : rt.ScaleX; p += e.Delta > 0 ? .05 : -.05; p = p < 1 ? 1 : p; var o = e.GetPosition(this); if (e.Delta > 0) { Map.RenderTransformOrigin = new Point(o.X / ActualWidth, o.Y / ActualHeight); } Map.RenderTransform = new ScaleTransform(p, p); }; MouseDown += (sender, e) => { if (!EnableZoomingAndPanning) { return; } DragOrigin = e.GetPosition(this); }; MouseUp += (sender, e) => { if (!EnableZoomingAndPanning) { return; } var end = e.GetPosition(this); var delta = new Point(DragOrigin.X - end.X, DragOrigin.Y - end.Y); var l = Canvas.GetLeft(Map) - delta.X; var t = Canvas.GetTop(Map) - delta.Y; if (DisableAnimations) { Canvas.SetLeft(Map, l); Canvas.SetTop(Map, t); } else { Map.BeginAnimation(Canvas.LeftProperty, new DoubleAnimation(l, AnimationsSpeed)); Map.BeginAnimation(Canvas.TopProperty, new DoubleAnimation(t, AnimationsSpeed)); } }; Loaded += (sender, e) => { lvcMap = MapResolver.Get(Source); Draw(); }; }