发布网友 发布时间:2023-01-01 05:21
共1个回答
热心网友 时间:2023-10-03 06:18
引路蜂地图也提供对Java SE平台的支持 可以开发桌面地图应用 由于Java SE的跨平台特性 使用Java SE引路蜂地图开发包开发的地图应用可以运行于Windows Lunix Unix Mac OS等平台 开发桌面应用比开发移动应用要容易的多 屏幕 内存等方面都比移动平台要宽裕的多 下面使用一个简单的应用来介绍一下Java SE引路蜂地图开发 示例截图如下
设置引路蜂地图开发包License 引路蜂开发包License分两部分 一个为License文件guidebee lic 另一部分为License文件对应的注册码 需在程序运行前初始化 LicenceManager licenceManager = LicenceManager getInstance() ong keys[]= { x c df c b L x a bde bcL x c d ac L x f e c e L x adaa e c acL x f b dbdfL }; icenceManager addLicence( GuidebeeMap_JavaSE keys) 设置Java SE平台相关图形系统实现 引路蜂地图开发包 在设计时尽量做到平台无关性 将一些平台相关的部分 如图形系统以接口形式定义 如IFont IGraphics AbstractGraphicsFactory IImage 这样在应用到具体平台时 加上平台相关的实现 可以实现同一个库应用到不同的平台 这些平台实现是以源码提供的 如在Java SE平台 提供了JavaSEFont JavaSEGraphics JavaSEGraphicsFactory和JavaSEImage类定义 可以参见引路蜂地图API概述 初始化地图对象及设置服务回调函数 MapConfiguration setParameter(MapConfiguration WORKER_THREAD_NUMBER ) mapTileDownloadManager = new MapTileDownloadManager(this) map = new RasterMap( mapTileDownloadManager) map setScreenSize(mapLabel getWidth() mapLabel getHeight()) mapTileDownloadManager start() map setMapDrawingListener(this) GeoLatLng center = new GeoLatLng( ) map setCenter(center MapType MICROSOFTCHINA) map setRoutingListener(this) map setGeocodingListener(this) map setReverseGeocodingListener(this) 上述代码设置地图工作线程数为 一般来说增加工资线程数可以提高地图下载及响应速度 创建地图对象 设置显示区域(屏幕)大小 此外地图服务如查询地址 获取路径都是采用异步方式 通过设置回调函数如setRoutingListener setGeocodingListener setReverseGeocodingListener等来通知应用 设置地图中心和地图类型 GeoLatLng center = new GeoLatLng( ) map setCenter(center 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 地图服务 还可以指定城市编码 如南京编码为 public void getLocation(int citycode String 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 citycode String query IRoutingListener listener) 本地查询 本地查询可以查询指定区域内诸如宾馆 邮局等用户感兴趣的地方 其使用方法和地址查询非常类似 本地查询方法public void getLocations(String address int start GeoLatLng center GeoBounds bound IGeocodingListener listener) 指定中心点和查询区域 本地查询可以多次返回结果 start为查询结果起始顺序 每次返回结果在SearchOptions 中定义 缺省每次返回 个 选择地图服务 引路蜂地图服务缺省使用Google地图服务 但你也可以选择其它地图服务 比方说当Google服务离线时 您可以选择MapAbc的地图服务 另外要注意的是中国地图是有偏移的 如果想使用无偏移的中国地图 一是采用地图偏移校正算法 另外一个是使用CloudMade地图服务 所前所述 引路蜂地图开发包在设计时将地图图片显示和地图服务两部分设计成相对独立的两部分 Google中国地图图片 Bing中国地图图片 MapAbc中国地图图片是有偏移的地图图片 CloudMade(OpenStreet)中国地图图片是无偏移的 而Google中国地图服务 MapAbc中国地图服务是有偏移 CloudMade地图服务是无偏移的 所以在选择地图类型和地图服务类型时 要么都选择有偏移 要么都选择无偏移 否则地图在显示路径时或地址时就不匹配 下面列表是合法的组合
lishixin/Article/program/Java/hx/201311/11148