| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- using DevExpress.CodeParser;
- using DevExpress.XtraEditors;
- using DevExpress.XtraEditors.Controls;
- using DevExpress.XtraMap;
- using Ips.Library.Basic;
- using Ips.Library.DxpLib;
- using Ips.Library.Entity;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Ips.Sps.Maps
- {
- public partial class MapRangeSelectForm : DevExpress.XtraEditors.XtraForm
- {
- public MapRangeSelectForm()
- {
- InitializeComponent();
- InitMap();
- }
- public MapRangeSelectForm(GeoRange geoRange) : this()
- {
- SelectRange = geoRange;
- }
- MapEditor Editor { get { return mapControl.MapEditor; } }
- MapRectangle rectItem;
- MapDot centerPoint;
- public GeoRange SelectRange { get; set; }
- void InitMap()
- {
- mapControl.InitIpsOptions(new IpsMapOption()
- {
- ZoomLevel = 4d,
- CircularScrollingMode = CircularScrollingMode.None
- });
- centerPoint = new MapDot()
- {
- Fill = Color.Red,
- Size = 8,
- Visible = false
- };
- rectItemStorage.Items.Add(centerPoint);
- }
- private void MapRangeSelectForm_Load(object sender, EventArgs e)
- {
- Editor.ActiveLayer = rectItemsLayer;
- Editor.MapItemCreating += Editor_MapItemCreating;
- Editor.MapItemEditing += Editor_MapItemEditing;
- Editor.MapItemEdited += Editor_MapItemEdited;
- centerPoint.Visible = SelectRange != null;
- if (SelectRange != null)
- {
- var startPoint = new GeoPoint(SelectRange.LatMax, SelectRange.LonMin);
- var endPoint = new GeoPoint(SelectRange.LatMin, SelectRange.LonMax);
- rectItem = MapRectangle.FromLeftTopRightBottom(mapControl.CoordinateSystem, startPoint, endPoint);
- rectItemStorage.Items.Clear();
- SetItemStyle(rectItem);
- rectItemStorage.Items.Add(rectItem);
- rectItemStorage.Items.Add(centerPoint);
- centerPoint.Location = new GeoPoint(SelectRange.Lat, SelectRange.Lon);
- txtLon.EditValue = SelectRange.Lon;
- txtLat.EditValue = SelectRange.Lat;
- txtAlt.EditValue = SelectRange.Alt;
- txtLonRange.EditValue = SelectRange.LonRange;
- txtLatRange.EditValue = SelectRange.LatRange;
- }
- }
- private void Editor_MapItemEditing(object sender, MapItemEditingEventArgs e)
- {
- }
- private void Editor_MapItemEdited(object sender, MapItemEditedEventArgs e)
- {
- if (e.Action == MapEditorAction.Remove)
- {
- rectItem = null;
- SelectRange = null;
- centerPoint.Visible = false;
- }
- else
- {
- var bound = rectItem.GetBounds();
- var lonRange = bound.Right - bound.Left;
- var latRange = bound.Top - bound.Bottom;
- var lon = bound.Left + lonRange / 2;
- var lat = bound.Bottom + latRange / 2;
- txtLon.EditValue = lon.ToString("F3");
- txtLat.EditValue = lat.ToString("F3");
- txtLonRange.EditValue = lonRange.ToString("F1");
- txtLatRange.EditValue = latRange.ToString("F1");
- }
- }
- private void Editor_MapItemCreating(object sender, MapItemCreatingEventArgs e)
- {
- if (rectItem != null)
- {
- Editor.RemoveItems(new MapItem[] { rectItem });
- }
- rectItem = e.Item as MapRectangle;
- SetItemStyle(e.Item);
- centerPoint.Visible = true;
- }
- private void SetItemStyle(MapItem item)
- {
- item.Fill = Color.FromArgb(50, Color.Green);
- item.Stroke = Color.White;
- }
- private void btnOk_Click(object sender, EventArgs e)
- {
- var lonRange = txtLonRange.Text.IfNullOrWhitespace("360").To(0d);
- var latRange = txtLatRange.Text.IfNullOrWhitespace("180").To(0d);
- var lon = txtLon.Text.To(0d);
- var lat = txtLat.Text.To(0d);
- var alt = txtAlt.Text.To(0d);
- SelectRange = new GeoRange(lon, lat, alt, lonRange, latRange);
- this.DialogResult = DialogResult.OK;
- Close();
- }
- private void mapControl_DrawMapItem(object sender, DrawMapItemEventArgs e)
- {
- if (e.Item == rectItem && rectItem != null)
- {
- centerPoint.Location = rectItem.GetCenter();
- }
- }
- }
- }
|