通过 Android 上的 Intent 启动 Google Maps Directions

新手上路,请多包涵

我的应用程序需要显示从 A 到 B 的 Google 地图方向,但我不想将 Google 地图放入我的应用程序 - 相反,我想使用 Intent 启动它。这可能吗?如果是,如何?

原文由 Lars D 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

你可以使用这样的东西:

 Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
    Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345"));
startActivity(intent);

要从当前位置开始导航,请删除 saddr 参数和值。

您可以使用实际街道地址而不是纬度和经度。然而,这会给用户一个对话框来选择通过浏览器或谷歌地图打开它。

这将直接在导航模式下启动谷歌地图:

 Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
    Uri.parse("google.navigation:q=an+address+city"));

更新

2017 年 5 月,谷歌为通用、跨平台的谷歌地图 URL 推出了新的 API:

https://developers.google.com/maps/documentation/urls/guide

您也可以将 Intent 与新 API 一起使用。

原文由 Jan S. 发布,翻译遵循 CC BY-SA 3.0 许可协议

这有点离题,因为你问的是“方向”,但你也可以使用 Android 文档中描述的 Geo URI 方案:

http://developer.android.com/guide/appendix/g-app-intents.html

使用“geo:latitude,longitude”的问题是谷歌地图只以你所在的点为中心,没有任何图钉或标签。

这非常令人困惑,尤其是当您需要指向一个精确的位置或/和询问方向时。

如果您使用查询参数“geo:lat,lon?q=name”来标记您的地理点,它会使用查询进行搜索并忽略纬度/经度参数。

我找到了一种以纬度/经度为中心的地图并显示带有自定义标签的图钉的方法,非常适合显示并且在询问方向或任何其他操作时很有用:

 Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=37.423156,-122.084917 (" + name + ")"));
startActivity(intent);

注意(来自@TheNail):不适用于 Maps v.7(撰写本文时的最新版本)。将忽略坐标并搜索括号中给定名称的对象。另请参阅 带有位置的 Google Maps 7.0.0 的 Intent

原文由 Murphy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题