iobjcet c++ 经纬度怎么转换成显示坐标

0 投票
1.地图版本 supermap iObjcets C++ 9D

2.qt下知道一点的经纬度如何在地图上显示
10月 21 分类:  78次浏览 | 用户: szcv612 才疏学浅 (14 分)

1个回答

0 投票
您好,您可以创建一个点对象,并设置风格,添加到UGMap的跟踪层或动态层显示。
10月 21 用户: 幸俊 学富五车 (558 分)
你好!很感谢你的回答

   你说的这一步已经实现,但是我把点的经纬度值转换为UGPoint点地图显示坐标时不知道该怎么转换,可以给出一个实例嘛?
坐标转换需要使用UGRefTranslator实现,需用的SetPrjCoord
SysSrc(),SetPrjCoordSysDes(),SetGeoTransMethod(),Translate()等方法。请参考一下UGRefTranslator的头文件。
你好!,看了那个头文件不太看得懂,可以给个是实例嘛?

  比如84坐标下一点的经度为105,纬度为32,怎么把它转换成UGPoint2D坐标?
你好!我怎么获得我当前地图是什么坐标系?
请参考下面的转换代码:转换结果在ugArray中

void JunSuMFCDialogDlg::coordnateTransform()
{
    // 地图坐标系
    const UGPrjCoordSys& pSrcPrj = m_pMapControl->GetMapEditWnd()->m_mapWnd.m_Map.GetPrjCoordSys();
    UGPrjCoordSys* pTargetPrj = new UGPrjCoordSys(4326);
    UGRefTranslator* pUGRefTranslator = new UGRefTranslator();

    pUGRefTranslator->SetPrjCoordSysSrc(pSrcPrj);         // 被转换点的坐标系
    pUGRefTranslator->SetPrjCoordSysDes(*pTargetPrj);     // 转换后点的坐标系
    pUGRefTranslator->SetGeoTransMethod(EmGeoTransMethod::MTH_GEOCENTRIC_TRANSLATION); // 转换方法:三参数

    // 转换参数,根据设置的转换方法,有旋转,平移等时设置对应参数,没有需要就创建空对象
    UGGeoTransParams* pTempParams = new UGGeoTransParams();
    pUGRefTranslator->SetGeoTransParams(*pTempParams);
    delete pTempParams;
    pTempParams = NULL;

    // 构造点串, pt为一个屏幕上的点
    UGPoint2D p1 = m_pMapControl->PixelToMap(pt.x, pt.y); // clicked position
    UGPoint2D p2 = m_pMapControl->PixelToMap(pt.x + 50, pt.y + 50); // offset 50 pixels

    UGArray<UGPoint2D> ugArray;
    ugArray.Add(p1);
    ugArray.Add(p2);

    int count = ugArray.GetSize();

    bool result = pUGRefTranslator->Translate(ugArray.GetData(), count);
}
...