java

位置:IT落伍者 >> java >> 浏览文章

Java SE引路蜂地图开发示例


发布日期:2019年06月08日
 
Java SE引路蜂地图开发示例

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

下面使用一个简单的应用来介绍一下Java SE引路蜂地图开发示例截图如下

设置引路蜂地图开发包License

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

LicenceManager licenceManager = LicenceManagergetInstance()

ong keys[]= {xcdfcbLxabdebcLxcdacL

xfeceLxadaaecacLxfbdbdfL};

icenceManageraddLicence(GuidebeeMap_JavaSE keys)

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

引路蜂地图开发包在设计时尽量做到平台无关性将一些平台相关的部分如图形系统以接口形式定义如IFontIGraphicsAbstractGraphicsFactoryIImage这样在应用到具体平台时加上平台相关的实现可以实现同一个库应用到不同的平台这些平台实现是以源码提供的如在Java SE平台提供了JavaSEFontJavaSEGraphicsJavaSEGraphicsFactory和JavaSEImage类定义可以参见引路蜂地图API概述

初始化地图对象及设置服务回调函数

MapConfigurationsetParameter(MapConfigurationWORKER_THREAD_NUMBER

mapTileDownloadManager = new MapTileDownloadManager(this)

map = new RasterMap( mapTileDownloadManager)

mapsetScreenSize(mapLabelgetWidth()

mapLabelgetHeight())

mapTileDownloadManagerstart()

mapsetMapDrawingListener(this)

GeoLatLng center = new GeoLatLng(

mapsetCenter(center MapTypeMICROSOFTCHINA)

mapsetRoutingListener(this)

mapsetGeocodingListener(this)

mapsetReverseGeocodingListener(this)

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

创建地图对象设置显示区域(屏幕)大小此外地图服务如查询地址获取路径都是采用异步方式通过设置回调函数如setRoutingListenersetGeocodingListenersetReverseGeocodingListener等来通知应用

设置地图中心和地图类型

GeoLatLng center = new GeoLatLng(

mapsetCenter(center MapTypeMICROSOFTCHINA)

地图缩放

RasterMap的 ZoomInZoomOut用来放大和缩小地图setZoom可以设置地图级别

地图平移

RasterMap 有两个方法可以用于平移地图panTo 将地图移动到指定经纬度坐标panDirection(dxdy) 将地图从当前位置平移dxdy 个象素 下列示例可以上右平移地图

地址查询

地址查询(或称为地址编码)是将输入的地名(如南京林业大学)转换成对应的经纬度坐标然后将其显示在地图上

所有的地图服务都是采用异步方式调用在调用RasterMapgetLocation(address)前需要设置好返回结果时的回调函数RasterMapsetGeocodingListener回调函数接口定义为IGeocodingListener 回调方法为public void done(String queryMapPoint[] result) 如果查询结果不为空则reusult 为查询结果的数组示例中将地图转到第一个查询结果

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

路径查询

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

地图服务可以选择使用Google 地图服务CloudMade地图服务在中国还可能选择MapAbc地图服务缺省使用Google 地图服务

getDirections()具有三个重载函数例子中是采用的文字描述方式上述示例采用了from: address to: address 的格式 CloudMade地图服务和MapAbc地图服务则必需采用 经度纬度经度纬度和格式

为避免混淆可以使用下述格式

public void getDirection(GeoLatLng[] waypoints IRoutingListener listener)

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

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

public void getDirection(int citycodeString query IRoutingListener listener)

本地查询

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

本地查询方法public void getLocations(String addressint startGeoLatLng centerGeoBounds bound IGeocodingListener listener)

指定中心点和查询区域本地查询可以多次返回结果start为查询结果起始顺序每次返回结果在SearchOptions 中定义缺省每次返回

选择地图服务

引路蜂地图服务缺省使用Google地图服务但你也可以选择其它地图服务比方说当Google服务离线时您可以选择MapAbc的地图服务另外要注意的是中国地图是有偏移的如果想使用无偏移的中国地图一是采用地图偏移校正算法另外一个是使用CloudMade地图服务

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

下面列表是合法的组合

地址反编码

地址反编码是通过经纬度查询对应的地名

注意使用字符串经纬度格式时纬度在前经度在后如果反了则返回的地名或能为空或都跑到外国去了结果也是一个数组一般到第一个结果后面结果是更大的区域或是距离相对较远的地名

其它

其它如地图偏移离线地图自定义地图叠加自定义图层可以参加Android平台Android自定义地图示例QQ地图Android引路蜂地图开发示例叠加自定义图层 Android引路蜂地图开发示例离线地图示例

               

上一篇:基数估计算法

下一篇:Java网络编程从入门到精通(4):DNS缓存