外部打开百度地图进行导航:
/** * 打开百度地图 * @param slat 开始地点 维度 * @param slon 开始地点 经度 * @param sname 开始地点 名字 * @param dlat 终点地点 维度 * @param dlon 终点地点 经度 * @param dname 终点名字 * @param city 所在城市- 动态获取 (例如:北京市) * @author jack * created at 2017/8/2 15:01 */ private void openBaiduMap(double slat, double slon, String sname, double dlat, double dlon, String dname, String city) { try { String uri = OpenLocalMapUtil.getBaiduMapUri(String.valueOf(slat), String.valueOf(slon), sname, String.valueOf(dlat), String.valueOf(dlon), dname, city, ""); Intent intent = Intent.parseUri(uri, 0); startActivity(intent); //启动调用 } catch (Exception e) { e.printStackTrace(); } }3、OpenLocalMapUtil.getBaiduMapUri 方法
public static String getBaiduMapUri(String originLat, String originLon, String originName, String desLat, String desLon, String destination, String region, String src){ String uri = "intent://map/direction?origin=latlng:%1$s,%2$s|name:%3$s" + "&destination=latlng:%4$s,%5$s|name:%6$s&mode=driving®ion=%7$s&src=%8$s#Intent;" + "scheme=bdapp;package=com.baidu.BaiduMap;end"; return String.format(uri, originLat, originLon, originName, desLat, desLon, destination, region, src); }
外部打开高德地图进行导航:
1、高德地图官方文档URI·API -- 高德地图为默认开始地点 只需要传入 终点坐标即可
2、
/** * 打开高德地图 * @author jack * created at 2017/8/2 15:01 */ private void openGaoDeMap(double dlat, double dlon, String dname) { try {
// APP_NAME 自己应用的名字 String uri = OpenLocalMapUtil.getGdMapUri(APP_NAME, String.valueOf(dlat), String.valueOf(dlon), dname); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setPackage("com.autonavi.minimap"); intent.setData(Uri.parse(uri)); startActivity(intent); //启动调用 } catch (Exception e) { e.printStackTrace(); } }
3、OpenLocalMapUtil.getGdMapUri 方法
/** * 获取打开高德地图应用uri * style *导航方式(0 速度快; 1 费用少; 2 路程短; 3 不走高速;4 躲避拥堵;5 *不走高速且避免收费;6 不走高速且躲避拥堵; *7 躲避收费和拥堵;8 不走高速躲避收费和拥堵) */ public static String getGdMapUri(String appName, String slat, String slon, String sname, String dlat, String dlon, String dname){ String newUri = "androidamap://navi?sourceApplication=%1$s&poiname=%2$s&lat=%3$s&lon=%4$s&dev=1&style=2"; return String.format(newUri, appName, dname, dlat, dlon); }
外部打开腾讯地图网页版:
1、腾讯地图官方文档说明 暂不支持外部app打开腾讯地图 (合作伙伴可以)
2、http://apis.map.qq.com/uri/v1/routeplan?type=bus&from=我的家&fromcoord=39.980683,116.302&to=中关村&tocoord=39.9836,116.3164&policy=1&referer=myapp
/** * 开发浏览器的腾讯地图 * @param slat 开始坐标 * @param slon * @param dlat 终点坐标 * @param dlon */ private void selectTencent(double slat, double slon, String sName, double dlat, double dlon, String dName) { double[] txDesLatLng = OpenLocalMapUtil.map_bd2hx(dlat, dlon); double[] txNowLatLng = OpenLocalMapUtil.map_bd2hx(slat, slon); String url = "http://apis.map.qq.com/uri/v1/routeplan?type=drive&from=&fromcoord=" + txNowLatLng[0] + "," + txNowLatLng[1] + "&to=&tocoord=" + txDesLatLng[0] + "," + txDesLatLng[1] + "&policy=0&referer=myapp"; // drive --- 驾车 -------policy=0 是较快捷 String urljk = "http://apis.map.qq.com/uri/v1/routeplan?" + "type=" + "drive" + "&from=" + sName +"&fromcoord=" + slat + "," + slon + "&to=" + dName + "&tocoord=" + dlat + "," + dlon + "&policy=0" + "&referer=" + APP_NAME; Uri tencentUri = Uri.parse(url); Intent loction = new Intent(Intent.ACTION_VIEW, tencentUri); startActivity(loction); }