You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
5.6 KiB
168 lines
5.6 KiB
using ESRI.ArcGIS.Controls; |
|
using ESRI.ArcGIS.esriSystem; |
|
using ESRI.ArcGIS.Geometry; |
|
using KGIS.Framework.Utils; |
|
using KGIS.Framework.Utils.Helper; |
|
using System; |
|
using System.Text.RegularExpressions; |
|
using System.Windows; |
|
using System.Windows.Input; |
|
|
|
namespace Kingo.Plugin.MapView.Views.GoToXYUi |
|
{ |
|
/// <summary> |
|
/// GoToXYUi.xaml 的交互逻辑 |
|
/// </summary> |
|
public partial class GoToXYUi : BaseWindow |
|
{ |
|
private static GoToXYUi instance; |
|
public static GoToXYUi Instance(object Helpers) |
|
{ |
|
if (instance == null) |
|
instance = new GoToXYUi(Helpers); |
|
else |
|
{ |
|
instance.m_hookHelper = Helpers as IHookHelper; |
|
} |
|
return instance; |
|
} |
|
private IHookHelper m_hookHelper;//获取地图控件和主窗体 |
|
public GoToXYUi(object Helpers) |
|
{ |
|
try |
|
{ |
|
if (this.m_hookHelper == null) |
|
{ |
|
this.m_hookHelper = Helpers as IHookHelper; |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//LogAPI.Debug("转到XY异常!" + ex.Message); |
|
|
|
LogAPI.Debug("初始化 转到XY页面 时异常,异常信息如下:"); |
|
LogAPI.Debug(ex); |
|
LogAPI.Debug("初始化 转到XY页面 时异常信息结束"); |
|
} |
|
InitializeComponent(); |
|
} |
|
|
|
/// <summary> |
|
/// 转到XY轴点击事件 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void Btn_GotoXy_Click(object sender, RoutedEventArgs e) |
|
{ |
|
GotoXy(); |
|
} |
|
/// <summary> |
|
/// 定位XY方法封装 |
|
/// </summary> |
|
public void GotoXy() |
|
{ |
|
try |
|
{ |
|
//非空验证 |
|
if ((Txt_X.Text).Trim() == "" || (Txt_Y.Text).Trim() == "") |
|
{ |
|
MessageHelper.Show("X或Y轴为空,请重新输入!"); |
|
return; |
|
} |
|
Double latitude = Double.Parse(Txt_X.Text);//获取输入的X轴坐标 |
|
Double longitude = Double.Parse(Txt_Y.Text);//获取输入的Y轴坐标 |
|
IPoint point = new PointClass(); |
|
IGeometry geometry;//声明一个几何 |
|
point.X = latitude; |
|
point.Y = longitude; |
|
geometry = (IGeometry)point;//向几何中添加一个点 |
|
IArray geoArray = new ArrayClass();//声明一个几何的集合 |
|
geoArray.Add(geometry);//向几何集合中添加几何对象 |
|
IHookActions hookActions = (IHookActions)m_hookHelper;//通过IHookActions闪烁要素集合 |
|
hookActions.DoActionOnMultiple(geoArray, esriHookActions.esriHookActionsPan); |
|
System.Windows.Forms.Application.DoEvents(); |
|
m_hookHelper.ActiveView.ScreenDisplay.UpdateWindow(); |
|
((m_hookHelper.Hook) as IMapControl2).CenterAt(point); |
|
hookActions.DoActionOnMultiple(geoArray, esriHookActions.esriHookActionsFlash); |
|
} |
|
catch (Exception ex) |
|
{ |
|
//LogAPI.Debug(ex.Message); |
|
|
|
LogAPI.Debug("执行 定位XY方法 时异常,异常信息如下:"); |
|
LogAPI.Debug(ex); |
|
LogAPI.Debug("执行 定位XY方法 时异常信息结束"); |
|
} |
|
} |
|
/// <summary> |
|
/// 设置XY的值 |
|
/// </summary> |
|
/// <param name="x">x轴的值</param> |
|
/// <param name="y">y轴的值</param> |
|
public void SetXYValue(int x, int y) |
|
{ |
|
Txt_X.Text = x.ToString(); |
|
Txt_Y.Text = y.ToString(); |
|
} |
|
/// <summary> |
|
/// 窗口关闭事件 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
//public Action Closeds; |
|
|
|
private void BaseWindow_Closed(object sender, EventArgs e) |
|
{ |
|
//this.Closeds(); |
|
instance = null; |
|
this.Close(); |
|
} |
|
/// <summary> |
|
/// 验证Y轴输入是否合法 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void Txt_Y_PreviewTextInput(object sender, TextCompositionEventArgs e) |
|
{ |
|
try |
|
{ |
|
Regex re = new Regex("[^0-9.-]+"); |
|
|
|
e.Handled = re.IsMatch(e.Text); |
|
} |
|
catch (Exception ex) |
|
{ |
|
//LogAPI.Debug(ex.Message); |
|
|
|
LogAPI.Debug("验证Y轴输入是否合法 时异常,异常信息如下:"); |
|
LogAPI.Debug(ex); |
|
LogAPI.Debug("验证Y轴输入是否合法 时异常信息结束"); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 验证X轴输入是否合法 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void Txt_X_PreviewTextInput(object sender, TextCompositionEventArgs e) |
|
{ |
|
try |
|
{ |
|
Regex re = new Regex(@"[^0-9.-]+"); |
|
|
|
e.Handled = re.IsMatch(e.Text); |
|
} |
|
catch (Exception ex) |
|
{ |
|
//LogAPI.Debug(ex.Message); |
|
|
|
LogAPI.Debug("验证X轴输入是否合法 时异常,异常信息如下:"); |
|
LogAPI.Debug(ex); |
|
LogAPI.Debug("验证X轴输入是否合法 时异常信息结束"); |
|
} |
|
} |
|
|
|
} |
|
|
|
}
|
|
|