如何在Android中使用带多坐标的geo URL Scheme调用非谷歌地图导航App?
Android 实现带起点/终点的导航链接(兼容非谷歌地图)
通用geo Scheme扩展写法
单坐标的geo:链接你已经用得很顺了,要支持起点+终点,直接在geo:后通过q和to参数指定即可,大部分主流非谷歌导航应用(高德、百度等)都兼容这个格式:
<a href="geo:0,0?q=39.9042,116.4074(北京天安门)&to=31.2304,121.4737(上海外滩)">导航到外滩</a>
geo:0,0:这里的坐标是占位的中心定位,不影响导航逻辑q=纬度,经度(名称):指定导航起点,括号里的名称可选,用于显示起点标签to=纬度,经度(名称):指定导航终点,同样名称可选
如果不需要显示名称,可简化为:
<a href="geo:0,0?q=39.9042,116.4074&to=31.2304,121.4737">导航到外滩</a>
更精准的Intent唤起方式
如果部分应用对geo:的to参数支持不佳,可以用Android Intent的网页唤起格式,这个方式更明确,甚至可以指定打开某个特定应用:
让用户选择导航应用
<a href="intent://navigate?from=39.9042,116.4074&to=31.2304,121.4737#Intent;scheme=android-app;end">选择导航应用</a>
指定打开高德地图
<a href="intent://navigate?from=39.9042,116.4074&to=31.2304,121.4737#Intent;scheme=android-app;package=com.autonavi.minimap;end">用高德导航</a>
指定打开百度地图
<a href="intent://navigate?from=39.9042,116.4074&to=31.2304,121.4737#Intent;scheme=android-app;package=com.baidu.BaiduMap;end">用百度导航</a>
注意事项
- 坐标顺序必须是纬度在前,经度在后,搞反会导致定位错误
- 测试务必在真实Android设备上进行,模拟器的导航应用支持可能不全
- 部分旧版浏览器可能不支持Intent唤起格式,优先推荐通用
geo:写法
内容的提问来源于stack exchange,提问作者Jalal Yadegar
相关产品推荐
相关产品推荐

