新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于google地圖的Android系統(tǒng)導航應(yīng)用設(shè)計

基于google地圖的Android系統(tǒng)導航應(yīng)用設(shè)計

作者: 時間:2013-10-21 來源:網(wǎng)絡(luò) 收藏


四、GPS 定位功能實現(xiàn)


全球衛(wèi)星定位系統(tǒng)(Global Positioning System,GPS)是一個中距離圓型軌道衛(wèi)星導航系統(tǒng),它可以為地球表面超98%的地區(qū)提供準確的定位、測速和高精度的時間標準服務(wù),在各個領(lǐng)域都有廣泛的應(yīng)用。

Android 支持GPS 服務(wù)的API.該服務(wù)可以用來獲取當前設(shè)備的地理位置,應(yīng)用程序通過該API 獲得地理位置,并可以定時請求更新當前設(shè)備的地理定位信息。該系統(tǒng)將用到GPS API 中包幾個重要的功能類:

LocATIonManager,用于管理Android 用戶定位服務(wù);LocationProvider,提供多種定位方式供開發(fā)者選擇;Criteria,是應(yīng)用通過LocationProvider 中設(shè)置的屬性來選擇合適的定位提供者。

獲取用戶當前位置的步驟如下:
1、在AndroidManifeST.xml 中聲明相應(yīng)的權(quán)限:
android:name="“android.permission.ACCESS_COARSE_LOCATION”" permission>
2、獲取LocationManager 對象:
LocationManager locationManager =(LocationManager)getSystemSERvice (Context.LOCATION_SERVICE);
3、設(shè)置Criteria 對象:
Criteria criteria = newCriteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
4、設(shè)置Provider:
String provider = locationManager.getBestProvider(criteria,true);
Location location= locationManager.getLastKnownLocation(provider);

五、導航功能實現(xiàn)

在正式版本的Android SDK 中,移除了原有M5 版本里面的DrivingDirection package,所以無法透過程序來規(guī)劃導航線路。因此導航功能的實現(xiàn)我們是通過載入web 導航網(wǎng)頁的方式實現(xiàn)的。Android 提供了一個名為WebView的控件來專門瀏覽網(wǎng)頁。

WebView控件是基于WebKit 瀏覽器網(wǎng)頁排版引擎的一個java接口,它能夠完美支持html、javascript、css.有時我們可以把整個UI 甚至數(shù)據(jù)處理都交給WebView,配合PHP 等服務(wù)器端程序,這樣的Android 應(yīng)用開發(fā)更為簡單UI 更為豐富。因此本系統(tǒng)的導航功能的主要工作就集中在編寫 Map Api javascript 版本的導航網(wǎng)頁以及WebView與javascript 的數(shù)據(jù)交互中。

1、WebView 的定義及設(shè)置:

首先要在XML 布局文件中定義WebView控件;然后在程序中裝載這個控件,設(shè)置屬性;最后通過loadUrl 方法實現(xiàn)網(wǎng)頁的載入。

WebView 常用的類有:WebSettings、WebViewClient、WebChromeClient.
WebSettings 用來設(shè)置WebView的一些屬性狀態(tài),如:
// 設(shè)置可以訪問文件
webSettings.setAllowFileAccess(true);
// 設(shè)置支持縮放
webSettings.setBuiltInZoomControls(true);

WebViewClient 專門輔助WebView處理各種通知、請求等事件類,通過WebView 的setWebViewClient 方法來指定一個WebViewClient 對象,如下:
webView.setWebViewClient(newWebViewClient()
{
public boolean shouldOverrideUrlLoading(WebViewview,String url){
view.loadUrl(url);
return true;
}
})

WebChromeClient 類專門用來輔助WebView對話框、網(wǎng)站圖標、網(wǎng)站Title、加載進度等。使用方法如下:
webView.setWebChromeClient(newWebChromeClient()
{
@Override
// 該方法為處理javascript 中的alert 事件
public boolean onJsAlert (WebView view,String url,Stringmessage,
JsResult result){
// TODO Auto- generated method stub
return super.onJsAlert(view,url,message,result);
});
設(shè)置完WebView后主要工作就是Html 網(wǎng)頁的編寫。

2、編寫Html 網(wǎng)頁實現(xiàn)線路規(guī)劃:

線路規(guī)劃的前提是必須要指定起始地址以及出行方式,本系統(tǒng)用戶是通過在Activity 中輸入地址和選擇出行方式來向系統(tǒng)提交信息。WebView 必須從應(yīng)用中獲取信息,然后發(fā)送給Html,供javascript 調(diào)用并實現(xiàn)導航。
在android 應(yīng)用端,定義一個類保存用戶輸入的起始地址的經(jīng)緯度信息:

// 在javascript 腳本中調(diào)用得到LatlngData 對象
public LatlngData getLatlngData()
{ return latlngData;
}
/* 定義一個latlngData 類,保存經(jīng)緯度信息,經(jīng)緯度由Geocoder.getFromLocationNAME()方法按照用戶輸入地址解析而得到。*/


關(guān)鍵詞: 智能手機 Google Maps

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