EarthManipulator实现定位

    EarthManipulator* em = new EarthManipulator();
    viewer.setCameraManipulator( em );

方法一

    em->setTetherNode( app.geo );

    osgEarth::Viewpoint vp;
    vp.setNode( app.geo );
    vp.heading()->set( -45.0, Units::DEGREES );
    vp.pitch()->set( -20.0, Units::DEGREES );
    vp.range()->set( model->getBound().radius()*10.0, Units::METERS );
    em->setViewpoint( vp );

这种方法会锁定相机,导致鼠标左键不能移动。资料说可以解除绑定,具体没详细研究。

方法二

            Viewpoint vp;
            vp.focalPoint() = GeoPoint(_srs.get(), -90.0, 0, 0, ALTMODE_ABSOLUTE);
            vp.heading()->set( 0.0, Units::DEGREES );
            vp.pitch()->set( -89.0, Units::DEGREES );
            vp.range()->set( _srs->getEllipsoid()->getRadiusEquator() * 3.0, Units::METERS );
            vp.positionOffset()->set(0,0,0);
            em->setViewpoint( vp );

这种方法稍微能好些,range需要自己根据模型的大小计算合适的范围。定位模型我使用这个方法。

方法三

    manip->setViewpoint( Viewpoint(
        "Home",
        -71.0763, 42.34425, 0,   // longitude, latitude, altitude
         24.261, -21.6, 3450.0), // heading, pitch, range
         5.0 );                    // duration

这个方法定位模型不是很好,定位一个点效果刚刚的。定位点我使用这个方法。

以上是个人理解,不喜勿喷。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值