您好:
环境是vs2013+Qt1.2.3插件(qt-x86-msvc2013-5.5.0)+iobjectscpp-9.1.1-16828-70590。操作系统:win7 x64
我在用鼠标点击获取地图坐标时,在小比例尺大范围地图上,用qmapcontrol里的PixelToMap获取到的地图坐标偏差较大,获取到的地图坐标实际都在我点击位置的右下方(与idesktop里的拾取功能比对),比例尺越大偏差越小,只有把地图放大到很大,也就是比例尺很大时获取到的才是准确的,这是为什么呀?
这是我的鼠标点击代码:
void XWZK::mousePressEvent(QMouseEvent* event)
{
if (event->button() == Qt::LeftButton)
{
QPoint pt(event->x(), event->y());
UGPoint2D MP = qMapControl->PixelToMap(pt);
qDebug() << "MP x=" << MP.x << "y=" << MP.y;
}
}
这是Extensions4Qt里qmapcontrol相关代码:
UGPoint2D QMapControl::PixelToMap(const QPoint &point)
{
UGMap* pMap = this->GetMap();
UGDrawCache &drawing = pMap->GetDrawing()->m_DrawCache;
UGPoint DP(point.x(), point.y());
UGPoint2D LP(0,0);
drawing.DPtoLP(&DP, &LP, 1);
UGPoint2D MP(0, 0);
pMap->GetDrawing()->m_DrawParam.LPtoMP(LP, MP);
return MP;
}