本文介绍在Android设备上使用百度地图、高德地图和腾讯地图等第三方应用进行导航的方法,并讲解如何实现不同坐标系统之间的转换。
```java
View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.baidu_btn:
if (MDMUtil.appIsInstalled(getContext(), com.baidu.BaiduMap)) { // 传入指定应用包名
try {
double[] gd_lat_lon;
if(RoutingXModel.isGpslatlon){
gd_lat_lon = gaoDeToBaidu(xModel.poc_lon, xModel.poc_lat);
} else{
gd_lat_lon = new double[2];
gd_lat_lon[0] = xModel.poc_lon;
gd_lat_lon[1] = xModel.poc_lat;
}
Intent intent = Intent.getIntent(intent://map/direction? +
destination=latlng: + gd_lat_lon[1] + , + gd_lat_lon[0]+ |name:我的目的地 +
// 终点
&mode=driving& +
// 导航路线方式
&src=appname#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getContext().startActivity(intent);
} catch (URISyntaxException e) {
Log.e(intent, e.getMessage());
}
} else { // 未安装
Toast.makeText(getContext(), 您尚未安装百度地图, Toast.LENGTH_LONG).show();
Uri uri = Uri.parse(market://details?id=com.baidu.BaiduMap);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
if (intent.resolveActivity(getContext().getPackageManager()) != null){
getContext().startActivity(intent);
}
}
dismiss();
break;
case R.id.gaode_btn:
if (MDMUtil.appIsInstalled(getContext(), com.autonavi.minimap)) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
double[] gd_lat_lon;
if(!RoutingXModel.isGpslatlon){
gd_lat_lon= bdToGaoDe(xModel.poc_lat,xModel.poc_lon);
} else{
gd_lat_lon = new double[2];
gd_lat_lon[0] = xModel.poc_lon;
gd_lat_lon[1] = xModel.poc_lat;
}
// 将功能Scheme以URI的方式传入data
Uri uri = Uri.parse(androidamap://navi?sourceApplication=appname&poiname=fangheng⪫= + gd_lat_lon[1] +
&lon;= + gd_lat_lon[0]+ &dev=0&style=4);
intent.setData(uri);
// 启动该页面即可
getContext().startActivity(intent);
} else {
Toast.makeText(getContext(), 您尚未安装高德地图, Toast.LENGTH_LONG).show();
Uri uri = Uri.parse(market://details?id=com.autonavi.minimap);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
if (intent.resolveActivity(getContext().getPackageManager()) != null){
getContext().startActivity(intent);
}
}
dismiss();
break;
case R.id.tencent_btn:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
double[] gd_lat_lon ;
if(!RoutingXModel.isGpslatlon){
gd_lat_lon= bdToGaoDe(xModel.poc_lat,xModel.poc_lon);
} else{
gd_lat_lon = new double[2];
gd_lat_lon[0] = xModel.poc_lon;
gd_lat_lon[1] = xModel.poc_lat;
}
// 将功能Scheme以URI的方式传入data
Uri uri = Uri.parse(qqmap://map/routeplan?type=drive&to;=我的目的地&tocoord;= + gd_lat_lon[1]+ , + gd_lat_lon[0]);
intent.setData(uri);
if (intent.resolveActivity(getContext().getPackageManager()) != null) {
// 启动该页面即可
getContext().startActivity(intent);
} else {
Toast.makeText(getContext(), 您尚未安装腾讯地图, Toast.LENGTH_LONG).show();
}
dismiss();
break;
case R.id.cancel_btn2:
dismiss();
}
}
};
```