osgearth如何显示二维模式
时间: 2023-08-10 12:09:11 浏览: 329
osgearth-3.1
要在osgEarth中显示二维模式,您需要使用2D地图视图。以下是一些实现此目的的步骤:
1. 首先,您需要创建一个osgEarth::Map对象,并将其添加到osgViewer::Viewer中。
2. 接下来,您需要创建一个osgEarth::Util::Controls::ControlCanvas对象,并将其添加到osgViewer::Viewer中。
3. 然后,您需要创建一个osgEarth::Util::EarthManipulator对象,并使用setViewpoint方法设置其视点。这将使相机进入2D模式。
4. 最后,您需要创建一个osgEarth::Util::Controls::MapControl对象,并将其添加到ControlCanvas中。这将显示二维地图。
以下是示例代码:
```
#include <osgEarth/Map>
#include <osgEarth/MapNode>
#include <osgEarthUtil/EarthManipulator>
#include <osgEarthUtil/Controls>
int main(int argc, char** argv)
{
// 创建Map对象
osg::ref_ptr<osgEarth::Map> map = new osgEarth::Map();
// 创建MapNode对象
osg::ref_ptr<osgEarth::MapNode> mapNode = new osgEarth::MapNode(map);
// 创建Viewer对象
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();
// 将MapNode添加到Viewer中
viewer->setSceneData(mapNode);
// 创建ControlCanvas对象
osg::ref_ptr<osgEarth::Util::Controls::ControlCanvas> canvas = new osgEarth::Util::Controls::ControlCanvas(viewer, "HUD");
// 创建EarthManipulator对象,并设置视点
osg::ref_ptr<osgEarth::Util::EarthManipulator> manipulator = new osgEarth::Util::EarthManipulator();
manipulator->setViewpoint(osgEarth::Viewpoint("2D View", 0.0, 0.0, 0.0, 0.0, -90.0, 5000000.0));
// 将EarthManipulator添加到Viewer中
viewer->setCameraManipulator(manipulator);
// 创建MapControl对象,并将其添加到ControlCanvas中
osg::ref_ptr<osgEarth::Util::Controls::MapControl> mapControl = new osgEarth::Util::Controls::MapControl(mapNode);
canvas->addControl(mapControl);
// 运行Viewer
return viewer->run();
}
```
这将显示一个简单的二维地图视图。您可以使用osgEarth的其他功能来添加图层、标注等。
阅读全文