📄 snguide.cpp
字号:
// SNGuide.cpp: implementation of the SNGuide class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Navigator.h"
#include "SNGuide.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
SNGuide::SNGuide()
{
m_pntStart.x = 0;
m_pntStart.y = 0;
m_pntEnd.x = 0;
m_pntEnd.y = 0;
m_pntNext.x = 0;
m_pntNext.y = 0;
m_dSimulateSpeed = 5.0;
m_pDatasource = NULL;
m_strRouteInfo = "";
}
SNGuide::~SNGuide()
{
}
UGbool SNGuide::OnInitGuide()
{
//////////////////////////////////////////////////////////////////////////
//初始化
UGdouble dAdjustTolerance = 0.000222;
UGdouble dOutlierTolerance = 0.001111;
UGString strAlias = "";
UGbool bInitGuide = FALSE;
UEPathElem* pPaths = NULL;
UGint iPathCount = 0;
// 从路径规划结果中获取引导信息
UGbool bGetGuideInfo = m_searchOutput.GetGuideInfo(pPaths, iPathCount );
if (!bGetGuideInfo)
{
return FALSE;
}
if (!m_pDatasource)
{
return FALSE;
}
// 初始化引导引擎
bInitGuide = m_GuidanceEngine.InitGuidance(
m_pDatasource, pPaths, iPathCount,
m_pntStart, m_pntEnd,
dAdjustTolerance, dOutlierTolerance);
if ( !bInitGuide )
{
MessageBox(NULL, TEXT("Fail to initialize GuideEngine!"),NULL, MB_OK);
return FALSE;
}
return TRUE;
}
UGlong SNGuide::OnSimulateNavi(UGMapWnd* pMapWnd)
{
if (!pMapWnd)
{
return FALSE;
}
UGlong lGuide = 0;
UGbool bGetAzimuth = FALSE;
UGdouble dAzimuth = 0;
UGPoint2D stop (0, 0);
// 模拟导航
lGuide = m_GuidanceEngine.GuideBySpeed(m_dSimulateSpeed, stop);
if(lGuide == UG_GUIDANCE_GUIDEBYSPEED_SUCCEEDED)
{
// 当前道路的方位角
bGetAzimuth = m_GuidanceEngine.GetGuideAzimuth(dAzimuth);
// 地图旋转,使之沿着车前近的方向
if (bGetAzimuth)
{
pMapWnd->m_Map.SetAngle(dAzimuth);
}
m_pntNext = stop;
pMapWnd->SetCenter(m_pntNext);
// 获取引导信息
UEGuideRouteInfo guideRouteInfo;
UGbool bGetRouteInfo = m_GuidanceEngine.GetGuideRouteInfo(1, guideRouteInfo);
if (bGetRouteInfo)
{
UGString strName = guideRouteInfo.strRouteName;
UGString strDistance;
strDistance.Format("%f M", guideRouteInfo.dDistance);
m_strRouteInfo = "名称:" + strName + "\n" + "距离:" + strDistance + "\n";
}
}
if (lGuide == UG_GUIDANCE_GUIDEBYSPEED_ARRIVE_DESTINATION)
{
m_GuidanceEngine.GetGuideSpeech(m_strRouteInfo);
}
pMapWnd->Refresh();
return lGuide;
}
void SNGuide::SetDatasource(UGNdfDataSource* pDatasource)
{
if (!pDatasource)
{
return;
}
m_pDatasource = pDatasource;
}
UGString SNGuide::GetRouteInfo()
{
return m_strRouteInfo;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -