查看: 1411|回复: 3

【求助】EventHandler获取坐标有时不正确

[复制链接]

该用户从未签到

发表于 2013-12-31 09:11:04 | 显示全部楼层 |阅读模式
本帖最后由 就是那个胖子 于 2013-12-31 09:34 编辑

用EventHandler方法获取鼠标位置,然后转换成经纬度显示,有时候出现值不准确的问题,请各位帮忙看看问题出在哪儿,指点下,谢谢了,代码如下:
void QueryPosHandler::Update(float fXPos, float fYPos, float fHeight, osgViewer::View* pViewer)
{
        bool yes = false;
        osg::Vec3d world;
        if (m_pTerrain->getWorldCoordsUnderMouse(pViewer, fXPos, fYPos, world))
        {
                GeoPoint mapPoint;
                mapPoint.fromWorld(m_pTerrain->getSRS(), world);

                double query_resolution = 0.1;
                double out_hamsl = 0.0;
                double out_resolution = 0.0;

                bool ok = m_pQuery->getElevation(mapPoint, out_hamsl, query_resolution, &out_resolution);
                if (ok)
                {
                        mapPoint.z() = out_hamsl;
                        GeoPoint mapPointGeodetic(m_pMapNode->getMapSRS()->getGeodeticSRS(), mapPoint);
                        CString strPos = "";
                        CString strLat = "";
                        CString strLon = "";
                        CString strHeight = "";
                        strLon.Format("%lf", mapPoint.x());
                        strLat.Format("%lf", mapPoint.y());
                        strHeight.Format("%lf", mapPoint.z());
                        strPos = "Lon:" + strLon + "  Lat:" + strLat + "  Height:" + strHeight;
                        m_pMousePosCtrl->setText(strPos.GetBuffer());
                        yes = true;
                }
        }
        if(!yes)
        {
                m_pMousePosCtrl->setText("");
        }
}

bool QueryPosHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa)
{
        if (ea.getEventType() == osgGA::GUIEventAdapter::MOVE)
        {
                osgViewer::View* view = static_cast<osgViewer::View*>(aa.asView());
                Update(ea.getX(), ea.getY(), 0, view);
        }
        return false;
}
结果如图所示:我加载影像范围,纬度最大值是29.2,但是鼠标在影像范围内,显示的坐标却是30多:

鼠标在中国区域内,坐标显示为负值:

坐标显示.jpg
坐标显示2.jpg

该用户从未签到

 楼主| 发表于 2014-1-2 11:24:44 | 显示全部楼层
没人回答啊,自己顶上去

该用户从未签到

发表于 2014-1-2 12:27:27 | 显示全部楼层
osgEarthUtil/MouseCoordsTool 这个工具是专门显示鼠标点击点的经纬度的,你可以直接使用或者参照它修改下

该用户从未签到

 楼主| 发表于 2014-1-2 17:38:11 | 显示全部楼层
ysw 发表于 2014-1-2 12:27
osgEarthUtil/MouseCoordsTool 这个工具是专门显示鼠标点击点的经纬度的,你可以直接使用或者参照它修改下

谢谢,我试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表