版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Android集成百度地圖接口,實(shí)現(xiàn)定位+路徑規(guī)劃。新手教程 本文主要內(nèi)容包括:如何根據(jù)百度地圖接口實(shí)現(xiàn)定位,并實(shí)現(xiàn)從A到B的路徑規(guī)劃功能(駕車,公交,步行)。本文主要提供給新手參考,如果有錯(cuò)誤希望博友們指出以便及時(shí)改正。1.申請(qǐng)百度地圖SDK的密鑰(填寫(xiě)安全碼是一定注意:Android SDK安全碼組成:數(shù)字簽名+;+包名)。2.在 下載示例代碼。3.Eclipse中導(dǎo)入實(shí)例代碼。4.在AndroidManifest.xml中 把申請(qǐng)的密鑰填進(jìn)去(如圖).5.這樣就可以運(yùn)行我們剛剛下載的百度地圖demo.我們下面要做的就是把demo里面能用的代碼改成我們需要的功能:我們需要的功能就是:獲取我
2、的位置,然后幫我導(dǎo)航到我想去的地方。(實(shí)際開(kāi)發(fā)中可能是與服務(wù)器交互的任意位置)首先貼上我們的項(xiàng)目結(jié)構(gòu),文章結(jié)尾也會(huì)有代碼下載地址(免積分下載)。1.我們需要下載百度地圖API的示例代碼與類參考。如下圖所示。2.Eclipse導(dǎo)入百度地圖BaiduLBS_AndroidSDK_Sample地圖+檢索+LBS云檢索+工具 下的示例項(xiàng)目,大家可以按照本文開(kāi)頭的配置運(yùn)行一下demo,本文就不在展示demo運(yùn)行效果。3.由于我們這次需要的功能是線路規(guī)劃,所以demo中我們需要的類是 RoutePlanDemo,二話不說(shuō)新建項(xiàng)目先將這個(gè)Activity類粘貼進(jìn)去。4.我們需要在我們自己的Applicati
3、on類中初始化百度SDK組件,所以我們?cè)侔裠emo中的 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="" /> <!- 來(lái)電消音 -> <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)在我們來(lái)解讀我們剛剛粘貼過(guò)來(lái)的 RoutePlanDemo類,百度的注釋已經(jīng)很詳細(xì)了,根據(jù)運(yùn)行demo后的效果,我們只要發(fā)現(xiàn)哪里傳入地址參數(shù)就可以。下面兩句就是我們需要傳入
14、的地圖參數(shù)。 PlanNode stNode = ("北京", ().toString(); PlanNode enNode = ("北京", ().toString();PlanNode對(duì)象, 現(xiàn)在我們打開(kāi)剛剛我們下載的類參考中的文檔,路徑如下:百度地圖BaiduLBS_AndroidSDK_DocsPlanNode類,此類提供給我們兩個(gè)方法如下圖所示:7.所以我們只需要把我們的起點(diǎn)和終點(diǎn)的位置信息(經(jīng)緯度或者地名和城市名)放入方法的參數(shù)中即可.而現(xiàn)在我們需要的起點(diǎn)是根據(jù)我們實(shí)時(shí)的定位而決定的,所以現(xiàn)在我們還需要調(diào)用百度的定位方法,來(lái)獲取我們的當(dāng)前定位
15、信息。8.要想獲取我們當(dāng)前所在位置,我們可以實(shí)現(xiàn)BDLocationListener接口,使用BDLocation類中的 getLatitude()與getLongitude方法,獲取我們當(dāng)前的位置。然后將獲取到的經(jīng)緯度放到下面的方法中即可。PlanNode stNode = (new LatLng(myLatitude, myLongitude);9.很簡(jiǎn)單,到此我們就實(shí)現(xiàn)了今天我們想實(shí)現(xiàn)的所有功能,我們只需要一個(gè)activity類就可以完成我們的百度地圖demo.代碼如下:/* * 此demo用來(lái)展示如何進(jìn)行駕車、步行、公交路線搜索并在地圖使用RouteOverlay、TransitOve
16、rlay繪制 * 同時(shí)展示如何進(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;/上一個(gè)節(jié)點(diǎn) Button mBtnNext = null;/下一個(gè)節(jié)點(diǎn) int nodeIndex = -1;/節(jié)點(diǎn)索引,供瀏覽節(jié)點(diǎn)時(shí)使用 RouteLine route = null; OverlayManager routeOverlay = null; boolean useDefaultIcon = false; private TextView popupText = null;/泡泡view /地圖相關(guān),使用繼承MapView的MyRouteMapView目的是重寫(xiě)touch事件實(shí)現(xiàn)泡
18、泡處理 /如果不處理touch事件,則無(wú)需繼承,直接使用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 = (); / 開(kāi)啟定位圖層 (true); mBtnPre = (Button) findViewById(); mBtnNext = (Button) findViewById(); (); (); /地圖點(diǎn)擊事件處理 (this); / 初始化搜索模塊,注冊(cè)事件監(jiān)聽(tīng) mSearch = (); (this); /TODO 定位功能/ 定位初始化mLocClient = new LocationClient(this);(myListener);Loca
20、tionClientOption option = new LocationClientOption();(true);/ 打開(kāi)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 = ("無(wú)錫", ().toString(); PlanNode enNode = ("無(wú)錫", "無(wú)錫火車站"); / 實(shí)際使用中請(qǐng)對(duì)起點(diǎn)終點(diǎn)城市進(jìn)行正確的設(shè)定 if () = ) (new DrivingRoutePlanOption() .from(stNode) .to(enNode); else if () = ) (new Tra
22、nsitRoutePlanOption() .from(stNode) .city("無(wú)錫") .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; /移動(dòng)節(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)地址有岐義,通過(guò)以下接口獲取建議查詢信息 /() 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)地址有岐義,通過(guò)以下接口獲取建議查詢信息 /() 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)地址有岐義,通過(guò)以下接口獲取建議查詢信息 /
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. 本站所有資源如無(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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電商合作協(xié)議合同范本
- 車床設(shè)備采購(gòu)合同范本
- 委托貸款合同范本
- 中英文翻譯外債借款合同范本
- 入駐天貓合同范本
- 合同書(shū)范文模板電子版
- 污水處理 設(shè)計(jì)合同
- 戰(zhàn)略偏差對(duì)企業(yè)新質(zhì)生產(chǎn)力的影響研究
- 幼兒園家長(zhǎng)會(huì)總結(jié)與反思中班
- 超寬帶電磁脈沖的監(jiān)測(cè)與參數(shù)測(cè)定系統(tǒng)
- 蔚來(lái)汽車技術(shù)
- 浙教版勞動(dòng)二年級(jí)上冊(cè)全冊(cè)教案
- 臨床執(zhí)業(yè)醫(yī)師指導(dǎo)用書(shū)
- 版本管理方案
- 智能衣服方案
- 李克勤紅日標(biāo)準(zhǔn)粵語(yǔ)注音歌詞
- 基于視覺(jué)的工業(yè)缺陷檢測(cè)技術(shù)
- 軍事英語(yǔ)詞匯整理
- DB31-T 1440-2023 臨床研究中心建設(shè)與管理規(guī)范
- 老客戶維護(hù)方案
- 高處作業(yè)安全教育培訓(xùn)講義課件
評(píng)論
0/150
提交評(píng)論