查看: 1649|回复: 5

请问如何设置MapNode的cache?

[复制链接]

该用户从未签到

发表于 2010-1-14 14:43:32 | 显示全部楼层 |阅读模式
本帖最后由 lianghui 于 2010-1-14 15:27 编辑

如题

我想使用如下的config文件配制方法实现:
Viewer = new osgViewer::Viewer();
MapNode = new MapNode();
Root = new osg::Switch;
osgEarth::Config conf;
conf.add( "cache","NASA");
conf.add( "path","F:/cache");
conf.add( "url","http://localhost/TMS/tms.xml");
MapLayer* layer = new MapLayer("NASA", MapLayer::TYPE_IMAGE, "tms", conf );MapNode->getMap()->addMapLayer(layer);
Root->addChild(MapNode);
Viewer->setSceneData(Root);

这种方式不行,请教各位如何通过配置实现cache在MapNode中的设置?
osgEarth::Cache* cache = new Cache();是个不能实例化的抽象类,所以
layer->setCache(cache);的cache也没办法实现。

我看过一个通过读.earth文件加cache的例子,是可以实现的。如下:
std::string modelPath = "../configs/word_wind.earth";
{
  osg::ref_ptr<osg::Node> node = osgDB::readNodeFile(modelPath);
  viewer.setSceneData(node.get());
}
只要在word_wind.earth里边加入节点cache和子节点path就行
<map name="TileService" type="geocentric">
<cache type="tms" tms_type="">
       <path>F:\cache</path>
   </cache>
   <image name="tileservice" driver="tileservice">
       <url>http://s0.tileservice.worldwindcentral.com/getTile?<;/url>
       <dataset>bmng.topo.bathy.200401</dataset>
       <format>jpg</format>
    <max_level>7</max_level>
   </image>  
</map>

该用户从未签到

 楼主| 发表于 2010-1-14 21:14:55 | 显示全部楼层
解决了
        osgEarth::TMSCache *pcache=new TMSCache("F:/cache3");
        mapnode->getMap()->setCache(pcache);

该用户从未签到

发表于 2010-1-15 10:17:32 | 显示全部楼层
恭喜自己搞定~

该用户从未签到

 楼主| 发表于 2010-1-17 23:13:17 | 显示全部楼层
3# tianxiao888

谢谢啦!

新手上路多多关照!

该用户从未签到

 楼主| 发表于 2010-1-17 23:14:06 | 显示全部楼层
恭喜自己搞定~
tianxiao888 发表于 2010-1-15 10:17


谢谢啦!
新手上路,多多关照!

该用户从未签到

发表于 2010-1-17 23:17:01 | 显示全部楼层
据我所知目前国内研究osgEarth的朋友还不多,至少我个人对此还没有什么认识。不过osgEarth的即时瓦片构建和网络传输的实现的确令人颇有兴趣。楼主愿意的话,不妨为osgChina贡献几篇简要的教程如何
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表