Android 中有用于 Google 地图导航的 API 吗?

问题描述 投票:0回答:6

我正在开发一个 Android 应用程序,其中使用 Google 地图。它运作良好且良好。但是

当用户点击“获取路线”加载地图后,谷歌地图会显示方向线,但无法获得逐段书写的路线。 如果您只是打开 Google 地图和获取路线,您可以在地图和路线列表之间来回切换。

是否有任何 API 可以获取 Android 设备默认 Google 地图中给出的所有功能?

android google-maps
6个回答
40
投票

获取方向和路线的最佳方式是使用 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);

希望这对您有帮助。


8
投票

添加到 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);

这就是我在我的应用程序中使用的


4
投票

这应该有帮助Android 上的路线/行车路线,作者:mobile.synyx.de

阅读 -> 从谷歌地图获取地理点


3
投票

截至 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);

1
投票

为了获取(当前)导航逐段书面指示,唯一的方法是解析迄今为止的通知。

为了解决这个问题,我编写了一个开源库,可以帮助您在此过程中(但它需要通知访问):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")
    }
}

它还提供了一个实用程序类,将此类事件公开为可以轻松传递给活动的包裹。


0
投票

自 2024 年 9 月起,您现在可以注册 Google Nav SDK,而无需联系销售人员。我在这里写了一个简短的教程,解释如何使用它向 Android 应用程序添加逐向导航:https://www.afi.io/blog/google-odrd-navigation-sdk/

© www.soinside.com 2019 - 2024. All rights reserved.