bin1203 发表于 2013-10-12 15:49:06

【已解决】请教大家,OSGEarth怎样显示中文地名??

本帖最后由 bin1203 于 2013-10-15 10:24 编辑

中文显示乱码。。请教大家   应该如何解决。。

我是在osgearth_annotation.cpp中尝试进行的修改。

labelGroup->addChild( new PlaceNode(mapNode, GeoPoint(geoSRS, 139.75, 35.68), "东京"         , pin));
    labelGroup->addChild( new PlaceNode(mapNode, GeoPoint(geoSRS, -90.25, 29.98), "New Orleans"   , pin));
    labelGroup->addChild( new PlaceNode(mapNode, GeoPoint(geoSRS, -80.28, 25.82), "Miami"         , pin));
    labelGroup->addChild( new PlaceNode(mapNode, GeoPoint(geoSRS,-117.17, 32.72), "San Diego"   , pin));
    labelGroup->addChild( new PlaceNode(mapNode, GeoPoint(geoSRS, -100.10, 40.60), "U.S.A"      , flag));
    labelGroup->addChild( new PlaceNode(mapNode, GeoPoint(geoSRS, 106.20, 30.40), "China"      , flag1));

xiaol_deng 发表于 2013-10-12 22:30:28

同问!顶一下

dizzy 发表于 2013-10-13 21:21:47

是不是需要转个码什么的?

bin1203 发表于 2013-10-14 09:47:13

继续顶啊


大神们最近没上班啊

bin1203 发表于 2013-10-15 10:19:30

      问题在同事的帮助下解决了,参考了一些其他网站上的方法, 和大家分享一下:
首先在osgearth_annotation.cpp(不同版本类名会有一些差别)中,加入中文路径:
pin.getOrCreate<TextSymbol>()->font() = std::string("E:/simhei.ttf");
         其中 pin是Style的对象,然后在需要标记中文地名的地方写入中文,例如:
labelGroup->addChild( new PlaceNode(mapNode, GeoPoint(geoSRS, 139.75, 35.68), "东京"         , pin));

      第二步,在AnnotationUtils.cpp的createTextDrawable函数中中加入如下几行代码:
         char *str = 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;

编译之后运行:

xiaol_deng 发表于 2013-10-15 14:33:48

bin1203 发表于 2013-10-15 10:19 static/image/common/back.gif
问题在同事的帮助下解决了,参考了一些其他网站上的方法, 和大家分享一下:
首先在osgearth_anno ...

感谢你的无私奉献,论坛里就缺少你这样的人!我把createTextDrawable函数做修改并重新编译就可以了嘛?simhei.ttf字体下载下来放在相应的路径?谢谢

bin1203 发表于 2013-10-17 08:54:19

xiaol_deng 发表于 2013-10-15 14:33 static/image/common/back.gif
感谢你的无私奉献,论坛里就缺少你这样的人!我把createTextDrawable函数做修改并重新编译就可以了嘛?si ...

字体库随便放在哪个盘目录下都行。

我也是一知半解,相关的文档太少了。。

xiaol_deng 发表于 2013-10-17 09:37:30

bin1203 发表于 2013-10-17 08:54 static/image/common/back.gif
字体库随便放在哪个盘目录下都行。

我也是一知半解,相关的文档太少了。。

是啊!遇到什么问题都要好久才能解决,有一些问题还解决不了。我这又遇到了一个问题希望你能帮着看看:“在earth文件通过设置“ <feature_indexing >true</feature_indexing >”参数来实现feature查询的开关,但是在程序中该怎么设置这个参数呢?” 我找了好久都没找到。
希望加你好友共同学习:)

hitcms 发表于 2015-3-3 22:05:40

能把你两个图片显示的代码 帖出来吗,
为啥我的图片都不能显示,
中文也不能显示

求指教,图片的显示

wbweng 发表于 2015-7-2 16:22:32

为什么我按照你的说法做,中文字符最后还是显示为乱码。
我osgearth版本是2.6的
页: [1]
查看完整版本: 【已解决】请教大家,OSGEarth怎样显示中文地名??