奇怪的问题,中文乱码!
我按照论坛搜到的方法,修改了 src\osgEarthUtil\Controls.cpp的LabelControl::calcSize(const ControlContext& cx, osg::Vec2f& out_size)的settext()部分,添加placenode和lablenode可以显示中文了,但是earth里加载shp中的中文还是乱码,然后继续修改代码AnnotationUtils.cpp中的createTextDrawable函数部分,再运行shp的中文显示正常了,placenode又乱码了,删掉后加的代码,placenode的就又显示正常了。奇怪的很啊。就加了以下的代码么。为什么会这样啊?//t->setText( text, text_encoding );
setlocale(LC_ALL,"chs");
int wSize=text.size()*2+2;
wchar_t* wtext=new wchar_t;
memset(wtext,0,wSize+1);
mbstowcs(wtext,text.c_str(),wSize);
t->setText(wtext);
delete[] wtext;
wtext=NULL; 还有就是我有总大小近1g(主要是dbf比较大)的全球地名shp数据,直接在earth里加载shp很慢,有什么好的方法显示地名吗? 解决了,改了两处源代码后,加载placenode时,不能直接在那里输入字符串,而是QSTRING tem= formutf8(“需要的字符串”);然后std::string temp=tem.tostdstring(),这样就没问题了,我用的是qtcreator,不知道为很什么,只是贴出来供大家探讨,希望大家少走弯路。
页:
[1]