通过Android上的意图启动Google Maps Directions
2022-08-31 04:34:10
我的应用程序需要显示从A到B的Google地图方向,但我不想将Google地图放入我的应用程序中 - 相反,我想使用Intent启动它。这可能吗?如果是,如何?
我的应用程序需要显示从A到B的Google地图方向,但我不想将Google地图放入我的应用程序中 - 相反,我想使用Intent启动它。这可能吗?如果是,如何?
你可以使用类似这样的东西:
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
您可以使用实际的街道地址,而不是纬度和经度。但是,这将为用户提供一个对话框,以选择通过浏览器或Google地图打开它。
这将直接在导航模式下启动Google地图:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("google.navigation:q=an+address+city"));
更新
2017 年 5 月,Google 为通用、跨平台的 Google Maps 网址推出了新的 API:
https://developers.google.com/maps/documentation/urls/guide
您也可以将 Intents 与新 API 结合使用。
这有点偏离主题,因为您询问了“方向”,但您也可以使用Android文档中描述的Geo URI方案:
http://developer.android.com/guide/appendix/g-app-intents.html
使用“geo:latitude,longitude”的问题在于Google地图仅在您的点居中,没有任何图钉或标签。
这非常令人困惑,特别是如果您需要指向一个精确的地方或/并询问方向。
如果使用查询参数“geo:lat,lon?q=name”来标记地理点,它将使用查询进行搜索并关闭 lat/lon 参数。
我找到了一种用纬度/经度将地图居中并显示带有自定义标签的图钉的方法,这在询问方向或任何其他操作时显示起来非常好,很有用:
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 地图 7.0.0 的意向和位置信息