由于项目需要,选择了processing+unfolding的方式进行数据可是话的开发,unfolding maps是一个非常强大的地图工具,processing可以灵活自如的表达各种图形/效果。使用现成的库如Echarts/HiCharts等,虽然很快速,但是很多效果都已经作死,不能够方便的进行定制。在使用的过程中,发现unfolding对英文的支持很好,支持的地图供应商也比较多,如下的地图供应商都支持:
OpenStreetMap.OpenStreetMapProvider();
OpenStreetMap.CloudmadeProvider(API KEY, STYLE ID);
StamenMapProvider.Toner();
Google.GoogleMapProvider();
Google.GoogleTerrainProvider();
Microsoft.RoadProvider();
Microsoft.AerialProvider();
Yahoo.RoadProvider();
Yahoo.HybridProvider();
可以看到,这些供应商中没有百度,也没有高德。上面的供应商,每一个都是试了一下,发现Microsoft的效果是最好的(速度,是否被墙),但是美中不足的地方就是,微软地图使用英文显示中国的地名,这非常不方便,如下图:
其实微软的地图是可以支持中文的,只是unfolding在封装是时候没有考虑到中国人民的需求而已,修改unfolding的源代码就可以做到(感谢小组内同学提供的连接:http://www.cnblogs.com/crazypig/archive/2012/03/17/2403977.html),这个链接中,提到了微软中国地图的连接,对unfolding的代码做如下修改:
其实就是将unfolding hard code的链接修改为微软支持中文的连接就可以了。
我从unfolding maps那里fork了一份代码,修改后的代码链接:https://github.com/aktiger/unfolding/blob/master/src/de/fhpotsdam/unfolding/providers/Microsoft.java
为方便大家使用,我把编译好支持中的的unfolding.jar包放到了csdn,供大家下载。
将上面编译好的unfolding.jar包下载下来后,覆盖掉processing原有的jar包就可以看到中文的地图:
要查看覆盖的unfolding.jar包的路径,如下图: