OSG点选操作的思路是从osgGA::GUIEventHandler
继承,并重新实现虚函数virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa);
。获取到点选信息后,此处我们不进行处理,而是单一的传出去,由外部需要此点选信息的地方进行处理。对于传出信息,我选择了Qt的信号槽操作,因而,在继承osgGA::GUIEventHandler
的同时,我们还需要继承QObject。
代码如下:pickhandle.h
class PickHandle : public QObject, public osgGA::GUIEventHandler
{
Q_OBJECT
public:
PickHandle(const osgEarth::SpatialReference* srs);
~PickHandle();
protected:
virtual bool handle(const osgGA::GUIEventAdapter& ea,
osgGA::GUIActionAdapter& aa);
private:
osg::Vec3d getPos(const osgGA::GUIEventAdapter& ea,
osgGA::GUIActionAdapter