yanhe524 发表于 2014-4-23 12:30:53

奇怪的问题,中文乱码!

我按照论坛搜到的方法,修改了 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;

yanhe524 发表于 2014-4-23 12:33:17

还有就是我有总大小近1g(主要是dbf比较大)的全球地名shp数据,直接在earth里加载shp很慢,有什么好的方法显示地名吗?

yanhe524 发表于 2014-4-28 12:11:04

解决了,改了两处源代码后,加载placenode时,不能直接在那里输入字符串,而是QSTRING tem= formutf8(“需要的字符串”);然后std::string temp=tem.tostdstring(),这样就没问题了,我用的是qtcreator,不知道为很什么,只是贴出来供大家探讨,希望大家少走弯路。
页: [1]
查看完整版本: 奇怪的问题,中文乱码!