Java SE引路蜂地图开发示例

上一篇 / 下一篇  2012-07-17 13:17:45 / 个人分类:Java

CJ f } cp0  引路蜂地图也提供对Java SE平台的支持,可以开发桌面地图应用,由于Java SE的跨平台特性,使用Java SE引路蜂地图开发包开发的地图应用可以运行于Windows,Lunix,Unix,Mac OS等平台。开发桌面应用比开发移动应用要容易的多,屏幕,内存等方面都比移动平台要宽裕的多。

yFtp)a6O9~9Gt%M,p0

E\ gs}&BAWb4k0  下面使用一个简单的应用来介绍一下Java SE引路蜂地图开发。示例截图如下51Testing软件测试网,WAC} T1J

Z;~B;H;z)q&e0

  设置引路蜂地图开发包License

f:[+g+lJ?"ieO0

  引路蜂开发包License分两部分,一个为License文件guidebee.lic ,另一部分为License文件对应的注册码,需在程序运行前初始化

0R }]Y0_4I5C|6a+_ y0
  1. LicenceManager licenceManager = LicenceManager.getInstance();  
  2. ong keys[]= {0x41c0df1c118b1831L,0x21884a37bde642bcL,0x15c4d489531ac173L,  
  3.   0x5f9e69136c1e3268L,-0x3adaa84e455c5acL,0x2095f679b184dbdfL,};  
  4. icenceManager.addLicence("GuidebeeMap_JavaSE", keys);

  设置Java SE平台相关图形系统实现

D.cm\'yg8|#G![$o"J9r0

   引路蜂地图开发包,在设计时尽量做到平台无关性,将一些平台相关的部分,如图形系统以接口形式定义,如 IFont,IGraphics,AbstractGraphicsFactory,IImage。这样在应用到具体平台时,加上平台相关的实现,可以实 现同一个库应用到不同的平台。这些平台实现是以源码提供的,如在Java SE平台,提供了JavaSEFont,JavaSEGraphics,JavaSEGraphicsFactory和JavaSEImage类定义,可 以参见引路蜂地图API概述。51Testing软件测试网|n^v0`9X|e-`^

  初始化地图对象及设置服务回调函数51Testing软件测试网"Q,g5T UR?V'i

  1. MapConfiguration.setParameter(MapConfiguration.WORKER_THREAD_NUMBER, 16);  
  2. mapTileDownloadManager = new MapTileDownloadManager(this);  
  3. map = new RasterMap(20482048, mapTileDownloadManager);  
  4. map.setScreenSize(mapLabel.getWidth(), mapLabel.getHeight());  
  5. mapTileDownloadManager.start();  
  6. map.setMapDrawingListener(this);  
  7. GeoLatLng center = new GeoLatLng(32.0616667118.7777778);  
  8. map.setCenter(center, 4, MapType.MICROSOFTCHINA);  
  9. map.setRoutingListener(this);  
  10. map.setGeocodingListener(this);  
  11. map.setReverseGeocodingListener(this);

  上述代码设置地图工作线程数为16,一般来说增加工资线程数可以提高地图下载及响应速度。

FQ1AK$A\0

   创建地图对象,设置显示区域(屏幕)大小。此外地图服务如查询地址,获取路径都是采用异步方式,通过设置回调函数如 setRoutingListener,setGeocodingListener,setReverseGeocodingListener等来通知应 用 。51Testing软件测试网}&GGy`

  设置地图中心和地图类型51Testing软件测试网:_3K?T,b S&x&^({AB0l

  1. GeoLatLng center = new GeoLatLng(32.0616667118.7777778);  
  2. map.setCenter(center, 4, MapType.MICROSOFTCHINA);

  地图缩放51Testing软件测试网:]9]E3f)T'^

  RasterMap的 ZoomIn,ZoomOut用来放大和缩小地图,setZoom可以设置地图级别。51Testing软件测试网 h~US7E3s]-Wx

  地图平移51Testing软件测试网e}%j]6L lH

  RasterMap 有两个方法可以用于平移地图,panTo 将地图移动到指定经纬度坐标,panDirection(dx,dy) 将地图从当前位置平移dx,dy 个象素。 下列示例可以上,下,左,右平移地图。51Testing软件测试网!w Q~I$I$` `)^

%m]k:sW7J:R0  地址查询

.J-D9qadCO051Testing软件测试网!s)e;r0\2Oi+`

  地址查询(或称为地址编码)是将输入的地名(如南京林业大学)转换成对应的经纬度坐标然后将其显示在地图上。51Testing软件测试网:va']%BW@I

K.Jt:y-\*v+Gu9g@u0  所有的地图服务都是采用异步方式调用,在调用RasterMap.getLocation(address)前,需要设置好返回结果时的回调函 数RasterMap.setGeocodingListener,回调函数接口定义为IGeocodingListener。 回调方法为public void done(String query,MapPoint[] result) ,如果查询结果不为空,则reusult 为查询结果的数组。示例中将地图转到第一个查询结果。

