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. 示例截图
屏幕坐标转换地图坐标
地图坐标转换为屏幕坐标
来源:https://www.cnblogs.com/PIESat/p/12366778.html