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); } } }
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); } }