Z X LbC|051Testing软件测试网;yEiU!H

  对于MapAbc 地图服务,还可以指定城市编码,如南京编码为25。public void getLocation(int citycode,String query, IGeocodingListener listener);

R)QT'y0~0

h^ L&e.F9qzCt:D0  路径查询51Testing软件测试网#a']m1m:|:g/V i~n

51Testing软件测试网7t$y#{ @y_B

  可以通过RasterMap的getDirection()方法来查询路径,和查询地址类似,路径查询的结果也是通过回调函数的方式来通知应用 程序的,下面的例子返回南京到北京的路径。返回结果存放在MapDirection中,MapDirection包含了路径的详细信息,包括路径的每个步 骤,长度,时间,方向等。

Kd&Ve#jX[T0

o`9Cv"E.D,H4M-GIe0  地图服务可以选择使用Google 地图服务,CloudMade地图服务,在中国还可能选择MapAbc地图服务,缺省使用Google 地图服务。51Testing软件测试网,By2mX3U1whk*s)q

51Testing软件测试网$S+s.c u!A!o(XW

  getDirections()具有三个重载函数,例子中是采用的文字描述方式。上述示例采用了from: address1 to: address2 的格式, CloudMade地图服务和MapAbc地图服务则必需采用 经度1,纬度1,经度2,纬度2和格式。51Testing软件测试网)km!v-EN[1f)})fe

51Testing软件测试网/d;N4|&iDk

  为避免混淆,可以使用下述格式。51Testing软件测试网:ud+^ M [)m YT.|um%P"C

51Testing软件测试网e'bk'wp:@

  public void getDirection(GeoLatLng[] waypoints, IRoutingListener listener);51Testing软件测试网.wu a&Hb"z `Z

51Testing软件测试网1Q![xe7I}UQy

  其中 waypoints 为途径点坐标数组经纬值,可以支持多点路径查询。

;\'ho2vfep7u0|8`1U051Testing软件测试网7l1s*`"c'Z!}l/]j

  此外对于MapAbc 地图服务,还可以指定城市编码,如南京编码为25。

+{~ws}~051Testing软件测试网E;RR5[2]z"Z EP

  public void getDirection(int citycode,String query, IRoutingListener listener);

#|nY(Br0

B0nj3W|1m0  本地查询

:g0EoS!q!X I)]0x051Testing软件测试网 `0S"{$Qy ^

  本地查询可以查询指定区域内诸如宾馆,邮局等用户感兴趣的地方。其使用方法和地址查询非常类似。

0|8Byjm,Rz!gU0

[~jFu0sD+]0  本地查询方法public void getLocations(String address,int start,GeoLatLng center,GeoBounds bound, IGeocodingListener listener);

q)m4Y.rf051Testing软件测试网!xBf4x$i#^ x3V

  指定中心点和查询区域。本地查询可以多次返回结果,start为查询结果起始顺序,每次返回结果在SearchOptions 中定义,缺省每次返回4个。51Testing软件测试网W)W,t"L LiW9VB k

9UR-Jiy'm0  选择地图服务51Testing软件测试网K:V,jjX

51Testing软件测试网)eN:o,sf E$Bq

  引路蜂地图服务缺省使用Google地图服务,但你也可以选择其它地图服务,比方说当Google服务离线时,您可以选择MapAbc的地图服 务,另外要注意的是中国地图是有偏移的。如果想使用无偏移的中国地图,一是采用地图偏移校正算法,另外一个是使用CloudMade地图服务。51Testing软件测试网Xl6k;Z _(r$t J,c"l/i

51Testing软件测试网8SY K3vx,OE8RS(uj l

  所前所述,引路蜂地图开发包在设计时将地图图片显示和地图服务两部分设计成相对独立的两部分,Google中国地图图片,Bing中国地图图 片,MapAbc中国地图图片是有偏移的地图图片,CloudMade(OpenStreet)中国地图图片是无偏移的。而Google中国地图服 务,MapAbc中国地图服务是有偏移,CloudMade地图服务是无偏移的。所以在选择地图类型和地图服务类型时,要么都选择有偏移,要么都选择无偏 移。否则地图在显示路径时或地址时就不匹配。51Testing软件测试网SL~8W PT

;^Vh |1{ C&F#@:o,x0  下面列表是合法的组合:

6[Y)}?4\$R0

eTCA$u6D9zk~0

  地址反编码51Testing软件测试网aOC3B)Z+V/?4z W

  地址反编码是通过经纬度查询对应的地名,51Testing软件测试网i yz9xNP

  注意使用字符串经纬度格式时,纬度在前,经度在后,如果反了,则返回的地名或能为空或都跑到外国去了。结果也是一个数组,一般到第一个结果,后面结果是更大的区域或是距离相对较远的地名。51Testing软件测试网w$p,y6y `4m?R0[


TAG:

 

评分:0

我来说两句

Open Toolbar