计算任意模型中心经纬度的方法

废话不多说,先上核心代码:

			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里面了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章