熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java SE引路蜂地圖開發示例

2013-11-12 23:37:23  來源: Java核心技術 

  引路蜂地圖也提供對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引路蜂地圖開發示例離線地圖示例


From:http://tw.wingwit.com/Article/program/Java/hx/201311/11148.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.