使用坐标打开Google地图应用并获取路线

4
我正在编写一款应用程序(适用于iOS和Android),它应该能够打开设备上的Google Maps应用程序并提供到目标地点的路线。目标地点以纬度/经度坐标形式提供。我已阅读了官方指南,说明如何做到这一点(https://developers.google.com/maps/documentation/urls/guide),但仍不能正常工作。
以下是我从我的应用程序发送的URL示例。如果我将相同的URL粘贴到我的计算机浏览器中,它可以正常工作,但如果我尝试在设备上打开它,则会收到错误消息,指出“不支持该链接,Google Maps无法打开此链接”。

https://www.google.com/maps/dir/?api=1&destination=50.693907573202%2C10.970328366756

我做错了什么?

编辑: 我注意到第二次发送URL时它可以工作,但第一次不行。换句话说:在我的应用程序中,我点击“方向”按钮,Google地图显示错误消息。然后我返回到我的应用程序,再次按下“方向”按钮,它就可以工作了。为什么第一次不起作用?Google地图需要在后台运行才能正常工作吗?文档中没有提到这一点...


尽管文档中指出起点“默认为最相关的起始位置”,但我添加了起点,现在每次都可以正常工作。看来谷歌地图需要一个“启动”才能获取当前位置,从而让后续的尝试顺利进行。 - archer
2个回答

7

您需要使用此功能来启动移动平台上的导航。

Uri gmmIntentUri = Uri.parse("google.navigation:q=28.5675,77.3260");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

请看以下内容:

更多阅读请访问https://developers.google.com/maps/documentation/urls/android-intents


感谢您的快速回复!然而,这个错误在iOS和Android上都出现了。此外,在我参考的文档中,它说:“使用Maps URLs,您可以构建一个通用的、跨平台的URL来启动Google Maps并执行搜索、获取方向[...]。URL语法在使用的平台不同的情况下是相同的。”对我来说,这表明这些URL应该足够了。如果不行,那么这些“通用的、跨平台的URL”什么时候/如何才能使用呢? - archer
在你提到的页面上,我还发现了这个:“建议您使用跨平台地图URL来启动Google Maps,因为这些通用URL允许更广泛地处理地图请求,无论用户使用哪种平台。您应该仅在可能仅在移动平台上可用的功能上使用特定于Android的Maps Intents。”看起来Google自己也推荐“常规”URL。 - archer
那个链接和我的完全一样,只是你没有对逗号进行URL编码(而Google在文档中明确指出应该这样做)。 - archer
我正在按照我所提到的方式使用它,而且它运行良好。 - Amardeep
我尝试过不对逗号进行URL编码,但仍然出现相同的错误。 - archer

0

感谢您的回复。然而,错误发生在两个平台上,不仅仅是Android。我需要一个适用于两个平台的解决方案(不是编写本地代码)。此外,按照Google自己提供的如何与他们的地图应用程序进行接口的说明应该足够了。我只想知道我在那里误解了什么... - archer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接