废话不多说,先上核心代码:
osg::NodePathList nodePaths = node->getParentalNodePaths();
if ( nodePaths.empty() )
return 0;
osg::NodePath path = nodePaths[0];
osg::Matrixd localToWorld = osg::computeLocalToWorld(path);
osg::Vec3d world = node->getBound().center() * localToWorld;
GeoPoint point;
const osgEarth::SpatialReference* sr = _global->MapNode->getMapSRS();
point.fromWorld(sr, world);
1.获取节点的getParentalNodePaths
2.取出osg::NodePath
3.使用computeLocalToWorld将path转为矩阵
4.模型包围盒中心node->getBound().center()转世界座标
5.获取座标系SpatialReference
6.定义GeoPoint,利用fromWorld转经纬度
好了,你要的数据都在point里面了。