【问题标题】:Android Navigation intentAndroid 导航意图
【发布时间】:2013-05-09 10:17:00
【问题描述】:

如果您将 Google 地图路线发送到您的 Android 手机,则可以在地图应用程序中打开它,这看起来非常合乎逻辑,其背后的代码也是如此。

现在,一旦进入地图应用程序,您就可以在导航应用程序中打开这些路线以及这些确切的路线。

这是如何工作的?做起来一定没那么难,我知道的意图

"google.navigation:q=..."

但这仅适用于某些设备,并且仅适用于坐标或地址...没有地图方向?

谁能帮我解决这个问题?

编辑:

这就是 URL 的样子:

https://maps.google.com/maps?saddr=Durbanville,+Cape+Town,+Western+Cape,+South+Africa&daddr=Parow+North,+Cape+Town,+South+Africa+to:Somerset+West,+Cape+Town,+South+Africa+to:Milnerton,+Cape+Town,+South+Africa&hl=en&ll=-33.955037,18.657532&spn=0.25032,0.528374&sll=-33.911454,18.601913&sspn=0.250448,0.528374&geocode=FczB-_0dzIkcASlBKWkzGlfMHTFTuxOUSmpCAw%3BFQTi-v0d5oMbASld0qgMSFrMHTG2XqWY145Ttw%3BFfUG-P0dPHEfASk398T7ZbXNHTG5a6EH84n4Qg%3BFVU8-_0doEkaASnrz9UPVVnMHTFz2N4nnkA7XQ&oq=parow&mra=ls&t=m&z=12

【问题讨论】:

    标签: android google-maps android-intent navigation android-maps


    【解决方案1】:

    如果您创建格式为

    的网址
    http://maps.google.com/maps?saddr=[lat 1],[lon 1]&daddr=[lat 2],[lon 2]
    

    其中[lat 1][lon 1]是起点的纬度和经度,同样[lat 2] [lon 2] 是终点,并将其设置为String,然后您可以将其发送到intent

    Intent navIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(navigationUrl));
    activity.startActivity(navIntent);
    

    这将使用户可以选择打开Web 浏览器Google 地图导航

    编辑:

    对于多个目的地,将以下内容添加到 url 的末尾(对于每个额外的地方)

    +to:[lat 3],[lon 3]
    

    根据需要。

    因此,对于 4 个目的地,您将拥有:

    http://maps.google.com/maps?saddr=[lat 1],[lon 1]&daddr=[lat 2],
      [lon 2]+to:[lat 3],[lon 3]+to:[lat 4],[lon 4]
    

    【讨论】:

    • 我意识到这是可能的,但我有一个地图网址,其中包含至少 4 个目的地的路线
    • 好吧,您没有在原始问题中指定...答案已更新
    • 这似乎不适用于大量位置列表。实际上,我在我的网址中遇到的不仅仅是一个“+to:”之外的任何东西。因此,即使在您的示例中仅上升到 lat4,lon4 也会产生一些意想不到的结果。这种网址格式不再有效了吗?
    • 有什么特别的怪事吗?如果您正在使用,新的 Google 地图目前不支持多个目的地。恢复到旧地图
    • 似乎没有押韵或理由,但添加多个 '+to:' 会创建一个地图,其中包含从每个点到某个早期点来回的多条路径通常不是saddr。此外,不会显示所有“+to:”点,有时会出现我什至没有在 url 中传递的点的标记。我有一个应用程序,我通过意图将 URL 发送到地图应用程序以打开显示路线的地图,在这种情况下恢复到旧地图似乎是不可能的,还是我弄错了?
    【解决方案2】:

    在完成上述回答后,我发现自己身处一个无法使用 Google 导航服务的国家/地区。但是导航意图仍然可以通过 Google Map 来完成:

    Uri routeUri = Uri.parse("http://maps.google.com/maps?&saddr=" +
                                    MyApplication.Lat + "," +
                                    MyApplication.Lon + "&daddr=" + merchantAddr.getText());
    
    Intent i = new Intent(Intent.ACTION_VIEW, routeUri);
    startActivity(i);
    

    似乎我们可以用纬度/经度将起点设置为地理位置,将终点设置为地址,反之亦然。地理位置似乎已转换为 Google 地图中的地址或道路名称。

    【讨论】:

      【解决方案3】:

      网址应该是这样的:

      String navigationUrl = "http://maps.google.com/maps?saddr=latitude,longitude&daddr=latitude,longitude";
      Intent navIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(navigationUrl));
      startActivity(navIntent);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多