首页 / 浏览问题 / 组件GIS / 问题详情
cpp组件坐标转换
48EXP 2020年04月22日
您好:

  我想请问下 CPP 组件 屏幕坐标 与UGVector3d 坐标之间 相互转换 应该怎么去做

1个回答

你说的就是屏幕坐标和地图坐标转换吧;

//屏幕坐标转地图坐标:

UGPoint2D MapControl::PixelToMap(UGPoint pt)
{
    UGPoint2D pntlp;
    UGPoint2D pnt2D(0.0, 0.0);

    //DP -> LP -> MP
    UGDrawing *pDrawing = m_pUGMapWnd->m_mapWnd.m_Map.GetDrawing();
    m_pUGMapWnd->m_mapWnd.m_Map.GetDrawing()->m_DrawCache.DPtoLP(&pt, &pntlp, 1);
    pDrawing->m_DrawParam.LPtoMP(pntlp, pnt2D);

    return pnt2D;
}

//地理坐标转屏幕坐标:

UGPoint MapControl::MapToPixel(UGPoint2D pnt)
{
    UGPoint2D pntlp;
    UGPoint pt(0, 0);

    // MP -> LP -> DP
    UGDrawing *pDrawing = m_pUGMapWnd->m_mapWnd.m_Map.GetDrawing();
    pDrawing->m_DrawParam.MPtoLP(pnt, pntlp);
    m_pUGMapWnd->m_mapWnd.m_Map.GetDrawing()->m_DrawCache.LPtoDP(&pntlp, &pt, 1);

    return pt;

}
4,620EXP 2020年04月22日
额   这个好像还不太像   类似超图桌面版的一个功能   打开一个场景后  鼠标在场景中点一个点 就能获取到那个点的 经纬度和高度  这种
...