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("&region=").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();

}

}



举报