Android通过URI打开主流地图导航全解析
读完本文需要5分钟
最近项目在做的新功能,要求检测手机上安装的地图软件,然后从app内打开对应的地图的导航,
借这个机会,我为大家总结了打开市面上主流地图软件的URI的工具类,以后就可以直接拿来使用了。
一、高德地图
直接上代码

/**
* 高德地图跳转URI
*
* @param context
* @param sourceApplication 必填 第三方调用应用名称。如 amap
* @param poiname 非必填 POI 名称
* @param lat 必填 纬度
* @param lon 必填 经度
* @param dev 必填 是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密) 一般用1
* @param style 必填 导航方式(0 速度快; 1 费用少; 2 路程短; 3 不走高速;4 躲避拥堵;5 不走高速且避免收费;6 不走高速且躲避拥堵;7 躲避收费和拥堵;8 不走高速躲避收费和拥堵))
* style一般用2
*/
public static void goToGaodeNaviActivity(Context context, String sourceApplication, String poiname, String lat, String lon, String dev, String style) {
StringBuffer stringBuffer = new StringBuffer("androidamap://navi?sourceApplication=")
.append(sourceApplication);
if (!TextUtils.isEmpty(poiname)) {
stringBuffer.append("&poiname=").append(poiname);
}
stringBuffer.append("&lat=").append(lat)
.append("&lon=").append(lon)
.append("&dev=").append(dev)
.append("&style=").append(style);
try {
Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(stringBuffer.toString()));
intent.setPackage("com.autonavi.minimap");
context.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
二、百度地图
/**
* 百度地图跳转URI
*
* @param context
* @param startAddName 导航城市名
* @param startlat 开始经度
* @param startlon 开始纬度
* @param endlat 结束经度
* @param endlon 结束纬度
*/
public static void goToBaiduNaviActivity(Context context, String startAddName, String endName, String startlat, String startlon, String endlat, String endlon) {
StringBuffer stringBuffer = new StringBuffer("intent://map/direction?origin=latlng:")
.append(startlat).append(",").append(startlon)
.append("|name:").append("startAddName")
.append("&destination=latlng:").append(endlat).append(",").append(endlon)
.append("|name:").append("endName")
.append("&mode=driving")
.append("®ion=").append(startAddName)
.append("&src=didi|didichuxing#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
Intent intent = null;
try {
intent = Intent.getIntent(stringBuffer.toString());
context.startActivity(intent);
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
三、腾讯地图
/**
* 腾讯地图跳转URI
*
* @param context
* @param startAddName 导航城市名
* @param startlat 开始经度
* @param startlon 开始纬度
* @param endlat 结束经度
* @param endlon 结束纬度
*/
public static void goToTencentNaviActivity(Context context, String startAddName, String endName, String startlat, String startlon, String endlat, String endlon) {
StringBuffer stringBuffer = new StringBuffer("qqmap://map/routeplan?type=drive&from=")
.append(startAddName)
.append("&fromcoord=").append(startlon).append(",").append(startlon)
.append("&to=").append(endName)
.append("&tocoord=").append(endlat).append(",").append(endlon)
.append("&policy=2")//0:较快捷1:无高速 2:距离
.append("&referer=trydriver");
Intent intent = null;
try {
intent = Intent.getIntent(stringBuffer.toString());
context.startActivity(intent);
} catch (URISyntaxException e) {
e.printStackTrace();
}
}