|
|
|
|
// ShowHZDistanceDlg.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "ShowHZDistanceDlg.h"
|
|
|
|
|
//#include "afxdialogex.h"
|
|
|
|
|
#include "Globe.h"
|
|
|
|
|
#include <math.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CShowHZDistanceDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
|
|
|
|
|
//
|
|
|
|
|
IMPLEMENT_DYNAMIC(CShowHZDistanceDlg, CDialog)
|
|
|
|
|
|
|
|
|
|
CShowHZDistanceDlg::CShowHZDistanceDlg(CWnd* pParent /*=NULL*/)
|
|
|
|
|
: CDialog(CShowHZDistanceDlg::IDD, pParent)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
ResetCoordinateData();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CShowHZDistanceDlg::~CShowHZDistanceDlg()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CShowHZDistanceDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
{
|
|
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
|
DDX_Text(pDX, IDC_PT1_LAT, m_pt1Lat);
|
|
|
|
|
DDX_Text(pDX, IDC_PT2_LAT, m_pt2Lat);
|
|
|
|
|
DDX_Text(pDX, IDC_PT1_LON, m_pt1Lon);
|
|
|
|
|
DDX_Text(pDX, IDC_PT2_LON, m_pt2Lon);
|
|
|
|
|
DDX_Text(pDX, IDC_HZ_DISTANCE, m_strHZDistance);
|
|
|
|
|
DDX_Text(pDX, IDC_AZ_ANGLE, m_strAZAngle);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CShowHZDistanceDlg, CDialog)
|
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CShowHZDistanceDlg <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CShowHZDistanceDlg::OnCancel()
|
|
|
|
|
{
|
|
|
|
|
ResetCoordinateData();
|
|
|
|
|
|
|
|
|
|
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ר<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD>Ѿ<EFBFBD><D1BE>ر<EFBFBD>
|
|
|
|
|
if (g_mapHwnd != NULL)
|
|
|
|
|
{
|
|
|
|
|
::PostMessage(g_mapHwnd, WM_CLOSE_DISTANCE_DIALOG, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CDialog::OnCancel();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD>룺<EFBFBD><EBA3BA><EFBFBD><EFBFBD>lon(<28>Զ<EFBFBD>Ϊ<EFBFBD><CEAA>λ)<29><>γ<EFBFBD><CEB3>lat(<28>Զ<EFBFBD>Ϊ<EFBFBD><CEAA>λ)
|
|
|
|
|
void CShowHZDistanceDlg::SetPtCoordinate(const double lon, const double lat)
|
|
|
|
|
{
|
|
|
|
|
if (!m_bHaveOnePoint)
|
|
|
|
|
{
|
|
|
|
|
m_bHaveOnePoint = true;
|
|
|
|
|
|
|
|
|
|
m_pt1Lon = lon;
|
|
|
|
|
m_pt1Lat = lat;
|
|
|
|
|
|
|
|
|
|
m_pt2Lon = 0.0;
|
|
|
|
|
m_pt2Lat = 0.0;
|
|
|
|
|
|
|
|
|
|
m_strHZDistance = _T("");
|
|
|
|
|
m_strAZAngle = _T("");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_bHaveOnePoint = false;
|
|
|
|
|
|
|
|
|
|
m_pt2Lon = lon;
|
|
|
|
|
m_pt2Lat = lat;
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
|
|
|
|
|
Cal2PtsDisAZ();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UpdateData(FALSE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
|
|
|
|
|
void CShowHZDistanceDlg::Cal2PtsDisAZ()
|
|
|
|
|
{
|
|
|
|
|
double distance = 0;
|
|
|
|
|
double azValue = 0;
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
CalculateTwoPtsDistanceAzimuth(distance, azValue, m_pt1Lon, m_pt1Lat, m_pt2Lon, m_pt2Lat, 3);
|
|
|
|
|
|
|
|
|
|
m_strHZDistance.Format("%.4fkm", distance*0.001);
|
|
|
|
|
m_strAZAngle.Format("%.1f", azValue);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void CShowHZDistanceDlg::ResetCoordinateData()
|
|
|
|
|
{
|
|
|
|
|
m_hzDistance = 0.0;
|
|
|
|
|
|
|
|
|
|
m_pt1Lat = 0.0;
|
|
|
|
|
m_pt2Lat = 0.0;
|
|
|
|
|
m_pt1Lon = 0.0;
|
|
|
|
|
m_pt2Lon = 0.0;
|
|
|
|
|
|
|
|
|
|
m_bHaveOnePoint = false;
|
|
|
|
|
m_strHZDistance = _T("");
|
|
|
|
|
|
|
|
|
|
//<2F><>λ<EFBFBD><CEBB>
|
|
|
|
|
m_strAZAngle = _T("");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>ƶ<EFBFBD><C6B6>Ի<EFBFBD><D4BB><EFBFBD><F2B5BDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD>룺<EFBFBD><EBA3BA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>rcArea
|
|
|
|
|
void CShowHZDistanceDlg::MoveToGivenArea(const CRect rcArea)
|
|
|
|
|
{
|
|
|
|
|
m_rcHZDistanceDlg = rcArea;
|
|
|
|
|
m_rcHZDistanceDlg.top += 20;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CShowHZDistanceDlg::OnInitDialog()
|
|
|
|
|
{
|
|
|
|
|
CDialog::OnInitDialog();
|
|
|
|
|
|
|
|
|
|
//<2F>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
SetWindowPos( &CWnd::wndTop, m_rcHZDistanceDlg.left, m_rcHZDistanceDlg.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE | SWP_HIDEWINDOW );
|
|
|
|
|
|
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
|
|
|
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
|
|
|
|
|
}
|