版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Android集成百度地圖接口,實(shí)現(xiàn)定位+路徑規(guī)劃。新手教程 本文主要內(nèi)容包括:如何根據(jù)百度地圖接口實(shí)現(xiàn)定位,并實(shí)現(xiàn)從A到B的路徑規(guī)劃功能(駕車,公交,步行)。本文主要提供給新手參考,如果有錯誤希望博友們指出以便及時改正。1.申請百度地圖SDK的密鑰(填寫安全碼是一定注意:Android SDK安全碼組成:數(shù)字簽名+;+包名)。2.在 下載示例代碼。3.Eclipse中導(dǎo)入實(shí)例代碼。4.在AndroidManifest.xml中 把申請的密鑰填進(jìn)去(如圖).5.這樣就可以運(yùn)行我們剛剛下載的百度地圖demo.我們下面要做的就是把demo里面能用的代碼改成我們需要的功能:我們需要的功能就是:獲取我
2、的位置,然后幫我導(dǎo)航到我想去的地方。(實(shí)際開發(fā)中可能是與服務(wù)器交互的任意位置)首先貼上我們的項(xiàng)目結(jié)構(gòu),文章結(jié)尾也會有代碼下載地址(免積分下載)。1.我們需要下載百度地圖API的示例代碼與類參考。如下圖所示。2.Eclipse導(dǎo)入百度地圖BaiduLBS_AndroidSDK_Sample地圖+檢索+LBS云檢索+工具 下的示例項(xiàng)目,大家可以按照本文開頭的配置運(yùn)行一下demo,本文就不在展示demo運(yùn)行效果。3.由于我們這次需要的功能是線路規(guī)劃,所以demo中我們需要的類是 RoutePlanDemo,二話不說新建項(xiàng)目先將這個Activity類粘貼進(jìn)去。4.我們需要在我們自己的Applicati
3、on類中初始化百度SDK組件,所以我們再把demo中的 DemoApplication類粘貼到新建項(xiàng)目。而且我們需要在AndroidManifest中配置此類。配置文件如下。<span style="font-family:Times New Roman;"><manifest xmlns:androidapk/res/android" package="" android:versionCode="1" android:versionName="1.0" > <uses-s
4、dk android:minSdkVersion="8" android:targetSdkVersion="19" /> <application android:name="" android:icon="drawable/ic_launcher" android:label="string/app_name" > <meta-data android:name="" android:value="hOR6hNauVspidl4M3OmQ
5、ttfm" /> <activity android:name="" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:label="BaiduMapSDKDemo" > <intent-filter> <action android:name="" /> <category android:nam
6、e="" /> </intent-filter> </activity> <service android:name="" android:enabled="true" android:process=":remote" > </service> </application> <permission android:name="" > </permission> <uses-permission an
7、droid:name="" > </uses-permission> <uses-permission android:name="" > </uses-permission> <uses-permission android:name="" > </uses-permission> <uses-permission android:name="" > </uses-permission> <uses-permissio
8、n android:name="" > </uses-permission> <!- <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission> -> <uses-permission android:name="" > </uses-permission> <uses-permission android:name="&qu
9、ot; /> <uses-permission android:name="" > </uses-permission> <uses-permission android:name="" /> <uses-permission android:name="" /> <uses-permission android:name="" /> <uses-permission android:name="" /> <us
10、es-permission android:name="" /> <uses-permission android:name="" /> <uses-permission android:name="" /> <uses-permission android:name="" /> <!-權(quán)限判斷本程序是否為當(dāng)前運(yùn)行的應(yīng)用? -> <uses-permission android:name="" /> <uses-permis
11、sion android:name="" > </uses-permission> <uses-permission android:name="" > </uses-permission> <uses-permission android:name="" > </uses-permission> <uses-permission android:name="" /> <uses-permission android:name=&q
12、uot;" /> <uses-permission android:name="" /> <!- 來電消音 -> <uses-permission android:name="" > </uses-permission> <uses-permission android:name="" /> <uses-permission android:name="" /> <supports-screens android:anyD
13、ensity="true" android:largeScreens="true" android:normalScreens="false" android:resizeable="true" android:smallScreens="true" /></manifest></span>5.現(xiàn)在我們來解讀我們剛剛粘貼過來的 RoutePlanDemo類,百度的注釋已經(jīng)很詳細(xì)了,根據(jù)運(yùn)行demo后的效果,我們只要發(fā)現(xiàn)哪里傳入地址參數(shù)就可以。下面兩句就是我們需要傳入
14、的地圖參數(shù)。 PlanNode stNode = ("北京", ().toString(); PlanNode enNode = ("北京", ().toString();PlanNode對象, 現(xiàn)在我們打開剛剛我們下載的類參考中的文檔,路徑如下:百度地圖BaiduLBS_AndroidSDK_DocsPlanNode類,此類提供給我們兩個方法如下圖所示:7.所以我們只需要把我們的起點(diǎn)和終點(diǎn)的位置信息(經(jīng)緯度或者地名和城市名)放入方法的參數(shù)中即可.而現(xiàn)在我們需要的起點(diǎn)是根據(jù)我們實(shí)時的定位而決定的,所以現(xiàn)在我們還需要調(diào)用百度的定位方法,來獲取我們的當(dāng)前定位
15、信息。8.要想獲取我們當(dāng)前所在位置,我們可以實(shí)現(xiàn)BDLocationListener接口,使用BDLocation類中的 getLatitude()與getLongitude方法,獲取我們當(dāng)前的位置。然后將獲取到的經(jīng)緯度放到下面的方法中即可。PlanNode stNode = (new LatLng(myLatitude, myLongitude);9.很簡單,到此我們就實(shí)現(xiàn)了今天我們想實(shí)現(xiàn)的所有功能,我們只需要一個activity類就可以完成我們的百度地圖demo.代碼如下:/* * 此demo用來展示如何進(jìn)行駕車、步行、公交路線搜索并在地圖使用RouteOverlay、TransitOve
16、rlay繪制 * 同時展示如何進(jìn)行節(jié)點(diǎn)瀏覽并彈出泡泡 */public class RoutePlanDemo extends Activity implements , OnGetRoutePlanResultListener /全局變量private double myLongitude; /經(jīng)度private double myLatitude; /緯度/關(guān)于定位的參數(shù)LocationClient mLocClient;boolean isFirstLoc = true;/ 是否首次定位public MyLocationListenner myListener = new MyLocat
17、ionListenner(); /瀏覽路線節(jié)點(diǎn)相關(guān) Button mBtnPre = null;/上一個節(jié)點(diǎn) Button mBtnNext = null;/下一個節(jié)點(diǎn) int nodeIndex = -1;/節(jié)點(diǎn)索引,供瀏覽節(jié)點(diǎn)時使用 RouteLine route = null; OverlayManager routeOverlay = null; boolean useDefaultIcon = false; private TextView popupText = null;/泡泡view /地圖相關(guān),使用繼承MapView的MyRouteMapView目的是重寫touch事件實(shí)現(xiàn)泡
18、泡處理 /如果不處理touch事件,則無需繼承,直接使用MapView即可 MapView mMapView = null; / 地圖View BaiduMap mBaidumap = null; /搜索相關(guān) RoutePlanSearch mSearch = null; / 搜索模塊,也可去掉地圖模塊獨(dú)立使用 protected void onCreate(Bundle savedInstanceState) (savedInstanceState); setContentView(); CharSequence titleLable = "路線規(guī)劃功能" setTitl
19、e(titleLable); /初始化地圖 mMapView = (MapView) findViewById(); mBaidumap = (); / 開啟定位圖層 (true); mBtnPre = (Button) findViewById(); mBtnNext = (Button) findViewById(); (); (); /地圖點(diǎn)擊事件處理 (this); / 初始化搜索模塊,注冊事件監(jiān)聽 mSearch = (); (this); /TODO 定位功能/ 定位初始化mLocClient = new LocationClient(this);(myListener);Loca
20、tionClientOption option = new LocationClientOption();(true);/ 打開gps("bd09ll"); / 設(shè)置坐標(biāo)類型(1000);(option);(); /* * 發(fā)起路線規(guī)劃搜索示例 * * param v */ public void SearchButtonProcess(View v) /重置瀏覽節(jié)點(diǎn)的路線數(shù)據(jù) route = null; (); (); (); PlanNode stNode = (new LatLng(myLatitude, myLongitude); /TODO 服務(wù)器數(shù)據(jù)接口 /Pl
21、anNode enNode = (new LatLng(shopLatitude,shopLongitude); /如果使用服務(wù)器傳遞數(shù)據(jù)將shop的經(jīng)緯度替換 /PlanNode enNode = ("無錫", ().toString(); PlanNode enNode = ("無錫", "無錫火車站"); / 實(shí)際使用中請對起點(diǎn)終點(diǎn)城市進(jìn)行正確的設(shè)定 if () = ) (new DrivingRoutePlanOption() .from(stNode) .to(enNode); else if () = ) (new Tra
22、nsitRoutePlanOption() .from(stNode) .city("無錫") .to(enNode); else if () = ) (new WalkingRoutePlanOption() .from(stNode) .to(enNode); /* * 節(jié)點(diǎn)瀏覽示例 * * param v */ public void nodeClick(View v) if (route = null | () = null) return; if (nodeIndex = -1 && () = ) return; /設(shè)置節(jié)點(diǎn)索引 if () = )
23、 if (nodeIndex < ().size() - 1) nodeIndex+; else return; else if () = ) if (nodeIndex > 0) nodeIndex-; else return; /獲取節(jié)結(jié)果信息 LatLng nodeLocation = null; String nodeTitle = null; Object step = ().get(nodeIndex); if (step instanceof ) nodeLocation = () step).getEntrace().getLocation(); nodeTitle
24、 = () step).getInstructions(); else if (step instanceof ) nodeLocation = () step).getEntrace().getLocation(); nodeTitle = () step).getInstructions(); else if (step instanceof ) nodeLocation = () step).getEntrace().getLocation(); nodeTitle = () step).getInstructions(); if (nodeLocation = null | nodeT
25、itle = null) return; /移動節(jié)點(diǎn)至中心 mBaidumap.setMapStatus(MapStatusUpdateFactory.newLatLng(nodeLocation); / show popup popupText = new TextView(); (); (0xFF000000); (nodeTitle); (new InfoWindow(popupText, nodeLocation, null); Override protected void onRestoreInstanceState(Bundle savedInstanceState) (save
26、dInstanceState); Override public void onGetWalkingRouteResult(WalkingRouteResult result) if (result = null | != ) (, "抱歉,未找到結(jié)果", ).show(); if ( = ) /起終點(diǎn)或途經(jīng)點(diǎn)地址有岐義,通過以下接口獲取建議查詢信息 /() return; if ( = ) nodeIndex = -1; (); (); route = ().get(0); WalkingRouteOverlay overlay = new MyWalkingRouteO
27、verlay(mBaidumap); (overlay); routeOverlay = overlay; ().get(0); (); (); Override public void onGetTransitRouteResult(TransitRouteResult result) if (result = null | != ) (, "抱歉,未找到結(jié)果", ).show(); if ( = ) /起終點(diǎn)或途經(jīng)點(diǎn)地址有岐義,通過以下接口獲取建議查詢信息 /() return; if ( = ) nodeIndex = -1; (); (); route = ().g
28、et(0); TransitRouteOverlay overlay = new MyTransitRouteOverlay(mBaidumap); (overlay); routeOverlay = overlay; ().get(0); (); (); Override public void onGetDrivingRouteResult(DrivingRouteResult result) if (result = null | != ) (, "抱歉,未找到結(jié)果", ).show(); if ( = ) /起終點(diǎn)或途經(jīng)點(diǎn)地址有岐義,通過以下接口獲取建議查詢信息 /
29、() return; if ( = ) nodeIndex = -1; (); (); route = ().get(0); DrivingRouteOverlay overlay = new MyDrivingRouteOverlay(mBaidumap); routeOverlay = overlay; (overlay); ().get(0); (); (); /定制RouteOverly private class MyDrivingRouteOverlay extends DrivingRouteOverlay public MyDrivingRouteOverlay(BaiduMa
30、p baiduMap) super(baiduMap); Override public BitmapDescriptor getStartMarker() if (useDefaultIcon) return (); return null; Override public BitmapDescriptor getTerminalMarker() if (useDefaultIcon) return (); return null; private class MyWalkingRouteOverlay extends WalkingRouteOverlay public MyWalking
31、RouteOverlay(BaiduMap baiduMap) super(baiduMap); Override public BitmapDescriptor getStartMarker() if (useDefaultIcon) return (); return null; Override public BitmapDescriptor getTerminalMarker() if (useDefaultIcon) return (); return null; private class MyTransitRouteOverlay extends TransitRouteOverlay public MyTransitRouteOverlay(BaiduM
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版二手房交易合同樣本6篇
- 2024年特色有機(jī)水果采摘園經(jīng)營管理合同3篇
- 2024年水稻種子線上線下銷售合作購銷合同范本3篇
- 2024年最高額抵押典當(dāng)業(yè)務(wù)房地產(chǎn)租賃服務(wù)合同3篇
- 大型會議無線網(wǎng)絡(luò)支持合同
- 2024年貸款擔(dān)保定制合同:保障資金安全交易3篇
- 運(yùn)輸物流合同終止協(xié)議書
- 健身器材租賃合同標(biāo)準(zhǔn)
- 虛擬實(shí)驗(yàn)室教學(xué)平臺開發(fā)與服務(wù)協(xié)議
- 智慧城市管理系統(tǒng)開發(fā)合同
- GB/T 33609-2017軟質(zhì)泡沫聚合材料滯后損失試驗(yàn)方法
- 現(xiàn)當(dāng)代文學(xué)習(xí)題(北大、復(fù)旦版)
- CypTube激光切割軟件用戶手冊V6.4.0
- 學(xué)前兒童健康教育形考任務(wù)4試題及答案
- 區(qū)域檢驗(yàn)中心項(xiàng)目構(gòu)建書-定稿
- 肺栓塞最新版課件
- 股權(quán)轉(zhuǎn)讓情況明細(xì)表
- 安裝手電筒基礎(chǔ)工業(yè)工程課程設(shè)計(jì)
- 導(dǎo)管相關(guān)性血流感染PPT
- 2022年四川省成都市武侯區(qū)七年級上學(xué)期期末語文試卷
- 過程開發(fā)流程圖
評論
0/150
提交評論