【已解决】请教大家,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)); 同问!顶一下 是不是需要转个码什么的? 继续顶啊
大神们最近没上班啊 问题在同事的帮助下解决了,参考了一些其他网站上的方法, 和大家分享一下:
首先在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;
编译之后运行: bin1203 发表于 2013-10-15 10:19 static/image/common/back.gif
问题在同事的帮助下解决了,参考了一些其他网站上的方法, 和大家分享一下:
首先在osgearth_anno ...
感谢你的无私奉献,论坛里就缺少你这样的人!我把createTextDrawable函数做修改并重新编译就可以了嘛?simhei.ttf字体下载下来放在相应的路径?谢谢 xiaol_deng 发表于 2013-10-15 14:33 static/image/common/back.gif
感谢你的无私奉献,论坛里就缺少你这样的人!我把createTextDrawable函数做修改并重新编译就可以了嘛?si ...
字体库随便放在哪个盘目录下都行。
我也是一知半解,相关的文档太少了。。 bin1203 发表于 2013-10-17 08:54 static/image/common/back.gif
字体库随便放在哪个盘目录下都行。
我也是一知半解,相关的文档太少了。。
是啊!遇到什么问题都要好久才能解决,有一些问题还解决不了。我这又遇到了一个问题希望你能帮着看看:“在earth文件通过设置“ <feature_indexing >true</feature_indexing >”参数来实现feature查询的开关,但是在程序中该怎么设置这个参数呢?” 我找了好久都没找到。
希望加你好友共同学习:) 能把你两个图片显示的代码 帖出来吗,
为啥我的图片都不能显示,
中文也不能显示
求指教,图片的显示 为什么我按照你的说法做,中文字符最后还是显示为乱码。
我osgearth版本是2.6的
页:
[1]