PIE-SDK For C++屏幕坐标和地图坐标转换

可紊 提交于 2020-02-26 14:47:48

1.功能简介

   屏幕坐标和地图坐标转换,就是字面意思,将电脑屏幕的坐标转换为带有空间信息的地图坐标,主要运用DisplayTransformationPtr中的ToMapPoint()方法,将屏幕坐标转换为地理坐标,而地图坐标转换为设备坐标(屏幕),用的是FromMapPoint()方法。

2.功能实现说明

2.1. 实现思路及原理说明

第一步

实例化point对象

第二步

调用ToMapPoint()FromMapPoint()方法对设备点坐标和地图坐标经进行转化

2.2. 核心接口与方法

接口/

方法

说明

 

SysDisplay::DisplayTransformationPtr

ToMapPoint

将屏幕坐标转换为地图坐标

FromMapPoint

从地图坐标转换为设备坐标

FromPagePoint

将页面点转换为设备点

2.3. 示例代码

项目路径

百度云盘地址下/PIE示例程序/02.地图操作/06.地图鼠标事件监听

数据路径

百度云盘地址下/PIE示例数据/栅格数据/04.World/World.tif

视频路径

百度云盘地址下/PIE视频教程/02.地图操作/05.屏幕和地图坐标转换.avi

示例代码

 1、以下代码为bool PIEMainWindow::eventFilter(QObject *obj, QEvent *ev)方法下的部分代码片段

else if (ev->type()==QEvent::MouseButtonPress)

        {    

            QMouseEvent *pMouseEvent = static_cast<QMouseEvent*>(ev);

            QPoint qPoint;

            qPoint.setX(pMouseEvent->x());

            qPoint.setY(pMouseEvent->y());

            SysGeometry::PointPtr point = new SysGeometry::Point();

            point = m_pMapControl->GetActiveView()->GetDisplayTransformation()->ToMapPoint(qPoint);

            QString screenPoint = QString("屏幕坐标:%1,%2").arg(pMouseEvent->x()).arg(pMouseEvent->y());

            QString mapPoint= QString("地理坐标:%1,%2").arg(point->GetX()).arg(point->GetY());

            QString info = screenPoint + "\r\n" + mapPoint;

            QMessageBox::information(this, "屏幕坐标转换地图坐标", info, QMessageBox::Ok);

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

            QPoint tempPoint=m_pMapControl->GetActiveView()->GetDisplayTransformation()->FromMapPoint(point);

            QString tempPointStr = QString("屏幕坐标:%1,%2").arg(tempPoint.x()).arg(tempPoint.y());

            info = mapPoint + "\r\n" + tempPointStr;

            QMessageBox::information(this, "地图坐标转换屏幕坐标", info, QMessageBox::Ok);

        }

2.4. 示例截图

屏幕坐标转换地图坐标

地图坐标转换为屏幕坐标

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!