目标:(七十二)中问题148
java版本:
String iPath="http://online2.map.bdimg.com/tile/?qt=tile&x=4&y=4&z=5&styles=pl&udt=20171031&scaler=1&p=1";
try {
//对资源链接
URL url=new URL(iPath);
//打开输入流
InputStream inputStream=url.openStream();
//对网上资源进行下载转换位图图片
bitmap= BitmapFactory.decodeStream(inputStream);
inputStream.close();
//再一次打开
inputStream=url.openStream();
File file=new File(Environment.getExternalStorageDirectory()+"/haha.jpg");
FileOutputStream fileOutputStream=new FileOutputStream(file);
int hasRead=0;
while((hasRead=inputStream.read())!=-1){
fileOutputStream.write(hasRead);
}
fileOutputStream.close();
inputStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
Log.v("111","2222");
}
c++版本
osgEarth::ReadResult r = URI("/storage/emulated/0/Android/data/com.example.testnativecplusplus/tests/mb_tiles_test.earth").readString( 0 );
std::stringstream in( r.getString() );
osgEarth::URIContext uriContext( 0 );
osg::ref_ptr<osgEarth::XmlDocument> doc = osgEarth::XmlDocument::load( in, uriContext );
osgEarth::Config docConf = doc->getConfig();
osgEarth::Config conf;
conf = docConf.child( "map" );
conf=conf.child( "image" );
Layer* layer = osgEarth::Layer::create("image", conf);
osgEarth::ImageLayer* il= dynamic_cast<osgEarth::ImageLayer*>(layer);
il->open();
TileKey key(0,0,3,il->getProfile());
osgEarth::GeoImage geoImage = il->createImage( key, 0 );
bool bRes=osgDB::writeImageFile(*geoImage.getImage(),"abc.png");
待继续分析列表:
9、earth文件中都有哪些options((九)中问题)
10、如何根据earth文件options创建不同的地理信息引擎节点((九)中问题)
11、rex地理信息引擎的四梁八柱((九)中问题)
12、osgEarth::TerrainEngineNode中setMap方法作用((十二)中问题)
13、RexTerrainEngineNode中_mapFrame的作用((十二)中问题)
14、地形变形(Terrain morphing)((十二)中问题)
15、地球瓦片过期门限的含义((十二)中问题)
16、高分辨率优先的含义((十二)中问题)
17、OSGEARTH_DEBUG_NORMALS环境变量的作用((十二)中问题)
18、活跃瓦片寄存器的作用((十二)中问题)</

本文详细分析了osgEarth的Rex引擎地图下载器的工作原理,涵盖了从请求生成、瓦片加载到数据处理的全过程,涉及众多关键组件和概念,如DatabasePager、TileNode、分页加载器、瓦片生命周期等。
最低0.47元/天 解锁文章
1609

被折叠的 条评论
为什么被折叠?



