osgEarth如何加载离线谷歌卫星地图瓦片的源码教程.docx
《osgEarth如何加载离线谷歌卫星地图瓦片的源码教程.docx》由会员分享,可在线阅读,更多相关《osgEarth如何加载离线谷歌卫星地图瓦片的源码教程.docx(15页珍藏版)》请在冰点文库上搜索。
![osgEarth如何加载离线谷歌卫星地图瓦片的源码教程.docx](https://file1.bingdoc.com/fileroot1/2023-5/16/98d720bc-0776-4bf5-97ce-db9ec3de13de/98d720bc-0776-4bf5-97ce-db9ec3de13de1.gif)
osgEarth如何加载离线谷歌卫星地图瓦片的源码教程
osgEarth如何加载离线谷歌卫星地图瓦片的源码教程
说明
本实例演示重新编译bing驱动直接加载本地离线影像瓦片地图。
本实例使用软件版本:
和VC10编译环境(参考osgearth加载谷歌卫星地图的源码案例),vs2010,水经注万能地图下载器。
影像瓦片来源“水经注万能地图下载器”。
如果没有安装本软件,可以XX“水经注软件”到官方网站下载。
一、下载瓦片数据
启动水经注万能地图下载器,点击“我的下载”,选择“新建任务”,弹出“选择地图类型”对话框,选择相应的地图类型,点击“确认”,如下图。
弹出“新建任务”对话框
输入全球坐标,由于我们需要导出瓦片数据,为了增加缩放效果,这里我们从1级到8级都勾选上。
选择好级别后,点击开始下载。
下载完成后会弹出对话框询问是否要立即导出,选择“是”,然后显示“导出图片数据”对话框,如下图所示。
在该对话框中,选择导出“瓦片:
BingMap”,导出级别“1-8”,选择保存路径,点击“输出”按钮导出数据即可。
二、重新编译Bing驱动
新建“osgdb_osgearth_bingd”动态库项目,如下图所示。
点击“确定”,弹出“应用程序向导”,如下图所示。
点击下一步
选择程序类型“DLL”,点击“完成”。
添加“包含目录”和“库目录”
包含目录设置为“D:
\OSG\include”
库目录设置为“D:
\OSG\lib“
以上目录路径根据OSG文件位置设定。
附加依赖项
点击“确定“。
根据D:
\OSG\src\\osgearth_gitgui\src\osgEarthDrivers\bing路径找到Bing驱动源代码,如下图所示。
中的代码复制粘贴到,刚刚新建的中
如下图所示。
下一步改写代码
#include"BingOptions"改成#include"osgEarthDrivers/bing/BingOptions"
_debugDirect(false)默认为false改成_debugDirect(true)
找到getDirectURI()将内容替换成:
returnstringify()<<"D:
/Test/tt3Bing"<新建
td:
:
stringgetLodKey(constTileKey&key)
{
unsignedintlod=()+2;
std:
:
stringstreamsLod;
if(lod<10)
sLod<<"/L0"<if(lod>=10)
sLod<<"/L"<目Debug中查看到
文件。
将
拷贝到OSG的bin目录下,替换掉之前的dll文件。
三、新建osgearth应用程序
新建步奏跟新建动态库类似,只是不再选择“DLL“,选择“控制台应用程序“
设置“包含目录“,”库目录“,”依赖项“跟DLL设置一样。
这里新建了一个名为“osgearthAPI“的控制台应用程序。
代码如下
#include""
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int_tmain(intargc,_TCHAR*argv[])
{
osgEarth:
:
Map*map=newosgEarth:
:
Map();
osg:
:
ref_ptr:
Viewer>viewer=newosgViewer:
:
Viewer();
osg:
:
Group*root=newosg:
:
Group;
osg:
:
Node*tankNode=NULL;
osg:
:
Vec3tankPosit;
//osgEarth:
:
Drivers:
:
GDALOptionsgdal;
osgEarth:
:
Drivers:
:
BingOptionsbing;
//()="D:
/Documents/VisualStudio2010/Projects/test3/test3/data/";
//map->addImageLayer(newosgEarth:
:
ImageLayer("xx",gdal));
map->addImageLayer(newosgEarth:
:
ImageLayer("xx",bing));
osgEarth:
:
MapNode*mapNode=newosgEarth:
:
MapNode(map);
viewer->setSceneData(mapNode);
viewer->realize();
returnviewer->run();
}
启动程序,运行效果如下图所示。
至此,Osgearth加载本地离线影像瓦片地图案例完成。