邦定机厂家
免费服务热线

Free service

hotline

010-00000000
邦定机厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

基于Google Map Api的Android导航应用 - 通信-网络 - 免费猫

发布时间:2020-02-17 14:18:23 阅读: 来源:邦定机厂家

基于Google Map Api的Android导航应用 - 通信/网络 - 电子工程网

四、GPS 定位功能实现

全球卫星定位系统(Global Positioning System,GPS)是一个中距离圆型轨道卫星导航系统,它可以为地球表面超98%的地区提供准确的定位、测速和高精度的时间标准服务,在各个领域都有广泛的应用。

Android 支持GPS 服务的API.该服务可以用来获取当前设备的地理位置,应用程序通过该API 获得地理位置,并可以定时请求更新当前设备的地理定位信息。该系统将用到GPS API 中包几个重要的功能类:LocATIonManager,用于管理Android 用户定位服务;LocationProvider,提供多种定位方式供开发者选择;Criteria,是应用通过LocationProvider 中设置的属性来选择合适的定位提供者。

获取用户当前位置的步骤如下:

1、在AndroidManifeST.xml 中声明相应的权限:

android:name= “android.permission.ACCESS_COARSE_LOCATION” permission

2、获取LocationManager 对象:

LocationManager locationManager =(LocationManager)getSystemSERvice (Context.LOCATION_SERVICE);

3、设置Criteria 对象:

Criteria criteria = newCriteria();

criteria.setAccuracy(Criteria.ACCURACY_FINE);

criteria.setAltitudeRequired(false);

criteria.setBearingRequired(false);

criteria.setCostAllowed(false);

criteria.setPowerRequirement(Criteria.POWER_LOW);

4、设置Provider:

String provider = locationManager.getBestProvider(criteria,true);

Location location= locationManager.getLastKnownLocation(provider);

五、导航功能实现

在正式版本的Android SDK 中,移除了原有M5 版本里面的DrivingDirection package,所以无法透过程序来规划导航线路。因此导航功能的实现我们是通过载入web 导航网页的方式实现的。Android 提供了一个名为WebView的控件来专门浏览网页。

WebView控件是基于WebKit 浏览器网页排版引擎的一个java接口,它能够完美支持html、javascript、css.有时我们可以把整个UI 甚至数据处理都交给WebView,配合PHP 等服务器端程序,这样的Android 应用开发更为简单UI 更为丰富。因此本系统的导航功能的主要工作就集中在编写Google Map Api javascript 版本的导航网页以及WebView与javascript 的数据交互中。

1、WebView 的定义及设置:

首先要在XML 布局文件中定义WebView控件;然后在程序中装载这个控件,设置属性;最后通过loadUrl 方法实现网页的载入。

WebView 常用的类有:WebSettings、WebViewClient、WebChromeClient.

WebSettings 用来设置WebView的一些属性状态,如:

// 设置可以访问文件

webSettings.setAllowFileAccess(true);

// 设置支持缩放

webSettings.setBuiltInZoomControls(true);

WebViewClient 专门辅助WebView处理各种通知、请求等事件类,通过WebView 的setWebViewClient 方法来指定一个WebViewClient 对象,如下:

webView.setWebViewClient(newWebViewClient()

{

public boolean shouldOverrideUrlLoading(WebViewview,String url){

view.loadUrl(url);

return true;

}

})

WebChromeClient 类专门用来辅助WebView对话框、网站图标、网站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);

});

设置完WebView后主要工作就是Html 网页的编写。

2、编写Html 网页实现线路规划:

线路规划的前提是必须要指定起始地址以及出行方式,本系统用户是通过在Activity 中输入地址和选择出行方式来向系统提交信息。WebView 必须从应用中获取信息,然后发送给Html,供javascript 调用并实现导航。

在android 应用端,定义一个类保存用户输入的起始地址的经纬度信息:

// 在javascript 脚本中调用得到LatlngData 对象

public LatlngData getLatlngData()

{ return latlngData;

}

/* 定义一个latlngData 类,保存经纬度信息,经纬度由Geocoder.getFromLocationNAME()方法按照用户输入地址解析而得到。*/

class LatlngData

{ String startLatlng;

String endLatlng;

public LatlngData()

{

this.startLatlng=“”;

this.endLatlng =“”;

}

public String getStartLatlng()

{

return startLatlng;

}

public String getEndLatlng()

{

return endLatlng;

}

}

// 通过LatlngDataInterface () 方法将数据类绑定给javascript,这样javascript 就能够获// 得了用户的数据了。

public class DataJavaScriptInterface{

public LatlngData LatlngDataInterface(){

latlngData = getLatlngData();

return latlngData;

}

在Html 网页中编写以下代码获得数据,并通过格式转换使数据能够为线路规划所接受,代码如下:

var latlngData = window.demo.LatlngDataInterface();

// 获取起点和终点位置的经纬度信息为String 格式

startLatlng = latlngData.getStartLatlng();

endLatlng = latlngData.getEndLatlng();

// 把String 格式经纬度转换为Float 格式

startLat = parseFloat(startLatlng.substring(0,8));

startLng = parseFloat(startLatlng.substring(10,18));

endLat = parseFloat(endLatlng.substring(0,8));

endLng = parseFloat(endLatlng.substring(10,18));

通过DirectionsService 对象计算路线(使用各种交通方式)。

此对象与Google Maps API Directions Service 进行通信,该服务将接收路线请求并传回计算结果。可以自行处理这些路线结果,也可以使用DirectionsRenderer 对象渲染这些结果:

function calcRoute(){

start = beginLatlng;

end = endLatlng;

var request = {

origin:start,

destination:end,

travelMode: google.maps.DirectionsTravelMode.DRIVING

};

directionsService.route(request,function(response,status){

if(status == google.maps.DirectionsStatus.OK){

var warnings = document.getElementById(“warnings_panel”);

warnings.innerHTML = “” + response.routes [0].warnings + “”;

directionsDisplay.setDirections(response);

showSteps(response);

}

});

}

通过上述的操作我们基本上实现了线路规划,在此基础上我们能够添加更多的功能,如语音导航、路况提示、周边配套设施提示等,使用户获得更好的用户体验。最终效果如下图所示:

宝鸡旗袍

旗袍绣

黑水鸡的养殖方法

大自然的故事