六、WorldWindJava编码问题

8 篇文章 0 订阅
1 篇文章 0 订阅

一、KML中文乱码问题
再上一章我们修改KML文件图标时,当PointPlacemark的label值为中文编码时会出现乱码问题,此时我们只需修改src->gov.nasa.worldwind.render中PointPlacemarkAttributes.java 文件中的labelFont属性,需修改代码为

public static final Font DEFAULT_LABEL_FONT = Font.decode("宋体-BOLD-14");

二、图层中文乱码问题
首先我们运行src->gov.nasa.worldwindx.examples.kml包中KMLViewer.java文件,添加Islands.kml文件,可以看到如下图所示:
这里写图片描述
此时我们就需要对左侧图层树的中文乱码问题进行解决。
F3进入LayerTree.java文件,
1)首先我们会看到所有构造方法都指向该文件中的 initialize()方法。
2)在 initialize()方法中,设置了Model和TreeLayout参数。而字体问题是属于显示部分,那我们看setLayout()方法,进入createTreeLayout()方法。
3)在进入createTreeLayout()方法,该方法返回一个TreeLayout值,并且在该方法中设置了BasicTreeAttributes属性值,F3进入BasicTreeAttributes文件,该文件中定义了图层的Font属性,我们需更改代码

this.font = Font.decode("宋体-BOLD-14");
        this.descriptionFont = Font.decode("宋体-12");

再次运行KMLViewer文件,可以看到
这里写图片描述

三、资源文件的汉化
WorldWind中的一些字符使用了资源文件保存,字符串资源文件是位于gov.nasa.worldwind.util包中的MessageStrings.properties文件。备份一份该文件,然后编辑该文件,更改经常使用到的项,把英文字符更改为中文字符,并且把该文件改名为Source.properties,复制到%JAVA_HOME%\bin文件夹中。
我主要改了一下几项,

# Generic terms
term.Altitude=视点高度
......
term.Downloading=下载中...
......
term.elevation=海拔
term.expiryTime=失效时间
......
term.NoNetwork=网络中断
term.OffGlobe=球体绘图完毕
......

然后以管理员身份运行cmd.exe,进入%JAVA_HOME%\bin路径,在命令行中输入native2ascii Source.properties MessageStrings.properties
便可以生成MessageStrings.properties资源文件

# Generic terms
term.Altitude=\u89c6\u70b9\u9ad8\u5ea6
......
term.Downloading=\u4e0b\u8f7d\u4e2d...
......
term.elevation=\u6d77\u62d4
term.expiryTime=\u5931\u6548\u65f6\u95f4
......
term.NoNetwork=\u7f51\u7edc\u4e2d\u65ad
term.OffGlobe=\u7403\u4f53\u7ed8\u56fe\u5b8c\u6bd5
......

再保存在gov.nasa.worldwind.util包中。
即可以在球体中以中文显示修改部分。

四、在WorldWind中有一部分字符并没有使用资源文件,而是在源码中使用了字符变量或字符数组,这部分需要直接修改程序完成


本章结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值