示例#1
0
        public override void Display()
        {
            MapOverlay overlay = null;

            if (Definition.DisplayMode != "NONE")
            {
                switch (Definition.ObjectType)
                {
                case "CYLINDER":
                case "SPHERE":
                    if (center.Point != null)
                    {
                        overlay = new CircularAreaOverlay(center.Point.ToWindowsPoint(), radius, Definition.ObjectName)
                        {
                            Layer = (uint)OverlayLayers.Areas, Color = this.Color
                        }
                    }
                    ;
                    break;

                case "PRISM":
                    var list = new Point[outline.Count];
                    for (var i = 0; i < list.Length; i++)
                    {
                        list[i] = outline[i].ToWindowsPoint();
                    }
                    overlay = new PolygonalAreaOverlay(list, Definition.ObjectName)
                    {
                        Layer = (uint)OverlayLayers.Areas, Color = this.Color
                    };
                    break;

                case "TIME":
                case "UNION":
                case "INTERSECTION":
                case "SUBTRACTION":
                    //do nothing
                    break;

                default:
                    throw new ArgumentException(string.Format("Display() not implemented for '{0}'", Definition.ObjectType));
                }

                if (overlay != null)
                {
                    Engine.MapViewer.AddOverlay(overlay);
                }
            }
        }
示例#2
0
        private void InitMap()
        {
            //add a map grid
            map.AddOverlay(new CoordinateGridOverlay(1000));

            // add a random track
            var rnd      = new Random();
            var position = new Point(302263, 4609451);
            var trackLog = new Point[6000];
            var utm      = new Point(position.X, position.Y);

            trackLog[0] = position;

            double amplitude = Math.PI / 10, stroke = 10;
            double ang = 0, dist;

            for (var i = 1; i < trackLog.Length; i++)
            {
                ang        += amplitude * (rnd.NextDouble() - 0.5);
                dist        = stroke * (1 + rnd.NextDouble()) / 2;
                utm.X      += dist * Math.Cos(ang);
                utm.Y      += dist * Math.Sin(ang);
                trackLog[i] = new Point(utm.X, utm.Y);
            }
            var track = new TrackOverlay(trackLog, 2);

            track.Color = Colors.Blue;
            map.AddOverlay(track);

            //add crosshairs
            position = trackLog[rnd.Next(trackLog.Length)];
            var crosshairs = new CrosshairsOverlay(position);

            crosshairs.Color = Colors.Red;
            map.AddOverlay(crosshairs);

            //add a marker
            position = trackLog[rnd.Next(trackLog.Length)];
            var marker = new MarkerOverlay(position, "Marker 1");

            marker.Color = Colors.Green;
            map.AddOverlay(marker);

            //add a target
            position = new Point(306000, 4609000);
            var target = new TargetOverlay(position, 100, "Target 1");

            target.Color = Colors.Yellow;
            map.AddOverlay(target);

            //add a waypoint
            position = new Point(305500, 4608500);
            var waypoint = new WaypointOverlay(position, "Waypoint 1");

            waypoint.Color = Colors.Orange;
            map.AddOverlay(waypoint);

            //add a poligonal area
            var polygon = new Point[] {
                new Point(303000, 4610000),
                new Point(305000, 4610000),
                new Point(305000, 4612000),
                new Point(303000, 4612000)
            };
            var area = new PolygonalAreaOverlay(polygon, "AREA 1");

            area.Color = Colors.Orange;
            map.AddOverlay(area);

            //add a PZ
            position = new Point(308000, 4608000);
            var pz = new CircularAreaOverlay(position, 500, "BPZ1");

            pz.Color = Colors.Blue;
            map.AddOverlay(pz);

            {
                //add a distance
                var d        = Math.Sqrt(Math.Pow(marker.Position.X - target.Position.X, 2) + Math.Pow(marker.Position.Y - target.Position.Y, 2));
                var distance = new DistanceOverlay(target.Position, marker.Position, "Distance D" + Environment.NewLine + d.ToString("0m"));
                map.AddOverlay(distance);
            }

            {
                //add an angle
                var a     = Angle(track.Position, crosshairs.Position, trackLog[trackLog.Length - 1]);
                var angle = new AngleOverlay(track.Position, crosshairs.Position, trackLog[trackLog.Length - 1], "Angle alpha" + Environment.NewLine + a.ToString("0.00°"));
                map.AddOverlay(angle);
            }
        }