如何创建含多个途经点的Android Intent以打开高德地图(AMAP)
Android 调用高德地图添加多途经点的正确方式
你之前用waypoints参数无效是因为高德官方的URI导航接口并不支持这个参数,官方文档里指定途经点的正确参数是via,以下是整理后的官方文档核心内容(原英文文档翻译)及实现方案:
官方支持的途经点参数规则
高德地图URI导航接口中,途经点通过via参数传递,格式要求:
- 多个途经点之间用
|分隔 - 单个途经点格式为
纬度,经度或纬度,经度,途经点名称 - 最多支持添加16个途经点
正确的代码实现示例
// 构建途经点字符串,多途经点用|分隔 String waypoints = "39.908860,116.397390,天安门|39.915168,116.403875,故宫"; // 构建完整的高德地图URI String uri = "amapuri://route/plan/?dlat=39.928882&dlon=116.388301&dname=北京西站" + "&via=" + waypoints + "&dev=0" // 0表示网络定位,1表示GPS定位 + "&t=0"; // 0=驾车,1=公交,2=步行,3=骑行 // 启动高德地图Intent Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); // 指定包名,确保唤起高德地图而非其他地图应用 intent.setPackage("com.autonavi.minimap"); startActivity(intent);
额外参数说明
- 若需指定起点,可添加
slat(起点纬度)、slon(起点经度)、sname(起点名称)参数,不指定则自动获取当前位置 - 途经点名称若含特殊字符,需用
URLEncoder.encode(名称, "UTF-8")进行URL编码,避免参数解析失败
内容的提问来源于stack exchange,提问作者Leonardo Campanha
相关产品推荐
相关产品推荐

