private Graphic GetGraphic(XmlNode data) { var xd = new XmlDocument(); var g = new Graphic(); try { xd.LoadXml(data.OuterXml); g.Geometry = new MapPoint(TaskEventArgs.GetDouble(xd, "//LON"), TaskEventArgs.GetDouble(xd, "//LAT")); g.Attributes["ID"] = TaskEventArgs.GetGuid(xd, "//Guid"); g.Attributes["Lon"] = TaskEventArgs.GetDouble(xd, "//LON"); g.Attributes["Lat"] = TaskEventArgs.GetDouble(xd, "//LAT"); g.Attributes["Label"] = TaskEventArgs.GetString(xd, "//Label"); g.Attributes["Time"] = TaskEventArgs.GetTime(xd, "//Time").ToString(); g.Attributes["Speed"] = TaskEventArgs.GetDouble(xd, "//Speed"); g.Attributes["Status"] = TaskEventArgs.GetString(xd, "//Status"); g.Attributes["Icon"] = TaskEventArgs.GetString(xd, "//Icon"); g.Attributes["Remark"] = TaskEventArgs.GetString(xd, "//Remark"); g.Attributes["Angle"] = TaskEventArgs.GetString(xd, "//Angle"); } catch (Exception ee) { LogUtil.Error(GetType(), ee); g = null; } return(g); }
public async void Work(object obj) { try { var args = obj as MapViewInputEventArgs; if (args == null) { return; } MapObj.MapView.Overlays.Items.Clear(); MapViewInputEventArgs e = args; var graphics = await Layer.HitTestAsync(MapObj.MapView, e.Position, 1) as List <Graphic>; if (graphics == null || !graphics.Any()) { return; } var message = "<Document TaskGuid=\"" + Map.TaskGuid + "\" DataGuid = \"" + Id + "\" >"; foreach (var g in graphics) { message += "<PData>"; message += g.Attributes["_data"]; message += "</PData>"; } message += "</Document>"; Callback?.Invoke(message); if (graphics.Count != 1) { return; } var xd = new XmlDocument(); xd.LoadXml(message); if (TaskEventArgs.GetXmlNode(xd, "//PData//Callout") == null) { return; } var point = graphics[0].Geometry as MapPoint; if (point != null) { ShowCallout(TaskEventArgs.GetString(xd, "//PData//Callout//Title") , TaskEventArgs.GetString(xd, "//PData//Callout//Content"), point); } } catch (Exception ee) { LogUtil.Error(GetType(), ee); } }
private SimpleLineSymbol GetTrackSymbol(XmlNode data) { XmlDocument xd = new XmlDocument(); xd.LoadXml(data.OuterXml); var sls = new SimpleLineSymbol(); try { Color c; switch (TaskEventArgs.GetString(xd, "//LStyle")) { case "solid": sls = new SimpleLineSymbol(); c = ColorTranslator.FromHtml(TaskEventArgs.GetString(xd, "//LColor")); sls.Color = System.Windows.Media.Color.FromArgb((byte)(double.Parse(TaskEventArgs.GetString(xd, "//Transpatecy")) * 255), c.R, c.G, c.B); sls.Width = double.Parse(TaskEventArgs.GetString(xd, "//LWight")); break; case "dash": sls = new SimpleLineSymbol { Style = SimpleLineStyle.Dash }; c = ColorTranslator.FromHtml(TaskEventArgs.GetString(xd, "//LColor")); sls.Color = System.Windows.Media.Color.FromArgb((byte)(double.Parse(TaskEventArgs.GetString(xd, "//Transpatecy")) * 255), c.R, c.G, c.B); sls.Width = double.Parse(TaskEventArgs.GetString(xd, "//LWight")); break; default: sls = new SimpleLineSymbol(); c = ColorTranslator.FromHtml(TaskEventArgs.GetString(xd, "//LColor")); sls.Color = System.Windows.Media.Color.FromArgb((byte)(double.Parse(TaskEventArgs.GetString(xd, "//Transpatecy")) * 255), c.R, c.G, c.B); sls.Width = double.Parse(TaskEventArgs.GetString(xd, "//LWight")); break; } } catch (Exception ee) { LogUtil.Error(GetType(), ee); } return(sls); }
private MarkerSymbol GetPointSymbol(XmlNode data) { var xd = new XmlDocument(); xd.LoadXml(data.OuterXml); MarkerSymbol ms; try { var icon = TaskEventArgs.GetString(xd, "//Icon"); if (icon != "") { ms = new PictureMarkerSymbol(); ((PictureMarkerSymbol)ms).SetSource(ImageUtil.ImageToBytes(Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "Asset\\Icon\\" + icon + ".png"))); ((PictureMarkerSymbol)ms).Width = ((PictureMarkerSymbol)ms).Height = 24; } else { ms = new SimpleMarkerSymbol(); var c = ColorTranslator.FromHtml(TaskEventArgs.GetString(xd, "//Color")); ((SimpleMarkerSymbol)ms).Color = System.Windows.Media.Color.FromArgb(255, 255, 255, 255); ((SimpleMarkerSymbol)ms).Size = 5; ((SimpleMarkerSymbol)ms).Outline = new SimpleLineSymbol { Color = System.Windows.Media.Color.FromArgb((byte)(double.Parse(TaskEventArgs.GetString(xd, "//Transpatecy")) * 255), c.R, c.G, c.B) , Style = SimpleLineStyle.Solid, Width = ((SimpleMarkerSymbol)ms).Size }; } } catch (Exception ee) { ms = null; LogUtil.Error(GetType(), ee); } return(ms); }
private SimpleMarkerSymbol GetPointSymbol(XmlNode data) { XmlDocument xd = new XmlDocument(); xd.LoadXml(data.OuterXml); SimpleMarkerSymbol sms = new SimpleMarkerSymbol(); try { Color c = ColorTranslator.FromHtml(TaskEventArgs.GetString(xd, "//LColor")); sms.Color = System.Windows.Media.Color.FromArgb(255, 255, 255, 255); sms.Size = 5; sms.Outline = new SimpleLineSymbol { Color = System.Windows.Media.Color.FromArgb((byte)(double.Parse(TaskEventArgs.GetString(xd, "//Transpatecy")) * 255), c.R, c.G, c.B) , Style = SimpleLineStyle.Solid, Width = sms.Size }; } catch (Exception ee) { LogUtil.Error(GetType(), ee); } return(sms); }
public MapPointUtil(TaskEventArgs args, Action <string> callback) { Callback = callback; Id = args.DataGuid; LName = args.GetString("//LName"); AutoZoom = args.GetString("//AutoZoom").Trim().ToLower() == "1"; AutoPan = args.GetString("//AutoPan").Trim().ToLower() == "1"; IsCluster = args.GetString("//IsCluster").Trim().ToLower() == "1"; XmlNodeList pts = args.GetXmlNodes("//PData"); if (pts == null) { return; } MapPoints = new List <Graphic>(); foreach (XmlNode n in pts) { var tp = GetGraphic(n); if (tp == null) { continue; } var ms = GetPointSymbol(n); if (ms == null) { continue; } tp.Symbol = ms; MapPoints.Add(tp); } if (MapPoints.Count < 1) { return; } double xMax, yMax; MapPoint p = MapPoints[0].Geometry as MapPoint; if (p == null) { return; } var xMin = xMax = p.X; var yMin = yMax = p.Y; foreach (var g in MapPoints) { p = g.Geometry as MapPoint; if (p != null && p.X < xMin) { xMin = p.X; } if (p != null && p.X > xMax) { xMax = p.X; } if (p != null && p.Y < yMin) { yMin = p.Y; } if (p != null && p.Y > yMax) { yMax = p.Y; } } PointsEnvelope = new Envelope(xMin, yMin, xMax, yMax); }
private void GetIcon(XmlNode data) { XmlDocument xd = new XmlDocument(); xd.LoadXml(data.OuterXml); _startIcon = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "Asset\\Icon\\" + TaskEventArgs.GetString(xd, "//StartIcon") + ".png"); _icon = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "Asset\\Icon\\" + TaskEventArgs.GetString(xd, "//Icon") + ".png"); }