我正在开发一个 Android 应用程序,其中使用 Google 地图。它运作良好且良好。但是
当用户点击“获取路线”加载地图后,谷歌地图会显示方向线,但无法获得逐段书写的路线。 如果您只是打开 Google 地图和获取路线,您可以在地图和路线列表之间来回切换。
是否有任何 API 可以获取 Android 设备默认 Google 地图中给出的所有功能?
获取方向和路线的最佳方式是使用 Google 地图的网络服务。它将为您提供一切。我在我的应用程序中使用了这个。
这里是saddr =源地址和daddr =目标地址(即纬度和经度)的示例。您还可以传递字符串作为地址而不是纬度/经度。
final Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://maps.google.com/maps?" + "saddr="+ latitude + "," + longitude + "&daddr=" + latitude + "," + longitude));
intent.setClassName("com.google.android.apps.maps","com.google.android.maps.MapsActivity");
startActivity(intent);
希望这对您有帮助。
添加到 Scorpion 的代码(运行完美),您可能想获取当前位置
Location currentLocation = googleMap.getMyLocation();
double latitudeCurr = currentLocation.getLatitude();
double longitudeCurr = currentLocation.getLongitude();
saddr
是起始地址
daddr
是目的地地址
final Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("+http://maps.google.com/maps?" "saddr="
+ latitudeCurr + "," + longitudeCurr + "&daddr="
+ latitude + "," + longitude));
intent.setClassName("com.google.android.apps.maps",
"com.google.android.maps.MapsActivity");
startActivity(intent);
这就是我在我的应用程序中使用的
这应该有帮助Android 上的路线/行车路线,作者:mobile.synyx.de
阅读 -> 从谷歌地图获取地理点
截至 2018 年,Google 发布了 Google 地图导航 SDK。您可以在 I/O'18 上看到以下 Google Maps Platform 演示,其中 Google 地图产品经理提到了 SDK:
https://youtu.be/XVjyIA3f_Ic?t=20m31s
不幸的是,该 SDK 目前尚未公开提供。您必须联系销售团队才能购买此 SDK 的许可证。据我所知,目前只有 Uber 或 Lyft 等大型共享出行公司在其应用程序中拥有此 SDK。
或者,您可以使用 Google 地图 URL 在导航模式下打开 Google 地图应用程序。 Google 地图 URL 构建通用的跨平台 URL 来启动 Google 地图,以便您可以根据自己的意图使用它们。
例如
String url = "https://www.google.com/maps/dir/?api=1&destination=Madrid,Spain&origin=Barcelona,Spain&travelmode=driving&dir_action=navigate";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
为了获取(当前)导航逐段书面指示,唯一的方法是解析迄今为止的通知。
为了解决这个问题,我编写了一个开源库,可以帮助您在此过程中(但它需要通知访问):GMapsParser
您可以通过执行以下操作的服务获取状态:
class NavigationListenerEmitter : NavigationListener() {
override fun onNavigationNotificationAdded(navNotification: NavigationNotification) {
Log.d("notificationListener", "Got initial notification $navNotification")
}
override fun onNavigationNotificationUpdated(navNotification : NavigationNotification) {
Log.d("notificationListener", "Got notification update $navNotification")
}
override fun onNavigationNotificationRemoved(navNotification : NavigationNotification) {
Log.d("notificationListener", "Removed notification $navNotification")
}
}
它还提供了一个实用程序类,将此类事件公开为可以轻松传递给活动的包裹。
自 2024 年 9 月起,您现在可以注册 Google Nav SDK,而无需联系销售人员。我在这里写了一个简短的教程,解释如何使用它向 Android 应用程序添加逐向导航:https://www.afi.io/blog/google-odrd-navigation-sdk/