查看: 3845|回复: 9

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

[复制链接]

该用户从未签到

发表于 2013-10-12 15:49:06 | 显示全部楼层 |阅读模式
本帖最后由 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));
QQ图片20131012154607.jpg

该用户从未签到

发表于 2013-10-12 22:30:28 | 显示全部楼层
同问!顶一下

该用户从未签到

发表于 2013-10-13 21:21:47 | 显示全部楼层
是不是需要转个码什么的?

该用户从未签到

 楼主| 发表于 2013-10-14 09:47:13 | 显示全部楼层
继续顶啊


大神们最近没上班啊

该用户从未签到

 楼主| 发表于 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[wSize+1];
        memset(wtext,0,wSize+1);
        mbstowcs(wtext,text.c_str(),wSize);
        t->setText(wtext);
        delete[] wtext;
        wtext=NULL;

编译之后运行: QQ截图20131015101627.png

该用户从未签到

发表于 2013-10-15 14:33:48 | 显示全部楼层
bin1203 发表于 2013-10-15 10:19
问题在同事的帮助下解决了,参考了一些其他网站上的方法, 和大家分享一下:
首先在osgearth_anno ...

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

该用户从未签到

 楼主| 发表于 2013-10-17 08:54:19 | 显示全部楼层
xiaol_deng 发表于 2013-10-15 14:33
感谢你的无私奉献,论坛里就缺少你这样的人!我把createTextDrawable函数做修改并重新编译就可以了嘛?si ...

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

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

该用户从未签到

发表于 2013-10-17 09:37:30 | 显示全部楼层
bin1203 发表于 2013-10-17 08:54
字体库随便放在哪个盘目录下都行。

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

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

该用户从未签到

发表于 2015-3-3 22:05:40 | 显示全部楼层
能把你两个图片显示的代码 帖出来吗,
为啥我的图片都不能显示,
中文也不能显示

求指教,图片的显示

该用户从未签到

发表于 2015-7-2 16:22:32 | 显示全部楼层
为什么我按照你的说法做,中文字符最后还是显示为乱码。
我osgearth版本是2.6的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表