
摘 要:隨著智能手機在人們的生活中的日益普及,基本是每個人都有屬于自己的智能手機,于是手機軟件的多樣化日漸成為了一個重要的課題。為人們的日常生活進行導航的軟件也逐漸占據了越來越重要的地位。如果研發一種具備通過百度地圖和GSP定位來繪制運動軌跡,將提高用戶手機更詳細的信息。文章詳細介紹了百度地圖的機制,并介紹了定位的實現。而且通過兩者的結合來繪制運動軌跡,極大地方便用戶的使用。
關鍵詞:Android;百度地圖;定位;軌跡繪制
1 引言
Android是以Linux為基礎的開放源碼操作系統,主要用于便攜設備。作為谷歌企業戰略的重要組成部分,基于Android的各種移動設備已被廣大的用戶使用。因此使得基于Android平臺的開發得到了巨大的發展。
手機電子地圖不僅僅是一種將數字化技術應用到傳統地圖當中而產生的新型地圖模式,還是一種現代化的電子信息產品,其中融合了計算機技術、GIS 技術和網絡技術。電子地圖有效利用了 GPS 導航系統的定位信號,在其基礎功能上進行擴展,使得GPS 導航系統的功能呈現多樣化;此外,電子地圖將導航定位信號與周圍的地理形勢進行結合,動態并直觀地對機動車終端進行管理,達到便捷交通、方便出行的目的。
在Android系統的移動設備上,Google地圖和百度地圖的應用最為廣泛,對于開發者來說,百度地圖更容易實現,然而百度開發沒有現成的錄制軌跡,則在運動過程中進行周期定位,繪制有型記錄點,成為一條有方向的軌跡。
2 實現方法
2.1 電子地圖的機制
電子地圖是包含空間位置地理坐標的數字地圖,能夠利用空間定位系統的電子地圖集數據集,它不但是整個系統與用戶的交互接口,而且將導航定位信號與周圍的地理形勢進行結合,動態并直觀地對機動車終端進行管理。
電子地圖主要分為兩個單元:圖設計單元和地圖瀏覽單元。地圖設計單元主要是對數據進行采集、處理、存儲以及管理,而電子瀏覽單元主要讓用戶能操作電子地圖并使用電子地圖的各個功能模塊,該單元不僅能讓用戶瀏覽靜態的電子地圖,還能讓用戶了解基于電子地圖的動態變化信息。
2.2 電子地圖的實現
電子地圖是直接源碼編譯非常困難,可以通過調用百度地圖API來實現。通過百度地圖API導入到項目中,繼承API中的MapActivity基類并且把地圖配置處相關處理代碼放在基類中,然后在實現此基類的子類中專心實現業務的相關邏輯。
實現地圖的核心代碼如下:
mapView= (MapView)findViewById(R.id.bmapView);
bMapManager=new BMapManager(MainActivity.this);
bMapManager.init(keyString, new MKGeneralListener() {
public void onGetPermissionState(int arg0) {
if(arg0==300){Toast.makeText(MainActivity.this, \"輸入的Key有誤!請核實!!\", 0).show();}}
public void onGetNetworkState(int arg0){}
});
this.initMapActivity(bMapManager);
,,,,
2.3 GPS定位原理
GPS定位的基本原理是根據高速運動的衛星瞬間位置作為已知的起算數據,采用空間距離后方交會的方法,確定待測點的位置。如圖所示,假設t時刻在地面待測點上安置GPS接收機,可以測定GPS信號到達接收機的時間△t,再加上接收機所接收到的衛星星歷等其它數據可以確定以下四個方程式:
上述四個方程式中待測點坐標x、y、z和Vto為未知參數,其中
di=c△ti (i=1、2、3、4)。
di (i=1、2、3、4) 分別為衛星1、衛星2、衛星3、衛星4到接收機之間的距離。
△ti (i=1、2、3、4) 分別為衛星1、衛星2、衛星3、衛星4的信號到達接收機所經歷的時間。
c為GPS信號的傳播速度(即光速)。四個方程式中各個參數意義如下:
x、y、z 為待測點坐標的空間直角坐標。
xi、yi、zi (i=1、2、3、4) 分別為衛星1、衛星2、衛星3、衛星4在t時刻的空間直角坐標, 可由衛星導航電文求得。
Vti(i=1、2、3、4)分別為衛星1、衛星2、衛星3、衛星4的衛星鐘的鐘差,由衛星星歷提供。
Vto為接收機的鐘差。
由以上四個方程即可解算出待測點的坐標x、y、z和接收機的鐘差Vto 。
2.3 運動軌跡的實現與繪制
軌跡的繪制首先在定位的基礎上實現,機理在于短周期內的自動繪制記錄點,將這個點按順序連起來形成以來有方向的線,實現步驟如下:
(1)開啟百度地圖。(2)開始定位。(3)時時更新地圖,將定位點記錄下來。(4)將記錄點繪制成一條曲線。
核心代碼如下:
public void start(){
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setAddrType(\"detail\");
option.setCoorType(\"gcj02\");
option.setScanSpan(3000);
option.disableCache(true);// 禁止啟用緩存定位
mLocationClient.setLocOption(option);
if (!mLocationClient.isStarted())
{ mLocationClient.start();}
return;
}
3 測試結果
3.1 地圖顯示測試
(1)開啟手機移動網絡或WIFI。(2)運行開發的地圖應用。(3)顯示地圖,效果如圖1。
4 結束語
至今為止,Android手機操作系統已經成為市場占有率第一的智能手機系統,學習和掌握Android平臺手機相關應用的開發對人們有非常重要的意義。文章以基于Android平臺的的手機地圖開發,使用GPS位置定位技術和百度地圖提供的相關接口將移動設備運動軌跡的繪制的設計與實現。
參考文獻
[1]帥冬冬.基于android手機的電子地圖的應用開發[D].南京郵電大學,2013.
[2]謝思健,董懿,楊昱 .智能手機通過甩動完成資料快速傳遞方法的研究與實現[J].科技創新與應用,2013,18:70-71.
[3]趙士田.基于Android平臺的運動輔助軟件的設計與實現[D].山東大學,2011.
[4]馮越.Android操作系統的安全性研究[J].金融科技時代,2012,06:101-103.
[5]公磊.基于Android的GPS測量系統開發[D].南昌大學,2008.
作者簡介:林志偉(1993-),男,寧波大紅鷹學院信息工程學院,研究方向:軟件開發。
楊昱 (1969-),男,副教授,研究方向:軟件開發,文本檢索。