




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、地圖移動(dòng)版 API for android開發(fā)指南2012.04.13CopyRight 簡(jiǎn)介1地圖 API?地圖移動(dòng)版 API(Android)是一套基于 Android 1.5 及以上設(shè)備的應(yīng)用程序接口,通過(guò)該接口,服務(wù)和數(shù)據(jù),構(gòu)建功能豐富、交互性強(qiáng)的地圖應(yīng)用程序。地圖移動(dòng)版 API您可以輕松不僅包含構(gòu)建地圖的基本接口,還提供了諸如地圖定位、本地搜索、路線規(guī)劃等數(shù)據(jù)服務(wù),你可以根據(jù)自己的需要進(jìn)行選擇。面向的讀者API 是提供給那些具有一定 Android 編程經(jīng)驗(yàn)和了解面象概念的讀者使用。此外,讀者還應(yīng)該對(duì)地圖產(chǎn)品有一定的了解。您在使用中遇到任何問(wèn)題,都可以通過(guò) API 貼吧或反饋給。獲取
2、 API Key用戶在使用 API 之前需要獲取地圖移動(dòng)版 API Key,該 Key 與你的賬戶相關(guān)聯(lián),您必須先有帳戶,才能獲得 API KEY。并且,該 KEY 與您密鑰。API 的程序名稱有關(guān),具體流程請(qǐng)參照獲取兼容性支持 Android 1.5 及以上系統(tǒng)。在您的地圖中顯示2如何把 API 添加到Android 工程中?首先將 API 包括的兩個(gè)文件 baidumapapi.jar 和 libBMapApiEngine.so 拷貝到工程根目錄及 libsarmeabi目錄下,并在工程屬性-Java Build Path-Libraries 中選擇“Add JARs”,選定 baidum
3、apapi.jar,確定后返回,這樣您就可以在您的程序中使用 API 了。地圖的“o,World”在 Manifest 中添加使用權(quán)限ion在 Manifest 中添加 Android 版本支持1. 2. /uses-permiss29.import com.baidu.mapapi.MapView;在布局 xml 中添加地圖控件初始化地圖 Activity在地圖 Activity 中定義變量: BMapManager mBMapMan = null; 在 onCreate 方法中增加以下代碼,并將您申請(qǐng)的 Key 替換“Key”:1. mBMapMan = new BMapManager(g
4、etApplication();3. super.initMapActivity(mBMapMan);2. mBMapMan.init(Key, null);5. import com.baidu.mapapi.MyLocationOverlay;import com.baidu.mapapi.Overlay;import com.baidu.mapapi.OverlayItem;import com.baidu.mapapi.PoiOverlay;import com.baidu.mapapi.RouteOverlay;import com.baidu.mapapi.TransitOverl
5、ay; 36.public class MyMapActivity extends MapActivity Overridepublic void onCreate(Bundle savedInstane) super.onCreate(savedInstane);setContentView(R.layout.main);42.43.OverrideprotectedisRouteDisplayed() return false;47.48. 4. MapView mMapView = (MapView) findViewById(R.id.bmapsView);Override 以下方法,
6、管理 API:1.Override完成上述步驟后,運(yùn)行程序,結(jié)果如下:protected void onDestroy() if (mBMapMan != null) mBMapMan.destroy();mBMapMan = null; 6.7.super.onDestroy(); 8.Overrideprotected void onPause() if (mBMapMan != null) mBMapMan.stop();13.14.super.onPause();15. Overrideprotected void onResume() if (mBMapMan != null) mB
7、MapMan.start();20.21.super.onResume();22. mMapView.setBuiltInZoomControls(true); /設(shè)置啟用內(nèi)置的縮放控件MapController mMapController = mMapView.getController(); / 得到 mMapView 的控制權(quán),可以用它控制和驅(qū)動(dòng)平移和縮放7. GeoPopo= new GeoPo() (39.915 * 1E6),() (116.404 * 1E6); /用給定的構(gòu)造一個(gè) GeoPo,是微度 (度 * 1E6)mMapController.setCento); /設(shè)圖
8、中心點(diǎn)mMapController.setZoom(12);/設(shè)圖 zoom 級(jí)別3地圖圖層地圖圖層概念地圖可以包含一個(gè)或多個(gè)圖層,每個(gè)圖層在每個(gè)級(jí)別都是由若干張圖塊組成的,它們覆蓋了地球的整個(gè)表面。例如您所看到包括街道、量的展現(xiàn)也是通過(guò)圖層來(lái)實(shí)現(xiàn)的。點(diǎn)、學(xué)校、公園等內(nèi)容的地圖展現(xiàn)就是一個(gè)圖層,另通流3.1底圖基本的地圖圖層,包括若干個(gè)縮放級(jí)別,顯示基本的地圖信息,包括道路、街道、學(xué)校、公園等內(nèi)容。3.2實(shí)時(shí)交通信息在以下 11 個(gè)城市中,支持實(shí)時(shí)交通信息:,廣州,南京,南昌,重慶,武漢,大連,常州。在地圖中顯示實(shí)時(shí)交通信息示例如下:mMapView.setTraffic(true);運(yùn)行程序
9、,結(jié)果如下:3.3圖3.4實(shí)景圖在此版本 API 中暫不支持。mMapView.setStreetView(true);覆蓋物4地圖覆蓋物概述所有疊加或覆蓋到地圖的內(nèi)容,統(tǒng)稱為地圖覆蓋物。如標(biāo)注、矢量圖形元素(包括:折線和多邊形和圓)、定位圖標(biāo)等。覆蓋物擁有自己的地理坐標(biāo),當(dāng)您拖動(dòng)或縮放地圖時(shí),它們會(huì)相應(yīng)的移動(dòng)。地圖 API 提供了如下幾種覆蓋物:Overlay:覆蓋物的抽象基類,所有的覆蓋物均繼承此類的方法,實(shí)現(xiàn)用戶自定義圖層顯示。MyLocationOverlay:一個(gè)負(fù)責(zé)顯示用戶當(dāng)前位置的 Overlay。ItemizedOverlay:Overlay 的一個(gè)基類,包含了一個(gè) Overl
10、ayItem列表,相當(dāng)于一組分條的 Overlay,通過(guò)繼承此類,將一組點(diǎn)顯示在地圖上。PoiOverlay:本地搜索圖層,提供某一特定地區(qū)的位置搜索服務(wù),比如在通過(guò)此圖層將公園顯示在地圖上。市搜索“公園”,RouteOverlay:步行、駕車導(dǎo)航線路圖層,將步行、駕車出行方案的路線及關(guān)鍵點(diǎn)顯示在地圖上。mMapView.setSalite(true);TransitOverlay:換乘線路圖層,將某一特定地區(qū)的在地圖上。出行方案的路線及換乘位置顯示4.1覆蓋物的抽象類 :Overlay一般來(lái)說(shuō),在 MapView 中添加一個(gè) Overlay 需要經(jīng)過(guò)以下步驟:自定義類繼承 Overlay,并
11、 Override 其 draw()方法,如果需要點(diǎn)擊、按鍵、觸摸等交互操作,還需 Override onTap()等方法。1.public classMyOverlayextendsOverlay 2.3.4.5.GeoPoPageoPo= ne= new GeoPo();() (39.915 * 1E6), () (116.404 * 1E6);paOverridepublic void draw(Canvas canvas, MapView mapView,/在的位置繪制一個(gè) Stringshadow) 6.7.Popo= mMapView.getProjection().toPixel
12、s(geoPo, null););8.canvas.drawText(這里是, po.x, po.y, pa9.10. 添加到 MapView 的覆蓋物中:mMapView.getOverlays().add(new MyOverlay();運(yùn)行結(jié)果如下:4.2當(dāng)前位置:MyLocationOverlay將 MyLocationOverlay 添加到覆蓋物中,能夠?qū)崿F(xiàn)在地圖上顯示當(dāng)前位置的圖標(biāo)以及指南針:初始化 Location 模塊/ 初始化 Location 模塊1.6.7./ 添加定位圖層MyLocationOverlay mylocTest = new MyLocationOverla
13、y(this, mMapView);mLocationManager = mBMapMan.getLocationManager();/ 通過(guò) enableProvider 和 disableProvider 方法,選擇定位的 Provider/ mLocationManager.enableProvider(MKLocationManager.MK_NETWORK_PROVIDER);/ mLocationManager.disableProvider(MKLocationManager.MK_GPS_PROVIDER);8. mylocTest.enableMyLocation(); /
14、啟用定位10. mMapView.getOverlays().add(mylocTest);運(yùn)行結(jié)果如下:4.3分條目覆蓋物:ItemizedOverlay某個(gè)類型的覆蓋物,包含多個(gè)類型相同、顯示方式相同、處理方式相同的項(xiàng)時(shí),使用此類:自定義類繼承 ItemizedOverlay,并 Override 其 draw()方法,如果需要點(diǎn)擊、按鍵、觸摸等交互操作,還需 Override onTap()等方法。1.classOverItemTextendsItemizedOverlay privaist GeoList = new ArrayList();private Context mConte
15、xt;4.private double mLat1 = 39.90923;/39.9022; / po1 緯度5.private double mLon1 = 116.397428;/116.3822; / po1 經(jīng)度private double mLat2 = 39.9022;private double mLon2 = 116.3922;private double mLat3 = 39.917723;private double mLon3 = 116.3722;public OverItemT(Drawable marker, Context context) super(bound
16、CenterBottom(marker);this.mContext = context;/ 用給定的構(gòu)造 GeoPo,是微度 (度 * 1E6)GeoPop1 = new GeoPo() (mLat1 * 1E6), () (mLon1 * 1E6);GeoPop2 = new GeoPo() (mLat2 * 1E6), () (mLon2 * 1E6);16.GeoPop3 = new GeoPo() (mLat3 * 1E6), () (mLon3 * 1E6);GeoList.add(new OverlayItem(p1, P1, po1);GeoList.add(new Overl
17、ayItem(p2, P2, po2);GeoList.add(new OverlayItem(p3, P3, po3);populate(); /createItem()方法構(gòu)造 item。一旦有了數(shù)據(jù),在調(diào)用其它方法前,首先調(diào)用這個(gè)方法21.Overrideprotected OverlayItem createItem(i) 9. mpass();/ 啟用指南針24.returnGeoList.get(i);33.34.35.36.37. Toast.makeText(this.mContext, GeoList.get(i).getSnippet(), Toast.LENGTH_SHO
18、RT).show();return true;添加到 MapView 的覆蓋物中:到需要標(biāo)在地圖上的資源39.mMapView.getOverlays().add(new OverItemT(marker, this); /添加 ItemizedOverlay4.4本地搜索覆蓋物:PoiOverlay詳見 POI 搜索及 PoiOverlay 章節(jié)。4.5駕車路線覆蓋物:RouteOverlay詳見駕車路線搜索及 RouteOverlay 和步行路線搜索及 RouteOverlay 章節(jié)。4.6換乘路線覆蓋物:TransitOverlay詳見換乘路線搜索及 TransitOverlay 章節(jié)。
19、5服務(wù)類5.1搜索服務(wù)地圖移動(dòng)版 API 集成搜索服務(wù)包括:位置檢索、周邊檢索、范圍檢索、檢索、駕乘檢索、步行檢索,通過(guò)初始化 MKSearch 類,搜索結(jié)果的對(duì)象 MKSearchListener,實(shí)現(xiàn)異步搜38.Drawable marker = getResour().getDrawable(R.drawable.iconmark); /得25.Overridepublicsize() return GeoList.size();29.Override/ 處理當(dāng)點(diǎn)擊事件protectedonTap(i) 實(shí)例到 mMapView索服務(wù)。首先自定義 MySearchListener 實(shí)現(xiàn)
20、MKSearchListener 接口,通過(guò)不同的回調(diào)方法,獲得搜索結(jié)果:1.public classMySearchListenerimplementsMKSearchListener 然后初始化 MKSearch 類:1.mMKSearch = new MKSearch();2. mMKSearch.init(mBMapMan, new MySearchListener();5.2POI 搜索及 PoiOverlayPOI 搜索有三種方式,根據(jù)范圍和檢索詞發(fā)起范圍檢索 poiSearchInbounds,城市 poi 檢索poiSearchInCity,周邊檢索 poiSearchNear
21、By,以下以周邊檢索為例介紹如何進(jìn)行檢索并顯示覆蓋物 PoiOverlay:檢索周邊 5000 米之內(nèi)的 KFC 餐廳:Overridepublic void onGetAddrResult(MKAddrInfo result,iError) 4.Overridepublic void onGetDrivingRouteResult(MKDrivingRouteResult result,iError)7.Overridepublic void onGetPoiResult(MKPoiResult result,type,iError) 10.Overridepublic void onGet
22、TransitRouteResult(MKTransitRouteResult result,iError)13.Overridepublic void onGetWalkingRouteResult(MKWalkingRouteResult result,iError)16.Overridepublic void onGetBusDetailResult(MKBusLineResult result,iError)19. 20.21. mMKSearch.poiSearchNearBy(KFC, new GeoPo) (116.404 * 1E6), 5000);() (39.915 *1E
23、6), (實(shí)現(xiàn) MySearchListener 的onGetPoiResult,并展示檢索結(jié)果:Override運(yùn)行結(jié)果如下:public void onGetPoiResult(MKPoiResult result,type,iError) if (result = null) return;PoiOverlay poioverlay = new PoiOverlay(MyMapActivity.this, mMapView);poioverlay.setData(result.getAllPoi();mMapView.getOverlays().add(poioverlay);5.3駕車
24、路線搜索及 RouteOverlay檢索從到的駕車路線:1. MKPlanNode start = new MKPlanNode();7. mMKSearch.drivingSearch(null, start, null, end);實(shí)現(xiàn) MySearchListener 的onGetDrivingRouteResult,并展示檢索結(jié)果:Override運(yùn)行結(jié)果如下public void onGetDrivingRouteResult(MKDrivingRouteResult result,iError) if (result = null) return; 4.RouteOverlay r
25、outeOverlay = new RouteOverlay(MyMapActivity.this, mMapView);/ 此處僅展示一個(gè)方案作為示例routeOverlay.setData(result.getPlan(0).getRoute(0);8.mMapView.getOverlays().add(routeOverlay);9. 2. start.pt = new GeoPo() (39.915 * 1E6), () (116.404 * 1E6);3. MKPlanNode end = new MKPlanNode();4. end.pt = new GeoPo(4005703
26、1, 116307852);/ 設(shè)置駕車路線搜索策略,時(shí)間優(yōu)先、費(fèi)用最少或距離最短mMKSearch.setDrivingPolicy(MKSearch.ECAR_TIME_);5.4步行路線搜索及 RouteOverlay方式與駕車路線搜索類似,只需將 mMKSearch.drivingSearch(null, start, null, end)修改 為 mMKSearch.walkingSearch(null, start, null, end), 實(shí)現(xiàn)的方法改 為onGetWalkingRouteResult 即可,不再贅述。5.5換乘路線搜索及 TransitOverlay檢索從到的換
27、乘路線:1. MKPlanNode start =newMKPlanNode();2. start.pt = new GeoPo() (39.915 * 1E6), () (116.404 * 1E6);3. MKPlanNode end = new MKPlanNode();4. end.pt = new GeoPo(40057031, 116307852);/ 設(shè)置乘車路線搜索策略,時(shí)間優(yōu)先、最少換乘、最少步行距離或不含地鐵mMKSearch.setTransitPolicy(MKSearch.EBUS_TRANSFER_);mMKSearch.transitSearch(, start,
28、 end); / 必須設(shè)置城市名實(shí)現(xiàn) MySearchListener 的onGetTransitRouteResult(MKTransitRouteResult,結(jié)果:),并展示檢索0.Override9.5.6路線詳情搜索檢索市路線 717 的 poi,獲取路線的 uid:實(shí)現(xiàn) MySearchListener 的onGetPoiResult (MKPoiResult res,type,error),獲得線路 poi 的 uid,并根據(jù)此 uid 發(fā)起線路詳情的檢索:0.Override1.2.3.public void onGetPoiResult(MKPoiResult res,typ
29、e,error)if(error != 0 | res =null)抱歉,未找到結(jié)果,Toast.makeText(BusLiarch.this,Toast.LENGTH_LONG).show();return;4.5.6.7.8.9./ 找到路線 poi nodeMKPoiInfo curPoi = null;totalPoiNum = res.getNumPois();for(idx = 0; idx totalPoiNum; idx+ ) curPoi = res.getPoi(idx);10.11.12.13.14.15.if( 2 = curPoi.ePoiType ) break;
30、mSearch.busLiarCityName, curPoi.uid);1. mSearch.poiSearchInCity(, 717);public void onGetTransitRouteResult(MKTransitRouteResult result, iError) if (result = null) return;4.TransitOverlay transitOverlay = newTransitOverlay(MyMapActivity.this, mMapView);/ 此處僅展示一個(gè)方案作為示例transitOverlay.setData(result.get
31、Plan(0);mMapView.getOverlays().add(transitOverlay);16.實(shí)現(xiàn) MySearchListener 的onGetBusDetailResult(MKBusLineResult result,搜索結(jié)果:iError),并展示0. Override13.運(yùn)行結(jié)果如下:public void onGetBusDetailResult(MKBusLineResult result,iError)if (error != 0 | res = null) Toast.makeText(BusLiarch.this, 抱歉,未找到結(jié)果, Toast.LENGT
32、H_LONG).show();return; 5.RouteOverlay routeOverlay = new RouteOverlay(BusLiarch.this, mMapView);/ 此處僅展示一個(gè)方案作為示例routeOverlay.setData(result.getBusRoute();mMapView.getOverlays().clear();mMapView.getOverlays().add(routeOverlay);mMapView.invalidate();mMapView.getController().animateTo(result.getBusRoute
33、().getStart();5.7地址信息查詢根據(jù)地理坐標(biāo)查詢地址信息:實(shí)現(xiàn) MySearchListener 的onGetAddrResult,得到查詢結(jié)果。6事件6.1定位實(shí)現(xiàn)方式與系統(tǒng)的定位類似,通過(guò) MKLocationManager或者移除定位器:mLocationManager = mBMapMan.getLocationManager();LocationListener listener = new LocationListener() 1. mMKSearch.reverseGeocode(new GeoPo(40057031, 116307852);3.Override11. mLocationManager.removeUpdates(listener);6.2一般事件在初始化地圖 Activity 時(shí),一般事件,并實(shí)現(xiàn) MKGeneralListener 的接口處理相應(yīng)事件,將mBMapMan.init(Key, null)替換為下
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年金華市教育局所屬金華第一中學(xué)招聘考試真題
- 大田流轉(zhuǎn)合同范本
- 影院裝修合同標(biāo)準(zhǔn)樣本
- 2024年大理州巍山縣南詔鎮(zhèn)社區(qū)衛(wèi)生服務(wù)中心招聘職工考試真題
- 2025年養(yǎng)雞場(chǎng)租賃及養(yǎng)殖廢棄物資源化利用合同
- 二零二五年度法院裁決離婚協(xié)議書及共同債務(wù)承擔(dān)與子女撫養(yǎng)協(xié)議
- 2025年度科技創(chuàng)新大賽贊助冠名權(quán)協(xié)議
- 2025年度人美容院與心理咨詢師聯(lián)合心理美容服務(wù)合同
- 2025年度房屋買賣合同涉及產(chǎn)權(quán)登記及過(guò)戶流程
- 2025年度個(gè)人股份期權(quán)授予合同模板(科技初創(chuàng))
- 2025年中國(guó)工程建設(shè)行業(yè)現(xiàn)狀、發(fā)展環(huán)境及投資前景分析報(bào)告
- 《海瀾之家公司績(jī)效管理現(xiàn)狀、問(wèn)題及優(yōu)化對(duì)策(7600字論文)》
- 小學(xué)四年級(jí)英語(yǔ)教學(xué)反思3篇
- DB1509T 0025-2024 肉牛舍設(shè)計(jì)與建筑技術(shù)規(guī)范
- 上海室內(nèi)裝飾施工合同示范文本2024年
- 2024版2024年《汽車文化》全套教案
- 房地產(chǎn) -中建科工五大類型項(xiàng)目成本指標(biāo)庫(kù)
- 2024小紅書保健品行業(yè)營(yíng)銷通案
- 未來(lái)網(wǎng)絡(luò)支撐下的數(shù)字身份體系:產(chǎn)業(yè)和技術(shù)發(fā)展趨勢(shì)(2024年)定稿版本
- 新《卷煙營(yíng)銷》理論知識(shí)考試題庫(kù)(附答案)
- 中考英語(yǔ)688高頻詞大綱詞頻表
評(píng)論
0/150
提交評(píng)論