6

我正在寻找一种在 Google 地图上打开逐步导航的方法。我知道从这篇谷歌文章中它只能由起点和终点定义。

第一个选项(首选):

我没有在谷歌地图中找到任何符合我想要的意图。有谁知道有没有?

第二种选择:

我已经尝试过其他方法来达到我想要的。我尝试在 maps.google.com 上创建自定义路线(从桌面浏览器)并从 Android 设备打开它。

该链接具有以下格式

https://www.google.com/maps/dir/37.7851009,-122.4049193/37.7817261,-122.4008209/@37.7815141,-122.4059922,16z/data=!4m19!4m18!1m15!3m4!1m2!1d-122.4055d!3 .7834466!3s0x808580868ad307fd:0xa75b816ccbe984a0!3m4!1m2!1d-122.4061769!2d37.7812298!3s0x80858086b49a3cfb:0x23f20e98c029217c!3m4!1m2!1d-122.4031591!2d37.7817777!3s0x80858080cb0a7eb1:0xdc77f5df810aebcd!1m0!3e2

它不是打开转弯导航,而是打开 Google Map Android 应用程序,并在地图上显示路线。这是我想要的最接近的,因为有可以显示逐向导航的按钮。

我不知道是否可以从 (lat,lng) 地理点的集合中创建这种类型的链接。我看到数据参数是包含路由的参数。有谁知道如何到达它?如果可能的话,我认为我可以在我的 Android 应用程序中创建链接以使用 Google 地图应用程序打开。(实际上我没有尝试将此链接手动放入我的应用程序,但我认为这可以工作。)

更新: 我不想找到从 A 点(起点)到 B 点(终点)的路线。我在地理坐标中拥有从头到尾的所有路线。因此,任何形式从 A 到 B 的解决方案都不能解决我的问题。

4

3 回答 3

4

自 2018 年起,您可以使用Google 地图 URL在导航模式下打开 Google 地图应用程序。Google 地图 URL 构建了一个通用的跨平台 URL 来启动 Google 地图,因此您可以根据自己的意图使用它们。

导航模式下的 Google 地图 URL 支持起点、目的地和航路点。

例如

String url = "https://www.google.com/maps/dir/?api=1&destination=Madrid,Spain&origin=Barcelona,Spain&waypoints=Zaragoza|Huesca&travelmode=driving&dir_action=navigate";           
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);

我希望这有帮助!

于 2018-10-24T23:52:58.813 回答
1

您可以尝试查看此文档/教程,了解如何通过 Google Maps API 使用转弯方向。它使用 Google Maps Javascript 提供高级功能。

关于语音导航功能,我认为这个 SO question and link 可以帮助你。

于 2016-05-09T05:32:06.453 回答
1

这是来自文档:

或者,您可以使用编码折线算法提供一组编码的坐标 。如果您有大量航点,这将特别有用,因为使用编码折线时 URL 会显着缩短。

  1. 编码的折线必须以 enc: 为前缀,后跟冒号 (:)。例如:waypoints=enc:gfo}EtohhU:
  2. 您还可以包含多条编码折线,由竖线字符 (|) 分隔。例如:waypoints=via:enc:wc~oAwquwMdlTxiKtqLyiK:|enc:c~vnAamswMvlTor@tjGi}L:|via:enc:udymA{~bxM:以下 URL 发起一个路线请求,要求从马萨诸塞州波士顿到康科德的路线, MA,在查尔斯顿和列克星敦中途停留,按以下顺序:

https://maps.googleapis.com/maps/api/directions/json?origin=Boston,MA&destination=Concord,MA&waypoints=Charlestown,MA|列克星敦,MA&key=YOUR_API_KEY

来源:https ://developers.google.com/maps/documentation/directions/intro#Waypoints

于 2016-05-08T17:37:00.353 回答