|
我按照论坛搜到的方法,修改了 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[wSize+1];
memset(wtext,0,wSize+1);
mbstowcs(wtext,text.c_str(),wSize);
t->setText(wtext);
delete[] wtext;
wtext=NULL; |
|