默认的情况下JXMapKit提供了Pan, Zoom的地图浏览基本功能,此外,还有一个MiniMapView,即常说的鹰眼图。地图显示方面JXMapKit实现了基本的地图拼接功能,可以查看Tile地图。
默认的情况下,JXMapKit显示NASA著名的BlueMarble卫星影像。

同时,作为开源世界的一员,JXMapKit也提供了对OpenStreetMaps的原生支持:

更加令人兴奋的是,你可以定义自己的地图服务器,显示任何自己想显示的东西。例如在Sun的介绍页面上,他们居然放了一个魔兽世界的地图。下面是我的地图,用过如下的代码简单地定义就可以了:
//map is an instance of JXMapKit
map.setDefaultProvider(JXMapKit.DefaultProviders.Custom);
WMSService service = new WMSService(
"http://localhost:8181/geoserver/wms?",
"topp:cntry,topp:cities,topp:lakes,topp:rivers"
);
WMSTileFactory wms = new WMSTileFactory(service);
map.setTileFactory(wms);
你唯一要注意的是需要在WMS的baseUrl后面加上一个“?”。
显示的地图如下:

当然,问题还是大大的存在:
1. 地图变形严重。我打印出来的WMSURL确实设置了EPSG4326,但是从结果来看,两级地区的变形非常大。这和浏览器中OpenLayers获得的图象是完全不同的。我想是否是BBox的数值计算错误导致的,目前还不得而知。
2. WMS可供设置的接口太少。JXMapKit把WMSURL的大部分参数都封装了,以至于用惯了WMS的人肯定觉得无从下手,不自由。比如我的bgcolor就没有办法设置。
总之,这个Swing组件着实让我兴奋了一个上午。开源社区的成果越来越喜人,GISer们,你们何必抱着ESRI老旧的笨拙的昂贵的东西不放呢。
PS: 有一点让我对Sun比较反感,现在SDN几乎所有的文章都要和NetBeans扯上关系,连这个小小是实例都要打开NetBeans,建立一个Java Desktop Project,导入控件,拖进来,打开对话框,设置属性,何其烦哉!!
看来Sun是真的想把NetBeans搞成VisualStudio,把Java的初学者搞成IDE的牺牲品。不过IBM也别笑,IBM Developer Works也是一样,能扯上的都要把Eclipse搬上来。
Add on 2008.1.16:
看来我是错了,通过在WMS的baseurl中设置WMS参数可以实现一些定制,比如透明、背景色之类的:
//map is an instance of JXMapKit
map.setDefaultProvider(JXMapKit.DefaultProviders.Custom);
WMSService service = new WMSService(
"http://localhost:8181/geoserver/wms?bgcolor=0x9999FF&",
"topp:cntry,topp:cities,topp:lakes,topp:rivers"
);
WMSTileFactory wms = new WMSTileFactory(service);
map.setTileFactory(wms);
请不要忘记最后的&。

