Android手機定位與地圖實現android
在一個不熟悉的環境中,得到本身的位置,選擇合適的就餐地點,住宿和公交路線成爲一項難題。本次的實踐項目就是爲了解決上述難題的,經過調用百度地圖的接口實現定位、查詢公交路線、尋找合適的餐飲及住宿等功能,知足人們出行功能。數組
一 需求分析eclipse
1.1 功能需求工具
1)地圖瀏覽和控制----提供國內大多數城市的瀏覽和對地圖基本控制,如放大、縮小、衛星切換等等。性能
2)搜索地點----可以根據用戶提供的信息,搜索對應的位置。如火車站地點、餐館、酒店等等。學習
3)公交查詢------查詢某一城市的特定公交路線。測試
4)個人位置---實時定位用戶的位置。優化
1.2 性能需求設計
在項目開發完成後,是否能安裝在各種實體機上,而且實現預期的功能。xml
1.3 可擴展性需求
在將來,隨着客戶需求的增長,該項目能很好的擴展,來實現更多的功能。
Axure建模 當鼠標停在搜索框中,提示的文字消失;還有一組單選按鈕
二 系統設計
2.1 本系統主要分爲四個模塊,以下圖所示:
1)定位功能模塊----利用GPS提供的服務,獲得當前用戶所在的位置,而且可以根據用戶的位置實時更新。
2)公交路線查詢模塊----能夠查詢城市的某一特定公交路線的行車路線,並將各站點標識出來。
3 目的地查詢模塊----用戶經過輸入具體的城市和地點信息,能夠查看該地點的所處在的地圖,並將紅色的標點標識出來。
4)其餘模塊。更具用戶的需求進行添加。
2.二、系統的操做流程圖。
下圖爲系統的操做流程圖:
2.三、類的相互關係
在百度地圖幾種功能的實現中他們擁有的類以下圖所示:
在這項工程中,各個子界面是相互獨立存在的,從上圖可看出子界面的獨立存在的類和共同享有的類;共同擁有的類是實現調用接口,使圖形可視化。
2.3.一、定位類的關係
3、系統實現
3.1 系統的實現須要百度地圖的受權。首先申請KEY;申請Key後須要在androidManifest.xml取得百度給予的權利:
因爲系統會在不一樣屏幕上運行,因此須要適應不一樣的屏幕,給用戶留下好的體驗實現的方式是:
3.二、主界面
主界面的標題顯示是用setText()方法實現,BMapApiDemoMap的類來展現主窗口。並經過創建一個數組demo對象將進入子界面的按鈕顯示出來。對過單擊列表onListItemClick方法能夠進入相對應的子界面中。
3.三、定位子界面
經過BaiduMap是地圖的操做方法與接口,並經過MapView進行顯示地圖的視圖,默認的地圖中心爲天安門廣場。怎麼實現定位?是經過定位服務客戶端類LocationClient 調用setOpenGps()方法打開手機的GPS實現實時定位。
從上圖中咱們能看到普通、默認圖標、自定義圖標。它們的共能分別是定位模式按鈕及定位圖標按鈕。定位模式是經過LocationMode類實現的,在這裏定位模式有三種模式,分別爲普通模式、跟隨模式、羅盤模式,當點擊按鈕時經過OnClickListener類進行監聽單擊的變化,來實現不一樣的模式。RadioGroup中使用類組單選按鈕。若是咱們選中一個單選按鈕,他會自動取消同一組以前的單選按鈕,進行切換定位的圖標。
3.四、公交查詢子界面
PoiSearch爲搜索類、BusLineSearch爲城市公交查詢類,這兩個類的聯合使用能查詢公交路線。爲了很好的查看公交路線的公交站點,使用popupText顯示出來。下圖是實例圖:
3.五、目的地的查詢模塊。
主要經過PoiSearch搜尋感興趣的地方,實現查找。當查找不成功是,會提示未找到結果。
由於查找不可能很精確,因此用一組按鈕,顯示沒有在圖中標記感興趣的點。如圖:
4、測試
4.一、功能測試用例測試用例
4.1.一、定位功能的實例測試
爲了檢驗定位功能,作出了以下的測試:
在測試中,基本符合了實時定位的要求,只是在定位界面中設置的定位模式按鈕的功能沒有達到要求。
4.1.二、公交查詢的實例測試
進過上面的測試知足公交路線查詢功能。
4.1.三、目的查詢的實例測試
經過測試知足以感興趣地點的查詢。
4.2 定位實例測試
根據變換定位圖標的形狀來測試設計的功能
4.2 公交查詢實例測試
當輸入能容不能查到結果會自動提示
當輸入正確時會出現公交路線圖
4.3 地點查詢實例測試
當輸入的地點查找不到時
當輸入正確的地點和名稱
通過測試咱們能夠發現,設計的系統基本符合要求。
五 總結
5.1 開發過程遇到的問題和解決
一、android studio 環境的搭建。開始在android studio搭建百度地圖開發的環境時,一直提示導入的.jar包不正確,查找了一些android studio配置百度地圖環境方式。我一 一試過依然不正確;最終放棄android studio 軟件進行開發。本次項目的軟件是用曾俊宏提供的eclipse軟件進行開發的。
二、網上有不少android百度地圖開發的教程,可是我自借鑑他們作的工程時,發先一個很大的問題他們導入的.jar包不少着找不到了,利用如今的.jar包,來寫教程給的代碼會出問題。所以找到一個合適的.jar 包很重要。還有他們提供的android本版本比較低,雖然在eclipse提示有問題,可是問題很快就消失了。若是咱們將程序導入虛擬機或者實體機,咱們導入的軟件會自動退出,不能正常的工做。
三、在百度地圖開發中心申請key也出現了一些問題,有可能申請的key在工程中是不起做用的。在申請時必須輸入正確的eclipse 的hash值 和創建工程的包名。不然調不出百度地圖的圖形或者調出來圖形不能知足工程的須要。
5.2 項目的不足與改進計劃
1)、在此次的項目中,算然實現的功能模塊不少,可是不能有效的整合在一個界面中,給人一種界面比較亂的感受。
2)、許多子界面的功能重合,很大的浪費了資源。須要進行代碼整合和優化達到系統的優化,使用戶更願意接受。
3)程序託管在開源中國。(永遠的q2)。
5.3 感悟
在整個課程中學到了不少有益的東西
一、在學習中對知識的總結是一件很重要的事情。即能對前段學到的知識進行概括和了解本身掌握的東西,還能爲下階段學習進行合理的安排,提升學習的效率。
二、對知識要保持求知,求知慾越強越能激發本身的學習慾望。婁老師是我很好的榜樣,要向老師多學習。
三、在上週,老師的講話,我深受啓發,只有多學習多掌握知識才能找到本身的興趣愛好,在工做中才能有更多的選擇。
四、在這短短兩個月中,從老師這裏學到不少的知識,在之後的研究生期間會有利本身的學習。最遺憾的是沒有掌握老師給咱們建議的學習工具,JAVA 和android不能靈活的應用。
五、學習時間安排不合理,有畏難的思想;主要緣由是大學期間懶散的思想,還保留着,在之後的學習中會克服掉。
六、在之後的研究生期間但願還能跟着婁老師學習,並提高本身的能力。