版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4ANDROID平臺(tái)電子地圖加載與實(shí)現(xiàn)方案目錄摘要 3第一章緒論 71.1. 研究?jī)?nèi)容 71.2. 研究意義 71.3. Android研究現(xiàn)狀和發(fā)展趨勢(shì) 81.4. GIS研究現(xiàn)狀 91.5. 移動(dòng)通信技術(shù)與GIS的結(jié)合發(fā)展 10第二章系統(tǒng)分析 112.1. 研究目標(biāo) 112.2. 需求分析 112.3. 性能分析 11第三章系統(tǒng)開發(fā)和運(yùn)行環(huán)境 123.1. Android開發(fā)環(huán)境介紹 123.2. Android開發(fā)平臺(tái)搭建 123.3. BaiduMapSDK介紹 133.4. BaiduMap開發(fā)環(huán)境集成 143.5. 系統(tǒng)運(yùn)行環(huán)境 18第四章系統(tǒng)設(shè)計(jì) 194.1. 用戶界面設(shè)計(jì) 194.2. 數(shù)據(jù)源設(shè)計(jì) 224.3. 系統(tǒng)流程圖 24第五章系統(tǒng)開發(fā) 255.1. 登陸功能開發(fā) 255.1.1. 登陸界面開發(fā) 255.1.2. 登陸功能實(shí)現(xiàn) 255.2. 地圖加載開發(fā) 265.2.1. 地圖加載界面開發(fā) 265.2.2. 地圖加載功能實(shí)現(xiàn) 275.3. 定位功能開發(fā) 285.3.1. 定位功能界面開發(fā) 285.3.2. 定位功能實(shí)現(xiàn) 295.4. 交通狀況功能開發(fā) 305.4.1. 交通狀況界面開發(fā) 305.4.2. 交通狀況功能實(shí)現(xiàn) 315.5. 衛(wèi)星云圖功能開發(fā) 325.5.1. 衛(wèi)星云圖界面開發(fā) 325.5.2. 衛(wèi)星云圖功能實(shí)現(xiàn) 335.6. 城市定位功能開發(fā) 345.6.1. 城市地位界面開發(fā) 345.6.2. 城市定位定位功能 355.7. 模糊查詢功能開發(fā) 365.7.1. 模糊查詢界面開發(fā) 365.7.2. 模糊查詢功能實(shí)現(xiàn) 375.8. 周邊查詢功能開發(fā) 385.8.1. 周邊查詢界面開發(fā) 385.8.2. 周邊查詢功能實(shí)現(xiàn) 39第六章系統(tǒng)測(cè)試 42總結(jié) 48參考文獻(xiàn) 49摘要隨著智能手機(jī)的快速普及,智能手機(jī)操作系統(tǒng)市場(chǎng)風(fēng)生水起。為了讓智能手機(jī)用戶能夠隨時(shí)隨地查詢互聯(lián)網(wǎng)所提供的服務(wù),一種高效的辦法就是將應(yīng)用系統(tǒng)的功能拓展到手機(jī)終端上,讓手機(jī)能夠通過移動(dòng)網(wǎng)以及互聯(lián)網(wǎng)訪問Web網(wǎng)站并處理各種各樣的業(yè)務(wù)。因此,智能手機(jī)的應(yīng)用軟件及其需要的服務(wù)將有廣闊的發(fā)展前景。在如今這個(gè)智能手機(jī)系統(tǒng)群雄紛爭(zhēng)的時(shí)候,2008年Google推出了一款名為Android的開源智能手機(jī)操作系統(tǒng),它采用Linux內(nèi)核,開放手機(jī)聯(lián)盟(OHA)成員可以任意使用和修改SDK包,系統(tǒng)的開源性使其具有良好的拓展性。這款軟件包括了操作系統(tǒng)、用戶界面和應(yīng)用程序,即智能手機(jī)工作所需要的全部軟件。Android的最大特點(diǎn)是其開放性體系架構(gòu),不僅具有非常好的開發(fā)、調(diào)試環(huán)境,而且還支持各種可擴(kuò)展的用戶體驗(yàn),包括豐富的圖形組件、多媒體支持功能以及強(qiáng)大的瀏覽器。因此,對(duì)于軟件從業(yè)人員來說,Android平臺(tái)具有無限的吸引力。BaiduMap作為最先推出的網(wǎng)上地圖之一,各種數(shù)據(jù)信息最為全面和準(zhǔn)確,本系統(tǒng)通過BaiduMapApi設(shè)計(jì)一個(gè)能夠?qū)崿F(xiàn)定位、導(dǎo)航和交通信息發(fā)布等等功能的在線導(dǎo)航軟件。在Android設(shè)備上具有良好的用戶界面、響應(yīng)速度和用戶體驗(yàn)。關(guān)鍵詞智能手機(jī)AndroidBaiduMap導(dǎo)航應(yīng)用第一章緒論7緒論研究?jī)?nèi)容了解java語言的語法和特點(diǎn),熟悉java語言的適用方向并獨(dú)立搭建java語言的開發(fā)環(huán)境,學(xué)會(huì)使用java進(jìn)行項(xiàng)目開發(fā);了解并熟悉android操作系統(tǒng),獨(dú)立搭建android開發(fā)環(huán)境,學(xué)習(xí)并掌握android的項(xiàng)目開發(fā);了解并熟練使用baiduapi,在android開發(fā)環(huán)境下集成baiduapi的jar包,運(yùn)用baiduapi實(shí)現(xiàn)地圖加載、漫游、查詢等功能。研究意義當(dāng)今社會(huì),手機(jī)己經(jīng)成為人們工作生活中必不可少的一項(xiàng)通訊和娛樂工具。隨著手機(jī)的不斷更新,手機(jī)的各種高層服務(wù)和應(yīng)用層出不窮。其中,手機(jī)導(dǎo)航服務(wù),是一項(xiàng)新興且有廣闊市場(chǎng)和應(yīng)用價(jià)值的業(yè)務(wù),尤其是基于位置的網(wǎng)絡(luò)地圖服務(wù)近年來備受人們關(guān)注。它利用移動(dòng)終端的定位技術(shù),通過移動(dòng)通信網(wǎng)絡(luò)與手機(jī)地圖應(yīng)用服務(wù)器之間的互聯(lián)通信,提供給客戶各種與位置相關(guān)的信息服務(wù),方便了用戶的出行。Android平臺(tái)支持或網(wǎng)絡(luò)定位的應(yīng)用開發(fā),并提供給普通開發(fā)者非常靈活的展示與控制功能,這為人們?cè)谑謾C(jī)上設(shè)計(jì)與實(shí)現(xiàn)地圖服務(wù)提供了便捷靈活的開發(fā)平臺(tái)。隨著計(jì)算機(jī)和定位技術(shù)的飛速發(fā)展,全球定位系統(tǒng)(GPS)和地圖服務(wù)得到了更廣泛的重視和應(yīng)用,將地圖有效地與位置定位技術(shù)相結(jié)合,應(yīng)用前景十分廣闊。據(jù)統(tǒng)計(jì),人們的日常生活中,有80%的信息是與位置相關(guān)的,然而為了尋找某個(gè)地點(diǎn),人們常常需要耗費(fèi)大量的精力,所以伴隨著現(xiàn)代生活節(jié)奏的不斷加快,實(shí)時(shí)的地理位置信息正在成為人們最渴求的信息之一。目前的地圖服務(wù)主要是以單機(jī)或者Web的方式實(shí)現(xiàn),不適合身處外地的用戶使用,給用戶的出行帶來了不便。而手機(jī)地圖服務(wù)的便攜性和數(shù)據(jù)的實(shí)時(shí)性很好的解決了這一問題,因此,設(shè)計(jì)手機(jī)地圖服務(wù)的應(yīng)用具有非常實(shí)用的價(jià)值。另一方面Baidu于2007年11月推出了一款開源的移動(dòng)終端軟件平臺(tái)——吉林建筑大學(xué)畢業(yè)設(shè)計(jì)(論文)8BaiduMap,為普通開發(fā)者提供了非常靈活的BaiduMap展示與控制功能。同時(shí),由于BaiduMap的免費(fèi)性和Android平臺(tái)的開源性,能夠有效降低開發(fā)成本,使每個(gè)用戶自由的獲取信息,這也為手機(jī)地圖服務(wù)的普及做出了重要貢獻(xiàn)。本人畢業(yè)設(shè)計(jì)的論題為《基于android系統(tǒng)的電子地圖加載與實(shí)現(xiàn)》正是基于Android平臺(tái)開發(fā)的,采用的網(wǎng)絡(luò)地圖BaiduMap,該系統(tǒng)可以用來瀏覽城市的地圖,并能對(duì)其放大、縮小和移動(dòng),同時(shí)利用GPS定位技術(shù),實(shí)現(xiàn)了自我定位、位置查找和路徑跟蹤等功能,滿足了手機(jī)用戶基本的地圖導(dǎo)航服務(wù)需求。Android研究現(xiàn)狀和發(fā)展趨勢(shì)據(jù)Gartner最新數(shù)據(jù)顯示,2010年第二、三季度全球智能手機(jī)銷售繼續(xù)大幅增長(zhǎng),其中第三季度安卓占全球智能手機(jī)市場(chǎng)的25.5%,僅次于塞班,成為第二大智能手機(jī)系統(tǒng)。2010第二、三季度與去年同期相比,增度分別是15.4%及22%,增勢(shì)迅猛。而塞班系統(tǒng)較09年的市場(chǎng)份額,盡管終端銷量有大幅度提升,但增勢(shì)下滑10%,形勢(shì)非常嚴(yán)峻。其他操作系統(tǒng)的表現(xiàn)則要平穩(wěn)很多。圖1-3-SEQ圖1-3-\*ARABIC1安卓是首款開源代碼的操作系統(tǒng),采用Linux內(nèi)核,開放手機(jī)聯(lián)盟(OHA)成員可以任意使用和修改安卓的SDK軟件包。系統(tǒng)的開源性使其具有良好的拓展性,一方面,為眾多移動(dòng)應(yīng)用開發(fā)者提供了良好的系統(tǒng)性平臺(tái),有利于移動(dòng)應(yīng)用的集合;另一方面,終端廠商可以針對(duì)自身的特殊需要“定制化開發(fā)”。與此相比,盡管2010年2月,塞班基本完成開源工作,但由于代碼臃腫,用戶界面設(shè)第二章系統(tǒng)分析第三章系統(tǒng)開發(fā)與運(yùn)行環(huán)境13計(jì)缺失,塞班的開源并無實(shí)際意義,錯(cuò)失發(fā)展良機(jī)。據(jù)Informa預(yù)測(cè),2012年,安卓手機(jī)銷量將超過諾基亞塞班手機(jī),屆時(shí)安卓將成為全球最大的智能手機(jī)平臺(tái)。谷歌表示目前安卓手機(jī)每日平均激活量為20萬部,銷售速度加速上漲。我們認(rèn)為,安卓在全球市場(chǎng)的成長(zhǎng)壯大,塞班市場(chǎng)份額不斷下跌已成不爭(zhēng)事實(shí)。安卓操作系統(tǒng)發(fā)展迅猛主要得益于免費(fèi)、開源和良好產(chǎn)業(yè)運(yùn)作策略,這三點(diǎn)為安卓在智能手機(jī)市場(chǎng)贏得更多的發(fā)展機(jī)遇。系統(tǒng)的免費(fèi)讓更多的廠商加入,推動(dòng)了份額的上升;代碼的開源讓更多的開發(fā)者進(jìn)入應(yīng)用開發(fā);應(yīng)用的豐富吸引了更多用戶選擇,這也是谷歌值得眾多廠商學(xué)習(xí)的地方。此外,谷歌通過OHA聯(lián)合眾多廠商進(jìn)行系統(tǒng)研發(fā),不斷更新版本,將系統(tǒng)應(yīng)用推廣到更多的終端產(chǎn)品中,確保用戶體驗(yàn)持續(xù)改善。GIS研究現(xiàn)狀世紀(jì)90年代以來,由于計(jì)算機(jī)技術(shù)的不斷突破以及其它相關(guān)理論和技術(shù)的完善,GIS在全球得到了迅速的發(fā)展。在海量數(shù)據(jù)存儲(chǔ)、處理、表達(dá)、顯示及數(shù)據(jù)共享技術(shù)等方面都取得了顯著的成效,其概括起來有以下幾個(gè)方面:①硬件系統(tǒng)采用服務(wù)器/客戶機(jī)結(jié)構(gòu),初步形成了網(wǎng)絡(luò)化、分布式、多媒體GIS;②在GIS的設(shè)計(jì)中,提出了采用“開放的GIS環(huán)境”的概念,最終以實(shí)現(xiàn)資源共享、數(shù)據(jù)共享為目標(biāo);③高度重視數(shù)據(jù)標(biāo)準(zhǔn)化與數(shù)據(jù)質(zhì)量的問題,并已形成一些較為可行的數(shù)據(jù)標(biāo)準(zhǔn);④面向?qū)ο蟮臄?shù)據(jù)庫管理系統(tǒng)已經(jīng)問世,正在發(fā)展稱之為“對(duì)象--關(guān)系DBMS(數(shù)據(jù)庫管理系統(tǒng));⑤以GIS為核心的“3S”技術(shù)的逐漸成熟,為資源與環(huán)境工作提供了空間數(shù)據(jù)新的工具和方法;⑥新的數(shù)學(xué)理論和工具采用GIS,使其信息識(shí)別功能、空間分析功能得以增強(qiáng)等等。在GIS技術(shù)不斷發(fā)展下,目前GIS的應(yīng)用已從基礎(chǔ)信息管理與規(guī)劃轉(zhuǎn)向更復(fù)雜的區(qū)域開發(fā)、預(yù)測(cè)預(yù)報(bào),與衛(wèi)星遙感技術(shù)相結(jié)合用于全球監(jiān)測(cè),成為重要的輔助決策工具。據(jù)有關(guān)部門估計(jì),目前世界上常用的GIS軟件己達(dá)400多種國(guó)外較著名的GIS軟件產(chǎn)品有Auotodesk系列產(chǎn)品、Arc/Info、MapInfo及其構(gòu)件產(chǎn)品、Intergraph、Microstation等,還有Web環(huán)境下矢量地圖發(fā)布的標(biāo)準(zhǔn)和規(guī)范,XML、GML、SVG等等。我國(guó)GIS軟件研制起步較晚,比較成熟的測(cè)繪軟件主要有南方CASS,MapGIS,GeoStar,SuperMap等。盡管現(xiàn)存的GIS軟件很多,但對(duì)于它的研究應(yīng)用,歸納概括起來有二種情況:一是利用GIS系統(tǒng)處理用戶的數(shù)據(jù);二是在GIS的基礎(chǔ)上,利用它的開發(fā)函數(shù)庫二次開發(fā)用戶專用的GIS軟件。目前已成功應(yīng)用包括資源管理、自動(dòng)制圖、設(shè)施管理、城市和區(qū)域規(guī)劃、人口和商業(yè)管理、交通運(yùn)輸、石油和天然氣、教育、軍事等九大類別的一百多個(gè)領(lǐng)域。在美國(guó)及發(fā)達(dá)國(guó)家,GIS的應(yīng)用遍及環(huán)境保護(hù)、災(zāi)害預(yù)測(cè)、城市規(guī)劃建設(shè)、政府管理等眾多領(lǐng)域。近年來,隨著我國(guó)經(jīng)濟(jì)建設(shè)的迅速發(fā)展,加速了GIS應(yīng)用的進(jìn)程,在城市規(guī)劃管理、交通運(yùn)輸、測(cè)繪、環(huán)保、農(nóng)業(yè)等領(lǐng)域發(fā)揮重要的作用,取得了良好的經(jīng)濟(jì)效益和社會(huì)效益。移動(dòng)通信技術(shù)與GIS的結(jié)合發(fā)展WAP/WML技術(shù)作為無線互聯(lián)網(wǎng)領(lǐng)域的一個(gè)熱點(diǎn),已經(jīng)顯示了其巨大的應(yīng)用前景和市場(chǎng)價(jià)值。WAP柳ML技術(shù)與GIS技術(shù)的結(jié)合產(chǎn)生了移動(dòng)GIS(Mobile
GIS)應(yīng)用和無線定位服務(wù)LBS(Location——basedServices)。通過WAR/WML技術(shù),移動(dòng)用戶幾乎可以在任何地方、時(shí)間獲得網(wǎng)絡(luò)提供的各種服務(wù)。無線定位服務(wù)將提供一個(gè)機(jī)會(huì)使GIS突破其傳統(tǒng)行業(yè)的角色而進(jìn)人到主流的IT技術(shù)領(lǐng)域里。大多數(shù)的分析家都認(rèn)為,到2010年,無線網(wǎng)絡(luò)將成為全球數(shù)據(jù)傳送的主要途徑。GIS的未來將會(huì)由其機(jī)動(dòng)性所決定。當(dāng)前用于地理信息交互的語言還不足以完成真正的“設(shè)備無關(guān)接口”的互操作。各種移動(dòng)設(shè)備對(duì)于從地理信息服務(wù)器所獲得的信息,其表現(xiàn)方式是各不相同的,用戶輸人方式也不相同。因此,對(duì)于不同的移動(dòng)設(shè)備需要一種統(tǒng)一的標(biāo)記語言。無線定位服務(wù)將提供一個(gè)機(jī)會(huì)使GIS突破其傳統(tǒng)行業(yè)的角色而進(jìn)人到主流的IT技術(shù)領(lǐng)域里:大多數(shù)的分析家都認(rèn)為,到2010年,無線網(wǎng)絡(luò)將成為全球數(shù)據(jù)傳送的主要途徑。GIS的未來將會(huì)由其機(jī)動(dòng)性所決定。
系統(tǒng)分析研究目標(biāo)了解Android應(yīng)用程序的設(shè)計(jì)和開發(fā)過程;使用BaiduAPI進(jìn)行導(dǎo)航軟件的開發(fā)。需求分析隨著信息化建設(shè)的飛速發(fā)展,人們的需求也不斷地提高,對(duì)導(dǎo)航系統(tǒng)的需求也在持續(xù)增加。與此同時(shí),iOS、Android、WindowMobile等智能手機(jī)系統(tǒng)的發(fā)展,使手機(jī)已不再只有簡(jiǎn)單的通訊功能,其強(qiáng)大的可擴(kuò)展性為用戶提供了用手機(jī)進(jìn)行各類娛樂活動(dòng)、完成各項(xiàng)工作任務(wù)的可能,導(dǎo)航軟件也成為智能手機(jī)的標(biāo)準(zhǔn)配備。再加上智能手機(jī)也已經(jīng)成為了人們生活的一部分,能在手機(jī)端實(shí)現(xiàn)一款導(dǎo)航軟件將會(huì)給出行或旅游的朋友們帶來諸多的方便。從上面的描述中可以基本了解軟件的功能需求:?jiǎn)?dòng)AppWidget應(yīng)用程序,登錄系統(tǒng);地圖界面:可查看的地圖信息、平移、縮放、查看當(dāng)前用戶位置;模糊查詢:根據(jù)用戶輸入信息查詢目的地,視野平移到目的地;周邊查詢:根據(jù)城市信息在一定范圍內(nèi)查詢并顯示若干的目的地;路況信息:顯示當(dāng)前的交通狀況;衛(wèi)星云圖:通過衛(wèi)星影像查看目的地真實(shí)場(chǎng)景;性能分析操作簡(jiǎn)單、界面大方美觀;程序響應(yīng)速迅速、安全性高、信息處理速度快;地圖信息詳細(xì)、準(zhǔn)確,并且支持離線地圖;
系統(tǒng)開發(fā)和運(yùn)行環(huán)境Android開發(fā)環(huán)境介紹Android的上層應(yīng)用程序是用Java語言開發(fā),同時(shí)還需要基于Dalvik虛擬機(jī),所以,Google公司推薦使用主流的Java繼承開發(fā)環(huán)境Eclipse。只有Eclipse還不夠,因?yàn)槭鞘褂肑ava語言進(jìn)行開發(fā),還應(yīng)該有由SUN公司提供的JavaSDK(其中包括JRE:JavaRuntimeEnvironment)。此外,Android的應(yīng)用程序開發(fā)和Java開發(fā)有較大區(qū)別的,所以還需要有Google提供的AndroidSDK。同時(shí),還需要在Eclipse安裝ADT,為Android開發(fā)提供開發(fā)工具的升級(jí)或者變更,是Eclipse下開發(fā)工具的升級(jí)下載的工具。簡(jiǎn)言之,需要以下軟件,才能搭建Android開發(fā)環(huán)境,從而進(jìn)行Android應(yīng)用程序的開發(fā):WindowsXP32位操作系統(tǒng);JavaJDK1.6;Eclipse3.8;AndroidSDK;ADT。BaiduMapAPIforAndroidv2.1.1;Android開發(fā)平臺(tái)搭建Android開發(fā)平臺(tái)搭建步驟:①首先到/downloads/下載Eclipse集成開發(fā)環(huán)境并且解壓,這里推薦下載JavaEE集成版本,可以為平臺(tái)的搭建省下不少工作。接著再去/javase/downloads/index.jsp站點(diǎn)下載SDK后安裝,下載/android/android-sdk-windows-11.5_r1.zip,AndroidSDK1.5后解壓。第一步下載工序就結(jié)束了。②雙擊Eclipse解壓后目錄中的eclipse.exe然后啟動(dòng),選擇Eclipse菜單中的Help->InstallNewSoftware->選項(xiàng)卡上的AvailableSoftware,點(diǎn)擊右側(cè)的“Add”輸入/android/eclipse/后確定,然后在“Workwith”下拉菜單中選擇剛才輸入的網(wǎng)址。過一會(huì)就會(huì)出現(xiàn)一個(gè)DeveloperTools選項(xiàng),勾上以后點(diǎn)擊Next以后Eclipse會(huì)自動(dòng)網(wǎng)上查找Android開發(fā)工具插件,然后找到AndroidDDMS和AndroidDevelopmentTools,選中這兩個(gè)點(diǎn)擊Finish,Eclipse就會(huì)自動(dòng)下載并安裝Android插件了,最后會(huì)提示重啟Eclipse。③重啟后選擇Eclipse菜單中的Windows->Preferences在左側(cè)的Android項(xiàng)目中SDKLocation中填入AndroidSDK解壓后的目錄,然后點(diǎn)擊Apply。④在WindowsXP的系統(tǒng)變量中的path變量中添加一個(gè)值,該值指向解壓后的AndroidSDK目錄下的tools文件夾。BaiduMapSDK介紹百度地圖AndroidSDK是一套基于Android1.5及以上版本設(shè)備的地圖開發(fā)工具。您可以使用該套SDK開發(fā)適用于Android系統(tǒng)移動(dòng)設(shè)備的地圖應(yīng)用,通過調(diào)用地圖SDK接口,您可以輕松訪問百度地圖服務(wù)和數(shù)據(jù),構(gòu)建功能豐富、交互性強(qiáng)的地圖類應(yīng)用程序。百度地圖AndroidSDK提供的所有服務(wù)是免費(fèi)的,接口使用無次數(shù)限制。圖3-3-SEQ圖_3-3-\*ARABIC1BaiduMapSDK功能介紹:地圖展示:包括2D圖、衛(wèi)星圖、3D圖地圖展示。地圖操作:提供平移、縮放、雙指手勢(shì)操作、底圖旋轉(zhuǎn)等地圖相關(guān)操作。自定義繪制:提供自定義繪制點(diǎn)、線、面基本幾何圖形的功能。百度地圖導(dǎo)航:提供調(diào)起百度地圖Android版(v5.0及以上版本)導(dǎo)航功能。地圖搜索:提供根據(jù)關(guān)鍵字進(jìn)行范圍檢索、城市檢索和周邊檢索。且支持LBS云檢索用戶自有數(shù)據(jù)。詳情查詢:提供餐飲類的POI的詳細(xì)信息查看(Place詳情)。線路規(guī)劃:提供公交、駕車和步行三種類型,多種方案(不含地鐵、時(shí)間優(yōu)先、最少換乘、最少步行)的線路規(guī)劃。地理編碼:提供地址信息與坐標(biāo)之間的相互轉(zhuǎn)換。位置標(biāo)注:提供一個(gè)或多個(gè)POI位置標(biāo)注,且支持用戶自定義圖標(biāo)。實(shí)時(shí)路況:提供城市實(shí)時(shí)交通路況信息圖。離線地圖:提供離線地圖功能,可節(jié)省用戶流量。定位:采用GPS、WIFI、基站、IP混合定位模式,請(qǐng)使用Android定位SDK獲取定位信息,使用地圖SDK定位圖層進(jìn)行位置展示。BaiduMap開發(fā)環(huán)境集成開發(fā)工具Android開發(fā)工具有很多,開發(fā)者可根據(jù)自己的喜好進(jìn)行選擇。百度推薦開發(fā)者使用Eclipse作為自己的開發(fā)工具。工程配置首先:在工程里新建libs文件夾,將開發(fā)包里baidumapapi_v2_1_1.jar拷貝到libs根目錄下,將libapp_BaiduMapApplib_v2_1_1.so和libvi_voslib.so拷貝到libs\armeabi目錄下(官網(wǎng)demo里已有這三個(gè)文件,如果要集成到自己的工程里,就需要自己添加),拷貝完成后的工程目錄如下圖所示;注:liblocSDK3.so和locSDK_3.1.jar為百度定位SDK所使用資源,開發(fā)者可根據(jù)實(shí)際需求自行添加。圖3-4-SEQ圖_3-4-\*ARABIC1然后:在工程屬性->JavaBuildPath->Libraries中選擇“AddExternalJARs”,選定baidumapapi_v2_1_1.jar,確定后返回。通過以上兩步操作后,您就可以正常使用百度地圖SDK為您提供的全部功能了,但是想要訪問數(shù)據(jù),使用BaiduMapAPI的控件還需在Manifest中添加使用權(quán)限及Android版本支持:<!--使用網(wǎng)絡(luò)功能所需權(quán)限--><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permissionandroid:name="android.permission.INTERNET"></uses-permission><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><!--SDK離線地圖和cache功能需要讀寫外部存儲(chǔ)器--><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!--獲取設(shè)置信息和詳情頁直接撥打電話需要以下權(quán)限
--><uses-permissionandroid:name="android.permission.READ_PHONE_STATE"></uses-permission><uses-permissionandroid:name="android.permission.CALL_PHONE"></uses-permission><!--使用定位功能所需權(quán)限,demo已集成百度定位SDK,不使用定位功能可去掉以下6項(xiàng)--><uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission><permissionandroid:name="android.permission.BAIDU_LOCATION_SERVICE"></permission><uses-permissionandroid:name="android.permission.BAIDU_LOCATION_SERVICE"></uses-permission><uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission><uses-permissionandroid:name="android.permission.ACCES_MOCK_LOCATION"></uses-permission><uses-permissionandroid:name="android.permission.ACCESS_GPS"/>添加屏幕及版本支持:<supports-screensandroid:largeScreens="true"android:normalScreens="true"android:smallScreens="true"android:resizeable="true"android:anyDensity="true"/><uses-sdkandroid:minSdkVersion="7"></uses-sdk>com.baidu.mapapi.map.MapView控件就是地圖顯示控件:在地圖顯示的Activity添加以下代碼:<com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapsView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:clickable="true"/>在使用BaiduMapSDK是還有一個(gè)類比較重要—BMapManager,BMapManager需要一個(gè)密鑰,密鑰可以通過/map/android-mobile-apply-key.htm網(wǎng)址獲得,在Activity中定義成員變量:BMapManagermBMapMan=null;MapViewmMapView=null;獲得密鑰后在onCreate方法中增加以下代碼,并將您申請(qǐng)的Key替換“我的Key”:super.onCreate(savedInstanceState);mBMapMan=newBMapManager(getApplication());mBMapMan.init("我的Key",null);
//注意:請(qǐng)?jiān)谠囉胹etContentView前初始化BMapManager對(duì)象,否則會(huì)報(bào)錯(cuò)setContentView(R.layout.activity_main);mMapView=(MapView)findViewById(R.id.bmapsView);mMapView.setBuiltInZoomControls(true);//設(shè)置啟用內(nèi)置的縮放控件MapControllermMapController=mMapView.getController();//得到mMapView的控制權(quán),可以用它控制和驅(qū)動(dòng)平移和縮放GeoPointpoint=newGeoPoint((int)(39.915*1E6),(int)(116.404*1E6));//用給定的經(jīng)緯度構(gòu)造一個(gè)GeoPoint,單位是微度(度*1E6)mMapController.setCenter(point);//設(shè)置地圖中心點(diǎn)mMapController.setZoom(12);//設(shè)置地圖zoom級(jí)別重寫以下方法,以便BaiduMapSDK自行管理釋放地圖資源:@OverrideprotectedvoidonDestroy(){mMapView.destroy();if(mBMapMan!=null){mBMapMan.destroy();mBMapMan=null;}super.onDestroy();}@OverrideprotectedvoidonPause(){mMapView.onPause();if(mBMapMan!=null){mBMapMan.stop();}super.onPause();}@OverrideprotectedvoidonResume(){mMapView.onResume();if(mBMapMan!=null){mBMapMan.start();}super.onResume();}至此BaiduMapSDK的開發(fā)環(huán)境搭建已經(jīng)基本完成,但要使用定位功能還需要到/map/geosdk-android-download.htm網(wǎng)址下載Android定位SDKv3.3的下關(guān)jar包,locSDK_3.3.jar放到libs目錄下,liblocSDK3.3.so放到libs\armeabi目錄下,定位功能的接口也就可以使用了。系統(tǒng)運(yùn)行環(huán)境Android操作系統(tǒng)2.1以上;內(nèi)存RAM512MB以上;存儲(chǔ)空間512MB以上。第四章系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)用戶界面設(shè)計(jì)在運(yùn)行程序菜單中點(diǎn)擊baiduTest文件便可以baiduTest打開軟件,如圖4-1-1所示:圖4-1-SEQ圖4-1-\*ARABIC1之后進(jìn)入到系統(tǒng)登錄界面,登陸界面的設(shè)計(jì)十分簡(jiǎn)潔,用戶輸入框和密碼輸入框再加一個(gè)登錄按鈕組成,屏幕下方輸入鍵盤會(huì)自動(dòng)彈出,如圖4-1-2所示:圖4-1-SEQ圖4-1-\*ARABIC2當(dāng)用戶名、密碼都輸入爭(zhēng)取以后點(diǎn)擊登陸按鈕就來到了地圖的主界面,進(jìn)入主界面。主界面包括屏幕上方和下方的兩個(gè)狀態(tài)條,中間是地圖顯示區(qū)域,左側(cè)中間偏上有一個(gè)功能按鈕,這個(gè)按鈕也就是系統(tǒng)查詢等功能的入口,如圖4-1-3所示:圖4-1-SEQ圖4-1-\*ARABIC3點(diǎn)擊功能按鈕,左側(cè)會(huì)彈出功能菜單,通過功能菜單可以進(jìn)行查詢、搜索、定位等操作,如圖4-1-4所示:圖4-1-SEQ圖4-1-\*ARABIC4以上是系統(tǒng)的主要功能界面,具體的功能會(huì)在系統(tǒng)開發(fā)和使用具體介紹。模塊設(shè)計(jì)從功能需求上分析可以看出,整個(gè)應(yīng)用程序應(yīng)劃分為4個(gè)模塊,分別是程序啟動(dòng)、用戶界面、后臺(tái)服務(wù)和數(shù)據(jù)庫適配器,各模塊之間的關(guān)系如圖4-2-1所示:圖4-2-SEQ圖_4-2-\*ARABIC1從模塊結(jié)構(gòu)圖中不難看出,后臺(tái)服務(wù)是整個(gè)應(yīng)用程序的核心,主要是“數(shù)據(jù)獲取模塊”,負(fù)責(zé)交互信息和獲取數(shù)據(jù)等。后臺(tái)服務(wù)在程序啟動(dòng)時(shí)就由AppWidgetProvider啟動(dòng),也可由用戶界面通過startService()進(jìn)行啟動(dòng),啟動(dòng)后的后臺(tái)服務(wù)將一直保持運(yùn)行狀態(tài)。地圖數(shù)據(jù)和城市坐標(biāo)數(shù)據(jù)是從手機(jī)中獲得,而沒有直接通過網(wǎng)絡(luò)訪問百度服務(wù)器數(shù)據(jù)。之所以這么實(shí)際,一方面可以避免因網(wǎng)絡(luò)通信不暢造成界面失去響應(yīng);另一方面,可以節(jié)約流量。數(shù)據(jù)庫適配器封裝了所有對(duì)SQLite數(shù)據(jù)庫操作的方法,用戶界面和后臺(tái)服務(wù)會(huì)調(diào)用它來實(shí)現(xiàn)數(shù)據(jù)庫操作。在完成用戶界面設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)和模塊設(shè)計(jì)后,至此程序設(shè)計(jì)階段基本完成。數(shù)據(jù)源設(shè)計(jì)系統(tǒng)的數(shù)據(jù)來源主要有三個(gè):SQLite數(shù)據(jù)源、離線的地圖文件、百度數(shù)據(jù)。在這里我說明一下這種設(shè)計(jì)的原因:從系統(tǒng)本身來看,不使用離線地圖文件是可以完成所用功能的,可以直接從百度的服務(wù)器獲得數(shù)據(jù)。但是也就要考慮流量的問題,在無線網(wǎng)的覆蓋范圍以內(nèi)就不考慮了,如果用手機(jī)本身的流量的話,流量就是個(gè)大問題了,就全國(guó)的地圖數(shù)據(jù)而言就有一個(gè)多GB,概略全國(guó)地圖也要30多MB,對(duì)于手機(jī)流量來說壓力很大。所以我采用地圖數(shù)據(jù)用離線地圖文件加載,動(dòng)態(tài)的數(shù)據(jù)從百度服務(wù)器獲取的方案,離線的地圖文件保存在sdcard上的/BaiduMapSDK/vmp/h/路徑下,也就是/storage/sdcard1/BaiduMapSDK/vmp/h路徑下,如圖4-3-1所示:圖4-3-SEQ圖4-3-\*ARABIC1目錄下的.dat文件便是離線地圖文件,而DVUserdat.cfg文件是離線地圖文件的索引文件,BaiduMapSDK是通過DVUserdat.cfg去找到離線地圖文件。至于SQLite數(shù)據(jù)我使用了兩張表去存儲(chǔ)全國(guó)各省的名稱、坐標(biāo),以及離線地圖文所包含的城市名稱、坐標(biāo)、所歸屬的省,以下表格4-3-1和表格4-3-2是表的詳細(xì)信息:sheng_table表:屬性數(shù)據(jù)類型說明idinteger每個(gè)省的主鍵nametext省的名稱jdDouble省中心經(jīng)度坐標(biāo)wdDouble省中心緯度坐標(biāo)表格4-3-SEQ表格4-3-\*ARABIC1city_table表:屬性數(shù)據(jù)類型說明idinteger城市的主鍵Nametext城市的名稱JdDouble城市中心經(jīng)度坐標(biāo)WdDouble城市中心緯度坐標(biāo)Sidinteger所歸屬的省的id表格4-3-SEQ表格4-3-\*ARABIC2因?yàn)橄到y(tǒng)的查詢是以城市為單位,所以在SQLite數(shù)據(jù)下設(shè)計(jì)這兩張表不光可以節(jié)省一定的流量,而且可以對(duì)查詢提供方便。系統(tǒng)流程圖圖4-4-SEQ圖_4-4-\*ARABIC1第五章系統(tǒng)開發(fā)系統(tǒng)開發(fā)登陸功能開發(fā)登陸界面開發(fā)系統(tǒng)打開以后,首先進(jìn)入系統(tǒng)的登陸界面,如圖5-1-1-1所示:圖5-1-1-SEQ圖_5-1-1-\*ARABIC1項(xiàng)目下layout目錄下的app_login_act.xml文件就是登陸界面的實(shí)現(xiàn)文件,這個(gè)界面所使用的線性布局,控件從上到下分別是用戶名的EditText和密碼的EditText,然后是提交按鈕,軟鍵盤是通過項(xiàng)目根目錄下AndroidManifest.xml設(shè)置的自動(dòng)彈出,代碼為:android:windowSoftInputMode="adjustPan|stateVisible";登陸功能實(shí)現(xiàn)登陸功能的業(yè)務(wù)邏輯實(shí)現(xiàn)是在com.example.baidutest.activity目錄下的LoginActivity中實(shí)現(xiàn)的,實(shí)現(xiàn)代碼為:privateOnClickListeneronClickListener=newOnClickListener(){@OverridepublicvoidonClick(Viewv){userTextView=(EditText)findViewById(R.id.at_login_et_phone_num);passwordTextView=(EditText)findViewById(R.id.at_login_et_password);if(userTextView.getText().toString().equals(NAME)){if(passwordTextView.getText().toString().equals(PASSWORD)){Intentintent=newIntent(LoginActivity.this,MainActivity.class);Activityactivity=LoginActivity.this;activity.startActivity(intent);}else{Toast.makeText(LoginActivity.this,"密碼輸入有誤!",Toast.LENGTH_LONG).show();}}else{Toast.makeText(LoginActivity.this,"用戶名不存在!",Toast.LENGTH_LONG).show();}}};地圖加載開發(fā)地圖加載界面開發(fā)系統(tǒng)登錄成功以后接著進(jìn)入系統(tǒng)的主界面,主界面包括上下兩狀態(tài)欄,中間地圖顯示窗口,左上方的菜單按鈕,以及右下方的縮放按鈕。如圖5-2-1-1所示:圖5-2-1-SEQ圖_5-2-1-\*ARABIC1狀態(tài)欄的功能顯示定位的城市名稱和坐標(biāo)信息;地圖窗口的功能是顯示地圖;縮放按鈕的功能是控制地圖的縮放級(jí)別;菜單按鈕在點(diǎn)擊以后會(huì)彈出菜單欄,菜單欄可以進(jìn)行周邊查詢、模糊查詢、提供當(dāng)前路況、加載衛(wèi)星云圖等。主窗口布局文件為layout目錄下的activity_main.xml文件。地圖加載功能實(shí)現(xiàn)地圖加載功能的業(yè)務(wù)邏輯實(shí)現(xiàn)是在com.example.baidutest.activity目錄下的MainActivity中實(shí)現(xiàn)的,實(shí)現(xiàn)是在MainActivity的onCreate(BundlesavedInstanceState)寫入實(shí)現(xiàn)代碼,實(shí)現(xiàn)代碼為:mBMapMan=newBMapManager(getApplication());mBMapMan.init(MAPMANAGERKEY,null);mMKSearch=newMKSearch();setContentView(R.layout.activity_main);this.mapLayout=newMapLayout(this);this.mapLayout.setmMKSearch(mMKSearch);this.mapLayout.setmBMapMan(mBMapMan);RelativeLayoutrel=(RelativeLayout)findViewById(R.id.Layout);RelativeLayout.LayoutParamsparams=newRelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT){};rel.addView(mapLayout,params);項(xiàng)目下MapLayout是地圖實(shí)現(xiàn)的功能類,MapLayout類下的代碼是主窗口地圖加載代碼:mMapView=newMapView(this.context);mMapView.setBuiltInZoomControls(true);MapControllermMapController=mMapView.getController();//得到GeoPointpoint=newGeoPoint((int)(39.915*1E6),(int)(116.404*1E6));mMapController.setCenter(point);//設(shè)置地圖中心點(diǎn)mMapController.setZoom(12);//設(shè)置地圖zoom級(jí)別mMapController.enableClick(true);this.addView(mMapView);定位功能開發(fā)定位功能界面開發(fā)定位功能是在地圖顯示窗口顯示用戶當(dāng)前位置,圖5-3-1-1是用為在主窗口顯示:圖5-3-1-SEQ圖_5-3-1-\*ARABIC1圖上藍(lán)色箭頭就是用當(dāng)前位置。定位功能實(shí)現(xiàn)項(xiàng)目中MapLayout類中的myLocation()方法實(shí)現(xiàn)地位功能的方法,myLocation()會(huì)在MapLayout的構(gòu)造方法調(diào)用,以下是myLocation的實(shí)現(xiàn)代碼:MyLocationOverlaymyLocationOverlay=newMyLocationOverlay(mMapView);LocationDatalocData=newLocationData();locData.latitude=39.945;locData.longitude=116.404;locData.direction=2.0f;myLocationOverlay.setData(locData);mMapView.getOverlays().add(myLocationOverlay);mMapView.refresh();mMapView.getController().animateTo(newGeoPoint((int)(locData.latitude*1e6),(int)(locData.longitude*1e6)));交通狀況功能開發(fā)交通狀況界面開發(fā)進(jìn)入主界面以后點(diǎn)擊左側(cè)上方的菜單按鈕,屏幕左側(cè)會(huì)彈出菜單,如圖5-4-1-1,2所示:圖5-4-1-SEQ圖_5-4-1-\*ARABIC1,2點(diǎn)擊設(shè)置菜單欄,會(huì)彈出衛(wèi)星云圖、交通狀況、地圖重置三個(gè)功能按鈕,點(diǎn)擊交通狀況右側(cè)菜單欄會(huì)隱藏,地圖上會(huì)顯示當(dāng)前的交通狀況,其中綠色是暢通路段、黃色是繁忙路段、紅色是擁擠路段,不過該功能必須有網(wǎng)絡(luò)支持才能顯示當(dāng)前交通狀況,如圖5-4-1-3所示:圖5-4-1-3交通狀況功能實(shí)現(xiàn)項(xiàng)目下的MapLayout類中的privateOnClickListeneronClickListener=newOnClickListener()是菜單欄中按鈕的監(jiān)聽事件,以下代碼是監(jiān)聽事件處理代碼:if(v==btnUseTraffic){setTrafficVisuable(TrafficVisuable);leftViewVisable();bottomChange(jiaotongzhuangkuang);}setTrafficVisuable(TrafficVisuable);是設(shè)置顯示交通狀況的方法,leftViewVisable();是根據(jù)當(dāng)前菜單欄的顯示狀況控制控制當(dāng)前菜單欄的顯示和隱藏,bottomChange(jiaotongzhuangkuang);是改變底部狀態(tài)欄的狀態(tài)的方法,以下是setTrafficVisuable(TrafficVisuable);方法下的代碼:publicvoidsetTrafficVisuable(booleanvisuable){if(ServiceConnection.ConnectionState(context)){TrafficVisuable=!visuable;mMapView.setTraffic(true);}else{Toast.makeText(this.context,"當(dāng)前網(wǎng)絡(luò)不可用!",Toast.LENGTH_LONG).show();}}衛(wèi)星云圖功能開發(fā)衛(wèi)星云圖界面開發(fā)進(jìn)入主界面以后點(diǎn)擊左側(cè)上方的菜單按鈕,屏幕左側(cè)會(huì)彈出菜單,如圖5-5-1-SEQ圖_5-5-1-\*ARABIC1,2所示:圖5-5-1-SEQ圖_5-5-1-\*ARABIC2,2點(diǎn)擊設(shè)置菜單欄,會(huì)彈出衛(wèi)星云圖、交通狀況、地圖重置三個(gè)功能按鈕,點(diǎn)擊衛(wèi)星云圖右側(cè)菜單欄會(huì)隱藏,地圖顯示窗口會(huì)加載衛(wèi)星云圖,不過必須有網(wǎng)絡(luò)支持,如圖5-5-1-SEQ圖_5-5-1-\*ARABIC3,4所示:圖5-5-1-SEQ圖_5-5-1-\*ARABIC4,4衛(wèi)星云圖功能實(shí)現(xiàn)項(xiàng)目下的MapLayout類中的privateOnClickListeneronClickListener=newOnClickListener()是菜單欄中按鈕的監(jiān)聽事件,以下代碼是監(jiān)聽事件處理代碼:if(v==btnUseCache){setSatelliteVisuable(SatelliteVisuable);leftViewVisable();bottomChange(cityzuobian);}setSatelliteVisuable(SatelliteVisuable);是設(shè)置顯示衛(wèi)星云圖的方法,leftViewVisable();是根據(jù)當(dāng)前菜單欄的顯示狀況控制控制當(dāng)前菜單欄的顯示和隱藏,bottomChange(jiaotongzhuangkuang);是改變底部狀態(tài)欄的狀態(tài)的方法,以下是setSatelliteVisuable(SatelliteVisuable);方法下的實(shí)現(xiàn)代碼:privatebooleanSatelliteVisuable=false;publicvoidsetSatelliteVisuable(booleanvisuable){if(ServiceConnection.ConnectionState(context)){mMapView.setSatellite(!visuable);SatelliteVisuable=!visuable;}else{Toast.makeText(this.context,"當(dāng)前網(wǎng)絡(luò)不可用!",Toast.LENGTH_LONG).show();}}城市定位功能開發(fā)城市地位界面開發(fā)進(jìn)入主界面以后點(diǎn)擊左側(cè)上方的菜單按鈕,屏幕左側(cè)會(huì)彈出菜單,如圖5-6-1-SEQ圖_5-6-1-\*ARABIC1,2所示:圖5-6-1-1,2點(diǎn)擊城市菜單欄,會(huì)彈出中國(guó)各個(gè)省的名稱功能按鈕,每頁有9個(gè)功能按鈕,左右可以滑動(dòng),點(diǎn)擊某一個(gè)功能按鈕會(huì)彈出列表,列出歸屬該省的城市名稱,選擇某一個(gè)城市的名稱,接下來點(diǎn)擊確定按鈕,菜單欄隱藏,屏幕的視野平移到選中城市的中心,頂部和底部的菜單欄信息也會(huì)變?yōu)樵摮鞘械男畔?,如圖5-6-1-SEQ圖_5-6-1-\*ARABIC3,4,5所示:圖5-6-1-3,4圖5-6-1-SEQ圖_5-6-1-\*ARABIC5城市定位定位功能項(xiàng)目下的MapLayout類中的privateOnItemClickListenerItemClickListener=newOnItemClickListener()是城市菜單欄中按鈕的監(jiān)聽事件,以下代碼是監(jiān)聽事件處理代碼:@OverridepublicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2,longarg3){ViewGroupgroup=(ViewGroup)arg1;TextViewtextView=(TextView)shengName=(String)textView.getText();shengID=shengMap.get(shengName);Daodao=newDao(context);Objectobj=dao.selectBySid(shengID,newCityModel());createDialog(obj);}模糊查詢功能開發(fā)模糊查詢界面開發(fā)進(jìn)入主界面以后點(diǎn)擊左側(cè)上方的菜單按鈕,屏幕左側(cè)會(huì)彈出菜單,如圖5-7-1-SEQ圖_5-7-1-\*ARABIC1,2所示:圖5-7-1-SEQ圖_5-7-1-\*ARABIC1,2屏幕上方的文本輸入域就是模糊查詢的相應(yīng)控件,點(diǎn)擊屏幕下方會(huì)彈出鍵盤,要搜索的信息比如說“長(zhǎng)春”,點(diǎn)擊鍵盤上的“搜索”,屏幕的視野會(huì)平移到長(zhǎng)春市的位置,如圖5-7-1-3,4所示:圖5-7-1-3,4模糊查詢功能實(shí)現(xiàn)項(xiàng)目下的MapLayout類中的init()注冊(cè)了一個(gè)文本輸入域的監(jiān)聽事件publicbooleanonEditorAction(TextViewv,intactionId,KeyEventevent);以下是onEditorAction的實(shí)現(xiàn)代碼:if(actionId==EditorInfo.IME_ACTION_SEARCH){Stringconfig=txtSearch.getText().toString();Daodao=newDao(context);Objectobject=dao.selectModelByName(newShengModel(),config);if(object!=null){ShengModelmodel=(ShengModel)object;List<CityModel>list=(List<CityModel>)dao.select(model.getId(),newCityModel());clearLayers();mMapView.refresh();moveToMiddle();mMapView.getController().animateTo(newGeoPoint((int)(model.getWd()*1e6),(int)(model.getJd()*1e6)));shengTextView.setText(model.getName());shengName=model.getName();shiName=list.get(0).getName();shiTextView.setText(list.get(0).getName());zuobiao=model.getJd()+","+model.getWd();bottomChange(cityzuobian);}}周邊查詢功能開發(fā)周邊查詢界面開發(fā)進(jìn)入主界面以后點(diǎn)擊左側(cè)上方的菜單按鈕,屏幕左側(cè)會(huì)彈出菜單,如圖5-8-1-SEQ圖_5-8-1-\*ARABIC1,2所示:圖5-8-1-SEQ圖_5-8-1-\*ARABIC1,2點(diǎn)擊附近菜單,會(huì)彈出一系列的功能按鈕,每個(gè)功能按鈕提供系統(tǒng)下的某一類地物,點(diǎn)擊其中一個(gè)按鈕,系統(tǒng)會(huì)根據(jù)所定位的城市進(jìn)行顯示周邊一定范圍的地物,并把10個(gè)POI繪制在地圖上。屏幕下方的狀態(tài)欄也會(huì)變化為顯示當(dāng)前頁數(shù),通過左右按鈕可以進(jìn)行分頁顯示,如圖5-8-1-3,4所示:圖5-8-1-SEQ圖_5-8-1-\*ARABIC3,4周邊查詢功能實(shí)現(xiàn)項(xiàng)目下的MapLayout類中的privateOnClickListeneronClickListener=newOnClickListener()是菜單欄中按鈕的監(jiān)聽事件,以下代碼是監(jiān)聽事件處理代碼:if(v==btnViewBank){pageNum=1;getPoiList(MySearchListener.BANK);}elseif(v==btnViewSpot){pageNum=1;getPoiList(MySearchListener.POIT);}elseif(v==btnViewDining){pageNum=1;getPoiList(MySearchListener.EATTING);}elseif(v==btnViewHotel){pageNum=1;getPoiList(MySearchListener.HOTEL);}elseif(v==btnViewLive){pageNum=1;getPoiList(MySearchListener.WASHING);}elseif(v==btnViewShopping){pageNum=1;getPoiList(MySearchListener.SHOPPING);}elseif(v==btnViewFacility){pageNum=1;getPoiList(MySearchListener.SPORT);}elseif(v==btnViewLeisure){pageNum=1;getPoiList(MySearchListener.COMPUTER);}elseif(v==btnViewTracffic){pageNum=1;getPoiList(MySearchListener.BUS);}Listener包下的MySearchListener類提供的是查詢的方法publicstaticMap<String,String>poiType=newHashMap<String,String>();保存的系統(tǒng)默認(rèn)提供的周邊查詢的地物類型,以下存放數(shù)據(jù)代碼:static{poiType.put(WU,WU);poiType.put(HOTEL,"酒店");poiType.put(SUPERMARKER,"超市");poiType.put(BANK,"銀行");poiType.put(SHOPPING,"購(gòu)物中心");poiType.put(BUS,"公交");poiType.put(WASHING,"洗浴");poiType.put(EATTING,"餐飲");poiType.put(POIT,"景點(diǎn)");poiType.put(SPORT,"停車場(chǎng)");poiType.put(POST,"郵局");poiType.put(COMPUTER,"網(wǎng)吧");}MySearchListener類下的publicvoidonGetPoiResult(MKPoiResultres,inttype,interror)方法是POI查詢的方法,代碼如下:if(error==MKEvent.ERROR_RESULT_NOT_FOUND){Toast.makeText(mainActivity,"抱歉,未找到結(jié)果",Toast.LENGTH_LONG).show();return;}elseif(error!
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課外活動(dòng)計(jì)劃
- 減肥保健品相關(guān)項(xiàng)目投資計(jì)劃書范本
- 社區(qū)災(zāi)害應(yīng)急響應(yīng)機(jī)制的建立計(jì)劃
- 風(fēng)險(xiǎn)管理與危機(jī)應(yīng)對(duì)的策略計(jì)劃
- 難治性肺癌中國(guó)專家共識(shí)解讀
- 《教師職業(yè)道德原則》課件
- 《認(rèn)識(shí)百分?jǐn)?shù)》課件
- 《數(shù)學(xué)利潤(rùn)問題》課件
- 哺乳期辭職報(bào)告范文
- 超越集團(tuán)管理診斷報(bào)告課件
- 部編人教版五年級(jí)上冊(cè)語文 期末復(fù)習(xí)專題訓(xùn)練5 詞語運(yùn)用
- 國(guó)開電大本科《管理英語4》機(jī)考真題(第十套)
- 急性呼吸窘迫綜合癥ARDS課件
- 計(jì)算機(jī)輔助藥物設(shè)計(jì)課件
- 鐵路事故分析
- 物業(yè)公司水電工管理制度
- 2023年水利部太湖流域管理局所屬事業(yè)單位招聘20人(共500題含答案解析)筆試歷年難、易錯(cuò)考點(diǎn)試題含答案附詳解
- GB/T 42131-2022人工智能知識(shí)圖譜技術(shù)框架
- 悅納自我珍愛生命班會(huì)公開課一等獎(jiǎng)市賽課獲獎(jiǎng)?wù)n件
- 自然的力量紅壤黑土
- 應(yīng)急救援培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論