Log4Classicning

好读书 不求甚解 每有会意 便欣然忘食

Using JXMapKit Develop A Map Client Based on Swing
2008年1月14日

请注意这是一个能够让你激动的东西。java.net中的jDesktop项目中提供了一个名叫JXMapKit的Swing组件包,利用它,可以在Swing中开发地图客户端。说得直白一些,这就是Swing上的OpenLayers。

默认的情况下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);

请不要忘记最后的&。

« 归来记Mashup Tool: Worldkit »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Search

站点统计

  • 文章总数:745
  • 评论总数:2630
  • 引用总数:4
  • 浏览总数:5693
  • 留言总数:42
  • 当前主题:ClassicningDailyLog Style
  • 当前样式:footoo

网站收藏

图标汇集

  • Creative Commons License
  • Widgetize!
  • visitor stats

Powered By Z-Blog 1.8 Spirit Build 80722

2004 - 2007 Classicning.com. 苏ICP备06039259号.