引路蜂地图也提供对Java SE平台的支持,可以开发桌面地图应用,由于Java SE的跨平台特性,使用Java SE引路蜂地图开发包开发的地图应用可以运行于Windows ,Lunix,Unix,Mac OS等平台。开发桌面应用比开发移动应用要容易的多,屏幕,内存等方面都比移动平台要宽裕的多。
下面使用一个简单的应用来介绍一下Java SE引路蜂地图开发。示例截图如下
设置引路蜂地图开发包License
引路蜂开发包License分两部分,一个为License文件guidebee.lic ,另一部分为License文件对应的注册码,需在程序运行前初始化
[java]
LicenceManager licenceManager = LicenceManager.getInstance();
ong keys[]= {0x41c0df1c118b1831L,0x21884a37bde642bcL,0x15c4d489531ac173L,
0x5f9e69136c1e3268L,-0x3adaa84e455c5acL,0x2095f679b184dbdfL,};
icenceManager.addLicence("GuidebeeMap_JavaSE", keys);
LicenceManager licenceManager = LicenceManager.getInstance();
long keys[]= {0x41c0df1c118b1831L,0x21884a37bde642bcL,0x15c4d489531ac173L,
0x5f9e69136c1e3268L,-0x3adaa84e455c5acL,0x2095f679b184dbdfL,};
licenceManager.addLicence("GuidebeeMap_JavaSE", keys);设置Java SE平台相关图形系统实现
引路蜂地图开发包,在设计时尽量做到平台无关性,将一些平台相关的部分,如图形系统以接口形式定义,如IFont,IGraphics,AbstractGraphicsFactory,IImage。这样在应用到具体平台时,加上平台相关的实现,可以实现同一个库应用到不同的平台。这些平台实现是以源码提供的,如在Java SE平台,提供了JavaSEFont,JavaSEGraphics,JavaSEGraphicsFactory和JavaSEImage类定义,可以参见引路蜂地图API概述。
初始化地图对象及设置服务回调函数
[java]
MapConfiguration.setParameter(MapConfiguration.WORKER_THREAD_NUMBER, 16);
mapTileDownloadManager = new MapTileDownloadManager(this);
map = new RasterMap(2048, 2048, mapTileDownloadManager);
map.setScreenSize(mapLabel.getWidth(), mapLabel.getHeight());
mapTileDownloadManager.start();
map.setMapDrawingListener(this);
GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778);
map.setCenter(center, 4, MapType.MICROSOFTCHINA);
map.setRoutingListener(this);
map.setGeocodingListener(this);
map.setReverseGeocodingListener(this);
MapConfiguration.setParameter(MapConfiguration.WORKER_THREAD_NUMBER, 16);
mapTileDownloadManager = new MapTileDownloadManager(this);
map = new RasterMap(2048, 2048, mapTileDownloadManager);
map.setScreenSize(mapLabel.getWidth(), mapLabel.getHeight());
mapTileDownloadManager.start();
map.setMapDrawingListener(this);
GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778);
map.setCenter(center, 4, MapType.MICROSOFTCHINA);
map.setRoutingListener(this);
map.setGeocodingListener(this);
map.setReverseGeocodingListener(this);上述代码设置地图工作线程数为16,一般来说增加工资线程数可以提高地图下载及响应速度。
创建地图对象,设置显示区域(屏幕)大小。此外地图服务如查询地址,获取路径都是采用异步方式,通过设置回调函数如setRoutingListener,setGeocodingListener,setReverseGeocodingListener等来通知应用 。
设置地图中心和地图类型
[java]
GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778);
map.setCenter(center, 4, MapType.MICROSOFTCHINA);
GeoLatLng center = new GeoLatLng(32.0616667, 118.7777778);
map.setCenter(center, 4, MapType.MICROSOFTCHINA);地图缩放
RasterMap的 ZoomIn,ZoomOut用来放大和缩小地图,setZoom可以设置地图级别。
地图平移
RasterMap 有两个方法可以用于平移地图,panTo 将地图移动到指定经纬度坐标,panDirection(dx,dy) 将地图从当前位置平移dx,dy 个象素。 下列示例可以上,下,左,右平移地图。
地址查询
地址查询(或称为地址编码)是将输入的地名(如南京林业大学)转换成对应的经纬度坐标然后将其显示在地图上。
所有的地图服务都是采用异步方式调用,在调用RasterMap.getLocation(address)前,需要设置好返回结果时的回调函数RasterMap.setGeocodingListener,回调函数接口定义为IGeocodingListener。 回调方法为public void done(String query,MapPoint[] result) ,如果查询结果不为空,则reusult 为查询结果的数组。示例中将地图转到第一个查询结果。
对于MapAbc 地图服务,还可以指定城市编码,如南京编码为25。
public void getLocation(int citycode,String query, IGeocodingListener li
