廢話不多說,先上核心代碼:
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裏面了。