Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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");
        }